From 1f1dfc063214afb99a2bc62205d33fdd24b724bc Mon Sep 17 00:00:00 2001 From: Chris Lorenzo Date: Wed, 10 Apr 2024 23:25:23 -0400 Subject: [PATCH] Updates --- assets/AppCoreExtensions-C8PFmbSm.js | 38 + ....map => AppCoreExtensions-C8PFmbSm.js.map} | 2 +- assets/AppCoreExtensions-ChAx3lKK.js | 2 - assets/AppCoreExtensions-legacy-BzG4a-Q5.js | 42 + ... AppCoreExtensions-legacy-BzG4a-Q5.js.map} | 2 +- assets/AppCoreExtensions-legacy-KeSumw-d.js | 2 - assets/CoreExtension-BeuvW_LH.js | 2634 +++ ...3.js.map => CoreExtension-BeuvW_LH.js.map} | 2 +- assets/CoreExtension-BfzrAcK3.js | 2 - assets/CoreExtension-legacy-1r1p_2oI.js | 2 - assets/CoreExtension-legacy-1r1p_2oI.js.map | 1 - assets/CoreExtension-legacy-BzZDDgL-.js | 3699 ++++ assets/CoreExtension-legacy-BzZDDgL-.js.map | 1 + assets/index-B0KZGjmD.css | 1 - assets/index-By7E3s08.js | 2 - assets/index-By7E3s08.js.map | 1 - assets/index-CK5NAQdx.js | 14833 +++++++++++++ assets/index-CK5NAQdx.js.map | 1 + assets/index-CpsHex51.css | 8 + assets/index-legacy-BO0hRFKN.js | 2 - assets/index-legacy-BO0hRFKN.js.map | 1 - assets/index-legacy-BoS85dc4.js | 18410 ++++++++++++++++ assets/index-legacy-BoS85dc4.js.map | 1 + assets/polyfills-legacy-D5gaKwUZ.js | 10693 +++++++++ assets/polyfills-legacy-OWY983w_.js | 4 - index.html | 10 +- 26 files changed, 50368 insertions(+), 28 deletions(-) create mode 100644 assets/AppCoreExtensions-C8PFmbSm.js rename assets/{AppCoreExtensions-ChAx3lKK.js.map => AppCoreExtensions-C8PFmbSm.js.map} (77%) delete mode 100644 assets/AppCoreExtensions-ChAx3lKK.js create mode 100644 assets/AppCoreExtensions-legacy-BzG4a-Q5.js rename assets/{AppCoreExtensions-legacy-KeSumw-d.js.map => AppCoreExtensions-legacy-BzG4a-Q5.js.map} (63%) delete mode 100644 assets/AppCoreExtensions-legacy-KeSumw-d.js create mode 100644 assets/CoreExtension-BeuvW_LH.js rename assets/{CoreExtension-BfzrAcK3.js.map => CoreExtension-BeuvW_LH.js.map} (74%) delete mode 100644 assets/CoreExtension-BfzrAcK3.js delete mode 100644 assets/CoreExtension-legacy-1r1p_2oI.js delete mode 100644 assets/CoreExtension-legacy-1r1p_2oI.js.map create mode 100644 assets/CoreExtension-legacy-BzZDDgL-.js create mode 100644 assets/CoreExtension-legacy-BzZDDgL-.js.map delete mode 100644 assets/index-B0KZGjmD.css delete mode 100644 assets/index-By7E3s08.js delete mode 100644 assets/index-By7E3s08.js.map create mode 100644 assets/index-CK5NAQdx.js create mode 100644 assets/index-CK5NAQdx.js.map create mode 100644 assets/index-CpsHex51.css delete mode 100644 assets/index-legacy-BO0hRFKN.js delete mode 100644 assets/index-legacy-BO0hRFKN.js.map create mode 100644 assets/index-legacy-BoS85dc4.js create mode 100644 assets/index-legacy-BoS85dc4.js.map create mode 100644 assets/polyfills-legacy-D5gaKwUZ.js delete mode 100644 assets/polyfills-legacy-OWY983w_.js diff --git a/assets/AppCoreExtensions-C8PFmbSm.js b/assets/AppCoreExtensions-C8PFmbSm.js new file mode 100644 index 0000000..b9e68c6 --- /dev/null +++ b/assets/AppCoreExtensions-C8PFmbSm.js @@ -0,0 +1,38 @@ +function __vite_legacy_guard() { + import.meta.url; + import("_").catch(() => 1); + (async function* () { + })().next(); +} +; +import { C as CoreExtension, S as SdfTrFontFace } from "./CoreExtension-BeuvW_LH.js"; +const basePath = "/solid-demo-app/"; +class AppCoreExtension extends CoreExtension { + async run(stage) { + stage.fontManager.addFontFace( + new SdfTrFontFace( + "Ubuntu", + { weight: 700 }, + "msdf", + stage, + basePath + "fonts/Ubuntu-Bold.msdf.png", + basePath + "fonts/Ubuntu-Bold.msdf.json" + ) + ); + stage.fontManager.addFontFace( + new SdfTrFontFace( + "Ubuntu", + { weight: 400 }, + "msdf", + stage, + basePath + "fonts/Ubuntu-Regular.msdf.png", + basePath + "fonts/Ubuntu-Regular.msdf.json" + ) + ); + } +} +export { + __vite_legacy_guard, + AppCoreExtension as default +}; +//# sourceMappingURL=AppCoreExtensions-C8PFmbSm.js.map diff --git a/assets/AppCoreExtensions-ChAx3lKK.js.map b/assets/AppCoreExtensions-C8PFmbSm.js.map similarity index 77% rename from assets/AppCoreExtensions-ChAx3lKK.js.map rename to assets/AppCoreExtensions-C8PFmbSm.js.map index 196505b..c9f6b62 100644 --- a/assets/AppCoreExtensions-ChAx3lKK.js.map +++ b/assets/AppCoreExtensions-C8PFmbSm.js.map @@ -1 +1 @@ -{"version":3,"file":"AppCoreExtensions-ChAx3lKK.js","sources":["../../src/AppCoreExtensions.ts"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CoreExtension,\n WebTrFontFace,\n SdfTrFontFace,\n type Stage,\n} from \"@lightningjs/renderer/core\";\n\nconst basePath = import.meta.env.BASE_URL;\n\nexport default class AppCoreExtension extends CoreExtension {\n async run(stage: Stage) {\n // stage.fontManager.addFontFace(\n // new WebTrFontFace(\n // \"NotoSans\",\n // {},\n // basePath + \"fonts/NotoSans-Regular.ttf\",\n // ),\n // );\n stage.fontManager.addFontFace(\n new SdfTrFontFace(\n \"Ubuntu\",\n { weight: 700 },\n \"msdf\",\n stage,\n basePath + \"fonts/Ubuntu-Bold.msdf.png\",\n basePath + \"fonts/Ubuntu-Bold.msdf.json\",\n ),\n );\n stage.fontManager.addFontFace(\n new SdfTrFontFace(\n \"Ubuntu\",\n { weight: 400 },\n \"msdf\",\n stage,\n basePath + \"fonts/Ubuntu-Regular.msdf.png\",\n basePath + \"fonts/Ubuntu-Regular.msdf.json\",\n ),\n );\n }\n}\n"],"names":["basePath","AppCoreExtension","CoreExtension","stage","SdfTrFontFace"],"mappings":"0IA0BA,MAAMA,EAAW,mBAEjB,MAAqBC,UAAyBC,CAAc,CAC1D,MAAM,IAAIC,EAAc,CAQtBA,EAAM,YAAY,YAChB,IAAIC,EACF,SACA,CAAE,OAAQ,GAAI,EACd,OACAD,EACAH,EAAW,6BACXA,EAAW,6BACb,CAAA,EAEFG,EAAM,YAAY,YAChB,IAAIC,EACF,SACA,CAAE,OAAQ,GAAI,EACd,OACAD,EACAH,EAAW,gCACXA,EAAW,gCACb,CAAA,CAEJ,CACF"} \ No newline at end of file +{"version":3,"file":"AppCoreExtensions-C8PFmbSm.js","sources":["../../src/AppCoreExtensions.ts"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CoreExtension,\n WebTrFontFace,\n SdfTrFontFace,\n type Stage,\n} from \"@lightningjs/renderer/core\";\n\nconst basePath = import.meta.env.BASE_URL;\n\nexport default class AppCoreExtension extends CoreExtension {\n async run(stage: Stage) {\n // stage.fontManager.addFontFace(\n // new WebTrFontFace(\n // \"NotoSans\",\n // {},\n // basePath + \"fonts/NotoSans-Regular.ttf\",\n // ),\n // );\n stage.fontManager.addFontFace(\n new SdfTrFontFace(\n \"Ubuntu\",\n { weight: 700 },\n \"msdf\",\n stage,\n basePath + \"fonts/Ubuntu-Bold.msdf.png\",\n basePath + \"fonts/Ubuntu-Bold.msdf.json\",\n ),\n );\n stage.fontManager.addFontFace(\n new SdfTrFontFace(\n \"Ubuntu\",\n { weight: 400 },\n \"msdf\",\n stage,\n basePath + \"fonts/Ubuntu-Regular.msdf.png\",\n basePath + \"fonts/Ubuntu-Regular.msdf.json\",\n ),\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;AA0BA,MAAM,WAAW;AAEjB,MAAqB,yBAAyB,cAAc;AAAA,EAC1D,MAAM,IAAI,OAAc;AAQtB,UAAM,YAAY;AAAA,MAChB,IAAI;AAAA,QACF;AAAA,QACA,EAAE,QAAQ,IAAI;AAAA,QACd;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IAAA;AAEF,UAAM,YAAY;AAAA,MAChB,IAAI;AAAA,QACF;AAAA,QACA,EAAE,QAAQ,IAAI;AAAA,QACd;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IAAA;AAAA,EAEJ;AACF;"} \ No newline at end of file diff --git a/assets/AppCoreExtensions-ChAx3lKK.js b/assets/AppCoreExtensions-ChAx3lKK.js deleted file mode 100644 index 479c601..0000000 --- a/assets/AppCoreExtensions-ChAx3lKK.js +++ /dev/null @@ -1,2 +0,0 @@ -import{C as e,S as o}from"./CoreExtension-BfzrAcK3.js";function s(){import.meta.url,import("_").catch(()=>1),async function*(){}().next()}const t="/solid-demo-app/";class d extends e{async run(n){n.fontManager.addFontFace(new o("Ubuntu",{weight:700},"msdf",n,t+"fonts/Ubuntu-Bold.msdf.png",t+"fonts/Ubuntu-Bold.msdf.json")),n.fontManager.addFontFace(new o("Ubuntu",{weight:400},"msdf",n,t+"fonts/Ubuntu-Regular.msdf.png",t+"fonts/Ubuntu-Regular.msdf.json"))}}export{s as __vite_legacy_guard,d as default}; -//# sourceMappingURL=AppCoreExtensions-ChAx3lKK.js.map diff --git a/assets/AppCoreExtensions-legacy-BzG4a-Q5.js b/assets/AppCoreExtensions-legacy-BzG4a-Q5.js new file mode 100644 index 0000000..613b101 --- /dev/null +++ b/assets/AppCoreExtensions-legacy-BzG4a-Q5.js @@ -0,0 +1,42 @@ +; +(function () { + function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(typeof e + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + System.register(['./CoreExtension-legacy-BzZDDgL-.js'], function (exports, module) { + 'use strict'; + + var CoreExtension, SdfTrFontFace; + return { + setters: [module => { + CoreExtension = module.C; + SdfTrFontFace = module.S; + }], + execute: function execute() { + var basePath = "/solid-demo-app/"; + class AppCoreExtension extends CoreExtension { + run(stage) { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + stage.fontManager.addFontFace(new SdfTrFontFace("Ubuntu", { + weight: 700 + }, "msdf", stage, basePath + "fonts/Ubuntu-Bold.msdf.png", basePath + "fonts/Ubuntu-Bold.msdf.json")); + stage.fontManager.addFontFace(new SdfTrFontFace("Ubuntu", { + weight: 400 + }, "msdf", stage, basePath + "fonts/Ubuntu-Regular.msdf.png", basePath + "fonts/Ubuntu-Regular.msdf.json")); + case 2: + case "end": + return _context.stop(); + } + }, _callee); + }))(); + } + } + exports("default", AppCoreExtension); + } + }; + }); +})(); +//# sourceMappingURL=AppCoreExtensions-legacy-BzG4a-Q5.js.map diff --git a/assets/AppCoreExtensions-legacy-KeSumw-d.js.map b/assets/AppCoreExtensions-legacy-BzG4a-Q5.js.map similarity index 63% rename from assets/AppCoreExtensions-legacy-KeSumw-d.js.map rename to assets/AppCoreExtensions-legacy-BzG4a-Q5.js.map index c43cd68..e43ea71 100644 --- a/assets/AppCoreExtensions-legacy-KeSumw-d.js.map +++ b/assets/AppCoreExtensions-legacy-BzG4a-Q5.js.map @@ -1 +1 @@ -{"version":3,"file":"AppCoreExtensions-legacy-KeSumw-d.js","sources":["../../src/AppCoreExtensions.ts"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CoreExtension,\n WebTrFontFace,\n SdfTrFontFace,\n type Stage,\n} from \"@lightningjs/renderer/core\";\n\nconst basePath = import.meta.env.BASE_URL;\n\nexport default class AppCoreExtension extends CoreExtension {\n async run(stage: Stage) {\n // stage.fontManager.addFontFace(\n // new WebTrFontFace(\n // \"NotoSans\",\n // {},\n // basePath + \"fonts/NotoSans-Regular.ttf\",\n // ),\n // );\n stage.fontManager.addFontFace(\n new SdfTrFontFace(\n \"Ubuntu\",\n { weight: 700 },\n \"msdf\",\n stage,\n basePath + \"fonts/Ubuntu-Bold.msdf.png\",\n basePath + \"fonts/Ubuntu-Bold.msdf.json\",\n ),\n );\n stage.fontManager.addFontFace(\n new SdfTrFontFace(\n \"Ubuntu\",\n { weight: 400 },\n \"msdf\",\n stage,\n basePath + \"fonts/Ubuntu-Regular.msdf.png\",\n basePath + \"fonts/Ubuntu-Regular.msdf.json\",\n ),\n );\n }\n}\n"],"names":["basePath","exports","CoreExtension","run","stage","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","fontManager","addFontFace","SdfTrFontFace","weight","stop"],"mappings":"4xNA0BA,IAAMA,EAAW,mBAgCjBC,EAAA,UA9BA,cAA8CC,EACtCC,GAAAA,CAAIC,GAAc,SAAAC,IAAAC,MAAA,SAAAC,IAAA,OAAAF,IAAAG,MAAAC,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAQtBR,EAAMS,YAAYC,YAChB,IAAIC,EACF,SACA,CAAEC,OAAQ,KACV,OACAZ,EACAJ,EAAW,6BACXA,EAAW,gCAGfI,EAAMS,YAAYC,YAChB,IAAIC,EACF,SACA,CAAEC,OAAQ,KACV,OACAZ,EACAJ,EAAW,gCACXA,EAAW,mCAEf,KAAAU,EAAAA,IAAAA,MAAAA,OAAAA,EAAAO,OAAAV,GAAAA,EACF,0LAAA"} \ No newline at end of file +{"version":3,"file":"AppCoreExtensions-legacy-BzG4a-Q5.js","sources":["../../src/AppCoreExtensions.ts"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CoreExtension,\n WebTrFontFace,\n SdfTrFontFace,\n type Stage,\n} from \"@lightningjs/renderer/core\";\n\nconst basePath = import.meta.env.BASE_URL;\n\nexport default class AppCoreExtension extends CoreExtension {\n async run(stage: Stage) {\n // stage.fontManager.addFontFace(\n // new WebTrFontFace(\n // \"NotoSans\",\n // {},\n // basePath + \"fonts/NotoSans-Regular.ttf\",\n // ),\n // );\n stage.fontManager.addFontFace(\n new SdfTrFontFace(\n \"Ubuntu\",\n { weight: 700 },\n \"msdf\",\n stage,\n basePath + \"fonts/Ubuntu-Bold.msdf.png\",\n basePath + \"fonts/Ubuntu-Bold.msdf.json\",\n ),\n );\n stage.fontManager.addFontFace(\n new SdfTrFontFace(\n \"Ubuntu\",\n { weight: 400 },\n \"msdf\",\n stage,\n basePath + \"fonts/Ubuntu-Regular.msdf.png\",\n basePath + \"fonts/Ubuntu-Regular.msdf.json\",\n ),\n );\n }\n}\n"],"names":["basePath","AppCoreExtension","CoreExtension","run","stage","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","fontManager","addFontFace","SdfTrFontFace","weight","stop","exports"],"mappings":";;;;;;;;;;;;;;;QA0BA,IAAMA,QAAW,GAAA,kBAAA;QAEjB,MAAqBC,yBAAyBC,aAAc,CAAA;UACpDC,IAAIC,KAAc,EAAA;YAAA,OAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,UAAAC,QAAA;cAAA,OAAAF,mBAAA,GAAAG,IAAA,UAAAC,SAAAC,QAAA;gBAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;kBAAA;oBAQtBT,KAAA,CAAMU,WAAY,CAAAC,WAAA,CAChB,IAAIC,aAAA,CACF,QAAA,EACA;sBAAEC,QAAQ;oBAAI,CAAA,EACd,MAAA,EACAb,KAAA,EACAJ,QAAW,GAAA,4BAAA,EACXA,QAAW,GAAA,6BACb,CAAA,CACF;oBACAI,KAAA,CAAMU,WAAY,CAAAC,WAAA,CAChB,IAAIC,aAAA,CACF,QAAA,EACA;sBAAEC,QAAQ;oBAAI,CAAA,EACd,MAAA,EACAb,KAAA,EACAJ,QAAW,GAAA,+BAAA,EACXA,QAAW,GAAA,gCACb,CAAA,CACF;kBAAA;kBAAA;oBAAA,OAAAW,QAAA,CAAAO,IAAA;gBAAA;cAAA,GAAAV,OAAA;YAAA;UACF;QACF;QAAAW,OAAA,CAAA,SAAA,EAAAlB,gBAAA,CAAA;;;;"} \ No newline at end of file diff --git a/assets/AppCoreExtensions-legacy-KeSumw-d.js b/assets/AppCoreExtensions-legacy-KeSumw-d.js deleted file mode 100644 index 7cd5a30..0000000 --- a/assets/AppCoreExtensions-legacy-KeSumw-d.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){function t(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */t=function(){return e};var r,e={},n=Object.prototype,o=n.hasOwnProperty,i=Object.defineProperty||function(t,r,e){t[r]=e.value},a="function"==typeof Symbol?Symbol:{},c=a.iterator||"@@iterator",u=a.asyncIterator||"@@asyncIterator",f=a.toStringTag||"@@toStringTag";function s(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{s({},"")}catch(r){s=function(t,r,e){return t[r]=e}}function h(t,r,e,n){var o=r&&r.prototype instanceof m?r:m,a=Object.create(o.prototype),c=new N(n||[]);return i(a,"_invoke",{value:k(t,e,c)}),a}function l(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var p="suspendedStart",y="suspendedYield",v="executing",d="completed",g={};function m(){}function w(){}function b(){}var x={};s(x,c,(function(){return this}));var L=Object.getPrototypeOf,E=L&&L(L(S([])));E&&E!==n&&o.call(E,c)&&(x=E);var j=b.prototype=m.prototype=Object.create(x);function _(t){["next","throw","return"].forEach((function(r){s(t,r,(function(t){return this._invoke(r,t)}))}))}function O(t,r){function e(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var f=u.arg,s=f.value;return s&&"object"==typeof s&&o.call(s,"__await")?r.resolve(s.__await).then((function(t){e("next",t,a,c)}),(function(t){e("throw",t,a,c)})):r.resolve(s).then((function(t){f.value=t,a(f)}),(function(t){return e("throw",t,a,c)}))}c(u.arg)}var n;i(this,"_invoke",{value:function(t,o){function i(){return new r((function(r,n){e(t,o,r,n)}))}return n=n?n.then(i,i):i()}})}function k(t,e,n){var o=p;return function(i,a){if(o===v)throw Error("Generator is already running");if(o===d){if("throw"===i)throw a;return{value:r,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=F(c,n);if(u){if(u===g)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=v;var f=l(t,e,n);if("normal"===f.type){if(o=n.done?d:y,f.arg===g)continue;return{value:f.arg,done:n.done}}"throw"===f.type&&(o=d,n.method="throw",n.arg=f.arg)}}}function F(t,e){var n=e.method,o=t.iterator[n];if(o===r)return e.delegate=null,"throw"===n&&t.iterator.return&&(e.method="return",e.arg=r,F(t,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var i=l(o,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,g;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=r),e.delegate=null,g):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,g)}function P(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function G(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function N(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function S(t){if(t||""===t){var e=t[c];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=o.call(a,"catchLoc"),f=o.call(a,"finallyLoc");if(u&&f){if(this.prev=0;--e){var n=this.tryEntries[e];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),G(e),g}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;G(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:S(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=r),g}},e}function r(t,r,e,n,o,i,a){try{var c=t[i](a),u=c.value}catch(f){return void e(f)}c.done?r(u):Promise.resolve(u).then(n,o)}System.register(["./CoreExtension-legacy-1r1p_2oI.js"],(function(e,n){"use strict";var o,i;return{setters:[t=>{o=t.C,i=t.S}],execute:function(){var n="/solid-demo-app/";e("default",class extends o{run(e){return(o=t().mark((function r(){return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.fontManager.addFontFace(new i("Ubuntu",{weight:700},"msdf",e,n+"fonts/Ubuntu-Bold.msdf.png",n+"fonts/Ubuntu-Bold.msdf.json")),e.fontManager.addFontFace(new i("Ubuntu",{weight:400},"msdf",e,n+"fonts/Ubuntu-Regular.msdf.png",n+"fonts/Ubuntu-Regular.msdf.json"));case 2:case"end":return t.stop()}}),r)})),function(){var t=this,e=arguments;return new Promise((function(n,i){var a=o.apply(t,e);function c(t){r(a,n,i,c,u,"next",t)}function u(t){r(a,n,i,c,u,"throw",t)}c(void 0)}))})();var o}})}}}))}(); -//# sourceMappingURL=AppCoreExtensions-legacy-KeSumw-d.js.map diff --git a/assets/CoreExtension-BeuvW_LH.js b/assets/CoreExtension-BeuvW_LH.js new file mode 100644 index 0000000..ed0b8b4 --- /dev/null +++ b/assets/CoreExtension-BeuvW_LH.js @@ -0,0 +1,2634 @@ +var __defProp = Object.defineProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; +function createWebGLContext(canvas, contextSpy) { + const config = { + alpha: true, + antialias: false, + depth: false, + stencil: true, + desynchronized: false, + // Disabled because it prevents Visual Regression Tests from working + // failIfMajorPerformanceCaveat: true, + powerPreference: "high-performance", + premultipliedAlpha: true, + preserveDrawingBuffer: false + }; + const gl = ( + // TODO: Remove this assertion once this issue is fixed in TypeScript + // https://github.com/microsoft/TypeScript/issues/53614 + canvas.getContext("webgl", config) || canvas.getContext("experimental-webgl", config) + ); + if (!gl) { + throw new Error("Unable to create WebGL context"); + } + if (contextSpy) { + return new Proxy(gl, { + get(target, prop) { + const value = target[prop]; + if (typeof value === "function") { + contextSpy.increment(String(prop)); + return value.bind(target); + } + return value; + } + }); + } + return gl; +} +function assertTruthy(condition, message) { + if (isProductionEnvironment()) + return; + if (!condition) { + throw new Error(message || "Assertion failed"); + } +} +function mergeColorProgress(rgba1, rgba2, p) { + const r1 = Math.trunc(rgba1 >>> 24); + const g1 = Math.trunc(rgba1 >>> 16 & 255); + const b1 = Math.trunc(rgba1 >>> 8 & 255); + const a1 = Math.trunc(rgba1 & 255); + const r2 = Math.trunc(rgba2 >>> 24); + const g2 = Math.trunc(rgba2 >>> 16 & 255); + const b2 = Math.trunc(rgba2 >>> 8 & 255); + const a2 = Math.trunc(rgba2 & 255); + const r = Math.round(r2 * p + r1 * (1 - p)); + const g = Math.round(g2 * p + g1 * (1 - p)); + const b = Math.round(b2 * p + b1 * (1 - p)); + const a = Math.round(a2 * p + a1 * (1 - p)); + return (r << 24 | g << 16 | b << 8 | a) >>> 0; +} +function mergeColorAlpha(rgba, alpha) { + const r = rgba >>> 24; + const g = rgba >>> 16 & 255; + const b = rgba >>> 8 & 255; + const a = Math.trunc((rgba & 255) * alpha); + return (r << 24 | g << 16 | b << 8 | a) >>> 0; +} +function mergeColorAlphaPremultiplied(rgba, alpha, flipEndianess = false) { + const newAlpha = (rgba & 255) / 255 * alpha; + const r = Math.trunc((rgba >>> 24) * newAlpha); + const g = Math.trunc((rgba >>> 16 & 255) * newAlpha); + const b = Math.trunc((rgba >>> 8 & 255) * newAlpha); + const a = Math.trunc(newAlpha * 255); + if (flipEndianess) { + return (a << 24 | b << 16 | g << 8 | r) >>> 0; + } + return (r << 24 | g << 16 | b << 8 | a) >>> 0; +} +function hasOwn(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} +function isProductionEnvironment() { + return { "BASE_URL": "/solid-demo-app/", "MODE": "production", "DEV": false, "PROD": true, "SSR": false, "LEGACY": false } && true; +} +class EventEmitter { + constructor() { + __publicField(this, "eventListeners", {}); + } + on(event, listener) { + let listeners = this.eventListeners[event]; + if (!listeners) { + listeners = []; + } + listeners.push(listener); + this.eventListeners[event] = listeners; + } + off(event, listener) { + const listeners = this.eventListeners[event]; + if (!listeners) { + return; + } + if (!listener) { + delete this.eventListeners[event]; + return; + } + const index = listeners.indexOf(listener); + if (index >= 0) { + listeners.splice(index, 1); + } + } + once(event, listener) { + const onceListener = (target, data) => { + this.off(event, onceListener); + listener(target, data); + }; + this.on(event, onceListener); + } + emit(event, data) { + const listeners = this.eventListeners[event]; + if (!listeners) { + return; + } + [...listeners].forEach((listener) => { + listener(this, data); + }); + } + removeAllListeners() { + this.eventListeners = {}; + } +} +class CoreShader { + // abstract draw(): void; + static makeCacheKey(props) { + return false; + } + static resolveDefaults(props) { + return {}; + } +} +function createShader(glw, type, source) { + const shader = glw.createShader(type); + if (!shader) { + throw new Error(); + } + glw.shaderSource(shader, source); + glw.compileShader(shader); + const success = glw.getShaderParameter(shader, glw.COMPILE_STATUS); + if (success) { + return shader; + } + console.log(glw.getShaderInfoLog(shader)); + glw.deleteShader(shader); +} +function createProgram(glw, vertexShader, fragmentShader) { + const program = glw.createProgram(); + if (!program) { + throw new Error(); + } + glw.attachShader(program, vertexShader); + glw.attachShader(program, fragmentShader); + glw.linkProgram(program); + const success = glw.getProgramParameter(program, glw.LINK_STATUS); + if (success) { + return program; + } + console.log(glw.getProgramInfoLog(program)); + glw.deleteProgram(program); + return void 0; +} +function isWebGl2(gl) { + return self.WebGL2RenderingContext && gl instanceof self.WebGL2RenderingContext; +} +class WebGlCoreShader extends CoreShader { + constructor(options) { + super(); + __publicField(this, "boundBufferCollection", null); + __publicField(this, "buffersBound", false); + __publicField(this, "program"); + /** + * Vertex Array Object + * + * @remarks + * Used by WebGL2 Only + */ + __publicField(this, "vao"); + __publicField(this, "renderer"); + __publicField(this, "glw"); + __publicField(this, "attributeBuffers"); + __publicField(this, "attributeLocations"); + __publicField(this, "attributeNames"); + __publicField(this, "uniformLocations"); + __publicField(this, "uniformTypes"); + __publicField(this, "supportsIndexedTextures"); + const renderer = this.renderer = options.renderer; + const glw = this.glw = this.renderer.glw; + this.supportsIndexedTextures = options.supportsIndexedTextures || false; + const webGl2 = glw.isWebGl2(); + const requiredExtensions = webGl2 && options.webgl2Extensions || !webGl2 && options.webgl1Extensions || []; + const glVersion = webGl2 ? "2.0" : "1.0"; + requiredExtensions.forEach((extensionName) => { + if (!glw.getExtension(extensionName)) { + throw new Error('Shader "'.concat(this.constructor.name, '" requires extension "').concat(extensionName, '" for WebGL ').concat(glVersion, " but wasn't found")); + } + }); + const shaderSources = options.shaderSources || this.constructor.shaderSources; + if (!shaderSources) { + throw new Error('Shader "'.concat(this.constructor.name, '" is missing shaderSources.')); + } else if (webGl2 && (shaderSources == null ? void 0 : shaderSources.webGl2)) { + shaderSources.fragment = shaderSources.webGl2.fragment; + shaderSources.vertex = shaderSources.webGl2.vertex; + delete shaderSources.webGl2; + } + const textureUnits = renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS; + const vertexSource = shaderSources.vertex instanceof Function ? shaderSources.vertex(textureUnits) : shaderSources.vertex; + const fragmentSource = shaderSources.fragment instanceof Function ? shaderSources.fragment(textureUnits) : shaderSources.fragment; + const vertexShader = createShader(glw, glw.VERTEX_SHADER, vertexSource); + const fragmentShader = createShader(glw, glw.FRAGMENT_SHADER, fragmentSource); + if (!vertexShader || !fragmentShader) { + throw new Error(); + } + const program = createProgram(glw, vertexShader, fragmentShader); + if (!program) { + throw new Error(); + } + this.program = program; + if (webGl2) { + const vao = glw.createVertexArray(); + if (!vao) { + throw new Error(); + } + this.vao = vao; + glw.bindVertexArray(this.vao); + } + this.attributeLocations = {}; + this.attributeBuffers = {}; + this.attributeNames = []; + [...options.attributes].forEach((attributeName) => { + const location = glw.getAttribLocation(this.program, attributeName); + if (location < 0) { + throw new Error("".concat(this.constructor.name, ': Vertex shader must have an attribute "').concat(attributeName, '"!')); + } + const buffer = glw.createBuffer(); + if (!buffer) { + throw new Error("".concat(this.constructor.name, ': Could not create buffer for attribute "').concat(attributeName, '"')); + } + this.attributeLocations[attributeName] = location; + this.attributeBuffers[attributeName] = buffer; + this.attributeNames.push(attributeName); + }); + this.uniformLocations = {}; + this.uniformTypes = {}; + options.uniforms.forEach((uniform) => { + const location = glw.getUniformLocation(this.program, uniform.name); + this.uniformTypes[uniform.name] = uniform.uniform; + if (!location) { + console.warn('Shader "'.concat(this.constructor.name, '" could not get uniform location for "').concat(uniform.name, '"')); + return; + } + this.uniformLocations[uniform.name] = location; + }); + } + bindBufferAttribute(location, buffer, attribute) { + const { glw } = this; + glw.enableVertexAttribArray(location); + glw.vertexAttribPointer(buffer, location, attribute.size, attribute.type, attribute.normalized, attribute.stride, attribute.offset); + } + disableAttribute(location) { + this.glw.disableVertexAttribArray(location); + } + disableAttributes() { + for (const loc in this.attributeLocations) { + this.disableAttribute(this.attributeLocations[loc]); + } + this.boundBufferCollection = null; + } + /** + * Given two sets of Shader props destined for this Shader, determine if they can be batched together + * to reduce the number of draw calls. + * + * @remarks + * This is used by the {@link WebGlCoreRenderer} to determine if it can batch multiple consecutive draw + * calls into a single draw call. + * + * By default, this returns false (meaning no batching is allowed), but can be + * overridden by child classes to provide more efficient batching. + * + * @param propsA + * @param propsB + * @returns + */ + canBatchShaderProps(propsA, propsB) { + return false; + } + bindRenderOp(renderOp, props) { + this.bindBufferCollection(renderOp.buffers); + if (renderOp.textures.length > 0) { + this.bindTextures(renderOp.textures); + } + const { glw, parentHasRenderTexture, renderToTexture } = renderOp; + if (renderToTexture && parentHasRenderTexture) { + return; + } + if (parentHasRenderTexture) { + const { width, height } = renderOp.framebufferDimensions || {}; + this.setUniform("u_pixelRatio", 1); + this.setUniform("u_resolution", new Float32Array([width != null ? width : 0, height != null ? height : 0])); + } else { + this.setUniform("u_pixelRatio", renderOp.options.pixelRatio); + this.setUniform("u_resolution", new Float32Array([glw.canvas.width, glw.canvas.height])); + } + if (props) { + if (hasOwn(props, "$dimensions")) { + let dimensions = props.$dimensions; + if (!dimensions) { + dimensions = renderOp.dimensions; + } + this.setUniform("u_dimensions", [dimensions.width, dimensions.height]); + } + if (hasOwn(props, "$alpha")) { + let alpha = props.$alpha; + if (!alpha) { + alpha = renderOp.alpha; + } + this.setUniform("u_alpha", alpha); + } + this.bindProps(props); + } + } + setUniform(name, ...value) { + this.glw.setUniform(this.uniformTypes[name], this.uniformLocations[name], ...value); + } + bindBufferCollection(buffer) { + if (this.boundBufferCollection === buffer) { + return; + } + for (const attributeName in this.attributeLocations) { + const resolvedBuffer = buffer.getBuffer(attributeName); + const resolvedInfo = buffer.getAttributeInfo(attributeName); + assertTruthy(resolvedBuffer, 'Buffer for "'.concat(attributeName, '" not found')); + assertTruthy(resolvedInfo); + this.bindBufferAttribute(this.attributeLocations[attributeName], resolvedBuffer, resolvedInfo); + } + this.boundBufferCollection = buffer; + } + bindProps(props) { + } + bindTextures(textures) { + } + attach() { + this.glw.useProgram(this.program); + this.glw.useProgram(this.program); + if (this.glw.isWebGl2() && this.vao) { + this.glw.bindVertexArray(this.vao); + } + } + detach() { + this.disableAttributes(); + } +} +__publicField(WebGlCoreShader, "shaderSources"); +class Texture extends EventEmitter { + constructor(txManager) { + super(); + __publicField(this, "txManager"); + /** + * The dimensions of the texture + * + * @remarks + * Until the texture data is loaded for the first time the value will be + * `null`. + */ + __publicField(this, "dimensions", null); + __publicField(this, "error", null); + __publicField(this, "state", "freed"); + __publicField(this, "renderableOwners", /* @__PURE__ */ new Set()); + this.txManager = txManager; + } + /** + * Add/remove an owner to/from the Texture based on its renderability. + * + * @remarks + * Any object can own a texture, be it a CoreNode or even the state object + * from a Text Renderer. + * + * When the reference to the texture that an owner object holds is replaced + * or cleared it must call this with `renderable=false` to release the owner + * association. + * + * @param owner + * @param renderable + */ + setRenderableOwner(owner, renderable) { + if (renderable) { + this.renderableOwners.add(owner); + } else { + this.renderableOwners.delete(owner); + } + } + /** + * Returns true if the texture is assigned to any Nodes that are renderable. + */ + get renderable() { + return this.renderableOwners.size > 0; + } + /** + * Set the state of the texture + * + * @remark + * Intended for internal-use only but declared public so that it can be set + * by it's associated {@link CoreContextTexture} + * + * @param state + * @param args + */ + setState(state, ...args) { + if (this.state !== state) { + this.state = state; + if (state === "loaded") { + const loadedArgs = args; + this.dimensions = loadedArgs[0]; + } else if (state === "failed") { + const failedArgs = args; + this.error = failedArgs[0]; + } + this.emit(state, ...args); + } + } + /** + * Make a cache key for this texture. + * + * @remarks + * Each concrete `Texture` subclass must implement this method to provide an + * appropriate cache key for the texture type including the texture's + * properties that uniquely identify a copy of the texture. If the texture + * type does not support caching, then this method should return `false`. + * + * @param props + * @returns + * A cache key for this texture or `false` if the texture type does not + * support caching. + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + static makeCacheKey(props) { + return false; + } + /** + * Resolve the default values for the texture's properties. + * + * @remarks + * Each concrete `Texture` subclass must implement this method to provide + * default values for the texture's optional properties. + * + * @param props + * @returns + * The default values for the texture's properties. + */ + static resolveDefaults(props) { + return {}; + } +} +const getNormalizedRgbaComponents = (rgba) => { + const r = rgba >>> 24; + const g = rgba >>> 16 & 255; + const b = rgba >>> 8 & 255; + const a = rgba & 255; + return [r / 255, g / 255, b / 255, a / 255]; +}; +function getNormalizedAlphaComponent(rgba) { + return (rgba & 255) / 255; +} +function getRgbaString(color) { + const r = Math.floor(color[0] * 255); + const g = Math.floor(color[1] * 255); + const b = Math.floor(color[2] * 255); + const a = Math.floor(color[3] * 255); + return "rgba(".concat(r, ",").concat(g, ",").concat(b, ",").concat(a.toFixed(4), ")"); +} +function createBound(x1, y1, x2, y2, out) { + if (out) { + out.x1 = x1; + out.y1 = y1; + out.x2 = x2; + out.y2 = y2; + return out; + } + return { + x1, + y1, + x2, + y2 + }; +} +function intersectBound(a, b, out) { + const intersection = createBound(Math.max(a.x1, b.x1), Math.max(a.y1, b.y1), Math.min(a.x2, b.x2), Math.min(a.y2, b.y2), out); + if (intersection.x1 < intersection.x2 && intersection.y1 < intersection.y2) { + return intersection; + } + return createBound(0, 0, 0, 0, intersection); +} +function boundsOverlap(a, b) { + return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1; +} +function convertBoundToRect(bound, out) { + if (out) { + out.x = bound.x1; + out.y = bound.y1; + out.width = bound.x2 - bound.x1; + out.height = bound.y2 - bound.y1; + return out; + } + return { + x: bound.x1, + y: bound.y1, + width: bound.x2 - bound.x1, + height: bound.y2 - bound.y1 + }; +} +function intersectRect(a, b, out) { + const x = Math.max(a.x, b.x); + const y = Math.max(a.y, b.y); + const width = Math.min(a.x + a.width, b.x + b.width) - x; + const height = Math.min(a.y + a.height, b.y + b.height) - y; + if (width > 0 && height > 0) { + if (out) { + out.x = x; + out.y = y; + out.width = width; + out.height = height; + return out; + } + return { + x, + y, + width, + height + }; + } + if (out) { + out.x = 0; + out.y = 0; + out.width = 0; + out.height = 0; + return out; + } + return { + x: 0, + y: 0, + width: 0, + height: 0 + }; +} +function copyRect(a, out) { + if (out) { + out.x = a.x; + out.y = a.y; + out.width = a.width; + out.height = a.height; + return out; + } + return { + x: a.x, + y: a.y, + width: a.width, + height: a.height + }; +} +function compareRect(a, b) { + if (a === b) { + return true; + } + if (a === null || b === null) { + return false; + } + return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; +} +function boundInsideBound(bound1, bound2) { + return bound1.x1 <= bound2.x2 && bound1.y1 <= bound2.y2 && bound1.x2 >= bound2.x1 && bound1.y2 >= bound2.y1; +} +function isBoundPositive(bound) { + return bound.x1 < bound.x2 && bound.y1 < bound.y2; +} +class TrFontFace extends EventEmitter { + constructor(fontFamily, descriptors) { + super(); + __publicField(this, "fontFamily"); + __publicField(this, "descriptors"); + __publicField(this, "loaded", false); + this.fontFamily = fontFamily; + this.descriptors = { + style: "normal", + weight: "normal", + stretch: "normal", + ...descriptors + }; + } + /** + * Convert a TrFontFaceDescriptors to a FontFaceDescriptors which differ slightly + * + * @param descriptors + * @returns + */ + static convertToCssFontFaceDescriptors(descriptors) { + return { + style: descriptors.style, + weight: typeof descriptors.weight === "number" ? "".concat(descriptors.weight) : descriptors.weight, + stretch: descriptors.stretch, + unicodeRange: descriptors.unicodeRange, + variant: descriptors.variant, + featureSettings: descriptors.featureSettings, + display: descriptors.display + }; + } +} +class CoreContextTexture { + constructor(memManager, textureSource) { + __publicField(this, "memManager"); + __publicField(this, "textureSource"); + this.memManager = memManager; + this.textureSource = textureSource; + } +} +class CoreRenderer { + constructor(stage) { + __publicField(this, "stage"); + this.stage = stage; + } +} +class CoreRenderOp { +} +class WebGlCoreRenderOp extends CoreRenderOp { + constructor(glw, options, buffers, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, zIndex, renderToTexture, parentHasRenderTexture, framebufferDimensions) { + super(); + __publicField(this, "glw"); + __publicField(this, "options"); + __publicField(this, "buffers"); + __publicField(this, "shader"); + __publicField(this, "shaderProps"); + __publicField(this, "alpha"); + __publicField(this, "clippingRect"); + __publicField(this, "dimensions"); + __publicField(this, "bufferIdx"); + __publicField(this, "zIndex"); + __publicField(this, "renderToTexture"); + __publicField(this, "parentHasRenderTexture"); + __publicField(this, "framebufferDimensions"); + __publicField(this, "length", 0); + __publicField(this, "numQuads", 0); + __publicField(this, "textures", []); + __publicField(this, "maxTextures"); + this.glw = glw; + this.options = options; + this.buffers = buffers; + this.shader = shader; + this.shaderProps = shaderProps; + this.alpha = alpha; + this.clippingRect = clippingRect; + this.dimensions = dimensions; + this.bufferIdx = bufferIdx; + this.zIndex = zIndex; + this.renderToTexture = renderToTexture; + this.parentHasRenderTexture = parentHasRenderTexture; + this.framebufferDimensions = framebufferDimensions; + this.maxTextures = shader.supportsIndexedTextures ? glw.getParameter(glw.MAX_VERTEX_TEXTURE_IMAGE_UNITS) : 1; + } + addTexture(texture) { + const { textures, maxTextures } = this; + const existingIdx = textures.findIndex((t) => t === texture); + if (existingIdx !== -1) { + return existingIdx; + } + const newIdx = textures.length; + if (newIdx >= maxTextures) { + return 4294967295; + } + this.textures.push(texture); + return newIdx; + } + draw() { + const { glw, shader, shaderProps, options } = this; + const { shManager } = options; + shManager.useShader(shader); + shader.bindRenderOp(this, shaderProps); + const quadIdx = this.bufferIdx / 24 * 6 * 2; + if (this.clippingRect.valid) { + const { x, y, width, height } = this.clippingRect; + const pixelRatio = options.pixelRatio; + const canvasHeight = options.canvas.height; + const clipX = Math.round(x * pixelRatio); + const clipWidth = Math.round(width * pixelRatio); + const clipHeight = Math.round(height * pixelRatio); + const clipY = Math.round(canvasHeight - clipHeight - y * pixelRatio); + glw.setScissorTest(true); + glw.scissor(clipX, clipY, clipWidth, clipHeight); + } else { + glw.setScissorTest(false); + } + glw.drawElements(glw.TRIANGLES, 6 * this.numQuads, glw.UNSIGNED_SHORT, quadIdx); + } +} +function getWebGlParameters(glw) { + const params = { + MAX_RENDERBUFFER_SIZE: 0, + MAX_TEXTURE_SIZE: 0, + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any + MAX_VIEWPORT_DIMS: 0, + MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0, + MAX_TEXTURE_IMAGE_UNITS: 0, + MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0, + MAX_VERTEX_ATTRIBS: 0, + MAX_VARYING_VECTORS: 0, + MAX_VERTEX_UNIFORM_VECTORS: 0, + MAX_FRAGMENT_UNIFORM_VECTORS: 0 + }; + const keys = Object.keys(params); + keys.forEach((key) => { + params[key] = glw.getParameter(glw[key]); + }); + return params; +} +function getWebGlExtensions(glw) { + const extensions = { + ANGLE_instanced_arrays: null, + WEBGL_compressed_texture_s3tc: null, + WEBGL_compressed_texture_astc: null, + WEBGL_compressed_texture_etc: null, + WEBGL_compressed_texture_etc1: null, + WEBGL_compressed_texture_pvrtc: null, + WEBKIT_WEBGL_compressed_texture_pvrtc: null, + WEBGL_compressed_texture_s3tc_srgb: null, + OES_vertex_array_object: null + }; + const keys = Object.keys(extensions); + keys.forEach((key) => { + extensions[key] = glw.getExtension(key); + }); + return extensions; +} +function createIndexBuffer(glw, size) { + const maxQuads = ~~(size / 80); + const indices = new Uint16Array(maxQuads * 6); + for (let i = 0, j = 0; i < maxQuads; i += 6, j += 4) { + indices[i] = j; + indices[i + 1] = j + 1; + indices[i + 2] = j + 2; + indices[i + 3] = j + 2; + indices[i + 4] = j + 1; + indices[i + 5] = j + 3; + } + const buffer = glw.createBuffer(); + glw.elementArrayBufferData(buffer, indices, glw.STATIC_DRAW); +} +function isHTMLImageElement(obj) { + return obj !== null && typeof obj === "object" && obj.constructor && obj.constructor.name === "HTMLImageElement"; +} +function memize(fn, options) { + var size = 0; + var head; + var tail; + options = options || {}; + function memoized() { + var node = head, len = arguments.length, args, i; + searchCache: + while (node) { + if (node.args.length !== arguments.length) { + node = node.next; + continue; + } + for (i = 0; i < len; i++) { + if (node.args[i] !== arguments[i]) { + node = node.next; + continue searchCache; + } + } + if (node !== head) { + if (node === tail) { + tail = node.prev; + } + node.prev.next = node.next; + if (node.next) { + node.next.prev = node.prev; + } + node.next = head; + node.prev = null; + head.prev = node; + head = node; + } + return node.val; + } + args = new Array(len); + for (i = 0; i < len; i++) { + args[i] = arguments[i]; + } + node = { + args, + // Generate the result from original function + val: fn.apply(null, args) + }; + if (head) { + head.prev = node; + node.next = head; + } else { + tail = node; + } + if (size === /** @type {MemizeOptions} */ + options.maxSize) { + tail = /** @type {MemizeCacheNode} */ + tail.prev; + tail.next = null; + } else { + size++; + } + head = node; + return node.val; + } + memoized.clear = function() { + head = null; + tail = null; + size = 0; + }; + return memoized; +} +const isPowerOfTwo = (value) => { + return value && !(value & value - 1); +}; +const getTimingBezier = (a, b, c, d) => { + const xc = 3 * a; + const xb = 3 * (c - a) - xc; + const xa = 1 - xc - xb; + const yc = 3 * b; + const yb = 3 * (d - b) - yc; + const ya = 1 - yc - yb; + return function(time) { + if (time >= 1) { + return 1; + } + if (time <= 0) { + return 0; + } + let t = 0.5, cbx, cbxd, dx; + for (let it = 0; it < 20; it++) { + cbx = t * (t * (t * xa + xb) + xc); + dx = time - cbx; + if (dx > -1e-8 && dx < 1e-8) { + return t * (t * (t * ya + yb) + yc); + } + cbxd = t * (t * (3 * xa) + 2 * xb) + xc; + if (cbxd > 1e-10 && cbxd < 1e-10) { + break; + } + t += dx / cbxd; + } + let minT = 0; + let maxT = 1; + for (let it = 0; it < 20; it++) { + t = 0.5 * (minT + maxT); + cbx = t * (t * (t * xa + xb) + xc); + dx = time - cbx; + if (dx > -1e-8 && dx < 1e-8) { + return t * (t * (t * ya + yb) + yc); + } + if (dx < 0) { + maxT = t; + } else { + minT = t; + } + } + }; +}; +const getTimingFunction = memize((str) => { + switch (str) { + case "linear": + return function(time) { + return time; + }; + case "ease": + return getTimingBezier(0.25, 0.1, 0.25, 1); + case "ease-in": + return getTimingBezier(0.42, 0, 1, 1); + case "ease-out": + return getTimingBezier(0, 0, 0.58, 1); + case "ease-in-out": + return getTimingBezier(0.42, 0, 0.58, 1); + case "ease-in-sine": + return getTimingBezier(0.12, 0, 0.39, 0); + case "ease-out-sine": + return getTimingBezier(0.12, 0, 0.39, 0); + case "ease-in-out-sine": + return getTimingBezier(0.37, 0, 0.63, 1); + case "ease-in-cubic": + return getTimingBezier(0.32, 0, 0.67, 0); + case "ease-out-cubic": + return getTimingBezier(0.33, 1, 0.68, 1); + case "ease-in-out-cubic": + return getTimingBezier(0.65, 0, 0.35, 1); + case "ease-in-circ": + return getTimingBezier(0.55, 0, 1, 0.45); + case "ease-out-circ": + return getTimingBezier(0, 0.55, 0.45, 1); + case "ease-in-out-circ": + return getTimingBezier(0.85, 0, 0.15, 1); + case "ease-in-back": + return getTimingBezier(0.36, 0, 0.66, -0.56); + case "ease-out-back": + return getTimingBezier(0.34, 1.56, 0.64, 1); + case "ease-in-out-back": + return getTimingBezier(0.68, -0.6, 0.32, 1.6); + case "step-start": + return function() { + return 1; + }; + case "step-end": + return function(time) { + return time === 1 ? 1 : 0; + }; + default: + const s = "cubic-bezier("; + if (str && str.indexOf(s) === 0) { + const parts = str.substr(s.length, str.length - s.length - 1).split(","); + if (parts.length !== 4) { + console.warn("Unknown timing function: " + str); + return function(time) { + return time; + }; + } + const a = parseFloat(parts[0] || "0.42"); + const b = parseFloat(parts[1] || "0"); + const c = parseFloat(parts[2] || "1"); + const d = parseFloat(parts[3] || "1"); + if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d)) { + console.warn(" Unknown timing function: " + str); + return function(time) { + return time; + }; + } + return getTimingBezier(a, b, c, d); + } else { + console.warn("Unknown timing function: " + str); + return function(time) { + return time; + }; + } + } +}); +if (!Math.hypot) + Math.hypot = (...args) => { + let y = 0, i = args.length; + while (i--) { + y += args[i] * args[i]; + } + return Math.sqrt(y); + }; +const TRANSPARENT_TEXTURE_DATA = new Uint8Array([0, 0, 0, 0]); +class WebGlCoreCtxTexture extends CoreContextTexture { + constructor(glw, memManager, textureSource) { + super(memManager, textureSource); + __publicField(this, "glw"); + __publicField(this, "_nativeCtxTexture", null); + __publicField(this, "_state", "freed"); + __publicField(this, "_w", 0); + __publicField(this, "_h", 0); + this.glw = glw; + } + get ctxTexture() { + if (this._state === "freed") { + this.load(); + } + assertTruthy(this._nativeCtxTexture); + return this._nativeCtxTexture; + } + get renderable() { + return this.textureSource.renderable; + } + get w() { + return this._w; + } + get h() { + return this._h; + } + /** + * Load the texture data from the Texture source and upload it to the GPU + * + * @remarks + * This method is called automatically when accessing the ctxTexture property + * if the texture hasn't been loaded yet. But it can also be called manually + * to force the texture to be pre-loaded prior to accessing the ctxTexture + * property. + */ + load() { + if (this._state === "loading" || this._state === "loaded") { + return; + } + this._state = "loading"; + this.textureSource.setState("loading"); + this._nativeCtxTexture = this.createNativeCtxTexture(); + this.onLoadRequest().then(({ width, height }) => { + if (this._state === "freed") { + return; + } + this._state = "loaded"; + this._w = width; + this._h = height; + this.textureSource.setState("loaded", { width, height }); + }).catch((err) => { + this._state = "failed"; + this.textureSource.setState("failed", err); + console.error(err); + }); + } + /** + * Called when the texture data needs to be loaded and uploaded to a texture + */ + async onLoadRequest() { + var _a, _b; + const { glw, memManager } = this; + glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, null); + memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength); + const textureData = await ((_a = this.textureSource) == null ? void 0 : _a.getTextureData()); + if (!this._nativeCtxTexture) { + assertTruthy(this._state === "freed"); + return { width: 0, height: 0 }; + } + let width = 0; + let height = 0; + assertTruthy(this._nativeCtxTexture); + glw.activeTexture(0); + if (textureData.data instanceof ImageBitmap || textureData.data instanceof ImageData || // not using typeof HTMLImageElement due to web worker + isHTMLImageElement(textureData.data)) { + const data = textureData.data; + width = data.width; + height = data.height; + glw.bindTexture(this._nativeCtxTexture); + glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha); + glw.texImage2D(0, glw.RGBA, glw.RGBA, glw.UNSIGNED_BYTE, data); + memManager.setTextureMemUse(this, width * height * 4); + if (glw.isWebGl2() || isPowerOfTwo(width) && isPowerOfTwo(height)) { + glw.generateMipmap(); + } + } else if (textureData.data === null) { + width = 0; + height = 0; + glw.bindTexture(this._nativeCtxTexture); + glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, TRANSPARENT_TEXTURE_DATA); + memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength); + } else if ("mipmaps" in textureData.data && textureData.data.mipmaps) { + const { mipmaps, width: width2 = 0, height: height2 = 0, type, glInternalFormat } = textureData.data; + const view = type === "ktx" ? new DataView((_b = mipmaps[0]) != null ? _b : new ArrayBuffer(0)) : mipmaps[0]; + glw.bindTexture(this._nativeCtxTexture); + glw.compressedTexImage2D(0, glInternalFormat, width2, height2, 0, view); + glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE); + glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE); + glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR); + glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR); + memManager.setTextureMemUse(this, view.byteLength); + } else { + console.error("WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned", textureData); + } + return { + width, + height + }; + } + /** + * Free the WebGLTexture from the GPU + * + * @returns + */ + free() { + if (this._state === "freed") { + return; + } + this._state = "freed"; + this.textureSource.setState("freed"); + this._w = 0; + this._h = 0; + if (!this._nativeCtxTexture) { + return; + } + const { glw, memManager } = this; + glw.deleteTexture(this._nativeCtxTexture); + memManager.setTextureMemUse(this, 0); + this._nativeCtxTexture = null; + } + /** + * Create native context texture + * + * @remarks + * When this method returns the returned texture will be bound to the GL context state. + * + * @param width + * @param height + * @returns + */ + createNativeCtxTexture() { + const { glw } = this; + const nativeTexture = glw.createTexture(); + if (!nativeTexture) { + throw new Error("Could not create WebGL Texture"); + } + glw.activeTexture(0); + glw.bindTexture(nativeTexture); + glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR); + glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR); + glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE); + glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE); + return nativeTexture; + } +} +const _ColorTexture = class _ColorTexture extends Texture { + constructor(txManager, props) { + super(txManager); + __publicField(this, "props"); + this.props = _ColorTexture.resolveDefaults(props || {}); + } + get color() { + return this.props.color; + } + set color(color) { + this.props.color = color; + } + async getTextureData() { + const pixelData32 = new Uint32Array([this.color]); + const pixelData8 = new Uint8ClampedArray(pixelData32.buffer); + return { + data: new ImageData(pixelData8, 1, 1), + premultiplyAlpha: true + }; + } + static makeCacheKey(props) { + const resolvedProps = _ColorTexture.resolveDefaults(props); + return "ColorTexture,".concat(resolvedProps.color); + } + static resolveDefaults(props) { + return { + color: props.color || 4294967295 + }; + } +}; +__publicField(_ColorTexture, "z$__type__Props"); +let ColorTexture = _ColorTexture; +const _SubTexture = class _SubTexture extends Texture { + constructor(txManager, props) { + super(txManager); + __publicField(this, "props"); + __publicField(this, "parentTexture"); + __publicField(this, "onParentTxLoaded", () => { + this.setState("loaded", { + width: this.props.width, + height: this.props.height + }); + }); + __publicField(this, "onParentTxFailed", (target, error) => { + this.setState("failed", error); + }); + this.parentTexture = this.txManager.loadTexture(props.texture.txType, props.texture.props, props.texture.options); + this.props = _SubTexture.resolveDefaults(props || {}); + queueMicrotask(() => { + const parentTx = this.parentTexture; + if (parentTx.state === "loaded") { + this.onParentTxLoaded(parentTx, parentTx.dimensions); + } else if (parentTx.state === "failed") { + this.onParentTxFailed(parentTx, parentTx.error); + } + parentTx.on("loaded", this.onParentTxLoaded); + parentTx.on("failed", this.onParentTxFailed); + }); + } + async getTextureData() { + return { + data: this.props + }; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + static makeCacheKey(props) { + return false; + } + static resolveDefaults(props) { + return { + texture: props.texture, + x: props.x || 0, + y: props.y || 0, + width: props.width || 0, + height: props.height || 0 + }; + } +}; +__publicField(_SubTexture, "z$__type__Props"); +let SubTexture = _SubTexture; +class WebGlCoreCtxSubTexture extends WebGlCoreCtxTexture { + constructor(glw, memManager, textureSource) { + super(glw, memManager, textureSource); + } + async onLoadRequest() { + var _a, _b; + const props = await this.textureSource.getTextureData(); + return { + width: ((_a = props.data) == null ? void 0 : _a.width) || 0, + height: ((_b = props.data) == null ? void 0 : _b.height) || 0 + }; + } +} +class BufferCollection { + constructor(config) { + __publicField(this, "config"); + this.config = config; + } + /** + * Get the WebGLBuffer associated with the given attribute name if it exists. + * + * @param attributeName + * @returns + */ + getBuffer(attributeName) { + var _a; + return (_a = this.config.find((item) => item.attributes[attributeName])) == null ? void 0 : _a.buffer; + } + /** + * Get the AttributeInfo associated with the given attribute name if it exists. + * + * @param attributeName + * @returns + */ + getAttributeInfo(attributeName) { + var _a; + return (_a = this.config.find((item) => item.attributes[attributeName])) == null ? void 0 : _a.attributes[attributeName]; + } +} +class WebGlContextWrapper { + //#endregion WebGL Enums + constructor(gl) { + __publicField(this, "gl"); + //#region Cached WebGL State + __publicField(this, "activeTextureUnit", 0); + __publicField(this, "texture2dUnits"); + __publicField(this, "texture2dParams", /* @__PURE__ */ new WeakMap()); + __publicField(this, "scissorEnabled"); + __publicField(this, "scissorX"); + __publicField(this, "scissorY"); + __publicField(this, "scissorWidth"); + __publicField(this, "scissorHeight"); + __publicField(this, "blendEnabled"); + __publicField(this, "blendSrcRgb"); + __publicField(this, "blendDstRgb"); + __publicField(this, "blendSrcAlpha"); + __publicField(this, "blendDstAlpha"); + __publicField(this, "boundArrayBuffer"); + __publicField(this, "boundElementArrayBuffer"); + __publicField(this, "curProgram"); + __publicField(this, "programUniforms", /* @__PURE__ */ new WeakMap()); + //#endregion Cached WebGL State + //#region Canvas + __publicField(this, "canvas"); + //#endregion Canvas + //#region WebGL Enums + __publicField(this, "MAX_RENDERBUFFER_SIZE"); + __publicField(this, "MAX_TEXTURE_SIZE"); + __publicField(this, "MAX_VIEWPORT_DIMS"); + __publicField(this, "MAX_VERTEX_TEXTURE_IMAGE_UNITS"); + __publicField(this, "MAX_TEXTURE_IMAGE_UNITS"); + __publicField(this, "MAX_COMBINED_TEXTURE_IMAGE_UNITS"); + __publicField(this, "MAX_VERTEX_ATTRIBS"); + __publicField(this, "MAX_VARYING_VECTORS"); + __publicField(this, "MAX_VERTEX_UNIFORM_VECTORS"); + __publicField(this, "MAX_FRAGMENT_UNIFORM_VECTORS"); + __publicField(this, "TEXTURE_MAG_FILTER"); + __publicField(this, "TEXTURE_MIN_FILTER"); + __publicField(this, "TEXTURE_WRAP_S"); + __publicField(this, "TEXTURE_WRAP_T"); + __publicField(this, "LINEAR"); + __publicField(this, "CLAMP_TO_EDGE"); + __publicField(this, "RGBA"); + __publicField(this, "UNSIGNED_BYTE"); + __publicField(this, "UNPACK_PREMULTIPLY_ALPHA_WEBGL"); + __publicField(this, "UNPACK_FLIP_Y_WEBGL"); + __publicField(this, "FLOAT"); + __publicField(this, "TRIANGLES"); + __publicField(this, "UNSIGNED_SHORT"); + __publicField(this, "ONE"); + __publicField(this, "ONE_MINUS_SRC_ALPHA"); + __publicField(this, "VERTEX_SHADER"); + __publicField(this, "FRAGMENT_SHADER"); + __publicField(this, "STATIC_DRAW"); + __publicField(this, "COMPILE_STATUS"); + __publicField(this, "LINK_STATUS"); + __publicField(this, "DYNAMIC_DRAW"); + __publicField(this, "COLOR_ATTACHMENT0"); + this.gl = gl; + this.activeTextureUnit = gl.getParameter(gl.ACTIVE_TEXTURE) - gl.TEXTURE0; + const maxTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + this.texture2dUnits = new Array(maxTextureUnits).fill(void 0).map((_, i) => { + this.activeTexture(i); + return gl.getParameter(gl.TEXTURE_BINDING_2D); + }); + this.activeTexture(this.activeTextureUnit); + this.scissorEnabled = gl.isEnabled(gl.SCISSOR_TEST); + const scissorBox = gl.getParameter(gl.SCISSOR_BOX); + this.scissorX = scissorBox[0]; + this.scissorY = scissorBox[1]; + this.scissorWidth = scissorBox[2]; + this.scissorHeight = scissorBox[3]; + this.blendEnabled = gl.isEnabled(gl.BLEND); + this.blendSrcRgb = gl.getParameter(gl.BLEND_SRC_RGB); + this.blendDstRgb = gl.getParameter(gl.BLEND_DST_RGB); + this.blendSrcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA); + this.blendDstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA); + this.boundArrayBuffer = gl.getParameter(gl.ARRAY_BUFFER_BINDING); + this.boundElementArrayBuffer = gl.getParameter(gl.ELEMENT_ARRAY_BUFFER_BINDING); + this.curProgram = gl.getParameter(gl.CURRENT_PROGRAM); + this.canvas = gl.canvas; + this.MAX_RENDERBUFFER_SIZE = gl.MAX_RENDERBUFFER_SIZE; + this.MAX_TEXTURE_SIZE = gl.MAX_TEXTURE_SIZE; + this.MAX_VIEWPORT_DIMS = gl.MAX_VIEWPORT_DIMS; + this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS; + this.MAX_TEXTURE_IMAGE_UNITS = gl.MAX_TEXTURE_IMAGE_UNITS; + this.MAX_COMBINED_TEXTURE_IMAGE_UNITS = gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS; + this.MAX_VERTEX_ATTRIBS = gl.MAX_VERTEX_ATTRIBS; + this.MAX_VARYING_VECTORS = gl.MAX_VARYING_VECTORS; + this.MAX_VERTEX_UNIFORM_VECTORS = gl.MAX_VERTEX_UNIFORM_VECTORS; + this.MAX_FRAGMENT_UNIFORM_VECTORS = gl.MAX_FRAGMENT_UNIFORM_VECTORS; + this.TEXTURE_MAG_FILTER = gl.TEXTURE_MAG_FILTER; + this.TEXTURE_MIN_FILTER = gl.TEXTURE_MIN_FILTER; + this.TEXTURE_WRAP_S = gl.TEXTURE_WRAP_S; + this.TEXTURE_WRAP_T = gl.TEXTURE_WRAP_T; + this.LINEAR = gl.LINEAR; + this.CLAMP_TO_EDGE = gl.CLAMP_TO_EDGE; + this.RGBA = gl.RGBA; + this.UNSIGNED_BYTE = gl.UNSIGNED_BYTE; + this.UNPACK_PREMULTIPLY_ALPHA_WEBGL = gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL; + this.UNPACK_FLIP_Y_WEBGL = gl.UNPACK_FLIP_Y_WEBGL; + this.FLOAT = gl.FLOAT; + this.TRIANGLES = gl.TRIANGLES; + this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT; + this.ONE = gl.ONE; + this.ONE_MINUS_SRC_ALPHA = gl.ONE_MINUS_SRC_ALPHA; + this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS; + this.TRIANGLES = gl.TRIANGLES; + this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT; + this.VERTEX_SHADER = gl.VERTEX_SHADER; + this.FRAGMENT_SHADER = gl.FRAGMENT_SHADER; + this.STATIC_DRAW = gl.STATIC_DRAW; + this.COMPILE_STATUS = gl.COMPILE_STATUS; + this.LINK_STATUS = gl.LINK_STATUS; + this.DYNAMIC_DRAW = gl.DYNAMIC_DRAW; + this.COLOR_ATTACHMENT0 = gl.COLOR_ATTACHMENT0; + } + /** + * Returns true if the WebGL context is WebGL2 + * + * @returns + */ + isWebGl2() { + return isWebGl2(this.gl); + } + /** + * ``` + * gl.activeTexture(textureUnit + gl.TEXTURE0); + * ``` + * + * @remarks + * **WebGL Difference**: `textureUnit` is based from 0, not `gl.TEXTURE0`. + * + * @param textureUnit + */ + activeTexture(textureUnit) { + const { gl } = this; + if (this.activeTextureUnit !== textureUnit) { + gl.activeTexture(textureUnit + gl.TEXTURE0); + this.activeTextureUnit = textureUnit; + } + } + /** + * ``` + * gl.bindTexture(gl.TEXTURE_2D, texture); + * ``` + * @remarks + * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D` + * + * @param texture + */ + bindTexture(texture) { + const { gl, activeTextureUnit, texture2dUnits } = this; + if (texture2dUnits[activeTextureUnit] === texture) { + return; + } + texture2dUnits[activeTextureUnit] = texture; + gl.bindTexture(this.gl.TEXTURE_2D, texture); + } + _getActiveTexture() { + const { activeTextureUnit, texture2dUnits } = this; + return texture2dUnits[activeTextureUnit]; + } + /** + * ``` + * gl.texParameteri(gl.TEXTURE_2D, pname, param); + * ``` + * @remarks + * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D` + * + * @param pname + * @param param + * @returns + */ + texParameteri(pname, param) { + const { gl, texture2dParams } = this; + const activeTexture = this._getActiveTexture(); + if (!activeTexture) { + throw new Error("No active texture"); + } + let textureParams = texture2dParams.get(activeTexture); + if (!textureParams) { + textureParams = {}; + texture2dParams.set(activeTexture, textureParams); + } + if (textureParams[pname] === param) { + return; + } + textureParams[pname] = param; + gl.texParameteri(gl.TEXTURE_2D, pname, param); + } + texImage2D(level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels) { + const { gl } = this; + if (format) { + gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels); + } else { + gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource); + } + } + /** + * ``` + * gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, data); + * ``` + * + * @remarks + * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D` + */ + compressedTexImage2D(level, internalformat, width, height, border, data) { + const { gl } = this; + gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalformat, width, height, border, data); + } + /** + * ``` + * gl.pixelStorei(pname, param); + * ``` + * + * @param pname + * @param param + */ + pixelStorei(pname, param) { + const { gl } = this; + gl.pixelStorei(pname, param); + } + /** + * ``` + * gl.generateMipmap(gl.TEXTURE_2D); + * ``` + * + * @remarks + * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D` + */ + generateMipmap() { + const { gl } = this; + gl.generateMipmap(gl.TEXTURE_2D); + } + /** + * ``` + * gl.createTexture(); + * ``` + * + * @returns + */ + createTexture() { + const { gl } = this; + return gl.createTexture(); + } + /** + * ``` + * gl.deleteTexture(texture); + * ``` + * + * @param texture + */ + deleteTexture(texture) { + const { gl } = this; + if (texture) { + this.texture2dParams.delete(texture); + } + gl.deleteTexture(texture); + } + /** + * ``` + * gl.viewport(x, y, width, height); + * ``` + */ + viewport(x, y, width, height) { + const { gl } = this; + gl.viewport(x, y, width, height); + } + /** + * ``` + * gl.clearColor(red, green, blue, alpha); + * ``` + * + * @param red + * @param green + * @param blue + * @param alpha + */ + clearColor(red, green, blue, alpha) { + const { gl } = this; + gl.clearColor(red, green, blue, alpha); + } + /** + * ``` + * gl["enable"|"disable"](gl.SCISSOR_TEST); + * ``` + * @param enable + */ + setScissorTest(enable) { + const { gl, scissorEnabled } = this; + if (enable === scissorEnabled) { + return; + } + if (enable) { + gl.enable(gl.SCISSOR_TEST); + } else { + gl.disable(gl.SCISSOR_TEST); + } + this.scissorEnabled = enable; + } + /** + * ``` + * gl.scissor(x, y, width, height); + * ``` + * + * @param x + * @param y + * @param width + * @param height + */ + scissor(x, y, width, height) { + const { gl, scissorX, scissorY, scissorWidth, scissorHeight } = this; + if (x !== scissorX || y !== scissorY || width !== scissorWidth || height !== scissorHeight) { + gl.scissor(x, y, width, height); + this.scissorX = x; + this.scissorY = y; + this.scissorWidth = width; + this.scissorHeight = height; + } + } + /** + * ``` + * gl["enable"|"disable"](gl.BLEND); + * ``` + * + * @param blend + * @returns + */ + setBlend(blend) { + const { gl, blendEnabled } = this; + if (blend === blendEnabled) { + return; + } + if (blend) { + gl.enable(gl.BLEND); + } else { + gl.disable(gl.BLEND); + } + this.blendEnabled = blend; + } + /** + * ``` + * gl.blendFunc(src, dst); + * ``` + * + * @param src + * @param dst + */ + blendFunc(src, dst) { + const { gl, blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha } = this; + if (src !== blendSrcRgb || dst !== blendDstRgb || src !== blendSrcAlpha || dst !== blendDstAlpha) { + gl.blendFunc(src, dst); + this.blendSrcRgb = src; + this.blendDstRgb = dst; + this.blendSrcAlpha = src; + this.blendDstAlpha = dst; + } + } + /** + * ``` + * gl.createBuffer(); + * ``` + * + * @returns + */ + createBuffer() { + const { gl } = this; + return gl.createBuffer(); + } + /** + * ``` + * gl.createFramebuffer(); + * ``` + * @returns + */ + createFramebuffer() { + const { gl } = this; + return gl.createFramebuffer(); + } + /** + * ``` + * gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + * ``` + * + * @param framebuffer + */ + bindFramebuffer(framebuffer) { + const { gl } = this; + gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + } + /** + * ``` + * gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); + * ``` + * @remarks + * **WebGL Difference**: Bind target is always `gl.FRAMEBUFFER` and textarget is always `gl.TEXTURE_2D` + */ + framebufferTexture2D(attachment, texture, level) { + const { gl } = this; + gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, texture, level); + } + /** + * ``` + * gl.clear(gl.COLOR_BUFFER_BIT); + * ``` + * + * @remarks + * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT` + */ + clear() { + const { gl } = this; + gl.clear(gl.COLOR_BUFFER_BIT); + } + /** + * ``` + * gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + * gl.bufferData(gl.ARRAY_BUFFER, data, usage); + * ``` + * + * @remarks + * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function. + * + * @param buffer + * @param data + * @param usage + */ + arrayBufferData(buffer, data, usage) { + const { gl, boundArrayBuffer } = this; + if (boundArrayBuffer !== buffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + this.boundArrayBuffer = buffer; + } + gl.bufferData(gl.ARRAY_BUFFER, data, usage); + } + /** + * ``` + * gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer); + * gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage); + * ``` + * @remarks + * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function. + * + * @param buffer + * @param data + * @param usage + */ + elementArrayBufferData(buffer, data, usage) { + const { gl, boundElementArrayBuffer } = this; + if (boundElementArrayBuffer !== buffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer); + this.boundElementArrayBuffer = buffer; + } + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage); + } + /** + * ``` + * gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + * gl.vertexAttribPointer(index, size, type, normalized, stride, offset); + * ``` + * + * @remarks + * **WebGL Combo**: `gl.bindBuffer` and `gl.vertexAttribPointer` are combined into one function. + * + * @param buffer + * @param index + * @param size + * @param type + * @param normalized + * @param stride + * @param offset + */ + vertexAttribPointer(buffer, index, size, type, normalized, stride, offset) { + const { gl, boundArrayBuffer } = this; + if (boundArrayBuffer !== buffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + this.boundArrayBuffer = buffer; + } + gl.vertexAttribPointer(index, size, type, normalized, stride, offset); + } + /** + * ``` + * gl.useProgram(program); + * ``` + * + * @param program + * @returns + */ + useProgram(program) { + const { gl, curProgram } = this; + if (curProgram === program) { + return; + } + gl.useProgram(program); + this.curProgram = program; + } + setUniform(type, location, ...args) { + const { gl, programUniforms } = this; + let uniforms = programUniforms.get(this.curProgram); + if (!uniforms) { + uniforms = /* @__PURE__ */ new Map(); + programUniforms.set(this.curProgram, uniforms); + } + const uniformArgs = uniforms.get(location); + if (!uniformArgs || !compareArrays(uniformArgs, args)) { + uniforms.set(location, args); + gl[type](location, ...args); + } + } + /** + * ``` + * gl.getParameter(pname); + * ``` + * + * @param pname + * @returns + */ + getParameter(pname) { + const { gl } = this; + return gl.getParameter(pname); + } + /** + * ``` + * gl.drawElements(mode, count, type, offset); + * ``` + * + * @param mode + * @param count + * @param type + * @param offset + */ + drawElements(mode, count, type, offset) { + const { gl } = this; + gl.drawElements(mode, count, type, offset); + } + /** + * ``` + * gl.drawArrays(mode, first, count); + * ``` + * + * @param name + * @returns + */ + getExtension(name) { + const { gl } = this; + return gl.getExtension(name); + } + /** + * ``` + * gl.createVertexArray(); + * ``` + * + * @returns + */ + createVertexArray() { + const { gl } = this; + assertTruthy(gl instanceof WebGL2RenderingContext); + return gl.createVertexArray(); + } + /** + * ``` + * gl.bindVertexArray(vertexArray); + * ``` + * + * @param vertexArray + */ + bindVertexArray(vertexArray) { + const { gl } = this; + assertTruthy(gl instanceof WebGL2RenderingContext); + gl.bindVertexArray(vertexArray); + } + /** + * ``` + * gl.getAttribLocation(program, name); + * ``` + * + * @param program + * @param name + * @returns + */ + getAttribLocation(program, name) { + const { gl } = this; + return gl.getAttribLocation(program, name); + } + /** + * ``` + * gl.getUniformLocation(program, name); + * ``` + * + * @param program + * @param name + * @returns + */ + getUniformLocation(program, name) { + const { gl } = this; + return gl.getUniformLocation(program, name); + } + /** + * ``` + * gl.enableVertexAttribArray(index); + * ``` + * + * @param index + */ + enableVertexAttribArray(index) { + const { gl } = this; + gl.enableVertexAttribArray(index); + } + /** + * ``` + * gl.disableVertexAttribArray(index); + * ``` + * + * @param index + */ + disableVertexAttribArray(index) { + const { gl } = this; + gl.disableVertexAttribArray(index); + } + /** + * ``` + * gl.createShader(type); + * ``` + * + * @param type + * @returns + */ + createShader(type) { + const { gl } = this; + return gl.createShader(type); + } + /** + * ``` + * gl.compileShader(shader); + * ``` + * + * @param shader + * @returns + */ + compileShader(shader) { + const { gl } = this; + gl.compileShader(shader); + } + /** + * ``` + * gl.attachShader(program, shader); + * ``` + * + * @param program + * @param shader + */ + attachShader(program, shader) { + const { gl } = this; + gl.attachShader(program, shader); + } + /** + * ``` + * gl.linkProgram(program); + * ``` + * + * @param program + */ + linkProgram(program) { + const { gl } = this; + gl.linkProgram(program); + } + /** + * ``` + * gl.deleteProgram(shader); + * ``` + * + * @param shader + */ + deleteProgram(shader) { + const { gl } = this; + gl.deleteProgram(shader); + } + /** + * ``` + * gl.getShaderParameter(shader, pname); + * ``` + * + * @param shader + * @param pname + */ + getShaderParameter(shader, pname) { + const { gl } = this; + return gl.getShaderParameter(shader, pname); + } + /** + * ``` + * gl.getShaderInfoLog(shader); + * ``` + * + * @param shader + */ + getShaderInfoLog(shader) { + const { gl } = this; + return gl.getShaderInfoLog(shader); + } + /** + * ``` + * gl.createProgram(); + * ``` + * + * @returns + */ + createProgram() { + const { gl } = this; + return gl.createProgram(); + } + /** + * ``` + * gl.getProgramParameter(program, pname); + * ``` + * + * @param program + * @param pname + * @returns + */ + getProgramParameter(program, pname) { + const { gl } = this; + return gl.getProgramParameter(program, pname); + } + /** + * ``` + * gl.getProgramInfoLog(program); + * ``` + * + * @param program + * @returns + */ + getProgramInfoLog(program) { + const { gl } = this; + return gl.getProgramInfoLog(program); + } + /** + * ``` + * gl.shaderSource(shader, source); + * ``` + * + * @param shader + * @param source + */ + shaderSource(shader, source) { + const { gl } = this; + gl.shaderSource(shader, source); + } + /** + * ``` + * gl.deleteShader(shader); + * ``` + * + * @param shader + */ + deleteShader(shader) { + const { gl } = this; + gl.deleteShader(shader); + } +} +function compareArrays(a, b) { + if (a.length !== b.length) { + return false; + } + return a.every((v, i) => { + if (Array.isArray(v) || v instanceof Float32Array) { + return false; + } else { + return v === b[i]; + } + }); +} +const _RenderTexture = class _RenderTexture extends Texture { + constructor(txManager, props) { + super(txManager); + __publicField(this, "props"); + this.props = _RenderTexture.resolveDefaults(props || {}); + } + get width() { + return this.props.width; + } + set width(value) { + this.props.width = value; + } + get height() { + return this.props.height; + } + set height(value) { + this.props.height = value; + } + async getTextureData() { + return { + data: null, + premultiplyAlpha: null + }; + } + static resolveDefaults(props) { + return { + width: props.width || 256, + height: props.height || 256 + }; + } +}; +__publicField(_RenderTexture, "z$__type__Props"); +let RenderTexture = _RenderTexture; +class WebGlCoreCtxRenderTexture extends WebGlCoreCtxTexture { + constructor(glw, memManager, textureSource) { + super(glw, memManager, textureSource); + __publicField(this, "framebuffer"); + const framebuffer = glw.createFramebuffer(); + assertTruthy(framebuffer, "Unable to create framebuffer"); + this.framebuffer = framebuffer; + } + async onLoadRequest() { + const { glw, memManager } = this; + const nativeTexture = this._nativeCtxTexture = this.createNativeCtxTexture(); + const { width, height } = this.textureSource; + glw.texImage2D(0, glw.RGBA, width, height, 0, glw.RGBA, glw.UNSIGNED_BYTE, null); + memManager.setTextureMemUse(this, width * height * 4); + glw.bindFramebuffer(this.framebuffer); + glw.framebufferTexture2D(glw.COLOR_ATTACHMENT0, nativeTexture, 0); + glw.bindFramebuffer(null); + return { + width, + height + }; + } +} +const WORDS_PER_QUAD = 24; +class WebGlCoreRenderer extends CoreRenderer { + constructor(options) { + super(options.stage); + //// WebGL Native Context and Data + __publicField(this, "glw"); + __publicField(this, "system"); + //// Core Managers + __publicField(this, "txManager"); + __publicField(this, "txMemManager"); + __publicField(this, "shManager"); + //// Options + __publicField(this, "options"); + //// Persistent data + __publicField(this, "quadBuffer", new ArrayBuffer(1024 * 1024 * 4)); + __publicField(this, "fQuadBuffer", new Float32Array(this.quadBuffer)); + __publicField(this, "uiQuadBuffer", new Uint32Array(this.quadBuffer)); + __publicField(this, "renderOps", []); + //// Render Op / Buffer Filling State + __publicField(this, "curBufferIdx", 0); + __publicField(this, "curRenderOp", null); + __publicField(this, "rttNodes", []); + __publicField(this, "activeRttNode", null); + //// Default Shader + __publicField(this, "defaultShader"); + __publicField(this, "quadBufferCollection"); + /** + * White pixel texture used by default when no texture is specified. + */ + __publicField(this, "defaultTexture"); + /** + * Whether the renderer is currently rendering to a texture. + */ + __publicField(this, "renderToTextureActive", false); + const { canvas, clearColor, bufferMemory } = options; + this.options = options; + this.txManager = options.txManager; + this.txMemManager = options.txMemManager; + this.shManager = options.shManager; + this.defaultTexture = new ColorTexture(this.txManager); + this.defaultTexture.once("loaded", () => { + this.stage.requestRender(); + }); + const gl = createWebGLContext(canvas, options.contextSpy); + const glw = this.glw = new WebGlContextWrapper(gl); + const color = getNormalizedRgbaComponents(clearColor); + glw.viewport(0, 0, canvas.width, canvas.height); + glw.clearColor(color[0], color[1], color[2], color[3]); + glw.setBlend(true); + glw.blendFunc(glw.ONE, glw.ONE_MINUS_SRC_ALPHA); + createIndexBuffer(glw, bufferMemory); + this.system = { + parameters: getWebGlParameters(this.glw), + extensions: getWebGlExtensions(this.glw) + }; + this.shManager.renderer = this; + this.defaultShader = this.shManager.loadShader("DefaultShader").shader; + const quadBuffer = glw.createBuffer(); + assertTruthy(quadBuffer); + const stride = 6 * Float32Array.BYTES_PER_ELEMENT; + this.quadBufferCollection = new BufferCollection([ + { + buffer: quadBuffer, + attributes: { + a_position: { + name: "a_position", + size: 2, + type: glw.FLOAT, + normalized: false, + stride, + offset: 0 + // start at the beginning of the buffer + }, + a_textureCoordinate: { + name: "a_textureCoordinate", + size: 2, + type: glw.FLOAT, + normalized: false, + stride, + offset: 2 * Float32Array.BYTES_PER_ELEMENT + }, + a_color: { + name: "a_color", + size: 4, + type: glw.UNSIGNED_BYTE, + normalized: true, + stride, + offset: 4 * Float32Array.BYTES_PER_ELEMENT + }, + a_textureIndex: { + name: "a_textureIndex", + size: 1, + type: glw.FLOAT, + normalized: false, + stride, + offset: 5 * Float32Array.BYTES_PER_ELEMENT + } + } + } + ]); + } + reset() { + const { glw } = this; + this.curBufferIdx = 0; + this.curRenderOp = null; + this.renderOps.length = 0; + glw.setScissorTest(false); + glw.clear(); + } + getShaderManager() { + return this.shManager; + } + createCtxTexture(textureSource) { + if (textureSource instanceof SubTexture) { + return new WebGlCoreCtxSubTexture(this.glw, this.txMemManager, textureSource); + } else if (textureSource instanceof RenderTexture) { + return new WebGlCoreCtxRenderTexture(this.glw, this.txMemManager, textureSource); + } + return new WebGlCoreCtxTexture(this.glw, this.txMemManager, textureSource); + } + /** + * This function adds a quad (a rectangle composed of two triangles) to the WebGL rendering pipeline. + * + * It takes a set of options that define the quad's properties, such as its dimensions, colors, texture, shader, and transformation matrix. + * The function first updates the shader properties with the current dimensions if necessary, then sets the default texture if none is provided. + * It then checks if a new render operation is needed, based on the current shader and clipping rectangle. + * If a new render operation is needed, it creates one and updates the current render operation. + * The function then adjusts the texture coordinates based on the texture options and adds the texture to the texture manager. + * + * Finally, it calculates the vertices for the quad, taking into account any transformations, and adds them to the quad buffer. + * The function updates the length and number of quads in the current render operation, and updates the current buffer index. + */ + addQuad(params) { + var _a, _b; + const { fQuadBuffer, uiQuadBuffer } = this; + const { width, height, colorTl, colorTr, colorBl, colorBr, textureOptions, shader, shaderProps, alpha, clippingRect, tx, ty, ta, tb, tc, td, rtt: renderToTexture, parentHasRenderTexture, framebufferDimensions } = params; + let { texture } = params; + if (shaderProps && hasOwn(shaderProps, "$dimensions")) { + const dimensions = shaderProps.$dimensions; + dimensions.width = width; + dimensions.height = height; + } + texture = texture != null ? texture : this.defaultTexture; + assertTruthy(texture instanceof Texture, "Invalid texture type"); + let { curBufferIdx: bufferIdx, curRenderOp } = this; + const targetDims = { + width, + height + }; + const targetShader = shader || this.defaultShader; + assertTruthy(targetShader instanceof WebGlCoreShader); + if (!this.reuseRenderOp(params)) { + this.newRenderOp(targetShader, shaderProps, alpha, targetDims, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions); + curRenderOp = this.curRenderOp; + assertTruthy(curRenderOp); + } + const flipX = (_a = textureOptions == null ? void 0 : textureOptions.flipX) != null ? _a : false; + const flipY = (_b = textureOptions == null ? void 0 : textureOptions.flipY) != null ? _b : false; + let texCoordX1 = 0; + let texCoordY1 = 0; + let texCoordX2 = 1; + let texCoordY2 = 1; + if (texture instanceof SubTexture) { + const { x: tx2, y: ty2, width: tw, height: th } = texture.props; + const { width: parentW = 0, height: parentH = 0 } = texture.parentTexture.dimensions || { width: 0, height: 0 }; + texCoordX1 = tx2 / parentW; + texCoordX2 = texCoordX1 + tw / parentW; + texCoordY1 = ty2 / parentH; + texCoordY2 = texCoordY1 + th / parentH; + texture = texture.parentTexture; + } + if (flipX) { + [texCoordX1, texCoordX2] = [texCoordX2, texCoordX1]; + } + if (flipY) { + [texCoordY1, texCoordY2] = [texCoordY2, texCoordY1]; + } + const { txManager } = this.stage; + const ctxTexture = txManager.getCtxTexture(texture); + assertTruthy(ctxTexture instanceof WebGlCoreCtxTexture); + const textureIdx = this.addTexture(ctxTexture, bufferIdx); + curRenderOp = this.curRenderOp; + assertTruthy(curRenderOp); + if (tb !== 0 || tc !== 0) { + fQuadBuffer[bufferIdx++] = tx; + fQuadBuffer[bufferIdx++] = ty; + fQuadBuffer[bufferIdx++] = texCoordX1; + fQuadBuffer[bufferIdx++] = texCoordY1; + uiQuadBuffer[bufferIdx++] = colorTl; + fQuadBuffer[bufferIdx++] = textureIdx; + fQuadBuffer[bufferIdx++] = tx + width * ta; + fQuadBuffer[bufferIdx++] = ty + width * tc; + fQuadBuffer[bufferIdx++] = texCoordX2; + fQuadBuffer[bufferIdx++] = texCoordY1; + uiQuadBuffer[bufferIdx++] = colorTr; + fQuadBuffer[bufferIdx++] = textureIdx; + fQuadBuffer[bufferIdx++] = tx + height * tb; + fQuadBuffer[bufferIdx++] = ty + height * td; + fQuadBuffer[bufferIdx++] = texCoordX1; + fQuadBuffer[bufferIdx++] = texCoordY2; + uiQuadBuffer[bufferIdx++] = colorBl; + fQuadBuffer[bufferIdx++] = textureIdx; + fQuadBuffer[bufferIdx++] = tx + width * ta + height * tb; + fQuadBuffer[bufferIdx++] = ty + width * tc + height * td; + fQuadBuffer[bufferIdx++] = texCoordX2; + fQuadBuffer[bufferIdx++] = texCoordY2; + uiQuadBuffer[bufferIdx++] = colorBr; + fQuadBuffer[bufferIdx++] = textureIdx; + } else { + const rightCornerX = tx + width * ta; + const rightCornerY = ty + height * td; + fQuadBuffer[bufferIdx++] = tx; + fQuadBuffer[bufferIdx++] = ty; + fQuadBuffer[bufferIdx++] = texCoordX1; + fQuadBuffer[bufferIdx++] = texCoordY1; + uiQuadBuffer[bufferIdx++] = colorTl; + fQuadBuffer[bufferIdx++] = textureIdx; + fQuadBuffer[bufferIdx++] = rightCornerX; + fQuadBuffer[bufferIdx++] = ty; + fQuadBuffer[bufferIdx++] = texCoordX2; + fQuadBuffer[bufferIdx++] = texCoordY1; + uiQuadBuffer[bufferIdx++] = colorTr; + fQuadBuffer[bufferIdx++] = textureIdx; + fQuadBuffer[bufferIdx++] = tx; + fQuadBuffer[bufferIdx++] = rightCornerY; + fQuadBuffer[bufferIdx++] = texCoordX1; + fQuadBuffer[bufferIdx++] = texCoordY2; + uiQuadBuffer[bufferIdx++] = colorBl; + fQuadBuffer[bufferIdx++] = textureIdx; + fQuadBuffer[bufferIdx++] = rightCornerX; + fQuadBuffer[bufferIdx++] = rightCornerY; + fQuadBuffer[bufferIdx++] = texCoordX2; + fQuadBuffer[bufferIdx++] = texCoordY2; + uiQuadBuffer[bufferIdx++] = colorBr; + fQuadBuffer[bufferIdx++] = textureIdx; + } + curRenderOp.length += WORDS_PER_QUAD; + curRenderOp.numQuads++; + this.curBufferIdx = bufferIdx; + } + /** + * Replace the existing RenderOp with a new one that uses the specified Shader + * and starts at the specified buffer index. + * + * @param shader + * @param bufferIdx + */ + newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions) { + const curRenderOp = new WebGlCoreRenderOp( + this.glw, + this.options, + this.quadBufferCollection, + shader, + shaderProps, + alpha, + clippingRect, + dimensions, + bufferIdx, + 0, + // Z-Index is only used for explictly added Render Ops + renderToTexture, + parentHasRenderTexture, + framebufferDimensions + ); + this.curRenderOp = curRenderOp; + this.renderOps.push(curRenderOp); + } + /** + * Add a texture to the current RenderOp. If the texture cannot be added to the + * current RenderOp, a new RenderOp will be created and the texture will be added + * to that one. + * + * If the texture cannot be added to the new RenderOp, an error will be thrown. + * + * @param texture + * @param bufferIdx + * @param recursive + * @returns Assigned Texture Index of the texture in the render op + */ + addTexture(texture, bufferIdx, recursive) { + const { curRenderOp } = this; + assertTruthy(curRenderOp); + const textureIdx = curRenderOp.addTexture(texture); + if (textureIdx === 4294967295) { + if (recursive) { + throw new Error("Unable to add texture to render op"); + } + const { shader, shaderProps, dimensions, clippingRect, alpha } = curRenderOp; + this.newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx); + return this.addTexture(texture, bufferIdx, true); + } + return textureIdx; + } + /** + * Test if the current Render operation can be reused for the specified parameters. + * @param params + * @returns + */ + reuseRenderOp(params) { + var _a; + const { shader, shaderProps, parentHasRenderTexture, rtt, clippingRect } = params; + const targetShader = shader || this.defaultShader; + if (((_a = this.curRenderOp) == null ? void 0 : _a.shader) !== targetShader) { + return false; + } + if (!compareRect(this.curRenderOp.clippingRect, clippingRect)) { + return false; + } + if (parentHasRenderTexture || rtt) { + return false; + } + if (this.curRenderOp.shader !== this.defaultShader && (!shaderProps || !this.curRenderOp.shader.canBatchShaderProps(this.curRenderOp.shaderProps, shaderProps))) { + return false; + } + return true; + } + /** + * add RenderOp to the render pipeline + */ + addRenderOp(renderable) { + this.renderOps.push(renderable); + this.curRenderOp = null; + } + /** + * Render the current set of RenderOps to render to the specified surface. + * + * TODO: 'screen' is the only supported surface at the moment. + * + * @param surface + */ + render(surface = "screen") { + var _a; + const { glw, quadBuffer } = this; + const arr = new Float32Array(quadBuffer, 0, this.curBufferIdx); + const buffer = (_a = this.quadBufferCollection.getBuffer("a_position")) != null ? _a : null; + glw.arrayBufferData(buffer, arr, glw.STATIC_DRAW); + this.renderOps.forEach((renderOp, i) => { + renderOp.draw(); + }); + } + renderToTexture(node) { + for (let i = 0; i < this.rttNodes.length; i++) { + if (this.rttNodes[i] === node) { + return; + } + } + this.rttNodes.unshift(node); + } + renderRTTNodes() { + const { glw } = this; + const { txManager } = this.stage; + for (let i = 0; i < this.rttNodes.length; i++) { + const node = this.rttNodes[i]; + if (!node || !node.hasRTTupdates) { + continue; + } + this.activeRttNode = node; + assertTruthy(node.texture, "RTT node missing texture"); + const ctxTexture = txManager.getCtxTexture(node.texture); + assertTruthy(ctxTexture instanceof WebGlCoreCtxRenderTexture); + this.renderToTextureActive = true; + glw.bindFramebuffer(ctxTexture.framebuffer); + glw.viewport(0, 0, ctxTexture.w, ctxTexture.h); + glw.clear(); + for (let i2 = 0; i2 < node.children.length; i2++) { + const child = node.children[i2]; + if (!child) { + continue; + } + child.update(this.stage.deltaTime, { + x: 0, + y: 0, + width: 0, + height: 0, + valid: false + }); + this.stage.addQuads(child); + child.hasRTTupdates = false; + } + this.render(); + this.renderOps.length = 0; + node.hasRTTupdates = false; + } + glw.bindFramebuffer(null); + glw.viewport(0, 0, this.glw.canvas.width, this.glw.canvas.height); + this.renderToTextureActive = false; + } +} +const SpecialCodepoints = { + LINE_FEED: 10, + CARRIAGE_RETURN: 13, + SPACE: 32, + TAB: 9, + ZERO_WIDTH_SPACE: 8203, + ZERO_WIDTH_NON_JOINER: 8204, + ZERO_WIDTH_JOINER: 8205, + LEFT_TO_RIGHT_MARK: 8206, + RIGHT_TO_LEFT_MARK: 8207, + LEFT_TO_RIGHT_EMBEDDING: 8234, + RIGHT_TO_LEFT_EMBEDDING: 8235, + POP_DIRECTIONAL_FORMATTING: 8236, + LEFT_TO_RIGHT_OVERRIDE: 8237, + RIGHT_TO_LEFT_OVERRIDE: 8238, + LINE_SEPARATOR: 8232, + PARAGRAPH_SEPARATOR: 8233, + OBJECT_REPLACEMENT_CHARACTER: 65532, + REPLACEMENT_CHARACTER: 65533, + ZERO_WIDTH_NO_BREAK_SPACE: 65279, + LEFT_TO_RIGHT_ISOLATE: 8294, + RIGHT_TO_LEFT_ISOLATE: 8295, + FIRST_STRONG_ISOLATE: 8296, + POP_DIRECTIONAL_ISOLATE: 8297, + INHIBIT_SYMMETRIC_SWAPPING: 8298, + ACTIVATE_SYMMETRIC_SWAPPING: 8299, + INHIBIT_ARABIC_FORM_SHAPING: 8300, + ACTIVATE_ARABIC_FORM_SHAPING: 8301, + NATIONAL_DIGIT_SHAPES: 8302, + NOMINAL_DIGIT_SHAPES: 8303, + LEFT_TO_RIGHT_BOUNDARY: 8206, + RIGHT_TO_LEFT_BOUNDARY: 8207 +}; +class FontShaper { +} +class SdfFontShaper extends FontShaper { + constructor(data, glyphMap) { + super(); + __publicField(this, "data"); + __publicField(this, "glyphMap"); + __publicField(this, "kernings"); + this.data = data; + this.glyphMap = glyphMap; + const kernings = this.kernings = {}; + data.kernings.forEach((kerning) => { + const second = kerning.second; + const firsts = kernings[second] = kernings[second] || {}; + firsts[kerning.first] = kerning.amount; + }); + this.kernings = kernings; + } + *shapeText(props, codepoints) { + var _a; + let codepointResult; + let lastGlyphId = void 0; + while ((codepointResult = codepoints.peek()) && !codepointResult.done) { + const codepoint = codepointResult.value; + const glyph = this.glyphMap.get(codepoint); + codepoints.next(); + if (glyph !== void 0) { + const kerning = lastGlyphId !== void 0 ? (((_a = this.kernings[glyph.id]) == null ? void 0 : _a[lastGlyphId]) || 0) + props.letterSpacing : 0; + lastGlyphId = glyph.id; + yield { + mapped: true, + glyphId: glyph.id, + codepoint, + cluster: codepoints.lastIndex, + xAdvance: glyph.xadvance + kerning, + yAdvance: 0, + xOffset: glyph.xoffset + kerning, + yOffset: glyph.yoffset, + xBearing: 0, + yBearing: 0, + width: glyph.width, + height: glyph.height + }; + } else { + if (codepoint === SpecialCodepoints.LINE_FEED) { + lastGlyphId = void 0; + } + yield { + mapped: false, + codepoint, + cluster: codepoints.lastIndex + }; + } + } + } +} +class SdfTrFontFace extends TrFontFace { + constructor(fontFamily, descriptors, type, stage, atlasUrl, atlasDataUrl) { + super(fontFamily, descriptors); + __publicField(this, "type"); + __publicField(this, "texture"); + /** + * Height of the tallest character in the font including the whitespace above it + */ + __publicField(this, "maxCharHeight", 0); + __publicField(this, "data"); + __publicField(this, "shaper"); + __publicField(this, "glyphMap", /* @__PURE__ */ new Map()); + this.type = type; + const renderer = stage.renderer; + assertTruthy(renderer instanceof WebGlCoreRenderer, "SDF Font Faces can only be used with the WebGL Renderer"); + this.texture = stage.txManager.loadTexture("ImageTexture", { + src: atlasUrl, + // IMPORTANT: The SDF shader requires the alpha channel to NOT be + // premultiplied on the atlas texture. If it is premultiplied, the + // rendering of SDF glyphs (especially single-channel SDF fonts) will + // be very jagged. + premultiplyAlpha: false + }, { + preload: true + }); + this.texture.on("loaded", () => { + this.checkLoaded(); + }); + fetch(atlasDataUrl).then(async (response) => { + this.data = await response.json(); + let maxCharHeight = 0; + this.data.chars.forEach((glyph) => { + this.glyphMap.set(glyph.id, glyph); + const charHeight = glyph.yoffset + glyph.height; + if (charHeight > maxCharHeight) { + maxCharHeight = charHeight; + } + }); + this.maxCharHeight = maxCharHeight; + this.shaper = new SdfFontShaper(this.data, this.glyphMap); + this.checkLoaded(); + }).catch(console.error); + } + getAtlasEntry(glyphId) { + const glyph = this.glyphMap.get(glyphId); + if (glyph === void 0) { + throw new Error("Glyph ".concat(glyphId, " not found in font ").concat(this.fontFamily)); + } + return { + x: glyph.x, + y: glyph.y, + width: glyph.width, + height: glyph.height + }; + } + checkLoaded() { + if (this.loaded) + return; + if (this.texture.state === "loaded" && this.data) { + this.loaded = true; + this.emit("loaded"); + } + } +} +class CoreExtension { +} +export { + BufferCollection as B, + CoreExtension as C, + EventEmitter as E, + RenderTexture as R, + SdfTrFontFace as S, + TrFontFace as T, + WebGlCoreShader as W, + assertTruthy as a, + getNormalizedRgbaComponents as b, + createBound as c, + intersectBound as d, + intersectRect as e, + getNormalizedAlphaComponent as f, + getRgbaString as g, + memize as h, + isProductionEnvironment as i, + Texture as j, + isBoundPositive as k, + boundsOverlap as l, + mergeColorAlphaPremultiplied as m, + convertBoundToRect as n, + copyRect as o, + WebGlCoreRenderOp as p, + mergeColorAlpha as q, + getTimingFunction as r, + mergeColorProgress as s, + boundInsideBound as t, + ColorTexture as u, + SubTexture as v, + WebGlCoreRenderer as w +}; +//# sourceMappingURL=CoreExtension-BeuvW_LH.js.map diff --git a/assets/CoreExtension-BfzrAcK3.js.map b/assets/CoreExtension-BeuvW_LH.js.map similarity index 74% rename from assets/CoreExtension-BfzrAcK3.js.map rename to assets/CoreExtension-BeuvW_LH.js.map index 1fdcfc2..a824c6f 100644 --- a/assets/CoreExtension-BfzrAcK3.js.map +++ b/assets/CoreExtension-BeuvW_LH.js.map @@ -1 +1 @@ -{"version":3,"file":"CoreExtension-BfzrAcK3.js","sources":["../../../../../renderer/dist/src/utils.js","../../../../../renderer/dist/src/common/EventEmitter.js","../../../../../renderer/dist/src/core/renderers/CoreShader.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/ShaderUtils.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/WebGlUtils.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreShader.js","../../../../../renderer/dist/src/core/textures/Texture.js","../../../../../renderer/dist/src/core/lib/utils.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/TrFontFace.js","../../../../../renderer/dist/src/core/renderers/CoreContextTexture.js","../../../../../renderer/dist/src/core/renderers/CoreRenderer.js","../../../../../renderer/dist/src/core/renderers/CoreRenderOp.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/RendererUtils.js","../../../../../renderer/node_modules/.pnpm/memize@2.1.0/node_modules/memize/dist/index.js","../../../../../renderer/dist/src/core/utils.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js","../../../../../renderer/dist/src/core/textures/ColorTexture.js","../../../../../renderer/dist/src/core/textures/SubTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/BufferCollection.js","../../../../../renderer/dist/src/core/lib/WebGlContextWrapper.js","../../../../../renderer/dist/src/core/textures/RenderTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreRenderer.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js","../../../../../renderer/dist/src/core/CoreExtension.js"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function createWebGLContext(canvas, contextSpy) {\n const config = {\n alpha: true,\n antialias: false,\n depth: false,\n stencil: true,\n desynchronized: false,\n // Disabled because it prevents Visual Regression Tests from working\n // failIfMajorPerformanceCaveat: true,\n powerPreference: 'high-performance',\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n };\n const gl = \n // TODO: Remove this assertion once this issue is fixed in TypeScript\n // https://github.com/microsoft/TypeScript/issues/53614\n (canvas.getContext('webgl', config) ||\n canvas.getContext('experimental-webgl', config));\n if (!gl) {\n throw new Error('Unable to create WebGL context');\n }\n if (contextSpy) {\n // Proxy the GL context to log all GL calls\n return new Proxy(gl, {\n get(target, prop) {\n const value = target[prop];\n if (typeof value === 'function') {\n contextSpy.increment(String(prop));\n return value.bind(target);\n }\n return value;\n },\n });\n }\n return gl;\n}\n/**\n * Asserts a condition is truthy, otherwise throws an error\n *\n * @remarks\n * Useful at the top of functions to ensure certain conditions, arguments and\n * properties are set/met before continuing. When using this function,\n * TypeScript will narrow away falsy types from the condition.\n *\n * @param condition\n * @param message\n * @returns\n */\nexport function assertTruthy(condition, message) {\n if (isProductionEnvironment())\n return;\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n/**\n * Merges two colors based on a given progress value.\n *\n * This function takes two colors (c1 and c2) represented as 32-bit integers\n * in RGBA format and blends them based on the provided progress value (p).\n * The result is a new color that is a weighted combination of the input colors,\n * where the weight is determined by the progress value.\n *\n * @param {number} c1 - The first color in RGBA format (32-bit integer).\n * @param {number} c2 - The second color in RGBA format (32-bit integer).\n * @param {number} p - The progress value between 0 and 1.\n * @returns {number} The merged color as a 32-bit integer in RGBA format.\n */\nexport function mergeColorProgress(rgba1, rgba2, p) {\n const r1 = Math.trunc(rgba1 >>> 24);\n const g1 = Math.trunc((rgba1 >>> 16) & 0xff);\n const b1 = Math.trunc((rgba1 >>> 8) & 0xff);\n const a1 = Math.trunc(rgba1 & 0xff);\n const r2 = Math.trunc(rgba2 >>> 24);\n const g2 = Math.trunc((rgba2 >>> 16) & 0xff);\n const b2 = Math.trunc((rgba2 >>> 8) & 0xff);\n const a2 = Math.trunc(rgba2 & 0xff);\n const r = Math.round(r2 * p + r1 * (1 - p));\n const g = Math.round(g2 * p + g1 * (1 - p));\n const b = Math.round(b2 * p + b1 * (1 - p));\n const a = Math.round(a2 * p + a1 * (1 - p));\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Given an RGBA encoded number, returns back the RGBA number with it's alpha\n * component multiplied by the passed `alpha` parameter.\n *\n * @internalRemarks\n * This method does NOT premultiply the alpha into the color channels. If that\n * is required (for internal use only) use {@link mergeColorAlphaPremultiplied}\n * instead.\n *\n * @param rgba RGBA encoded number\n * @param alpha Normalized alpha value (Range: 0.0 - 1.0)\n * @returns\n */\nexport function mergeColorAlpha(rgba, alpha) {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = Math.trunc((rgba & 0xff) * alpha);\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Given an RGBA encoded number, returns back the RGBA number with it's alpha\n * component multiplied by the passed `alpha` parameter. Before returning, the\n * final alpha value is multiplied into the color channels.\n *\n * @remarks\n * If `flipEndianess` is set to true, the function will returned an ABGR encoded number\n * which is useful when the color value needs to be passed into a shader attribute.\n *\n * NOTE: This method returns a PREMULTIPLIED alpha color which is generally only useful\n * in the context of the internal rendering process. Use {@link mergeColorAlpha} if you\n * need to blend an alpha value into a color in the context of the Renderer's\n * main API.\n *\n * @internalRemarks\n * Do not expose this method in the main API because Renderer users should instead use\n * {@link mergeColorAlpha} to manipulate the alpha value of a color.\n *\n * @internal\n * @param rgba RGBA encoded number\n * @param alpha Normalized alpha value (Range: 0.0 - 1.0)\n * @param flipEndianess Flip the endianess. RGBA becomes encoded as ABGR (for inserting colors into shader attributes)\n * @returns\n */\nexport function mergeColorAlphaPremultiplied(rgba, alpha, flipEndianess = false) {\n const newAlpha = ((rgba & 0xff) / 255) * alpha;\n const r = Math.trunc((rgba >>> 24) * newAlpha);\n const g = Math.trunc(((rgba >>> 16) & 0xff) * newAlpha);\n const b = Math.trunc(((rgba >>> 8) & 0xff) * newAlpha);\n const a = Math.trunc(newAlpha * 255);\n if (flipEndianess) {\n return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0;\n }\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Returns true if the given object has the given \"own\" property.\n *\n * @param obj\n * @param prop\n * @returns\n */\nexport function hasOwn(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n/**\n * Converts degrees to radians\n *\n * @param degrees\n * @returns\n */\nexport function deg2Rad(degrees) {\n return (degrees * Math.PI) / 180;\n}\n/**\n * Returns image aspect ratio\n *\n * @param width\n * @param height\n * @returns\n */\nexport function getImageAspectRatio(width, height) {\n return width / height;\n}\n/**\n * Checks import.meta if env is production\n *\n * @returns\n */\nexport function isProductionEnvironment() {\n return import.meta.env && import.meta.env.PROD;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * EventEmitter base class\n */\nexport class EventEmitter {\n eventListeners = {};\n on(event, listener) {\n let listeners = this.eventListeners[event];\n if (!listeners) {\n listeners = [];\n }\n listeners.push(listener);\n this.eventListeners[event] = listeners;\n }\n off(event, listener) {\n const listeners = this.eventListeners[event];\n if (!listeners) {\n return;\n }\n if (!listener) {\n delete this.eventListeners[event];\n return;\n }\n const index = listeners.indexOf(listener);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n }\n once(event, listener) {\n const onceListener = (target, data) => {\n this.off(event, onceListener);\n listener(target, data);\n };\n this.on(event, onceListener);\n }\n emit(event, data) {\n const listeners = this.eventListeners[event];\n if (!listeners) {\n return;\n }\n [...listeners].forEach((listener) => {\n listener(this, data);\n });\n }\n removeAllListeners() {\n this.eventListeners = {};\n }\n}\n//# sourceMappingURL=EventEmitter.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreShader {\n // abstract draw(): void;\n static makeCacheKey(props) {\n return false;\n }\n static resolveDefaults(props) {\n return {};\n }\n}\n//# sourceMappingURL=CoreShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion Types\nexport function createShader(glw, type, source) {\n const shader = glw.createShader(type);\n if (!shader) {\n throw new Error();\n }\n glw.shaderSource(shader, source);\n glw.compileShader(shader);\n const success = glw.getShaderParameter(shader, glw.COMPILE_STATUS);\n if (success) {\n return shader;\n }\n console.log(glw.getShaderInfoLog(shader));\n glw.deleteShader(shader);\n}\nexport function createProgram(glw, vertexShader, fragmentShader) {\n const program = glw.createProgram();\n if (!program) {\n throw new Error();\n }\n glw.attachShader(program, vertexShader);\n glw.attachShader(program, fragmentShader);\n glw.linkProgram(program);\n const success = glw.getProgramParameter(program, glw.LINK_STATUS);\n if (success) {\n return program;\n }\n console.log(glw.getProgramInfoLog(program));\n glw.deleteProgram(program);\n return undefined;\n}\n//# sourceMappingURL=ShaderUtils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Generic WebGL Utility Functions\n *\n * @remarks\n * Nothing here should be coupled to Renderer logic / types.\n *\n * @param gl\n * @returns\n */\nexport function isWebGl2(gl) {\n return (self.WebGL2RenderingContext && gl instanceof self.WebGL2RenderingContext);\n}\n//# sourceMappingURL=WebGlUtils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, hasOwn } from '../../../utils.js';\nimport { CoreShader } from '../CoreShader.js';\nimport { createProgram, createShader, } from './internal/ShaderUtils.js';\nimport { isWebGl2 } from './internal/WebGlUtils.js';\nexport class WebGlCoreShader extends CoreShader {\n boundBufferCollection = null;\n buffersBound = false;\n program;\n /**\n * Vertex Array Object\n *\n * @remarks\n * Used by WebGL2 Only\n */\n vao;\n renderer;\n glw;\n attributeBuffers;\n attributeLocations;\n attributeNames;\n uniformLocations;\n uniformTypes;\n supportsIndexedTextures;\n constructor(options) {\n super();\n const renderer = (this.renderer = options.renderer);\n const glw = (this.glw = this.renderer.glw);\n this.supportsIndexedTextures = options.supportsIndexedTextures || false;\n // Check that extensions are supported\n const webGl2 = glw.isWebGl2();\n const requiredExtensions = (webGl2 && options.webgl2Extensions) ||\n (!webGl2 && options.webgl1Extensions) ||\n [];\n const glVersion = webGl2 ? '2.0' : '1.0';\n requiredExtensions.forEach((extensionName) => {\n if (!glw.getExtension(extensionName)) {\n throw new Error(`Shader \"${this.constructor.name}\" requires extension \"${extensionName}\" for WebGL ${glVersion} but wasn't found`);\n }\n });\n // Gather shader sources\n // - If WebGL 2 and special WebGL 2 sources are provided, we copy those sources and delete\n // the extra copy of them to save memory.\n // TODO: This could be further made optimal by just caching the compiled shaders and completely deleting\n // the source code\n const shaderSources = options.shaderSources ||\n this.constructor.shaderSources;\n if (!shaderSources) {\n throw new Error(`Shader \"${this.constructor.name}\" is missing shaderSources.`);\n }\n else if (webGl2 && shaderSources?.webGl2) {\n shaderSources.fragment = shaderSources.webGl2.fragment;\n shaderSources.vertex = shaderSources.webGl2.vertex;\n delete shaderSources.webGl2;\n }\n const textureUnits = renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n const vertexSource = shaderSources.vertex instanceof Function\n ? shaderSources.vertex(textureUnits)\n : shaderSources.vertex;\n const fragmentSource = shaderSources.fragment instanceof Function\n ? shaderSources.fragment(textureUnits)\n : shaderSources.fragment;\n const vertexShader = createShader(glw, glw.VERTEX_SHADER, vertexSource);\n const fragmentShader = createShader(glw, glw.FRAGMENT_SHADER, fragmentSource);\n if (!vertexShader || !fragmentShader) {\n throw new Error();\n }\n const program = createProgram(glw, vertexShader, fragmentShader);\n if (!program) {\n throw new Error();\n }\n this.program = program;\n if (webGl2) {\n const vao = glw.createVertexArray();\n if (!vao) {\n throw new Error();\n }\n this.vao = vao;\n glw.bindVertexArray(this.vao);\n }\n this.attributeLocations = {};\n this.attributeBuffers = {};\n this.attributeNames = [];\n [...options.attributes].forEach((attributeName) => {\n const location = glw.getAttribLocation(this.program, attributeName);\n if (location < 0) {\n throw new Error(`${this.constructor.name}: Vertex shader must have an attribute \"${attributeName}\"!`);\n }\n const buffer = glw.createBuffer();\n if (!buffer) {\n throw new Error(`${this.constructor.name}: Could not create buffer for attribute \"${attributeName}\"`);\n }\n this.attributeLocations[attributeName] = location;\n this.attributeBuffers[attributeName] = buffer;\n this.attributeNames.push(attributeName);\n });\n this.uniformLocations = {};\n this.uniformTypes = {};\n options.uniforms.forEach((uniform) => {\n const location = glw.getUniformLocation(this.program, uniform.name);\n this.uniformTypes[uniform.name] = uniform.uniform;\n if (!location) {\n console.warn(`Shader \"${this.constructor.name}\" could not get uniform location for \"${uniform.name}\"`);\n return;\n }\n this.uniformLocations[uniform.name] = location;\n });\n }\n bindBufferAttribute(location, buffer, attribute) {\n const { glw } = this;\n glw.enableVertexAttribArray(location);\n glw.vertexAttribPointer(buffer, location, attribute.size, attribute.type, attribute.normalized, attribute.stride, attribute.offset);\n }\n disableAttribute(location) {\n this.glw.disableVertexAttribArray(location);\n }\n disableAttributes() {\n for (const loc in this.attributeLocations) {\n this.disableAttribute(this.attributeLocations[loc]);\n }\n this.boundBufferCollection = null;\n }\n /**\n * Given two sets of Shader props destined for this Shader, determine if they can be batched together\n * to reduce the number of draw calls.\n *\n * @remarks\n * This is used by the {@link WebGlCoreRenderer} to determine if it can batch multiple consecutive draw\n * calls into a single draw call.\n *\n * By default, this returns false (meaning no batching is allowed), but can be\n * overridden by child classes to provide more efficient batching.\n *\n * @param propsA\n * @param propsB\n * @returns\n */\n canBatchShaderProps(propsA, propsB) {\n return false;\n }\n bindRenderOp(renderOp, props) {\n this.bindBufferCollection(renderOp.buffers);\n if (renderOp.textures.length > 0) {\n this.bindTextures(renderOp.textures);\n }\n const { glw, parentHasRenderTexture, renderToTexture } = renderOp;\n // Skip if the parent and current operation both have render textures\n if (renderToTexture && parentHasRenderTexture) {\n return;\n }\n // Bind render texture framebuffer dimensions as resolution\n // if the parent has a render texture\n if (parentHasRenderTexture) {\n const { width, height } = renderOp.framebufferDimensions || {};\n // Force pixel ratio to 1.0 for render textures since they are always 1:1\n // the final render texture will be rendered to the screen with the correct pixel ratio\n this.setUniform('u_pixelRatio', 1.0);\n // Set resolution to the framebuffer dimensions\n this.setUniform('u_resolution', new Float32Array([width ?? 0, height ?? 0]));\n }\n else {\n this.setUniform('u_pixelRatio', renderOp.options.pixelRatio);\n this.setUniform('u_resolution', new Float32Array([glw.canvas.width, glw.canvas.height]));\n }\n if (props) {\n // Bind optional automatic uniforms\n // These are only bound if their keys are present in the props.\n if (hasOwn(props, '$dimensions')) {\n let dimensions = props.$dimensions;\n if (!dimensions) {\n dimensions = renderOp.dimensions;\n }\n this.setUniform('u_dimensions', [dimensions.width, dimensions.height]);\n }\n if (hasOwn(props, '$alpha')) {\n let alpha = props.$alpha;\n if (!alpha) {\n alpha = renderOp.alpha;\n }\n this.setUniform('u_alpha', alpha);\n }\n this.bindProps(props);\n }\n }\n setUniform(name, ...value) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-unsafe-argument\n this.glw.setUniform(this.uniformTypes[name], this.uniformLocations[name], ...value);\n }\n bindBufferCollection(buffer) {\n if (this.boundBufferCollection === buffer) {\n return;\n }\n for (const attributeName in this.attributeLocations) {\n const resolvedBuffer = buffer.getBuffer(attributeName);\n const resolvedInfo = buffer.getAttributeInfo(attributeName);\n assertTruthy(resolvedBuffer, `Buffer for \"${attributeName}\" not found`);\n assertTruthy(resolvedInfo);\n this.bindBufferAttribute(this.attributeLocations[attributeName], resolvedBuffer, resolvedInfo);\n }\n this.boundBufferCollection = buffer;\n }\n bindProps(props) {\n // Implement in child class\n }\n bindTextures(textures) {\n // no defaults\n }\n attach() {\n this.glw.useProgram(this.program);\n this.glw.useProgram(this.program);\n if (this.glw.isWebGl2() && this.vao) {\n this.glw.bindVertexArray(this.vao);\n }\n }\n detach() {\n this.disableAttributes();\n }\n static shaderSources;\n}\n//# sourceMappingURL=WebGlCoreShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../common/EventEmitter.js';\n/**\n * Represents a source of texture data for a CoreContextTexture.\n *\n * @remarks\n * Texture sources are used to populate a CoreContextTexture when that texture\n * is loaded. Texture data retrieved by the CoreContextTexture by the\n * `getTextureData` method. It's the responsibility of the concerete `Texture`\n * subclass to implement this method appropriately.\n */\nexport class Texture extends EventEmitter {\n txManager;\n /**\n * The dimensions of the texture\n *\n * @remarks\n * Until the texture data is loaded for the first time the value will be\n * `null`.\n */\n dimensions = null;\n error = null;\n state = 'freed';\n renderableOwners = new Set();\n constructor(txManager) {\n super();\n this.txManager = txManager;\n }\n /**\n * Add/remove an owner to/from the Texture based on its renderability.\n *\n * @remarks\n * Any object can own a texture, be it a CoreNode or even the state object\n * from a Text Renderer.\n *\n * When the reference to the texture that an owner object holds is replaced\n * or cleared it must call this with `renderable=false` to release the owner\n * association.\n *\n * @param owner\n * @param renderable\n */\n setRenderableOwner(owner, renderable) {\n if (renderable) {\n this.renderableOwners.add(owner);\n }\n else {\n this.renderableOwners.delete(owner);\n }\n }\n /**\n * Returns true if the texture is assigned to any Nodes that are renderable.\n */\n get renderable() {\n return this.renderableOwners.size > 0;\n }\n /**\n * Set the state of the texture\n *\n * @remark\n * Intended for internal-use only but declared public so that it can be set\n * by it's associated {@link CoreContextTexture}\n *\n * @param state\n * @param args\n */\n setState(state, ...args) {\n if (this.state !== state) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.state = state;\n if (state === 'loaded') {\n const loadedArgs = args;\n this.dimensions = loadedArgs[0];\n }\n else if (state === 'failed') {\n const failedArgs = args;\n this.error = failedArgs[0];\n }\n this.emit(state, ...args);\n }\n }\n /**\n * Make a cache key for this texture.\n *\n * @remarks\n * Each concrete `Texture` subclass must implement this method to provide an\n * appropriate cache key for the texture type including the texture's\n * properties that uniquely identify a copy of the texture. If the texture\n * type does not support caching, then this method should return `false`.\n *\n * @param props\n * @returns\n * A cache key for this texture or `false` if the texture type does not\n * support caching.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static makeCacheKey(props) {\n return false;\n }\n /**\n * Resolve the default values for the texture's properties.\n *\n * @remarks\n * Each concrete `Texture` subclass must implement this method to provide\n * default values for the texture's optional properties.\n *\n * @param props\n * @returns\n * The default values for the texture's properties.\n */\n static resolveDefaults(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n props) {\n return {};\n }\n}\n//# sourceMappingURL=Texture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const getNormalizedRgbaComponents = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n return [r / 255, g / 255, b / 255, a / 255];\n};\nexport const getRgbaComponents = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n return [r, g, b, a];\n};\nexport const norm = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n const rgbaArr = [r / 255, g / 255, b / 255, a / 255];\n rgbaArr[0] = Math.max(0, Math.min(255, rgbaArr[0]));\n rgbaArr[1] = Math.max(0, Math.min(255, rgbaArr[1]));\n rgbaArr[2] = Math.max(0, Math.min(255, rgbaArr[2]));\n rgbaArr[3] = Math.max(0, Math.min(255, rgbaArr[3]));\n let v = ((rgbaArr[3] | 0) << 24) +\n ((rgbaArr[0] | 0) << 16) +\n ((rgbaArr[1] | 0) << 8) +\n (rgbaArr[2] | 0);\n if (v < 0) {\n v = 0xffffffff + v + 1;\n }\n return v;\n};\nexport function getNormalizedAlphaComponent(rgba) {\n return (rgba & 0xff) / 255.0;\n}\n/**\n * Get a CSS color string from a RGBA color\n *\n * @param color\n * @returns\n */\nexport function getRgbaString(color) {\n const r = Math.floor(color[0] * 255.0);\n const g = Math.floor(color[1] * 255.0);\n const b = Math.floor(color[2] * 255.0);\n const a = Math.floor(color[3] * 255.0);\n return `rgba(${r},${g},${b},${a.toFixed(4)})`;\n}\nexport function createBound(x1, y1, x2, y2, out) {\n if (out) {\n out.x1 = x1;\n out.y1 = y1;\n out.x2 = x2;\n out.y2 = y2;\n return out;\n }\n return {\n x1,\n y1,\n x2,\n y2,\n };\n}\nexport function intersectBound(a, b, out) {\n const intersection = createBound(Math.max(a.x1, b.x1), Math.max(a.y1, b.y1), Math.min(a.x2, b.x2), Math.min(a.y2, b.y2), out);\n if (intersection.x1 < intersection.x2 && intersection.y1 < intersection.y2) {\n return intersection;\n }\n return createBound(0, 0, 0, 0, intersection);\n}\nexport function boundsOverlap(a, b) {\n return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1;\n}\nexport function convertBoundToRect(bound, out) {\n if (out) {\n out.x = bound.x1;\n out.y = bound.y1;\n out.width = bound.x2 - bound.x1;\n out.height = bound.y2 - bound.y1;\n return out;\n }\n return {\n x: bound.x1,\n y: bound.y1,\n width: bound.x2 - bound.x1,\n height: bound.y2 - bound.y1,\n };\n}\nexport function intersectRect(a, b, out) {\n const x = Math.max(a.x, b.x);\n const y = Math.max(a.y, b.y);\n const width = Math.min(a.x + a.width, b.x + b.width) - x;\n const height = Math.min(a.y + a.height, b.y + b.height) - y;\n if (width > 0 && height > 0) {\n if (out) {\n out.x = x;\n out.y = y;\n out.width = width;\n out.height = height;\n return out;\n }\n return {\n x,\n y,\n width,\n height,\n };\n }\n if (out) {\n out.x = 0;\n out.y = 0;\n out.width = 0;\n out.height = 0;\n return out;\n }\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n}\nexport function copyRect(a, out) {\n if (out) {\n out.x = a.x;\n out.y = a.y;\n out.width = a.width;\n out.height = a.height;\n return out;\n }\n return {\n x: a.x,\n y: a.y,\n width: a.width,\n height: a.height,\n };\n}\nexport function compareRect(a, b) {\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return false;\n }\n return (a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height);\n}\nexport function boundInsideBound(bound1, bound2) {\n return (bound1.x1 <= bound2.x2 &&\n bound1.y1 <= bound2.y2 &&\n bound1.x2 >= bound2.x1 &&\n bound1.y2 >= bound2.y1);\n}\nexport function isBoundPositive(bound) {\n return bound.x1 < bound.x2 && bound.y1 < bound.y2;\n}\nexport function isRectPositive(rect) {\n return rect.width > 0 && rect.height > 0;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../../common/EventEmitter.js';\nexport class TrFontFace extends EventEmitter {\n fontFamily;\n descriptors;\n loaded = false;\n constructor(fontFamily, descriptors) {\n super();\n this.fontFamily = fontFamily;\n this.descriptors = {\n style: 'normal',\n weight: 'normal',\n stretch: 'normal',\n ...descriptors,\n };\n }\n /**\n * Convert a TrFontFaceDescriptors to a FontFaceDescriptors which differ slightly\n *\n * @param descriptors\n * @returns\n */\n static convertToCssFontFaceDescriptors(descriptors) {\n return {\n style: descriptors.style,\n weight: typeof descriptors.weight === 'number'\n ? `${descriptors.weight}`\n : descriptors.weight,\n stretch: descriptors.stretch,\n unicodeRange: descriptors.unicodeRange,\n variant: descriptors.variant,\n featureSettings: descriptors.featureSettings,\n display: descriptors.display,\n };\n }\n}\n//# sourceMappingURL=TrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreContextTexture {\n memManager;\n textureSource;\n constructor(memManager, textureSource) {\n this.memManager = memManager;\n this.textureSource = textureSource;\n }\n}\n//# sourceMappingURL=CoreContextTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreContextTexture } from './CoreContextTexture.js';\nexport class CoreRenderer {\n stage;\n constructor(stage) {\n this.stage = stage;\n }\n}\n//# sourceMappingURL=CoreRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreRenderOp {\n}\n//# sourceMappingURL=CoreRenderOp.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreRenderOp } from '../CoreRenderOp.js';\nimport { WebGlCoreShader } from './WebGlCoreShader.js';\nconst MAX_TEXTURES = 8; // TODO: get from gl\n/**\n * Can render multiple quads with multiple textures (up to vertex shader texture limit)\n *\n */\nexport class WebGlCoreRenderOp extends CoreRenderOp {\n glw;\n options;\n buffers;\n shader;\n shaderProps;\n alpha;\n clippingRect;\n dimensions;\n bufferIdx;\n zIndex;\n renderToTexture;\n parentHasRenderTexture;\n framebufferDimensions;\n length = 0;\n numQuads = 0;\n textures = [];\n maxTextures;\n constructor(glw, options, buffers, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, zIndex, renderToTexture, parentHasRenderTexture, framebufferDimensions) {\n super();\n this.glw = glw;\n this.options = options;\n this.buffers = buffers;\n this.shader = shader;\n this.shaderProps = shaderProps;\n this.alpha = alpha;\n this.clippingRect = clippingRect;\n this.dimensions = dimensions;\n this.bufferIdx = bufferIdx;\n this.zIndex = zIndex;\n this.renderToTexture = renderToTexture;\n this.parentHasRenderTexture = parentHasRenderTexture;\n this.framebufferDimensions = framebufferDimensions;\n this.maxTextures = shader.supportsIndexedTextures\n ? glw.getParameter(glw.MAX_VERTEX_TEXTURE_IMAGE_UNITS)\n : 1;\n }\n addTexture(texture) {\n const { textures, maxTextures } = this;\n const existingIdx = textures.findIndex((t) => t === texture);\n if (existingIdx !== -1) {\n return existingIdx;\n }\n const newIdx = textures.length;\n if (newIdx >= maxTextures) {\n return 0xffffffff;\n }\n this.textures.push(texture);\n return newIdx;\n }\n draw() {\n const { glw, shader, shaderProps, options } = this;\n const { shManager } = options;\n shManager.useShader(shader);\n shader.bindRenderOp(this, shaderProps);\n // TODO: Reduce calculations required\n const quadIdx = (this.bufferIdx / 24) * 6 * 2;\n // Clipping\n if (this.clippingRect.valid) {\n const { x, y, width, height } = this.clippingRect;\n const pixelRatio = options.pixelRatio;\n const canvasHeight = options.canvas.height;\n const clipX = Math.round(x * pixelRatio);\n const clipWidth = Math.round(width * pixelRatio);\n const clipHeight = Math.round(height * pixelRatio);\n const clipY = Math.round(canvasHeight - clipHeight - y * pixelRatio);\n glw.setScissorTest(true);\n glw.scissor(clipX, clipY, clipWidth, clipHeight);\n }\n else {\n glw.setScissorTest(false);\n }\n glw.drawElements(glw.TRIANGLES, 6 * this.numQuads, glw.UNSIGNED_SHORT, quadIdx);\n }\n}\n//# sourceMappingURL=WebGlCoreRenderOp.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Get device specific webgl parameters\n * @param glw\n */\nexport function getWebGlParameters(glw) {\n const params = {\n MAX_RENDERBUFFER_SIZE: 0,\n MAX_TEXTURE_SIZE: 0,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n MAX_VIEWPORT_DIMS: 0,\n MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0,\n MAX_TEXTURE_IMAGE_UNITS: 0,\n MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0,\n MAX_VERTEX_ATTRIBS: 0,\n MAX_VARYING_VECTORS: 0,\n MAX_VERTEX_UNIFORM_VECTORS: 0,\n MAX_FRAGMENT_UNIFORM_VECTORS: 0,\n };\n // Map over all parameters and get them\n const keys = Object.keys(params);\n keys.forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params[key] = glw.getParameter(glw[key]);\n });\n return params;\n}\n/**\n * Get device webgl extensions\n * @param glw\n */\nexport function getWebGlExtensions(glw) {\n const extensions = {\n ANGLE_instanced_arrays: null,\n WEBGL_compressed_texture_s3tc: null,\n WEBGL_compressed_texture_astc: null,\n WEBGL_compressed_texture_etc: null,\n WEBGL_compressed_texture_etc1: null,\n WEBGL_compressed_texture_pvrtc: null,\n WEBKIT_WEBGL_compressed_texture_pvrtc: null,\n WEBGL_compressed_texture_s3tc_srgb: null,\n OES_vertex_array_object: null,\n };\n // Map over all extensions and get them\n const keys = Object.keys(extensions);\n keys.forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n extensions[key] = glw.getExtension(key);\n });\n return extensions;\n}\n/**\n * Allocate big memory chunk that we\n * can re-use to draw quads\n *\n * @param glw\n * @param size\n */\nexport function createIndexBuffer(glw, size) {\n const maxQuads = ~~(size / 80);\n const indices = new Uint16Array(maxQuads * 6);\n for (let i = 0, j = 0; i < maxQuads; i += 6, j += 4) {\n indices[i] = j;\n indices[i + 1] = j + 1;\n indices[i + 2] = j + 2;\n indices[i + 3] = j + 2;\n indices[i + 4] = j + 1;\n indices[i + 5] = j + 3;\n }\n const buffer = glw.createBuffer();\n glw.elementArrayBufferData(buffer, indices, glw.STATIC_DRAW);\n}\n/**\n * Checks if an object is of type HTMLImageElement.\n * This is used because we cant check for HTMLImageElement directly when the\n * renderer is running in a seperate web worker context.\n *\n * @param obj\n * @returns\n */\nexport function isHTMLImageElement(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n obj.constructor &&\n obj.constructor.name === 'HTMLImageElement');\n}\n//# sourceMappingURL=RendererUtils.js.map","/**\n * Memize options object.\n *\n * @typedef MemizeOptions\n *\n * @property {number} [maxSize] Maximum size of the cache.\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef MemizeCacheNode\n *\n * @property {?MemizeCacheNode|undefined} [prev] Previous node.\n * @property {?MemizeCacheNode|undefined} [next] Next node.\n * @property {Array<*>} args Function arguments for cache\n * entry.\n * @property {*} val Function result.\n */\n\n/**\n * Properties of the enhanced function for controlling cache.\n *\n * @typedef MemizeMemoizedFunction\n *\n * @property {()=>void} clear Clear the cache.\n */\n\n/**\n * Accepts a function to be memoized, and returns a new memoized function, with\n * optional options.\n *\n * @template {(...args: any[]) => any} F\n *\n * @param {F} fn Function to memoize.\n * @param {MemizeOptions} [options] Options object.\n *\n * @return {((...args: Parameters) => ReturnType) & MemizeMemoizedFunction} Memoized function.\n */\nfunction memize(fn, options) {\n\tvar size = 0;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar head;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar tail;\n\n\toptions = options || {};\n\n\tfunction memoized(/* ...args */) {\n\t\tvar node = head,\n\t\t\tlen = arguments.length,\n\t\t\targs,\n\t\t\ti;\n\n\t\tsearchCache: while (node) {\n\t\t\t// Perform a shallow equality test to confirm that whether the node\n\t\t\t// under test is a candidate for the arguments passed. Two arrays\n\t\t\t// are shallowly equal if their length matches and each entry is\n\t\t\t// strictly equal between the two sets. Avoid abstracting to a\n\t\t\t// function which could incur an arguments leaking deoptimization.\n\n\t\t\t// Check whether node arguments match arguments length\n\t\t\tif (node.args.length !== arguments.length) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check whether node arguments match arguments values\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tif (node.args[i] !== arguments[i]) {\n\t\t\t\t\tnode = node.next;\n\t\t\t\t\tcontinue searchCache;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif (node !== head) {\n\t\t\t\t// As tail, shift to previous. Must only shift if not also\n\t\t\t\t// head, since if both head and tail, there is no previous.\n\t\t\t\tif (node === tail) {\n\t\t\t\t\ttail = node.prev;\n\t\t\t\t}\n\n\t\t\t\t// Adjust siblings to point to each other. If node was tail,\n\t\t\t\t// this also handles new tail's empty `next` assignment.\n\t\t\t\t/** @type {MemizeCacheNode} */ (node.prev).next = node.next;\n\t\t\t\tif (node.next) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {MemizeCacheNode} */ (head).prev = node;\n\t\t\t\thead = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\t// Create a copy of arguments (avoid leaking deoptimization)\n\t\targs = new Array(len);\n\t\tfor (i = 0; i < len; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\tnode = {\n\t\t\targs: args,\n\n\t\t\t// Generate the result from original function\n\t\t\tval: fn.apply(null, args),\n\t\t};\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif (head) {\n\t\t\thead.prev = node;\n\t\t\tnode.next = head;\n\t\t} else {\n\t\t\t// If no head, follows that there's no tail (at initial or reset)\n\t\t\ttail = node;\n\t\t}\n\n\t\t// Trim tail if we're reached max size and are pending cache insertion\n\t\tif (size === /** @type {MemizeOptions} */ (options).maxSize) {\n\t\t\ttail = /** @type {MemizeCacheNode} */ (tail).prev;\n\t\t\t/** @type {MemizeCacheNode} */ (tail).next = null;\n\t\t} else {\n\t\t\tsize++;\n\t\t}\n\n\t\thead = node;\n\n\t\treturn node.val;\n\t}\n\n\tmemoized.clear = function () {\n\t\thead = null;\n\t\ttail = null;\n\t\tsize = 0;\n\t};\n\n\t// Ignore reason: There's not a clear solution to create an intersection of\n\t// the function with additional properties, where the goal is to retain the\n\t// function signature of the incoming argument and add control properties\n\t// on the return value.\n\n\t// @ts-ignore\n\treturn memoized;\n}\n\nexport { memize as default };\n","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Core Utility Functions\n *\n * @module\n */\nimport memo from 'memize';\nexport const EPSILON = 0.000001;\nexport let ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport const RANDOM = Math.random;\nexport const ANGLE_ORDER = 'zyx';\nconst degree = Math.PI / 180;\nexport const setMatrixArrayType = (type) => {\n ARRAY_TYPE = type;\n};\nexport const toRadian = (a) => {\n return a * degree;\n};\nexport const equals = (a, b) => {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n};\nexport const rand = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1) + min);\n};\nexport const isPowerOfTwo = (value) => {\n return value && !(value & (value - 1));\n};\nconst getTimingBezier = (a, b, c, d) => {\n const xc = 3.0 * a;\n const xb = 3.0 * (c - a) - xc;\n const xa = 1.0 - xc - xb;\n const yc = 3.0 * b;\n const yb = 3.0 * (d - b) - yc;\n const ya = 1.0 - yc - yb;\n return function (time) {\n if (time >= 1.0) {\n return 1;\n }\n if (time <= 0) {\n return 0;\n }\n let t = 0.5, cbx, cbxd, dx;\n for (let it = 0; it < 20; it++) {\n cbx = t * (t * (t * xa + xb) + xc);\n dx = time - cbx;\n if (dx > -1e-8 && dx < 1e-8) {\n return t * (t * (t * ya + yb) + yc);\n }\n // Cubic bezier derivative.\n cbxd = t * (t * (3 * xa) + 2 * xb) + xc;\n if (cbxd > 1e-10 && cbxd < 1e-10) {\n // Problematic. Fall back to binary search method.\n break;\n }\n t += dx / cbxd;\n }\n // Fallback: binary search method. This is more reliable when there are near-0 slopes.\n let minT = 0;\n let maxT = 1;\n for (let it = 0; it < 20; it++) {\n t = 0.5 * (minT + maxT);\n cbx = t * (t * (t * xa + xb) + xc);\n dx = time - cbx;\n if (dx > -1e-8 && dx < 1e-8) {\n // Solution found!\n return t * (t * (t * ya + yb) + yc);\n }\n if (dx < 0) {\n maxT = t;\n }\n else {\n minT = t;\n }\n }\n };\n};\nexport const getTimingFunction = memo((str) => {\n switch (str) {\n case 'linear':\n return function (time) {\n return time;\n };\n case 'ease':\n return getTimingBezier(0.25, 0.1, 0.25, 1.0);\n case 'ease-in':\n return getTimingBezier(0.42, 0, 1.0, 1.0);\n case 'ease-out':\n return getTimingBezier(0, 0, 0.58, 1.0);\n case 'ease-in-out':\n return getTimingBezier(0.42, 0, 0.58, 1.0);\n case 'ease-in-sine':\n return getTimingBezier(0.12, 0, 0.39, 0);\n case 'ease-out-sine':\n return getTimingBezier(0.12, 0, 0.39, 0);\n case 'ease-in-out-sine':\n return getTimingBezier(0.37, 0, 0.63, 1);\n case 'ease-in-cubic':\n return getTimingBezier(0.32, 0, 0.67, 0);\n case 'ease-out-cubic':\n return getTimingBezier(0.33, 1, 0.68, 1);\n case 'ease-in-out-cubic':\n return getTimingBezier(0.65, 0, 0.35, 1);\n case 'ease-in-circ':\n return getTimingBezier(0.55, 0, 1, 0.45);\n case 'ease-out-circ':\n return getTimingBezier(0, 0.55, 0.45, 1);\n case 'ease-in-out-circ':\n return getTimingBezier(0.85, 0, 0.15, 1);\n case 'ease-in-back':\n return getTimingBezier(0.36, 0, 0.66, -0.56);\n case 'ease-out-back':\n return getTimingBezier(0.34, 1.56, 0.64, 1);\n case 'ease-in-out-back':\n return getTimingBezier(0.68, -0.6, 0.32, 1.6);\n case 'step-start':\n return function () {\n return 1;\n };\n case 'step-end':\n return function (time) {\n return time === 1 ? 1 : 0;\n };\n default:\n // eslint-disable-next-line no-case-declarations\n const s = 'cubic-bezier(';\n if (str && str.indexOf(s) === 0) {\n const parts = str\n .substr(s.length, str.length - s.length - 1)\n .split(',');\n if (parts.length !== 4) {\n console.warn('Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n const a = parseFloat(parts[0] || '0.42');\n const b = parseFloat(parts[1] || '0');\n const c = parseFloat(parts[2] || '1');\n const d = parseFloat(parts[3] || '1');\n if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d)) {\n console.warn(' Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n return getTimingBezier(a, b, c, d);\n }\n else {\n console.warn('Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n }\n});\nif (!Math.hypot)\n Math.hypot = (...args) => {\n let y = 0, i = args.length;\n while (i--) {\n y += args[i] * args[i];\n }\n return Math.sqrt(y);\n };\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../utils.js';\nimport { isPowerOfTwo } from '../../utils.js';\nimport { CoreContextTexture } from '../CoreContextTexture.js';\nimport { isHTMLImageElement } from './internal/RendererUtils.js';\nconst TRANSPARENT_TEXTURE_DATA = new Uint8Array([0, 0, 0, 0]);\n/**\n * A wrapper around a WebGLTexture that handles loading the texture data\n * from a Texture source and uploading it to the GPU as well as freeing\n * the uploaded texture.\n *\n * @remarks\n * When accessing the ctxTexture property, the texture will be loaded if\n * it hasn't been already. ctxTexture will always return a valid WebGLTexture\n * and trigger the loading/uploading of the texture's data if it hasn't been\n * loaded yet.\n */\nexport class WebGlCoreCtxTexture extends CoreContextTexture {\n glw;\n _nativeCtxTexture = null;\n _state = 'freed';\n _w = 0;\n _h = 0;\n constructor(glw, memManager, textureSource) {\n super(memManager, textureSource);\n this.glw = glw;\n }\n get ctxTexture() {\n if (this._state === 'freed') {\n this.load();\n }\n assertTruthy(this._nativeCtxTexture);\n return this._nativeCtxTexture;\n }\n get renderable() {\n return this.textureSource.renderable;\n }\n get w() {\n return this._w;\n }\n get h() {\n return this._h;\n }\n /**\n * Load the texture data from the Texture source and upload it to the GPU\n *\n * @remarks\n * This method is called automatically when accessing the ctxTexture property\n * if the texture hasn't been loaded yet. But it can also be called manually\n * to force the texture to be pre-loaded prior to accessing the ctxTexture\n * property.\n */\n load() {\n // If the texture is already loading or loaded, don't load it again.\n if (this._state === 'loading' || this._state === 'loaded') {\n return;\n }\n this._state = 'loading';\n this.textureSource.setState('loading');\n this._nativeCtxTexture = this.createNativeCtxTexture();\n this.onLoadRequest()\n .then(({ width, height }) => {\n if (this._state === 'freed') {\n return;\n }\n this._state = 'loaded';\n this._w = width;\n this._h = height;\n // Update the texture source's width and height so that it can be used\n // for rendering.\n this.textureSource.setState('loaded', { width, height });\n })\n .catch((err) => {\n this._state = 'failed';\n this.textureSource.setState('failed', err);\n console.error(err);\n });\n }\n /**\n * Called when the texture data needs to be loaded and uploaded to a texture\n */\n async onLoadRequest() {\n const { glw, memManager } = this;\n // Set to a 1x1 transparent texture\n glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);\n memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength);\n const textureData = await this.textureSource?.getTextureData();\n // If the texture has been freed while loading, return early.\n if (!this._nativeCtxTexture) {\n assertTruthy(this._state === 'freed');\n return { width: 0, height: 0 };\n }\n let width = 0;\n let height = 0;\n assertTruthy(this._nativeCtxTexture);\n glw.activeTexture(0);\n // If textureData is null, the texture is empty (0, 0) and we don't need to\n // upload any data to the GPU.\n if (textureData.data instanceof ImageBitmap ||\n textureData.data instanceof ImageData ||\n // not using typeof HTMLImageElement due to web worker\n isHTMLImageElement(textureData.data)) {\n const data = textureData.data;\n width = data.width;\n height = data.height;\n glw.bindTexture(this._nativeCtxTexture);\n glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha);\n glw.texImage2D(0, glw.RGBA, glw.RGBA, glw.UNSIGNED_BYTE, data);\n memManager.setTextureMemUse(this, width * height * 4);\n // generate mipmaps for power-of-2 textures or in WebGL2RenderingContext\n if (glw.isWebGl2() || (isPowerOfTwo(width) && isPowerOfTwo(height))) {\n glw.generateMipmap();\n }\n }\n else if (textureData.data === null) {\n width = 0;\n height = 0;\n // Reset to a 1x1 transparent texture\n glw.bindTexture(this._nativeCtxTexture);\n glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, TRANSPARENT_TEXTURE_DATA);\n memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength);\n }\n else if ('mipmaps' in textureData.data && textureData.data.mipmaps) {\n const { mipmaps, width = 0, height = 0, type, glInternalFormat, } = textureData.data;\n const view = type === 'ktx'\n ? new DataView(mipmaps[0] ?? new ArrayBuffer(0))\n : mipmaps[0];\n glw.bindTexture(this._nativeCtxTexture);\n glw.compressedTexImage2D(0, glInternalFormat, width, height, 0, view);\n glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);\n glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);\n memManager.setTextureMemUse(this, view.byteLength);\n }\n else {\n console.error(`WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned`, textureData);\n }\n return {\n width,\n height,\n };\n }\n /**\n * Free the WebGLTexture from the GPU\n *\n * @returns\n */\n free() {\n if (this._state === 'freed') {\n return;\n }\n this._state = 'freed';\n this.textureSource.setState('freed');\n this._w = 0;\n this._h = 0;\n if (!this._nativeCtxTexture) {\n return;\n }\n const { glw, memManager } = this;\n glw.deleteTexture(this._nativeCtxTexture);\n memManager.setTextureMemUse(this, 0);\n this._nativeCtxTexture = null;\n }\n /**\n * Create native context texture\n *\n * @remarks\n * When this method returns the returned texture will be bound to the GL context state.\n *\n * @param width\n * @param height\n * @returns\n */\n createNativeCtxTexture() {\n const { glw } = this;\n const nativeTexture = glw.createTexture();\n if (!nativeTexture) {\n throw new Error('Could not create WebGL Texture');\n }\n // On initial load request, create a 1x1 transparent texture to use until\n // the texture data is finally loaded.\n glw.activeTexture(0);\n glw.bindTexture(nativeTexture);\n // linear texture filtering\n glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);\n glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);\n // texture wrapping method\n glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);\n return nativeTexture;\n }\n}\n//# sourceMappingURL=WebGlCoreCtxTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\n/**\n * Texture consisting of only a 1x1 color pixel\n *\n * @remarks\n * The pixel color is set with the {@link ColorTextureProps.color} prop.\n *\n * This is the default texture used for a Node if it's\n * {@link INodeWritableProps.texture} prop is set to `null` (the default)\n *\n * Generally the 1x1 color pixel is stretched to whatever the set dimensions of\n * a Node are.\n */\nexport class ColorTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = ColorTexture.resolveDefaults(props || {});\n }\n get color() {\n return this.props.color;\n }\n set color(color) {\n this.props.color = color;\n }\n async getTextureData() {\n const pixelData32 = new Uint32Array([this.color]);\n const pixelData8 = new Uint8ClampedArray(pixelData32.buffer);\n return {\n data: new ImageData(pixelData8, 1, 1),\n premultiplyAlpha: true,\n };\n }\n static makeCacheKey(props) {\n const resolvedProps = ColorTexture.resolveDefaults(props);\n return `ColorTexture,${resolvedProps.color}`;\n }\n static resolveDefaults(props) {\n return {\n color: props.color || 0xffffffff,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=ColorTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture, } from './Texture.js';\n/**\n * A Texture that is a sub-region of another Texture.\n *\n * @remarks\n * The parent texture can be a Sprite Sheet/Texture Atlas and set using the\n * {@link SubTextureProps.texture} prop. The sub-region relative to the parent\n * texture is defined with the {@link SubTextureProps.x},\n * {@link SubTextureProps.y}, {@link SubTextureProps.width}, and\n * {@link SubTextureProps.height} pixel values.\n */\nexport class SubTexture extends Texture {\n props;\n parentTexture;\n constructor(txManager, props) {\n super(txManager);\n this.parentTexture = this.txManager.loadTexture(props.texture.txType, props.texture.props, props.texture.options);\n this.props = SubTexture.resolveDefaults(props || {});\n // If parent texture is already loaded / failed, trigger loaded event manually\n // so that users get a consistent event experience.\n // We do this in a microtask to allow listeners to be attached in the same\n // synchronous task after calling loadTexture()\n queueMicrotask(() => {\n const parentTx = this.parentTexture;\n if (parentTx.state === 'loaded') {\n this.onParentTxLoaded(parentTx, parentTx.dimensions);\n }\n else if (parentTx.state === 'failed') {\n this.onParentTxFailed(parentTx, parentTx.error);\n }\n parentTx.on('loaded', this.onParentTxLoaded);\n parentTx.on('failed', this.onParentTxFailed);\n });\n }\n onParentTxLoaded = () => {\n // We ignore the parent's passed dimensions, and simply use the SubTexture's\n // configured dimensions (because that's all that matters here)\n this.setState('loaded', {\n width: this.props.width,\n height: this.props.height,\n });\n };\n onParentTxFailed = (target, error) => {\n this.setState('failed', error);\n };\n async getTextureData() {\n return {\n data: this.props,\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static makeCacheKey(props) {\n return false;\n }\n static resolveDefaults(props) {\n return {\n texture: props.texture,\n x: props.x || 0,\n y: props.y || 0,\n width: props.width || 0,\n height: props.height || 0,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=SubTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nexport class WebGlCoreCtxSubTexture extends WebGlCoreCtxTexture {\n constructor(glw, memManager, textureSource) {\n super(glw, memManager, textureSource);\n }\n async onLoadRequest() {\n const props = await this.textureSource.getTextureData();\n return {\n width: props.data?.width || 0,\n height: props.data?.height || 0,\n };\n }\n}\n//# sourceMappingURL=WebGlCoreCtxSubTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents a collection of WebGL Buffers along with their associated\n * vertex attribute formats.\n */\nexport class BufferCollection {\n config;\n constructor(config) {\n this.config = config;\n }\n /**\n * Get the WebGLBuffer associated with the given attribute name if it exists.\n *\n * @param attributeName\n * @returns\n */\n getBuffer(attributeName) {\n return this.config.find((item) => item.attributes[attributeName])?.buffer;\n }\n /**\n * Get the AttributeInfo associated with the given attribute name if it exists.\n *\n * @param attributeName\n * @returns\n */\n getAttributeInfo(attributeName) {\n return this.config.find((item) => item.attributes[attributeName])\n ?.attributes[attributeName];\n }\n}\n//# sourceMappingURL=BufferCollection.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\nimport { assertTruthy } from '../../utils.js';\nimport { isWebGl2 } from '../renderers/webgl/internal/WebGlUtils.js';\n/**\n * Optimized WebGL Context Wrapper\n *\n * @remarks\n * This class contains the subset of the WebGLRenderingContext & WebGL2RenderingContext\n * API that is used by the renderer. Select high volume WebGL methods include\n * caching optimizations to avoid making WebGL calls if the state is already set\n * to the desired value.\n *\n * While most methods contained are direct passthroughs to the WebGL context,\n * some methods combine multiple WebGL calls into one for convenience, modify\n * arguments to be more convenient, or are replaced by more specific methods.\n *\n * Not all methods are optimized. Only methods that are called frequently\n * and/or have a high cost are optimized.\n *\n * A subset of GLenum constants are also exposed as properties on this class\n * for convenience.\n */\nexport class WebGlContextWrapper {\n gl;\n //#region Cached WebGL State\n activeTextureUnit = 0;\n texture2dUnits;\n texture2dParams = new WeakMap();\n scissorEnabled;\n scissorX;\n scissorY;\n scissorWidth;\n scissorHeight;\n blendEnabled;\n blendSrcRgb;\n blendDstRgb;\n blendSrcAlpha;\n blendDstAlpha;\n boundArrayBuffer;\n boundElementArrayBuffer;\n curProgram;\n programUniforms = new WeakMap();\n //#endregion Cached WebGL State\n //#region Canvas\n canvas;\n //#endregion Canvas\n //#region WebGL Enums\n MAX_RENDERBUFFER_SIZE;\n MAX_TEXTURE_SIZE;\n MAX_VIEWPORT_DIMS;\n MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n MAX_TEXTURE_IMAGE_UNITS;\n MAX_COMBINED_TEXTURE_IMAGE_UNITS;\n MAX_VERTEX_ATTRIBS;\n MAX_VARYING_VECTORS;\n MAX_VERTEX_UNIFORM_VECTORS;\n MAX_FRAGMENT_UNIFORM_VECTORS;\n TEXTURE_MAG_FILTER;\n TEXTURE_MIN_FILTER;\n TEXTURE_WRAP_S;\n TEXTURE_WRAP_T;\n LINEAR;\n CLAMP_TO_EDGE;\n RGBA;\n UNSIGNED_BYTE;\n UNPACK_PREMULTIPLY_ALPHA_WEBGL;\n UNPACK_FLIP_Y_WEBGL;\n FLOAT;\n TRIANGLES;\n UNSIGNED_SHORT;\n ONE;\n ONE_MINUS_SRC_ALPHA;\n VERTEX_SHADER;\n FRAGMENT_SHADER;\n STATIC_DRAW;\n COMPILE_STATUS;\n LINK_STATUS;\n DYNAMIC_DRAW;\n COLOR_ATTACHMENT0;\n //#endregion WebGL Enums\n constructor(gl) {\n this.gl = gl;\n // The following code extracts the current state of the WebGL context\n // to our local JavaScript cached version of it. This is so we can\n // avoid making WebGL calls if we don't need to.\n // We could assume that the WebGL context is in a default state, but\n // in the future we may want to support restoring a broken WebGL context\n // and this will help with that.\n this.activeTextureUnit =\n gl.getParameter(gl.ACTIVE_TEXTURE) - gl.TEXTURE0;\n const maxTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n // save current texture units\n this.texture2dUnits = new Array(maxTextureUnits)\n .fill(undefined)\n .map((_, i) => {\n this.activeTexture(i);\n return gl.getParameter(gl.TEXTURE_BINDING_2D);\n });\n // restore active texture unit\n this.activeTexture(this.activeTextureUnit);\n this.scissorEnabled = gl.isEnabled(gl.SCISSOR_TEST);\n const scissorBox = gl.getParameter(gl.SCISSOR_BOX);\n this.scissorX = scissorBox[0];\n this.scissorY = scissorBox[1];\n this.scissorWidth = scissorBox[2];\n this.scissorHeight = scissorBox[3];\n this.blendEnabled = gl.isEnabled(gl.BLEND);\n this.blendSrcRgb = gl.getParameter(gl.BLEND_SRC_RGB);\n this.blendDstRgb = gl.getParameter(gl.BLEND_DST_RGB);\n this.blendSrcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA);\n this.blendDstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA);\n this.boundArrayBuffer = gl.getParameter(gl.ARRAY_BUFFER_BINDING);\n this.boundElementArrayBuffer = gl.getParameter(gl.ELEMENT_ARRAY_BUFFER_BINDING);\n this.curProgram = gl.getParameter(gl.CURRENT_PROGRAM);\n this.canvas = gl.canvas;\n // Extract GLenums\n this.MAX_RENDERBUFFER_SIZE = gl.MAX_RENDERBUFFER_SIZE;\n this.MAX_TEXTURE_SIZE = gl.MAX_TEXTURE_SIZE;\n this.MAX_VIEWPORT_DIMS = gl.MAX_VIEWPORT_DIMS;\n this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n this.MAX_TEXTURE_IMAGE_UNITS = gl.MAX_TEXTURE_IMAGE_UNITS;\n this.MAX_COMBINED_TEXTURE_IMAGE_UNITS = gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS;\n this.MAX_VERTEX_ATTRIBS = gl.MAX_VERTEX_ATTRIBS;\n this.MAX_VARYING_VECTORS = gl.MAX_VARYING_VECTORS;\n this.MAX_VERTEX_UNIFORM_VECTORS = gl.MAX_VERTEX_UNIFORM_VECTORS;\n this.MAX_FRAGMENT_UNIFORM_VECTORS = gl.MAX_FRAGMENT_UNIFORM_VECTORS;\n this.TEXTURE_MAG_FILTER = gl.TEXTURE_MAG_FILTER;\n this.TEXTURE_MIN_FILTER = gl.TEXTURE_MIN_FILTER;\n this.TEXTURE_WRAP_S = gl.TEXTURE_WRAP_S;\n this.TEXTURE_WRAP_T = gl.TEXTURE_WRAP_T;\n this.LINEAR = gl.LINEAR;\n this.CLAMP_TO_EDGE = gl.CLAMP_TO_EDGE;\n this.RGBA = gl.RGBA;\n this.UNSIGNED_BYTE = gl.UNSIGNED_BYTE;\n this.UNPACK_PREMULTIPLY_ALPHA_WEBGL = gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL;\n this.UNPACK_FLIP_Y_WEBGL = gl.UNPACK_FLIP_Y_WEBGL;\n this.FLOAT = gl.FLOAT;\n this.TRIANGLES = gl.TRIANGLES;\n this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT;\n this.ONE = gl.ONE;\n this.ONE_MINUS_SRC_ALPHA = gl.ONE_MINUS_SRC_ALPHA;\n this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n this.TRIANGLES = gl.TRIANGLES;\n this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT;\n this.VERTEX_SHADER = gl.VERTEX_SHADER;\n this.FRAGMENT_SHADER = gl.FRAGMENT_SHADER;\n this.STATIC_DRAW = gl.STATIC_DRAW;\n this.COMPILE_STATUS = gl.COMPILE_STATUS;\n this.LINK_STATUS = gl.LINK_STATUS;\n this.DYNAMIC_DRAW = gl.DYNAMIC_DRAW;\n this.COLOR_ATTACHMENT0 = gl.COLOR_ATTACHMENT0;\n }\n /**\n * Returns true if the WebGL context is WebGL2\n *\n * @returns\n */\n isWebGl2() {\n return isWebGl2(this.gl);\n }\n /**\n * ```\n * gl.activeTexture(textureUnit + gl.TEXTURE0);\n * ```\n *\n * @remarks\n * **WebGL Difference**: `textureUnit` is based from 0, not `gl.TEXTURE0`.\n *\n * @param textureUnit\n */\n activeTexture(textureUnit) {\n const { gl } = this;\n if (this.activeTextureUnit !== textureUnit) {\n gl.activeTexture(textureUnit + gl.TEXTURE0);\n this.activeTextureUnit = textureUnit;\n }\n }\n /**\n * ```\n * gl.bindTexture(gl.TEXTURE_2D, texture);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n *\n * @param texture\n */\n bindTexture(texture) {\n const { gl, activeTextureUnit, texture2dUnits } = this;\n if (texture2dUnits[activeTextureUnit] === texture) {\n return;\n }\n texture2dUnits[activeTextureUnit] = texture;\n gl.bindTexture(this.gl.TEXTURE_2D, texture);\n }\n _getActiveTexture() {\n const { activeTextureUnit, texture2dUnits } = this;\n return texture2dUnits[activeTextureUnit];\n }\n /**\n * ```\n * gl.texParameteri(gl.TEXTURE_2D, pname, param);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n *\n * @param pname\n * @param param\n * @returns\n */\n texParameteri(pname, param) {\n const { gl, texture2dParams } = this;\n const activeTexture = this._getActiveTexture();\n if (!activeTexture) {\n throw new Error('No active texture');\n }\n let textureParams = texture2dParams.get(activeTexture);\n if (!textureParams) {\n textureParams = {};\n texture2dParams.set(activeTexture, textureParams);\n }\n if (textureParams[pname] === param) {\n return;\n }\n textureParams[pname] = param;\n gl.texParameteri(gl.TEXTURE_2D, pname, param);\n }\n texImage2D(level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels) {\n const { gl } = this;\n if (format) {\n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels);\n }\n else {\n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource);\n }\n }\n /**\n * ```\n * gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, data);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n */\n compressedTexImage2D(level, internalformat, width, height, border, data) {\n const { gl } = this;\n gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalformat, width, height, border, data);\n }\n /**\n * ```\n * gl.pixelStorei(pname, param);\n * ```\n *\n * @param pname\n * @param param\n */\n pixelStorei(pname, param) {\n const { gl } = this;\n gl.pixelStorei(pname, param);\n }\n /**\n * ```\n * gl.generateMipmap(gl.TEXTURE_2D);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n */\n generateMipmap() {\n const { gl } = this;\n gl.generateMipmap(gl.TEXTURE_2D);\n }\n /**\n * ```\n * gl.createTexture();\n * ```\n *\n * @returns\n */\n createTexture() {\n const { gl } = this;\n return gl.createTexture();\n }\n /**\n * ```\n * gl.deleteTexture(texture);\n * ```\n *\n * @param texture\n */\n deleteTexture(texture) {\n const { gl } = this;\n if (texture) {\n this.texture2dParams.delete(texture);\n }\n gl.deleteTexture(texture);\n }\n /**\n * ```\n * gl.viewport(x, y, width, height);\n * ```\n */\n viewport(x, y, width, height) {\n const { gl } = this;\n gl.viewport(x, y, width, height);\n }\n /**\n * ```\n * gl.clearColor(red, green, blue, alpha);\n * ```\n *\n * @param red\n * @param green\n * @param blue\n * @param alpha\n */\n clearColor(red, green, blue, alpha) {\n const { gl } = this;\n gl.clearColor(red, green, blue, alpha);\n }\n /**\n * ```\n * gl[\"enable\"|\"disable\"](gl.SCISSOR_TEST);\n * ```\n * @param enable\n */\n setScissorTest(enable) {\n const { gl, scissorEnabled } = this;\n if (enable === scissorEnabled) {\n return;\n }\n if (enable) {\n gl.enable(gl.SCISSOR_TEST);\n }\n else {\n gl.disable(gl.SCISSOR_TEST);\n }\n this.scissorEnabled = enable;\n }\n /**\n * ```\n * gl.scissor(x, y, width, height);\n * ```\n *\n * @param x\n * @param y\n * @param width\n * @param height\n */\n scissor(x, y, width, height) {\n const { gl, scissorX, scissorY, scissorWidth, scissorHeight } = this;\n if (x !== scissorX ||\n y !== scissorY ||\n width !== scissorWidth ||\n height !== scissorHeight) {\n gl.scissor(x, y, width, height);\n this.scissorX = x;\n this.scissorY = y;\n this.scissorWidth = width;\n this.scissorHeight = height;\n }\n }\n /**\n * ```\n * gl[\"enable\"|\"disable\"](gl.BLEND);\n * ```\n *\n * @param blend\n * @returns\n */\n setBlend(blend) {\n const { gl, blendEnabled } = this;\n if (blend === blendEnabled) {\n return;\n }\n if (blend) {\n gl.enable(gl.BLEND);\n }\n else {\n gl.disable(gl.BLEND);\n }\n this.blendEnabled = blend;\n }\n /**\n * ```\n * gl.blendFunc(src, dst);\n * ```\n *\n * @param src\n * @param dst\n */\n blendFunc(src, dst) {\n const { gl, blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha } = this;\n if (src !== blendSrcRgb ||\n dst !== blendDstRgb ||\n src !== blendSrcAlpha ||\n dst !== blendDstAlpha) {\n gl.blendFunc(src, dst);\n this.blendSrcRgb = src;\n this.blendDstRgb = dst;\n this.blendSrcAlpha = src;\n this.blendDstAlpha = dst;\n }\n }\n /**\n * ```\n * gl.createBuffer();\n * ```\n *\n * @returns\n */\n createBuffer() {\n const { gl } = this;\n return gl.createBuffer();\n }\n /**\n * ```\n * gl.createFramebuffer();\n * ```\n * @returns\n */\n createFramebuffer() {\n const { gl } = this;\n return gl.createFramebuffer();\n }\n /**\n * ```\n * gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n * ```\n *\n * @param framebuffer\n */\n bindFramebuffer(framebuffer) {\n const { gl } = this;\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n }\n /**\n * ```\n * gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.FRAMEBUFFER` and textarget is always `gl.TEXTURE_2D`\n */\n framebufferTexture2D(attachment, texture, level) {\n const { gl } = this;\n gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, texture, level);\n }\n /**\n * ```\n * gl.clear(gl.COLOR_BUFFER_BIT);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT`\n */\n clear() {\n const { gl } = this;\n gl.clear(gl.COLOR_BUFFER_BIT);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n * gl.bufferData(gl.ARRAY_BUFFER, data, usage);\n * ```\n *\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.\n *\n * @param buffer\n * @param data\n * @param usage\n */\n arrayBufferData(buffer, data, usage) {\n const { gl, boundArrayBuffer } = this;\n if (boundArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n this.boundArrayBuffer = buffer;\n }\n gl.bufferData(gl.ARRAY_BUFFER, data, usage);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);\n * gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);\n * ```\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.\n *\n * @param buffer\n * @param data\n * @param usage\n */\n elementArrayBufferData(buffer, data, usage) {\n const { gl, boundElementArrayBuffer } = this;\n if (boundElementArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);\n this.boundElementArrayBuffer = buffer;\n }\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n * gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n * ```\n *\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.vertexAttribPointer` are combined into one function.\n *\n * @param buffer\n * @param index\n * @param size\n * @param type\n * @param normalized\n * @param stride\n * @param offset\n */\n vertexAttribPointer(buffer, index, size, type, normalized, stride, offset) {\n const { gl, boundArrayBuffer } = this;\n if (boundArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n this.boundArrayBuffer = buffer;\n }\n gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n }\n /**\n * ```\n * gl.useProgram(program);\n * ```\n *\n * @param program\n * @returns\n */\n useProgram(program) {\n const { gl, curProgram } = this;\n if (curProgram === program) {\n return;\n }\n gl.useProgram(program);\n this.curProgram = program;\n }\n setUniform(type, location, ...args) {\n const { gl, programUniforms } = this;\n let uniforms = programUniforms.get(this.curProgram);\n if (!uniforms) {\n uniforms = new Map();\n programUniforms.set(this.curProgram, uniforms);\n }\n const uniformArgs = uniforms.get(location);\n if (!uniformArgs || !compareArrays(uniformArgs, args)) {\n uniforms.set(location, args);\n gl[type](location, ...args);\n }\n }\n /**\n * ```\n * gl.getParameter(pname);\n * ```\n *\n * @param pname\n * @returns\n */\n getParameter(pname) {\n const { gl } = this;\n return gl.getParameter(pname);\n }\n /**\n * ```\n * gl.drawElements(mode, count, type, offset);\n * ```\n *\n * @param mode\n * @param count\n * @param type\n * @param offset\n */\n drawElements(mode, count, type, offset) {\n const { gl } = this;\n gl.drawElements(mode, count, type, offset);\n }\n /**\n * ```\n * gl.drawArrays(mode, first, count);\n * ```\n *\n * @param name\n * @returns\n */\n getExtension(name) {\n const { gl } = this;\n return gl.getExtension(name);\n }\n /**\n * ```\n * gl.createVertexArray();\n * ```\n *\n * @returns\n */\n createVertexArray() {\n const { gl } = this;\n assertTruthy(gl instanceof WebGL2RenderingContext);\n return gl.createVertexArray();\n }\n /**\n * ```\n * gl.bindVertexArray(vertexArray);\n * ```\n *\n * @param vertexArray\n */\n bindVertexArray(vertexArray) {\n const { gl } = this;\n assertTruthy(gl instanceof WebGL2RenderingContext);\n gl.bindVertexArray(vertexArray);\n }\n /**\n * ```\n * gl.getAttribLocation(program, name);\n * ```\n *\n * @param program\n * @param name\n * @returns\n */\n getAttribLocation(program, name) {\n const { gl } = this;\n return gl.getAttribLocation(program, name);\n }\n /**\n * ```\n * gl.getUniformLocation(program, name);\n * ```\n *\n * @param program\n * @param name\n * @returns\n */\n getUniformLocation(program, name) {\n const { gl } = this;\n return gl.getUniformLocation(program, name);\n }\n /**\n * ```\n * gl.enableVertexAttribArray(index);\n * ```\n *\n * @param index\n */\n enableVertexAttribArray(index) {\n const { gl } = this;\n gl.enableVertexAttribArray(index);\n }\n /**\n * ```\n * gl.disableVertexAttribArray(index);\n * ```\n *\n * @param index\n */\n disableVertexAttribArray(index) {\n const { gl } = this;\n gl.disableVertexAttribArray(index);\n }\n /**\n * ```\n * gl.createShader(type);\n * ```\n *\n * @param type\n * @returns\n */\n createShader(type) {\n const { gl } = this;\n return gl.createShader(type);\n }\n /**\n * ```\n * gl.compileShader(shader);\n * ```\n *\n * @param shader\n * @returns\n */\n compileShader(shader) {\n const { gl } = this;\n gl.compileShader(shader);\n }\n /**\n * ```\n * gl.attachShader(program, shader);\n * ```\n *\n * @param program\n * @param shader\n */\n attachShader(program, shader) {\n const { gl } = this;\n gl.attachShader(program, shader);\n }\n /**\n * ```\n * gl.linkProgram(program);\n * ```\n *\n * @param program\n */\n linkProgram(program) {\n const { gl } = this;\n gl.linkProgram(program);\n }\n /**\n * ```\n * gl.deleteProgram(shader);\n * ```\n *\n * @param shader\n */\n deleteProgram(shader) {\n const { gl } = this;\n gl.deleteProgram(shader);\n }\n /**\n * ```\n * gl.getShaderParameter(shader, pname);\n * ```\n *\n * @param shader\n * @param pname\n */\n getShaderParameter(shader, pname) {\n const { gl } = this;\n return gl.getShaderParameter(shader, pname);\n }\n /**\n * ```\n * gl.getShaderInfoLog(shader);\n * ```\n *\n * @param shader\n */\n getShaderInfoLog(shader) {\n const { gl } = this;\n return gl.getShaderInfoLog(shader);\n }\n /**\n * ```\n * gl.createProgram();\n * ```\n *\n * @returns\n */\n createProgram() {\n const { gl } = this;\n return gl.createProgram();\n }\n /**\n * ```\n * gl.getProgramParameter(program, pname);\n * ```\n *\n * @param program\n * @param pname\n * @returns\n */\n getProgramParameter(program, pname) {\n const { gl } = this;\n return gl.getProgramParameter(program, pname);\n }\n /**\n * ```\n * gl.getProgramInfoLog(program);\n * ```\n *\n * @param program\n * @returns\n */\n getProgramInfoLog(program) {\n const { gl } = this;\n return gl.getProgramInfoLog(program);\n }\n /**\n * ```\n * gl.shaderSource(shader, source);\n * ```\n *\n * @param shader\n * @param source\n */\n shaderSource(shader, source) {\n const { gl } = this;\n gl.shaderSource(shader, source);\n }\n /**\n * ```\n * gl.deleteShader(shader);\n * ```\n *\n * @param shader\n */\n deleteShader(shader) {\n const { gl } = this;\n gl.deleteShader(shader);\n }\n}\n/**\n * Compare two arrays for equality.\n *\n * @remarks\n * This function will not try to compare nested arrays or Float32Arrays and\n * instead will always return false when they are encountered.\n *\n * @param a\n * @param b\n * @returns\n */\nexport function compareArrays(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n return a.every((v, i) => {\n // Don't bother to compare nested arrays or Float32Arrays\n if (Array.isArray(v) || v instanceof Float32Array) {\n return false;\n }\n else {\n return v === b[i];\n }\n });\n}\n//# sourceMappingURL=WebGlContextWrapper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\nexport class RenderTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = RenderTexture.resolveDefaults(props || {});\n }\n get width() {\n return this.props.width;\n }\n set width(value) {\n this.props.width = value;\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n this.props.height = value;\n }\n async getTextureData() {\n return {\n data: null,\n premultiplyAlpha: null,\n };\n }\n static resolveDefaults(props) {\n return {\n width: props.width || 256,\n height: props.height || 256,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=RenderTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2024 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../utils.js';\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nexport class WebGlCoreCtxRenderTexture extends WebGlCoreCtxTexture {\n framebuffer;\n constructor(glw, memManager, textureSource) {\n super(glw, memManager, textureSource);\n // Create Framebuffer object\n const framebuffer = glw.createFramebuffer();\n assertTruthy(framebuffer, 'Unable to create framebuffer');\n this.framebuffer = framebuffer;\n }\n async onLoadRequest() {\n const { glw, memManager } = this;\n const nativeTexture = (this._nativeCtxTexture =\n this.createNativeCtxTexture());\n const { width, height } = this.textureSource;\n // Set the dimensions of the render texture\n glw.texImage2D(0, glw.RGBA, width, height, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);\n // Update the texture memory manager\n memManager.setTextureMemUse(this, width * height * 4);\n // Bind the framebuffer\n glw.bindFramebuffer(this.framebuffer);\n // Attach the texture to the framebuffer\n glw.framebufferTexture2D(glw.COLOR_ATTACHMENT0, nativeTexture, 0);\n // Unbind the framebuffer\n glw.bindFramebuffer(null);\n return {\n width,\n height,\n };\n }\n}\n//# sourceMappingURL=WebGlCoreCtxRenderTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, createWebGLContext, hasOwn, mergeColorAlphaPremultiplied, } from '../../../utils.js';\nimport { CoreRenderer } from '../CoreRenderer.js';\nimport { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';\nimport { createIndexBuffer, getWebGlParameters, getWebGlExtensions, } from './internal/RendererUtils.js';\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nimport { Texture } from '../../textures/Texture.js';\nimport { ColorTexture } from '../../textures/ColorTexture.js';\nimport { SubTexture } from '../../textures/SubTexture.js';\nimport { WebGlCoreCtxSubTexture } from './WebGlCoreCtxSubTexture.js';\nimport { CoreShaderManager } from '../../CoreShaderManager.js';\nimport { BufferCollection } from './internal/BufferCollection.js';\nimport { compareRect, getNormalizedRgbaComponents, } from '../../lib/utils.js';\nimport { WebGlCoreShader } from './WebGlCoreShader.js';\nimport { RoundedRectangle } from './shaders/RoundedRectangle.js';\nimport { ContextSpy } from '../../lib/ContextSpy.js';\nimport { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';\nimport { RenderTexture } from '../../textures/RenderTexture.js';\nimport { WebGlCoreCtxRenderTexture } from './WebGlCoreCtxRenderTexture.js';\nconst WORDS_PER_QUAD = 24;\nconst BYTES_PER_QUAD = WORDS_PER_QUAD * 4;\nexport class WebGlCoreRenderer extends CoreRenderer {\n //// WebGL Native Context and Data\n glw;\n system;\n //// Core Managers\n txManager;\n txMemManager;\n shManager;\n //// Options\n options;\n //// Persistent data\n quadBuffer = new ArrayBuffer(1024 * 1024 * 4);\n fQuadBuffer = new Float32Array(this.quadBuffer);\n uiQuadBuffer = new Uint32Array(this.quadBuffer);\n renderOps = [];\n //// Render Op / Buffer Filling State\n curBufferIdx = 0;\n curRenderOp = null;\n rttNodes = [];\n activeRttNode = null;\n //// Default Shader\n defaultShader;\n quadBufferCollection;\n /**\n * White pixel texture used by default when no texture is specified.\n */\n defaultTexture;\n /**\n * Whether the renderer is currently rendering to a texture.\n */\n renderToTextureActive = false;\n constructor(options) {\n super(options.stage);\n const { canvas, clearColor, bufferMemory } = options;\n this.options = options;\n this.txManager = options.txManager;\n this.txMemManager = options.txMemManager;\n this.shManager = options.shManager;\n this.defaultTexture = new ColorTexture(this.txManager);\n // When the default texture is loaded, request a render in case the\n // RAF is paused. Fixes: https://github.com/lightning-js/renderer/issues/123\n this.defaultTexture.once('loaded', () => {\n this.stage.requestRender();\n });\n const gl = createWebGLContext(canvas, options.contextSpy);\n const glw = (this.glw = new WebGlContextWrapper(gl));\n const color = getNormalizedRgbaComponents(clearColor);\n glw.viewport(0, 0, canvas.width, canvas.height);\n glw.clearColor(color[0], color[1], color[2], color[3]);\n glw.setBlend(true);\n glw.blendFunc(glw.ONE, glw.ONE_MINUS_SRC_ALPHA);\n createIndexBuffer(glw, bufferMemory);\n this.system = {\n parameters: getWebGlParameters(this.glw),\n extensions: getWebGlExtensions(this.glw),\n };\n this.shManager.renderer = this;\n this.defaultShader = this.shManager.loadShader('DefaultShader').shader;\n const quadBuffer = glw.createBuffer();\n assertTruthy(quadBuffer);\n const stride = 6 * Float32Array.BYTES_PER_ELEMENT;\n this.quadBufferCollection = new BufferCollection([\n {\n buffer: quadBuffer,\n attributes: {\n a_position: {\n name: 'a_position',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 0, // start at the beginning of the buffer\n },\n a_textureCoordinate: {\n name: 'a_textureCoordinate',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 2 * Float32Array.BYTES_PER_ELEMENT,\n },\n a_color: {\n name: 'a_color',\n size: 4,\n type: glw.UNSIGNED_BYTE,\n normalized: true,\n stride,\n offset: 4 * Float32Array.BYTES_PER_ELEMENT,\n },\n a_textureIndex: {\n name: 'a_textureIndex',\n size: 1,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 5 * Float32Array.BYTES_PER_ELEMENT,\n },\n },\n },\n ]);\n }\n reset() {\n const { glw } = this;\n this.curBufferIdx = 0;\n this.curRenderOp = null;\n this.renderOps.length = 0;\n glw.setScissorTest(false);\n glw.clear();\n }\n getShaderManager() {\n return this.shManager;\n }\n createCtxTexture(textureSource) {\n if (textureSource instanceof SubTexture) {\n return new WebGlCoreCtxSubTexture(this.glw, this.txMemManager, textureSource);\n }\n else if (textureSource instanceof RenderTexture) {\n return new WebGlCoreCtxRenderTexture(this.glw, this.txMemManager, textureSource);\n }\n return new WebGlCoreCtxTexture(this.glw, this.txMemManager, textureSource);\n }\n /**\n * This function adds a quad (a rectangle composed of two triangles) to the WebGL rendering pipeline.\n *\n * It takes a set of options that define the quad's properties, such as its dimensions, colors, texture, shader, and transformation matrix.\n * The function first updates the shader properties with the current dimensions if necessary, then sets the default texture if none is provided.\n * It then checks if a new render operation is needed, based on the current shader and clipping rectangle.\n * If a new render operation is needed, it creates one and updates the current render operation.\n * The function then adjusts the texture coordinates based on the texture options and adds the texture to the texture manager.\n *\n * Finally, it calculates the vertices for the quad, taking into account any transformations, and adds them to the quad buffer.\n * The function updates the length and number of quads in the current render operation, and updates the current buffer index.\n */\n addQuad(params) {\n const { fQuadBuffer, uiQuadBuffer } = this;\n const { width, height, colorTl, colorTr, colorBl, colorBr, textureOptions, shader, shaderProps, alpha, clippingRect, tx, ty, ta, tb, tc, td, rtt: renderToTexture, parentHasRenderTexture, framebufferDimensions, } = params;\n let { texture } = params;\n /**\n * If the shader props contain any automatic properties, update it with the\n * current dimensions that will be used to render the quad.\n */\n if (shaderProps && hasOwn(shaderProps, '$dimensions')) {\n const dimensions = shaderProps.$dimensions;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n dimensions.width = width;\n dimensions.height = height;\n }\n texture = texture ?? this.defaultTexture;\n assertTruthy(texture instanceof Texture, 'Invalid texture type');\n let { curBufferIdx: bufferIdx, curRenderOp } = this;\n const targetDims = {\n width,\n height,\n };\n const targetShader = shader || this.defaultShader;\n assertTruthy(targetShader instanceof WebGlCoreShader);\n if (!this.reuseRenderOp(params)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.newRenderOp(targetShader, shaderProps, alpha, targetDims, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions);\n curRenderOp = this.curRenderOp;\n assertTruthy(curRenderOp);\n }\n const flipX = textureOptions?.flipX ?? false;\n const flipY = textureOptions?.flipY ?? false;\n let texCoordX1 = 0;\n let texCoordY1 = 0;\n let texCoordX2 = 1;\n let texCoordY2 = 1;\n if (texture instanceof SubTexture) {\n const { x: tx, y: ty, width: tw, height: th } = texture.props;\n const { width: parentW = 0, height: parentH = 0 } = texture.parentTexture\n .dimensions || { width: 0, height: 0 };\n texCoordX1 = tx / parentW;\n texCoordX2 = texCoordX1 + tw / parentW;\n texCoordY1 = ty / parentH;\n texCoordY2 = texCoordY1 + th / parentH;\n texture = texture.parentTexture;\n }\n // Flip texture coordinates if dictated by texture options\n if (flipX) {\n [texCoordX1, texCoordX2] = [texCoordX2, texCoordX1];\n }\n if (flipY) {\n [texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];\n }\n const { txManager } = this.stage;\n const ctxTexture = txManager.getCtxTexture(texture);\n assertTruthy(ctxTexture instanceof WebGlCoreCtxTexture);\n const textureIdx = this.addTexture(ctxTexture, bufferIdx);\n curRenderOp = this.curRenderOp;\n assertTruthy(curRenderOp);\n // render quad advanced\n if (tb !== 0 || tc !== 0) {\n // Upper-Left\n fQuadBuffer[bufferIdx++] = tx; // vertexX\n fQuadBuffer[bufferIdx++] = ty; // vertexY\n fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX\n fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY\n uiQuadBuffer[bufferIdx++] = colorTl; // color\n fQuadBuffer[bufferIdx++] = textureIdx; // texIndex\n // Upper-Right\n fQuadBuffer[bufferIdx++] = tx + width * ta;\n fQuadBuffer[bufferIdx++] = ty + width * tc;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY1;\n uiQuadBuffer[bufferIdx++] = colorTr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Left\n fQuadBuffer[bufferIdx++] = tx + height * tb;\n fQuadBuffer[bufferIdx++] = ty + height * td;\n fQuadBuffer[bufferIdx++] = texCoordX1;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBl;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Right\n fQuadBuffer[bufferIdx++] = tx + width * ta + height * tb;\n fQuadBuffer[bufferIdx++] = ty + width * tc + height * td;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n }\n else {\n // Calculate the right corner of the quad\n // multiplied by the scale\n const rightCornerX = tx + width * ta;\n const rightCornerY = ty + height * td;\n // Upper-Left\n fQuadBuffer[bufferIdx++] = tx; // vertexX\n fQuadBuffer[bufferIdx++] = ty; // vertexY\n fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX\n fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY\n uiQuadBuffer[bufferIdx++] = colorTl; // color\n fQuadBuffer[bufferIdx++] = textureIdx; // texIndex\n // Upper-Right\n fQuadBuffer[bufferIdx++] = rightCornerX;\n fQuadBuffer[bufferIdx++] = ty;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY1;\n uiQuadBuffer[bufferIdx++] = colorTr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Left\n fQuadBuffer[bufferIdx++] = tx;\n fQuadBuffer[bufferIdx++] = rightCornerY;\n fQuadBuffer[bufferIdx++] = texCoordX1;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBl;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Right\n fQuadBuffer[bufferIdx++] = rightCornerX;\n fQuadBuffer[bufferIdx++] = rightCornerY;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n }\n // Update the length of the current render op\n curRenderOp.length += WORDS_PER_QUAD;\n curRenderOp.numQuads++;\n this.curBufferIdx = bufferIdx;\n }\n /**\n * Replace the existing RenderOp with a new one that uses the specified Shader\n * and starts at the specified buffer index.\n *\n * @param shader\n * @param bufferIdx\n */\n newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions) {\n const curRenderOp = new WebGlCoreRenderOp(this.glw, this.options, this.quadBufferCollection, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, 0, // Z-Index is only used for explictly added Render Ops\n renderToTexture, parentHasRenderTexture, framebufferDimensions);\n this.curRenderOp = curRenderOp;\n this.renderOps.push(curRenderOp);\n }\n /**\n * Add a texture to the current RenderOp. If the texture cannot be added to the\n * current RenderOp, a new RenderOp will be created and the texture will be added\n * to that one.\n *\n * If the texture cannot be added to the new RenderOp, an error will be thrown.\n *\n * @param texture\n * @param bufferIdx\n * @param recursive\n * @returns Assigned Texture Index of the texture in the render op\n */\n addTexture(texture, bufferIdx, recursive) {\n const { curRenderOp } = this;\n assertTruthy(curRenderOp);\n const textureIdx = curRenderOp.addTexture(texture);\n // TODO: Refactor to be more DRY\n if (textureIdx === 0xffffffff) {\n if (recursive) {\n throw new Error('Unable to add texture to render op');\n }\n const { shader, shaderProps, dimensions, clippingRect, alpha } = curRenderOp;\n this.newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx);\n return this.addTexture(texture, bufferIdx, true);\n }\n return textureIdx;\n }\n /**\n * Test if the current Render operation can be reused for the specified parameters.\n * @param params\n * @returns\n */\n reuseRenderOp(params) {\n const { shader, shaderProps, parentHasRenderTexture, rtt, clippingRect } = params;\n const targetShader = shader || this.defaultShader;\n // Switching shader program will require a new render operation\n if (this.curRenderOp?.shader !== targetShader) {\n return false;\n }\n // Switching clipping rect will require a new render operation\n if (!compareRect(this.curRenderOp.clippingRect, clippingRect)) {\n return false;\n }\n // Force new render operation if rendering to texture\n // @todo: This needs to be improved, render operations could also be reused\n // for rendering to texture\n if (parentHasRenderTexture || rtt) {\n return false;\n }\n // Check if the shader can batch the shader properties\n if (this.curRenderOp.shader !== this.defaultShader &&\n (!shaderProps ||\n !this.curRenderOp.shader.canBatchShaderProps(this.curRenderOp.shaderProps, shaderProps))) {\n return false;\n }\n // Render operation can be reused\n return true;\n }\n /**\n * add RenderOp to the render pipeline\n */\n addRenderOp(renderable) {\n this.renderOps.push(renderable);\n this.curRenderOp = null;\n }\n /**\n * Render the current set of RenderOps to render to the specified surface.\n *\n * TODO: 'screen' is the only supported surface at the moment.\n *\n * @param surface\n */\n render(surface = 'screen') {\n const { glw, quadBuffer } = this;\n const arr = new Float32Array(quadBuffer, 0, this.curBufferIdx);\n const buffer = this.quadBufferCollection.getBuffer('a_position') ?? null;\n glw.arrayBufferData(buffer, arr, glw.STATIC_DRAW);\n const doLog = false; // idx++ % 100 === 0;\n if (doLog) {\n console.log('renderOps', this.renderOps.length);\n }\n this.renderOps.forEach((renderOp, i) => {\n if (doLog) {\n console.log('Quads per operation', renderOp.numQuads);\n }\n renderOp.draw();\n });\n }\n renderToTexture(node) {\n for (let i = 0; i < this.rttNodes.length; i++) {\n if (this.rttNodes[i] === node) {\n return;\n }\n }\n // @todo: Better bottom up rendering order\n this.rttNodes.unshift(node);\n }\n renderRTTNodes() {\n const { glw } = this;\n const { txManager } = this.stage;\n // Render all associated RTT nodes to their textures\n for (let i = 0; i < this.rttNodes.length; i++) {\n const node = this.rttNodes[i];\n // Skip nodes that don't have RTT updates\n if (!node || !node.hasRTTupdates) {\n continue;\n }\n // Set the active RTT node to the current node\n // So we can prevent rendering children of nested RTT nodes\n this.activeRttNode = node;\n assertTruthy(node.texture, 'RTT node missing texture');\n const ctxTexture = txManager.getCtxTexture(node.texture);\n assertTruthy(ctxTexture instanceof WebGlCoreCtxRenderTexture);\n this.renderToTextureActive = true;\n // Bind the the texture's framebuffer\n glw.bindFramebuffer(ctxTexture.framebuffer);\n glw.viewport(0, 0, ctxTexture.w, ctxTexture.h);\n glw.clear();\n // Render all associated quads to the texture\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (!child) {\n continue;\n }\n child.update(this.stage.deltaTime, {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n });\n this.stage.addQuads(child);\n child.hasRTTupdates = false;\n }\n // Render all associated quads to the texture\n this.render();\n // Reset render operations\n this.renderOps.length = 0;\n node.hasRTTupdates = false;\n }\n // Bind the default framebuffer\n glw.bindFramebuffer(null);\n glw.viewport(0, 0, this.glw.canvas.width, this.glw.canvas.height);\n this.renderToTextureActive = false;\n }\n}\n//# sourceMappingURL=WebGlCoreRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const SpecialCodepoints = {\n LINE_FEED: 0x0a,\n CARRIAGE_RETURN: 0x0d,\n SPACE: 0x20,\n TAB: 0x09,\n ZERO_WIDTH_SPACE: 0x200b,\n ZERO_WIDTH_NON_JOINER: 0x200c,\n ZERO_WIDTH_JOINER: 0x200d,\n LEFT_TO_RIGHT_MARK: 0x200e,\n RIGHT_TO_LEFT_MARK: 0x200f,\n LEFT_TO_RIGHT_EMBEDDING: 0x202a,\n RIGHT_TO_LEFT_EMBEDDING: 0x202b,\n POP_DIRECTIONAL_FORMATTING: 0x202c,\n LEFT_TO_RIGHT_OVERRIDE: 0x202d,\n RIGHT_TO_LEFT_OVERRIDE: 0x202e,\n LINE_SEPARATOR: 0x2028,\n PARAGRAPH_SEPARATOR: 0x2029,\n OBJECT_REPLACEMENT_CHARACTER: 0xfffc,\n REPLACEMENT_CHARACTER: 0xfffd,\n ZERO_WIDTH_NO_BREAK_SPACE: 0xfeff,\n LEFT_TO_RIGHT_ISOLATE: 0x2066,\n RIGHT_TO_LEFT_ISOLATE: 0x2067,\n FIRST_STRONG_ISOLATE: 0x2068,\n POP_DIRECTIONAL_ISOLATE: 0x2069,\n INHIBIT_SYMMETRIC_SWAPPING: 0x206a,\n ACTIVATE_SYMMETRIC_SWAPPING: 0x206b,\n INHIBIT_ARABIC_FORM_SHAPING: 0x206c,\n ACTIVATE_ARABIC_FORM_SHAPING: 0x206d,\n NATIONAL_DIGIT_SHAPES: 0x206e,\n NOMINAL_DIGIT_SHAPES: 0x206f,\n LEFT_TO_RIGHT_BOUNDARY: 0x200e,\n RIGHT_TO_LEFT_BOUNDARY: 0x200f,\n};\n//# sourceMappingURL=SpecialCodepoints.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class FontShaper {\n}\n//# sourceMappingURL=FontShaper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { SpecialCodepoints } from '../../../renderers/SdfTextRenderer/internal/SpecialCodepoints.js';\nimport { FontShaper, } from './FontShaper.js';\nexport class SdfFontShaper extends FontShaper {\n data;\n glyphMap;\n kernings;\n constructor(data, glyphMap) {\n super();\n this.data = data;\n this.glyphMap = glyphMap;\n const kernings = (this.kernings = {});\n data.kernings.forEach((kerning) => {\n const second = kerning.second;\n const firsts = (kernings[second] = kernings[second] || {});\n firsts[kerning.first] = kerning.amount;\n });\n this.kernings = kernings;\n }\n *shapeText(props, codepoints) {\n let codepointResult;\n let lastGlyphId = undefined;\n while ((codepointResult = codepoints.peek()) && !codepointResult.done) {\n const codepoint = codepointResult.value;\n const glyph = this.glyphMap.get(codepoint);\n codepoints.next();\n if (glyph !== undefined) {\n // We found a glyph for this codepoint\n // Yield the mapped glyph info\n /**\n * Kerning includes any possible additional letter spacing\n */\n const kerning = lastGlyphId !== undefined\n ? (this.kernings[glyph.id]?.[lastGlyphId] || 0) +\n props.letterSpacing\n : 0;\n lastGlyphId = glyph.id;\n yield {\n mapped: true,\n glyphId: glyph.id,\n codepoint,\n cluster: codepoints.lastIndex,\n xAdvance: glyph.xadvance + kerning,\n yAdvance: 0,\n xOffset: glyph.xoffset + kerning,\n yOffset: glyph.yoffset,\n xBearing: 0,\n yBearing: 0,\n width: glyph.width,\n height: glyph.height,\n };\n }\n else {\n // We didn't find a glyph for this codepoint\n // Yield the unmapped codepoint info\n // If this codepoint is a linebreak, we should reset the last glyph id\n // so that the next glyph will not be kerned with the last glyph of the\n // previous line.\n if (codepoint === SpecialCodepoints.LINE_FEED) {\n lastGlyphId = undefined;\n }\n yield {\n mapped: false,\n codepoint,\n cluster: codepoints.lastIndex,\n };\n }\n }\n }\n}\n//# sourceMappingURL=SdfFontShaper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// import type { Renderer } from '../../../Renderer';\nimport { assertTruthy } from '../../../../utils.js';\nimport { WebGlCoreRenderer } from '../../../renderers/webgl/WebGlCoreRenderer.js';\nimport { ImageTexture } from '../../../textures/ImageTexture.js';\nimport { TrFontFace } from '../TrFontFace.js';\nimport { SdfFontShaper } from './internal/SdfFontShaper.js';\nexport class SdfTrFontFace extends TrFontFace {\n type;\n texture;\n /**\n * Height of the tallest character in the font including the whitespace above it\n */\n maxCharHeight = 0;\n data;\n shaper;\n glyphMap = new Map();\n constructor(fontFamily, descriptors, type, stage, atlasUrl, atlasDataUrl) {\n super(fontFamily, descriptors);\n this.type = type;\n const renderer = stage.renderer;\n assertTruthy(renderer instanceof WebGlCoreRenderer, 'SDF Font Faces can only be used with the WebGL Renderer');\n this.texture = stage.txManager.loadTexture('ImageTexture', {\n src: atlasUrl,\n // IMPORTANT: The SDF shader requires the alpha channel to NOT be\n // premultiplied on the atlas texture. If it is premultiplied, the\n // rendering of SDF glyphs (especially single-channel SDF fonts) will\n // be very jagged.\n premultiplyAlpha: false,\n }, {\n preload: true,\n });\n this.texture.on('loaded', () => {\n this.checkLoaded();\n });\n // Set this.data to the fetched data from dataUrl\n fetch(atlasDataUrl)\n .then(async (response) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.data = await response.json();\n // Add all the glyphs to the glyph map\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let maxCharHeight = 0;\n this.data.chars.forEach((glyph) => {\n this.glyphMap.set(glyph.id, glyph);\n const charHeight = glyph.yoffset + glyph.height;\n if (charHeight > maxCharHeight) {\n maxCharHeight = charHeight;\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.maxCharHeight = maxCharHeight;\n // We know `data` is defined here, because we just set it\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.shaper = new SdfFontShaper(this.data, this.glyphMap);\n this.checkLoaded();\n })\n .catch(console.error);\n }\n getAtlasEntry(glyphId) {\n const glyph = this.glyphMap.get(glyphId);\n if (glyph === undefined) {\n throw new Error(`Glyph ${glyphId} not found in font ${this.fontFamily}`);\n }\n return {\n x: glyph.x,\n y: glyph.y,\n width: glyph.width,\n height: glyph.height,\n };\n }\n checkLoaded() {\n if (this.loaded)\n return;\n if (this.texture.state === 'loaded' && this.data) {\n this.loaded = true;\n this.emit('loaded');\n }\n }\n}\n//# sourceMappingURL=SdfTrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Base class for Core extensions.\n *\n * @remarks\n * Core extensions are used to extend the Core Renderer with custom code such as\n * custom fonts, custom shaders, custom textures, custom animation functions,\n * and more.\n */\nexport class CoreExtension {\n}\n//# sourceMappingURL=CoreExtension.js.map"],"names":["createWebGLContext","canvas","contextSpy","config","gl","target","prop","value","assertTruthy","condition","message","isProductionEnvironment","mergeColorProgress","rgba1","rgba2","p","r1","g1","b1","a1","r2","g2","b2","a2","r","g","b","a","mergeColorAlpha","rgba","alpha","mergeColorAlphaPremultiplied","flipEndianess","newAlpha","hasOwn","obj","EventEmitter","__publicField","event","listener","listeners","index","onceListener","data","CoreShader","props","createShader","glw","type","source","shader","createProgram","vertexShader","fragmentShader","program","isWebGl2","WebGlCoreShader","options","renderer","webGl2","requiredExtensions","glVersion","extensionName","shaderSources","textureUnits","vertexSource","fragmentSource","vao","attributeName","location","buffer","uniform","attribute","loc","propsA","propsB","renderOp","parentHasRenderTexture","renderToTexture","width","height","dimensions","name","resolvedBuffer","resolvedInfo","textures","Texture","txManager","owner","renderable","state","args","loadedArgs","failedArgs","getNormalizedRgbaComponents","getNormalizedAlphaComponent","getRgbaString","color","createBound","x1","y1","x2","y2","out","intersectBound","intersection","boundsOverlap","convertBoundToRect","bound","intersectRect","x","y","copyRect","compareRect","boundInsideBound","bound1","bound2","isBoundPositive","TrFontFace","fontFamily","descriptors","CoreContextTexture","memManager","textureSource","CoreRenderer","stage","CoreRenderOp","WebGlCoreRenderOp","buffers","shaderProps","clippingRect","bufferIdx","zIndex","framebufferDimensions","texture","maxTextures","existingIdx","t","newIdx","shManager","quadIdx","pixelRatio","canvasHeight","clipX","clipWidth","clipHeight","clipY","getWebGlParameters","params","key","getWebGlExtensions","extensions","createIndexBuffer","size","maxQuads","indices","j","isHTMLImageElement","memize","fn","head","tail","memoized","node","len","i","searchCache","isPowerOfTwo","getTimingBezier","c","d","xc","xb","xa","yc","yb","ya","time","cbx","cbxd","dx","it","minT","maxT","getTimingFunction","memo","str","s","parts","TRANSPARENT_TEXTURE_DATA","WebGlCoreCtxTexture","err","_a","_b","textureData","mipmaps","glInternalFormat","view","nativeTexture","_ColorTexture","pixelData32","pixelData8","resolvedProps","ColorTexture","_SubTexture","error","parentTx","SubTexture","WebGlCoreCtxSubTexture","BufferCollection","item","WebGlContextWrapper","maxTextureUnits","_","scissorBox","textureUnit","activeTextureUnit","texture2dUnits","pname","param","texture2dParams","activeTexture","textureParams","level","internalFormat","widthOrFormat","heightOrType","borderOrSource","format","pixels","internalformat","border","red","green","blue","enable","scissorEnabled","scissorX","scissorY","scissorWidth","scissorHeight","blend","blendEnabled","src","dst","blendSrcRgb","blendDstRgb","blendSrcAlpha","blendDstAlpha","framebuffer","attachment","usage","boundArrayBuffer","boundElementArrayBuffer","normalized","stride","offset","curProgram","programUniforms","uniforms","uniformArgs","compareArrays","mode","count","vertexArray","v","_RenderTexture","RenderTexture","WebGlCoreCtxRenderTexture","WORDS_PER_QUAD","WebGlCoreRenderer","clearColor","bufferMemory","quadBuffer","fQuadBuffer","uiQuadBuffer","colorTl","colorTr","colorBl","colorBr","textureOptions","tx","ty","ta","tb","tc","td","curRenderOp","targetDims","targetShader","flipX","flipY","texCoordX1","texCoordY1","texCoordX2","texCoordY2","tw","th","parentW","parentH","ctxTexture","textureIdx","rightCornerX","rightCornerY","recursive","rtt","surface","arr","child","SpecialCodepoints","FontShaper","SdfFontShaper","glyphMap","kernings","kerning","second","firsts","codepoints","codepointResult","lastGlyphId","codepoint","glyph","SdfTrFontFace","atlasUrl","atlasDataUrl","response","maxCharHeight","charHeight","glyphId","CoreExtension"],"mappings":"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","x_google_ignoreList":[14]} \ No newline at end of file +{"version":3,"file":"CoreExtension-BeuvW_LH.js","sources":["../../../../../renderer/dist/src/utils.js","../../../../../renderer/dist/src/common/EventEmitter.js","../../../../../renderer/dist/src/core/renderers/CoreShader.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/ShaderUtils.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/WebGlUtils.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreShader.js","../../../../../renderer/dist/src/core/textures/Texture.js","../../../../../renderer/dist/src/core/lib/utils.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/TrFontFace.js","../../../../../renderer/dist/src/core/renderers/CoreContextTexture.js","../../../../../renderer/dist/src/core/renderers/CoreRenderer.js","../../../../../renderer/dist/src/core/renderers/CoreRenderOp.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/RendererUtils.js","../../../../../renderer/node_modules/.pnpm/memize@2.1.0/node_modules/memize/dist/index.js","../../../../../renderer/dist/src/core/utils.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js","../../../../../renderer/dist/src/core/textures/ColorTexture.js","../../../../../renderer/dist/src/core/textures/SubTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/BufferCollection.js","../../../../../renderer/dist/src/core/lib/WebGlContextWrapper.js","../../../../../renderer/dist/src/core/textures/RenderTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreRenderer.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js","../../../../../renderer/dist/src/core/CoreExtension.js"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function createWebGLContext(canvas, contextSpy) {\n const config = {\n alpha: true,\n antialias: false,\n depth: false,\n stencil: true,\n desynchronized: false,\n // Disabled because it prevents Visual Regression Tests from working\n // failIfMajorPerformanceCaveat: true,\n powerPreference: 'high-performance',\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n };\n const gl = \n // TODO: Remove this assertion once this issue is fixed in TypeScript\n // https://github.com/microsoft/TypeScript/issues/53614\n (canvas.getContext('webgl', config) ||\n canvas.getContext('experimental-webgl', config));\n if (!gl) {\n throw new Error('Unable to create WebGL context');\n }\n if (contextSpy) {\n // Proxy the GL context to log all GL calls\n return new Proxy(gl, {\n get(target, prop) {\n const value = target[prop];\n if (typeof value === 'function') {\n contextSpy.increment(String(prop));\n return value.bind(target);\n }\n return value;\n },\n });\n }\n return gl;\n}\n/**\n * Asserts a condition is truthy, otherwise throws an error\n *\n * @remarks\n * Useful at the top of functions to ensure certain conditions, arguments and\n * properties are set/met before continuing. When using this function,\n * TypeScript will narrow away falsy types from the condition.\n *\n * @param condition\n * @param message\n * @returns\n */\nexport function assertTruthy(condition, message) {\n if (isProductionEnvironment())\n return;\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n/**\n * Merges two colors based on a given progress value.\n *\n * This function takes two colors (c1 and c2) represented as 32-bit integers\n * in RGBA format and blends them based on the provided progress value (p).\n * The result is a new color that is a weighted combination of the input colors,\n * where the weight is determined by the progress value.\n *\n * @param {number} c1 - The first color in RGBA format (32-bit integer).\n * @param {number} c2 - The second color in RGBA format (32-bit integer).\n * @param {number} p - The progress value between 0 and 1.\n * @returns {number} The merged color as a 32-bit integer in RGBA format.\n */\nexport function mergeColorProgress(rgba1, rgba2, p) {\n const r1 = Math.trunc(rgba1 >>> 24);\n const g1 = Math.trunc((rgba1 >>> 16) & 0xff);\n const b1 = Math.trunc((rgba1 >>> 8) & 0xff);\n const a1 = Math.trunc(rgba1 & 0xff);\n const r2 = Math.trunc(rgba2 >>> 24);\n const g2 = Math.trunc((rgba2 >>> 16) & 0xff);\n const b2 = Math.trunc((rgba2 >>> 8) & 0xff);\n const a2 = Math.trunc(rgba2 & 0xff);\n const r = Math.round(r2 * p + r1 * (1 - p));\n const g = Math.round(g2 * p + g1 * (1 - p));\n const b = Math.round(b2 * p + b1 * (1 - p));\n const a = Math.round(a2 * p + a1 * (1 - p));\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Given an RGBA encoded number, returns back the RGBA number with it's alpha\n * component multiplied by the passed `alpha` parameter.\n *\n * @internalRemarks\n * This method does NOT premultiply the alpha into the color channels. If that\n * is required (for internal use only) use {@link mergeColorAlphaPremultiplied}\n * instead.\n *\n * @param rgba RGBA encoded number\n * @param alpha Normalized alpha value (Range: 0.0 - 1.0)\n * @returns\n */\nexport function mergeColorAlpha(rgba, alpha) {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = Math.trunc((rgba & 0xff) * alpha);\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Given an RGBA encoded number, returns back the RGBA number with it's alpha\n * component multiplied by the passed `alpha` parameter. Before returning, the\n * final alpha value is multiplied into the color channels.\n *\n * @remarks\n * If `flipEndianess` is set to true, the function will returned an ABGR encoded number\n * which is useful when the color value needs to be passed into a shader attribute.\n *\n * NOTE: This method returns a PREMULTIPLIED alpha color which is generally only useful\n * in the context of the internal rendering process. Use {@link mergeColorAlpha} if you\n * need to blend an alpha value into a color in the context of the Renderer's\n * main API.\n *\n * @internalRemarks\n * Do not expose this method in the main API because Renderer users should instead use\n * {@link mergeColorAlpha} to manipulate the alpha value of a color.\n *\n * @internal\n * @param rgba RGBA encoded number\n * @param alpha Normalized alpha value (Range: 0.0 - 1.0)\n * @param flipEndianess Flip the endianess. RGBA becomes encoded as ABGR (for inserting colors into shader attributes)\n * @returns\n */\nexport function mergeColorAlphaPremultiplied(rgba, alpha, flipEndianess = false) {\n const newAlpha = ((rgba & 0xff) / 255) * alpha;\n const r = Math.trunc((rgba >>> 24) * newAlpha);\n const g = Math.trunc(((rgba >>> 16) & 0xff) * newAlpha);\n const b = Math.trunc(((rgba >>> 8) & 0xff) * newAlpha);\n const a = Math.trunc(newAlpha * 255);\n if (flipEndianess) {\n return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0;\n }\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Returns true if the given object has the given \"own\" property.\n *\n * @param obj\n * @param prop\n * @returns\n */\nexport function hasOwn(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n/**\n * Converts degrees to radians\n *\n * @param degrees\n * @returns\n */\nexport function deg2Rad(degrees) {\n return (degrees * Math.PI) / 180;\n}\n/**\n * Returns image aspect ratio\n *\n * @param width\n * @param height\n * @returns\n */\nexport function getImageAspectRatio(width, height) {\n return width / height;\n}\n/**\n * Checks import.meta if env is production\n *\n * @returns\n */\nexport function isProductionEnvironment() {\n return import.meta.env && import.meta.env.PROD;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * EventEmitter base class\n */\nexport class EventEmitter {\n eventListeners = {};\n on(event, listener) {\n let listeners = this.eventListeners[event];\n if (!listeners) {\n listeners = [];\n }\n listeners.push(listener);\n this.eventListeners[event] = listeners;\n }\n off(event, listener) {\n const listeners = this.eventListeners[event];\n if (!listeners) {\n return;\n }\n if (!listener) {\n delete this.eventListeners[event];\n return;\n }\n const index = listeners.indexOf(listener);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n }\n once(event, listener) {\n const onceListener = (target, data) => {\n this.off(event, onceListener);\n listener(target, data);\n };\n this.on(event, onceListener);\n }\n emit(event, data) {\n const listeners = this.eventListeners[event];\n if (!listeners) {\n return;\n }\n [...listeners].forEach((listener) => {\n listener(this, data);\n });\n }\n removeAllListeners() {\n this.eventListeners = {};\n }\n}\n//# sourceMappingURL=EventEmitter.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreShader {\n // abstract draw(): void;\n static makeCacheKey(props) {\n return false;\n }\n static resolveDefaults(props) {\n return {};\n }\n}\n//# sourceMappingURL=CoreShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion Types\nexport function createShader(glw, type, source) {\n const shader = glw.createShader(type);\n if (!shader) {\n throw new Error();\n }\n glw.shaderSource(shader, source);\n glw.compileShader(shader);\n const success = glw.getShaderParameter(shader, glw.COMPILE_STATUS);\n if (success) {\n return shader;\n }\n console.log(glw.getShaderInfoLog(shader));\n glw.deleteShader(shader);\n}\nexport function createProgram(glw, vertexShader, fragmentShader) {\n const program = glw.createProgram();\n if (!program) {\n throw new Error();\n }\n glw.attachShader(program, vertexShader);\n glw.attachShader(program, fragmentShader);\n glw.linkProgram(program);\n const success = glw.getProgramParameter(program, glw.LINK_STATUS);\n if (success) {\n return program;\n }\n console.log(glw.getProgramInfoLog(program));\n glw.deleteProgram(program);\n return undefined;\n}\n//# sourceMappingURL=ShaderUtils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Generic WebGL Utility Functions\n *\n * @remarks\n * Nothing here should be coupled to Renderer logic / types.\n *\n * @param gl\n * @returns\n */\nexport function isWebGl2(gl) {\n return (self.WebGL2RenderingContext && gl instanceof self.WebGL2RenderingContext);\n}\n//# sourceMappingURL=WebGlUtils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, hasOwn } from '../../../utils.js';\nimport { CoreShader } from '../CoreShader.js';\nimport { createProgram, createShader, } from './internal/ShaderUtils.js';\nimport { isWebGl2 } from './internal/WebGlUtils.js';\nexport class WebGlCoreShader extends CoreShader {\n boundBufferCollection = null;\n buffersBound = false;\n program;\n /**\n * Vertex Array Object\n *\n * @remarks\n * Used by WebGL2 Only\n */\n vao;\n renderer;\n glw;\n attributeBuffers;\n attributeLocations;\n attributeNames;\n uniformLocations;\n uniformTypes;\n supportsIndexedTextures;\n constructor(options) {\n super();\n const renderer = (this.renderer = options.renderer);\n const glw = (this.glw = this.renderer.glw);\n this.supportsIndexedTextures = options.supportsIndexedTextures || false;\n // Check that extensions are supported\n const webGl2 = glw.isWebGl2();\n const requiredExtensions = (webGl2 && options.webgl2Extensions) ||\n (!webGl2 && options.webgl1Extensions) ||\n [];\n const glVersion = webGl2 ? '2.0' : '1.0';\n requiredExtensions.forEach((extensionName) => {\n if (!glw.getExtension(extensionName)) {\n throw new Error(`Shader \"${this.constructor.name}\" requires extension \"${extensionName}\" for WebGL ${glVersion} but wasn't found`);\n }\n });\n // Gather shader sources\n // - If WebGL 2 and special WebGL 2 sources are provided, we copy those sources and delete\n // the extra copy of them to save memory.\n // TODO: This could be further made optimal by just caching the compiled shaders and completely deleting\n // the source code\n const shaderSources = options.shaderSources ||\n this.constructor.shaderSources;\n if (!shaderSources) {\n throw new Error(`Shader \"${this.constructor.name}\" is missing shaderSources.`);\n }\n else if (webGl2 && shaderSources?.webGl2) {\n shaderSources.fragment = shaderSources.webGl2.fragment;\n shaderSources.vertex = shaderSources.webGl2.vertex;\n delete shaderSources.webGl2;\n }\n const textureUnits = renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n const vertexSource = shaderSources.vertex instanceof Function\n ? shaderSources.vertex(textureUnits)\n : shaderSources.vertex;\n const fragmentSource = shaderSources.fragment instanceof Function\n ? shaderSources.fragment(textureUnits)\n : shaderSources.fragment;\n const vertexShader = createShader(glw, glw.VERTEX_SHADER, vertexSource);\n const fragmentShader = createShader(glw, glw.FRAGMENT_SHADER, fragmentSource);\n if (!vertexShader || !fragmentShader) {\n throw new Error();\n }\n const program = createProgram(glw, vertexShader, fragmentShader);\n if (!program) {\n throw new Error();\n }\n this.program = program;\n if (webGl2) {\n const vao = glw.createVertexArray();\n if (!vao) {\n throw new Error();\n }\n this.vao = vao;\n glw.bindVertexArray(this.vao);\n }\n this.attributeLocations = {};\n this.attributeBuffers = {};\n this.attributeNames = [];\n [...options.attributes].forEach((attributeName) => {\n const location = glw.getAttribLocation(this.program, attributeName);\n if (location < 0) {\n throw new Error(`${this.constructor.name}: Vertex shader must have an attribute \"${attributeName}\"!`);\n }\n const buffer = glw.createBuffer();\n if (!buffer) {\n throw new Error(`${this.constructor.name}: Could not create buffer for attribute \"${attributeName}\"`);\n }\n this.attributeLocations[attributeName] = location;\n this.attributeBuffers[attributeName] = buffer;\n this.attributeNames.push(attributeName);\n });\n this.uniformLocations = {};\n this.uniformTypes = {};\n options.uniforms.forEach((uniform) => {\n const location = glw.getUniformLocation(this.program, uniform.name);\n this.uniformTypes[uniform.name] = uniform.uniform;\n if (!location) {\n console.warn(`Shader \"${this.constructor.name}\" could not get uniform location for \"${uniform.name}\"`);\n return;\n }\n this.uniformLocations[uniform.name] = location;\n });\n }\n bindBufferAttribute(location, buffer, attribute) {\n const { glw } = this;\n glw.enableVertexAttribArray(location);\n glw.vertexAttribPointer(buffer, location, attribute.size, attribute.type, attribute.normalized, attribute.stride, attribute.offset);\n }\n disableAttribute(location) {\n this.glw.disableVertexAttribArray(location);\n }\n disableAttributes() {\n for (const loc in this.attributeLocations) {\n this.disableAttribute(this.attributeLocations[loc]);\n }\n this.boundBufferCollection = null;\n }\n /**\n * Given two sets of Shader props destined for this Shader, determine if they can be batched together\n * to reduce the number of draw calls.\n *\n * @remarks\n * This is used by the {@link WebGlCoreRenderer} to determine if it can batch multiple consecutive draw\n * calls into a single draw call.\n *\n * By default, this returns false (meaning no batching is allowed), but can be\n * overridden by child classes to provide more efficient batching.\n *\n * @param propsA\n * @param propsB\n * @returns\n */\n canBatchShaderProps(propsA, propsB) {\n return false;\n }\n bindRenderOp(renderOp, props) {\n this.bindBufferCollection(renderOp.buffers);\n if (renderOp.textures.length > 0) {\n this.bindTextures(renderOp.textures);\n }\n const { glw, parentHasRenderTexture, renderToTexture } = renderOp;\n // Skip if the parent and current operation both have render textures\n if (renderToTexture && parentHasRenderTexture) {\n return;\n }\n // Bind render texture framebuffer dimensions as resolution\n // if the parent has a render texture\n if (parentHasRenderTexture) {\n const { width, height } = renderOp.framebufferDimensions || {};\n // Force pixel ratio to 1.0 for render textures since they are always 1:1\n // the final render texture will be rendered to the screen with the correct pixel ratio\n this.setUniform('u_pixelRatio', 1.0);\n // Set resolution to the framebuffer dimensions\n this.setUniform('u_resolution', new Float32Array([width ?? 0, height ?? 0]));\n }\n else {\n this.setUniform('u_pixelRatio', renderOp.options.pixelRatio);\n this.setUniform('u_resolution', new Float32Array([glw.canvas.width, glw.canvas.height]));\n }\n if (props) {\n // Bind optional automatic uniforms\n // These are only bound if their keys are present in the props.\n if (hasOwn(props, '$dimensions')) {\n let dimensions = props.$dimensions;\n if (!dimensions) {\n dimensions = renderOp.dimensions;\n }\n this.setUniform('u_dimensions', [dimensions.width, dimensions.height]);\n }\n if (hasOwn(props, '$alpha')) {\n let alpha = props.$alpha;\n if (!alpha) {\n alpha = renderOp.alpha;\n }\n this.setUniform('u_alpha', alpha);\n }\n this.bindProps(props);\n }\n }\n setUniform(name, ...value) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-unsafe-argument\n this.glw.setUniform(this.uniformTypes[name], this.uniformLocations[name], ...value);\n }\n bindBufferCollection(buffer) {\n if (this.boundBufferCollection === buffer) {\n return;\n }\n for (const attributeName in this.attributeLocations) {\n const resolvedBuffer = buffer.getBuffer(attributeName);\n const resolvedInfo = buffer.getAttributeInfo(attributeName);\n assertTruthy(resolvedBuffer, `Buffer for \"${attributeName}\" not found`);\n assertTruthy(resolvedInfo);\n this.bindBufferAttribute(this.attributeLocations[attributeName], resolvedBuffer, resolvedInfo);\n }\n this.boundBufferCollection = buffer;\n }\n bindProps(props) {\n // Implement in child class\n }\n bindTextures(textures) {\n // no defaults\n }\n attach() {\n this.glw.useProgram(this.program);\n this.glw.useProgram(this.program);\n if (this.glw.isWebGl2() && this.vao) {\n this.glw.bindVertexArray(this.vao);\n }\n }\n detach() {\n this.disableAttributes();\n }\n static shaderSources;\n}\n//# sourceMappingURL=WebGlCoreShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../common/EventEmitter.js';\n/**\n * Represents a source of texture data for a CoreContextTexture.\n *\n * @remarks\n * Texture sources are used to populate a CoreContextTexture when that texture\n * is loaded. Texture data retrieved by the CoreContextTexture by the\n * `getTextureData` method. It's the responsibility of the concerete `Texture`\n * subclass to implement this method appropriately.\n */\nexport class Texture extends EventEmitter {\n txManager;\n /**\n * The dimensions of the texture\n *\n * @remarks\n * Until the texture data is loaded for the first time the value will be\n * `null`.\n */\n dimensions = null;\n error = null;\n state = 'freed';\n renderableOwners = new Set();\n constructor(txManager) {\n super();\n this.txManager = txManager;\n }\n /**\n * Add/remove an owner to/from the Texture based on its renderability.\n *\n * @remarks\n * Any object can own a texture, be it a CoreNode or even the state object\n * from a Text Renderer.\n *\n * When the reference to the texture that an owner object holds is replaced\n * or cleared it must call this with `renderable=false` to release the owner\n * association.\n *\n * @param owner\n * @param renderable\n */\n setRenderableOwner(owner, renderable) {\n if (renderable) {\n this.renderableOwners.add(owner);\n }\n else {\n this.renderableOwners.delete(owner);\n }\n }\n /**\n * Returns true if the texture is assigned to any Nodes that are renderable.\n */\n get renderable() {\n return this.renderableOwners.size > 0;\n }\n /**\n * Set the state of the texture\n *\n * @remark\n * Intended for internal-use only but declared public so that it can be set\n * by it's associated {@link CoreContextTexture}\n *\n * @param state\n * @param args\n */\n setState(state, ...args) {\n if (this.state !== state) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.state = state;\n if (state === 'loaded') {\n const loadedArgs = args;\n this.dimensions = loadedArgs[0];\n }\n else if (state === 'failed') {\n const failedArgs = args;\n this.error = failedArgs[0];\n }\n this.emit(state, ...args);\n }\n }\n /**\n * Make a cache key for this texture.\n *\n * @remarks\n * Each concrete `Texture` subclass must implement this method to provide an\n * appropriate cache key for the texture type including the texture's\n * properties that uniquely identify a copy of the texture. If the texture\n * type does not support caching, then this method should return `false`.\n *\n * @param props\n * @returns\n * A cache key for this texture or `false` if the texture type does not\n * support caching.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static makeCacheKey(props) {\n return false;\n }\n /**\n * Resolve the default values for the texture's properties.\n *\n * @remarks\n * Each concrete `Texture` subclass must implement this method to provide\n * default values for the texture's optional properties.\n *\n * @param props\n * @returns\n * The default values for the texture's properties.\n */\n static resolveDefaults(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n props) {\n return {};\n }\n}\n//# sourceMappingURL=Texture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const getNormalizedRgbaComponents = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n return [r / 255, g / 255, b / 255, a / 255];\n};\nexport const getRgbaComponents = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n return [r, g, b, a];\n};\nexport const norm = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n const rgbaArr = [r / 255, g / 255, b / 255, a / 255];\n rgbaArr[0] = Math.max(0, Math.min(255, rgbaArr[0]));\n rgbaArr[1] = Math.max(0, Math.min(255, rgbaArr[1]));\n rgbaArr[2] = Math.max(0, Math.min(255, rgbaArr[2]));\n rgbaArr[3] = Math.max(0, Math.min(255, rgbaArr[3]));\n let v = ((rgbaArr[3] | 0) << 24) +\n ((rgbaArr[0] | 0) << 16) +\n ((rgbaArr[1] | 0) << 8) +\n (rgbaArr[2] | 0);\n if (v < 0) {\n v = 0xffffffff + v + 1;\n }\n return v;\n};\nexport function getNormalizedAlphaComponent(rgba) {\n return (rgba & 0xff) / 255.0;\n}\n/**\n * Get a CSS color string from a RGBA color\n *\n * @param color\n * @returns\n */\nexport function getRgbaString(color) {\n const r = Math.floor(color[0] * 255.0);\n const g = Math.floor(color[1] * 255.0);\n const b = Math.floor(color[2] * 255.0);\n const a = Math.floor(color[3] * 255.0);\n return `rgba(${r},${g},${b},${a.toFixed(4)})`;\n}\nexport function createBound(x1, y1, x2, y2, out) {\n if (out) {\n out.x1 = x1;\n out.y1 = y1;\n out.x2 = x2;\n out.y2 = y2;\n return out;\n }\n return {\n x1,\n y1,\n x2,\n y2,\n };\n}\nexport function intersectBound(a, b, out) {\n const intersection = createBound(Math.max(a.x1, b.x1), Math.max(a.y1, b.y1), Math.min(a.x2, b.x2), Math.min(a.y2, b.y2), out);\n if (intersection.x1 < intersection.x2 && intersection.y1 < intersection.y2) {\n return intersection;\n }\n return createBound(0, 0, 0, 0, intersection);\n}\nexport function boundsOverlap(a, b) {\n return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1;\n}\nexport function convertBoundToRect(bound, out) {\n if (out) {\n out.x = bound.x1;\n out.y = bound.y1;\n out.width = bound.x2 - bound.x1;\n out.height = bound.y2 - bound.y1;\n return out;\n }\n return {\n x: bound.x1,\n y: bound.y1,\n width: bound.x2 - bound.x1,\n height: bound.y2 - bound.y1,\n };\n}\nexport function intersectRect(a, b, out) {\n const x = Math.max(a.x, b.x);\n const y = Math.max(a.y, b.y);\n const width = Math.min(a.x + a.width, b.x + b.width) - x;\n const height = Math.min(a.y + a.height, b.y + b.height) - y;\n if (width > 0 && height > 0) {\n if (out) {\n out.x = x;\n out.y = y;\n out.width = width;\n out.height = height;\n return out;\n }\n return {\n x,\n y,\n width,\n height,\n };\n }\n if (out) {\n out.x = 0;\n out.y = 0;\n out.width = 0;\n out.height = 0;\n return out;\n }\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n}\nexport function copyRect(a, out) {\n if (out) {\n out.x = a.x;\n out.y = a.y;\n out.width = a.width;\n out.height = a.height;\n return out;\n }\n return {\n x: a.x,\n y: a.y,\n width: a.width,\n height: a.height,\n };\n}\nexport function compareRect(a, b) {\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return false;\n }\n return (a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height);\n}\nexport function boundInsideBound(bound1, bound2) {\n return (bound1.x1 <= bound2.x2 &&\n bound1.y1 <= bound2.y2 &&\n bound1.x2 >= bound2.x1 &&\n bound1.y2 >= bound2.y1);\n}\nexport function isBoundPositive(bound) {\n return bound.x1 < bound.x2 && bound.y1 < bound.y2;\n}\nexport function isRectPositive(rect) {\n return rect.width > 0 && rect.height > 0;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../../common/EventEmitter.js';\nexport class TrFontFace extends EventEmitter {\n fontFamily;\n descriptors;\n loaded = false;\n constructor(fontFamily, descriptors) {\n super();\n this.fontFamily = fontFamily;\n this.descriptors = {\n style: 'normal',\n weight: 'normal',\n stretch: 'normal',\n ...descriptors,\n };\n }\n /**\n * Convert a TrFontFaceDescriptors to a FontFaceDescriptors which differ slightly\n *\n * @param descriptors\n * @returns\n */\n static convertToCssFontFaceDescriptors(descriptors) {\n return {\n style: descriptors.style,\n weight: typeof descriptors.weight === 'number'\n ? `${descriptors.weight}`\n : descriptors.weight,\n stretch: descriptors.stretch,\n unicodeRange: descriptors.unicodeRange,\n variant: descriptors.variant,\n featureSettings: descriptors.featureSettings,\n display: descriptors.display,\n };\n }\n}\n//# sourceMappingURL=TrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreContextTexture {\n memManager;\n textureSource;\n constructor(memManager, textureSource) {\n this.memManager = memManager;\n this.textureSource = textureSource;\n }\n}\n//# sourceMappingURL=CoreContextTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreContextTexture } from './CoreContextTexture.js';\nexport class CoreRenderer {\n stage;\n constructor(stage) {\n this.stage = stage;\n }\n}\n//# sourceMappingURL=CoreRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreRenderOp {\n}\n//# sourceMappingURL=CoreRenderOp.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreRenderOp } from '../CoreRenderOp.js';\nimport { WebGlCoreShader } from './WebGlCoreShader.js';\nconst MAX_TEXTURES = 8; // TODO: get from gl\n/**\n * Can render multiple quads with multiple textures (up to vertex shader texture limit)\n *\n */\nexport class WebGlCoreRenderOp extends CoreRenderOp {\n glw;\n options;\n buffers;\n shader;\n shaderProps;\n alpha;\n clippingRect;\n dimensions;\n bufferIdx;\n zIndex;\n renderToTexture;\n parentHasRenderTexture;\n framebufferDimensions;\n length = 0;\n numQuads = 0;\n textures = [];\n maxTextures;\n constructor(glw, options, buffers, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, zIndex, renderToTexture, parentHasRenderTexture, framebufferDimensions) {\n super();\n this.glw = glw;\n this.options = options;\n this.buffers = buffers;\n this.shader = shader;\n this.shaderProps = shaderProps;\n this.alpha = alpha;\n this.clippingRect = clippingRect;\n this.dimensions = dimensions;\n this.bufferIdx = bufferIdx;\n this.zIndex = zIndex;\n this.renderToTexture = renderToTexture;\n this.parentHasRenderTexture = parentHasRenderTexture;\n this.framebufferDimensions = framebufferDimensions;\n this.maxTextures = shader.supportsIndexedTextures\n ? glw.getParameter(glw.MAX_VERTEX_TEXTURE_IMAGE_UNITS)\n : 1;\n }\n addTexture(texture) {\n const { textures, maxTextures } = this;\n const existingIdx = textures.findIndex((t) => t === texture);\n if (existingIdx !== -1) {\n return existingIdx;\n }\n const newIdx = textures.length;\n if (newIdx >= maxTextures) {\n return 0xffffffff;\n }\n this.textures.push(texture);\n return newIdx;\n }\n draw() {\n const { glw, shader, shaderProps, options } = this;\n const { shManager } = options;\n shManager.useShader(shader);\n shader.bindRenderOp(this, shaderProps);\n // TODO: Reduce calculations required\n const quadIdx = (this.bufferIdx / 24) * 6 * 2;\n // Clipping\n if (this.clippingRect.valid) {\n const { x, y, width, height } = this.clippingRect;\n const pixelRatio = options.pixelRatio;\n const canvasHeight = options.canvas.height;\n const clipX = Math.round(x * pixelRatio);\n const clipWidth = Math.round(width * pixelRatio);\n const clipHeight = Math.round(height * pixelRatio);\n const clipY = Math.round(canvasHeight - clipHeight - y * pixelRatio);\n glw.setScissorTest(true);\n glw.scissor(clipX, clipY, clipWidth, clipHeight);\n }\n else {\n glw.setScissorTest(false);\n }\n glw.drawElements(glw.TRIANGLES, 6 * this.numQuads, glw.UNSIGNED_SHORT, quadIdx);\n }\n}\n//# sourceMappingURL=WebGlCoreRenderOp.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Get device specific webgl parameters\n * @param glw\n */\nexport function getWebGlParameters(glw) {\n const params = {\n MAX_RENDERBUFFER_SIZE: 0,\n MAX_TEXTURE_SIZE: 0,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n MAX_VIEWPORT_DIMS: 0,\n MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0,\n MAX_TEXTURE_IMAGE_UNITS: 0,\n MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0,\n MAX_VERTEX_ATTRIBS: 0,\n MAX_VARYING_VECTORS: 0,\n MAX_VERTEX_UNIFORM_VECTORS: 0,\n MAX_FRAGMENT_UNIFORM_VECTORS: 0,\n };\n // Map over all parameters and get them\n const keys = Object.keys(params);\n keys.forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params[key] = glw.getParameter(glw[key]);\n });\n return params;\n}\n/**\n * Get device webgl extensions\n * @param glw\n */\nexport function getWebGlExtensions(glw) {\n const extensions = {\n ANGLE_instanced_arrays: null,\n WEBGL_compressed_texture_s3tc: null,\n WEBGL_compressed_texture_astc: null,\n WEBGL_compressed_texture_etc: null,\n WEBGL_compressed_texture_etc1: null,\n WEBGL_compressed_texture_pvrtc: null,\n WEBKIT_WEBGL_compressed_texture_pvrtc: null,\n WEBGL_compressed_texture_s3tc_srgb: null,\n OES_vertex_array_object: null,\n };\n // Map over all extensions and get them\n const keys = Object.keys(extensions);\n keys.forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n extensions[key] = glw.getExtension(key);\n });\n return extensions;\n}\n/**\n * Allocate big memory chunk that we\n * can re-use to draw quads\n *\n * @param glw\n * @param size\n */\nexport function createIndexBuffer(glw, size) {\n const maxQuads = ~~(size / 80);\n const indices = new Uint16Array(maxQuads * 6);\n for (let i = 0, j = 0; i < maxQuads; i += 6, j += 4) {\n indices[i] = j;\n indices[i + 1] = j + 1;\n indices[i + 2] = j + 2;\n indices[i + 3] = j + 2;\n indices[i + 4] = j + 1;\n indices[i + 5] = j + 3;\n }\n const buffer = glw.createBuffer();\n glw.elementArrayBufferData(buffer, indices, glw.STATIC_DRAW);\n}\n/**\n * Checks if an object is of type HTMLImageElement.\n * This is used because we cant check for HTMLImageElement directly when the\n * renderer is running in a seperate web worker context.\n *\n * @param obj\n * @returns\n */\nexport function isHTMLImageElement(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n obj.constructor &&\n obj.constructor.name === 'HTMLImageElement');\n}\n//# sourceMappingURL=RendererUtils.js.map","/**\n * Memize options object.\n *\n * @typedef MemizeOptions\n *\n * @property {number} [maxSize] Maximum size of the cache.\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef MemizeCacheNode\n *\n * @property {?MemizeCacheNode|undefined} [prev] Previous node.\n * @property {?MemizeCacheNode|undefined} [next] Next node.\n * @property {Array<*>} args Function arguments for cache\n * entry.\n * @property {*} val Function result.\n */\n\n/**\n * Properties of the enhanced function for controlling cache.\n *\n * @typedef MemizeMemoizedFunction\n *\n * @property {()=>void} clear Clear the cache.\n */\n\n/**\n * Accepts a function to be memoized, and returns a new memoized function, with\n * optional options.\n *\n * @template {(...args: any[]) => any} F\n *\n * @param {F} fn Function to memoize.\n * @param {MemizeOptions} [options] Options object.\n *\n * @return {((...args: Parameters) => ReturnType) & MemizeMemoizedFunction} Memoized function.\n */\nfunction memize(fn, options) {\n\tvar size = 0;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar head;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar tail;\n\n\toptions = options || {};\n\n\tfunction memoized(/* ...args */) {\n\t\tvar node = head,\n\t\t\tlen = arguments.length,\n\t\t\targs,\n\t\t\ti;\n\n\t\tsearchCache: while (node) {\n\t\t\t// Perform a shallow equality test to confirm that whether the node\n\t\t\t// under test is a candidate for the arguments passed. Two arrays\n\t\t\t// are shallowly equal if their length matches and each entry is\n\t\t\t// strictly equal between the two sets. Avoid abstracting to a\n\t\t\t// function which could incur an arguments leaking deoptimization.\n\n\t\t\t// Check whether node arguments match arguments length\n\t\t\tif (node.args.length !== arguments.length) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check whether node arguments match arguments values\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tif (node.args[i] !== arguments[i]) {\n\t\t\t\t\tnode = node.next;\n\t\t\t\t\tcontinue searchCache;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif (node !== head) {\n\t\t\t\t// As tail, shift to previous. Must only shift if not also\n\t\t\t\t// head, since if both head and tail, there is no previous.\n\t\t\t\tif (node === tail) {\n\t\t\t\t\ttail = node.prev;\n\t\t\t\t}\n\n\t\t\t\t// Adjust siblings to point to each other. If node was tail,\n\t\t\t\t// this also handles new tail's empty `next` assignment.\n\t\t\t\t/** @type {MemizeCacheNode} */ (node.prev).next = node.next;\n\t\t\t\tif (node.next) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {MemizeCacheNode} */ (head).prev = node;\n\t\t\t\thead = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\t// Create a copy of arguments (avoid leaking deoptimization)\n\t\targs = new Array(len);\n\t\tfor (i = 0; i < len; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\tnode = {\n\t\t\targs: args,\n\n\t\t\t// Generate the result from original function\n\t\t\tval: fn.apply(null, args),\n\t\t};\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif (head) {\n\t\t\thead.prev = node;\n\t\t\tnode.next = head;\n\t\t} else {\n\t\t\t// If no head, follows that there's no tail (at initial or reset)\n\t\t\ttail = node;\n\t\t}\n\n\t\t// Trim tail if we're reached max size and are pending cache insertion\n\t\tif (size === /** @type {MemizeOptions} */ (options).maxSize) {\n\t\t\ttail = /** @type {MemizeCacheNode} */ (tail).prev;\n\t\t\t/** @type {MemizeCacheNode} */ (tail).next = null;\n\t\t} else {\n\t\t\tsize++;\n\t\t}\n\n\t\thead = node;\n\n\t\treturn node.val;\n\t}\n\n\tmemoized.clear = function () {\n\t\thead = null;\n\t\ttail = null;\n\t\tsize = 0;\n\t};\n\n\t// Ignore reason: There's not a clear solution to create an intersection of\n\t// the function with additional properties, where the goal is to retain the\n\t// function signature of the incoming argument and add control properties\n\t// on the return value.\n\n\t// @ts-ignore\n\treturn memoized;\n}\n\nexport { memize as default };\n","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Core Utility Functions\n *\n * @module\n */\nimport memo from 'memize';\nexport const EPSILON = 0.000001;\nexport let ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport const RANDOM = Math.random;\nexport const ANGLE_ORDER = 'zyx';\nconst degree = Math.PI / 180;\nexport const setMatrixArrayType = (type) => {\n ARRAY_TYPE = type;\n};\nexport const toRadian = (a) => {\n return a * degree;\n};\nexport const equals = (a, b) => {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n};\nexport const rand = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1) + min);\n};\nexport const isPowerOfTwo = (value) => {\n return value && !(value & (value - 1));\n};\nconst getTimingBezier = (a, b, c, d) => {\n const xc = 3.0 * a;\n const xb = 3.0 * (c - a) - xc;\n const xa = 1.0 - xc - xb;\n const yc = 3.0 * b;\n const yb = 3.0 * (d - b) - yc;\n const ya = 1.0 - yc - yb;\n return function (time) {\n if (time >= 1.0) {\n return 1;\n }\n if (time <= 0) {\n return 0;\n }\n let t = 0.5, cbx, cbxd, dx;\n for (let it = 0; it < 20; it++) {\n cbx = t * (t * (t * xa + xb) + xc);\n dx = time - cbx;\n if (dx > -1e-8 && dx < 1e-8) {\n return t * (t * (t * ya + yb) + yc);\n }\n // Cubic bezier derivative.\n cbxd = t * (t * (3 * xa) + 2 * xb) + xc;\n if (cbxd > 1e-10 && cbxd < 1e-10) {\n // Problematic. Fall back to binary search method.\n break;\n }\n t += dx / cbxd;\n }\n // Fallback: binary search method. This is more reliable when there are near-0 slopes.\n let minT = 0;\n let maxT = 1;\n for (let it = 0; it < 20; it++) {\n t = 0.5 * (minT + maxT);\n cbx = t * (t * (t * xa + xb) + xc);\n dx = time - cbx;\n if (dx > -1e-8 && dx < 1e-8) {\n // Solution found!\n return t * (t * (t * ya + yb) + yc);\n }\n if (dx < 0) {\n maxT = t;\n }\n else {\n minT = t;\n }\n }\n };\n};\nexport const getTimingFunction = memo((str) => {\n switch (str) {\n case 'linear':\n return function (time) {\n return time;\n };\n case 'ease':\n return getTimingBezier(0.25, 0.1, 0.25, 1.0);\n case 'ease-in':\n return getTimingBezier(0.42, 0, 1.0, 1.0);\n case 'ease-out':\n return getTimingBezier(0, 0, 0.58, 1.0);\n case 'ease-in-out':\n return getTimingBezier(0.42, 0, 0.58, 1.0);\n case 'ease-in-sine':\n return getTimingBezier(0.12, 0, 0.39, 0);\n case 'ease-out-sine':\n return getTimingBezier(0.12, 0, 0.39, 0);\n case 'ease-in-out-sine':\n return getTimingBezier(0.37, 0, 0.63, 1);\n case 'ease-in-cubic':\n return getTimingBezier(0.32, 0, 0.67, 0);\n case 'ease-out-cubic':\n return getTimingBezier(0.33, 1, 0.68, 1);\n case 'ease-in-out-cubic':\n return getTimingBezier(0.65, 0, 0.35, 1);\n case 'ease-in-circ':\n return getTimingBezier(0.55, 0, 1, 0.45);\n case 'ease-out-circ':\n return getTimingBezier(0, 0.55, 0.45, 1);\n case 'ease-in-out-circ':\n return getTimingBezier(0.85, 0, 0.15, 1);\n case 'ease-in-back':\n return getTimingBezier(0.36, 0, 0.66, -0.56);\n case 'ease-out-back':\n return getTimingBezier(0.34, 1.56, 0.64, 1);\n case 'ease-in-out-back':\n return getTimingBezier(0.68, -0.6, 0.32, 1.6);\n case 'step-start':\n return function () {\n return 1;\n };\n case 'step-end':\n return function (time) {\n return time === 1 ? 1 : 0;\n };\n default:\n // eslint-disable-next-line no-case-declarations\n const s = 'cubic-bezier(';\n if (str && str.indexOf(s) === 0) {\n const parts = str\n .substr(s.length, str.length - s.length - 1)\n .split(',');\n if (parts.length !== 4) {\n console.warn('Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n const a = parseFloat(parts[0] || '0.42');\n const b = parseFloat(parts[1] || '0');\n const c = parseFloat(parts[2] || '1');\n const d = parseFloat(parts[3] || '1');\n if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d)) {\n console.warn(' Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n return getTimingBezier(a, b, c, d);\n }\n else {\n console.warn('Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n }\n});\nif (!Math.hypot)\n Math.hypot = (...args) => {\n let y = 0, i = args.length;\n while (i--) {\n y += args[i] * args[i];\n }\n return Math.sqrt(y);\n };\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../utils.js';\nimport { isPowerOfTwo } from '../../utils.js';\nimport { CoreContextTexture } from '../CoreContextTexture.js';\nimport { isHTMLImageElement } from './internal/RendererUtils.js';\nconst TRANSPARENT_TEXTURE_DATA = new Uint8Array([0, 0, 0, 0]);\n/**\n * A wrapper around a WebGLTexture that handles loading the texture data\n * from a Texture source and uploading it to the GPU as well as freeing\n * the uploaded texture.\n *\n * @remarks\n * When accessing the ctxTexture property, the texture will be loaded if\n * it hasn't been already. ctxTexture will always return a valid WebGLTexture\n * and trigger the loading/uploading of the texture's data if it hasn't been\n * loaded yet.\n */\nexport class WebGlCoreCtxTexture extends CoreContextTexture {\n glw;\n _nativeCtxTexture = null;\n _state = 'freed';\n _w = 0;\n _h = 0;\n constructor(glw, memManager, textureSource) {\n super(memManager, textureSource);\n this.glw = glw;\n }\n get ctxTexture() {\n if (this._state === 'freed') {\n this.load();\n }\n assertTruthy(this._nativeCtxTexture);\n return this._nativeCtxTexture;\n }\n get renderable() {\n return this.textureSource.renderable;\n }\n get w() {\n return this._w;\n }\n get h() {\n return this._h;\n }\n /**\n * Load the texture data from the Texture source and upload it to the GPU\n *\n * @remarks\n * This method is called automatically when accessing the ctxTexture property\n * if the texture hasn't been loaded yet. But it can also be called manually\n * to force the texture to be pre-loaded prior to accessing the ctxTexture\n * property.\n */\n load() {\n // If the texture is already loading or loaded, don't load it again.\n if (this._state === 'loading' || this._state === 'loaded') {\n return;\n }\n this._state = 'loading';\n this.textureSource.setState('loading');\n this._nativeCtxTexture = this.createNativeCtxTexture();\n this.onLoadRequest()\n .then(({ width, height }) => {\n if (this._state === 'freed') {\n return;\n }\n this._state = 'loaded';\n this._w = width;\n this._h = height;\n // Update the texture source's width and height so that it can be used\n // for rendering.\n this.textureSource.setState('loaded', { width, height });\n })\n .catch((err) => {\n this._state = 'failed';\n this.textureSource.setState('failed', err);\n console.error(err);\n });\n }\n /**\n * Called when the texture data needs to be loaded and uploaded to a texture\n */\n async onLoadRequest() {\n const { glw, memManager } = this;\n // Set to a 1x1 transparent texture\n glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);\n memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength);\n const textureData = await this.textureSource?.getTextureData();\n // If the texture has been freed while loading, return early.\n if (!this._nativeCtxTexture) {\n assertTruthy(this._state === 'freed');\n return { width: 0, height: 0 };\n }\n let width = 0;\n let height = 0;\n assertTruthy(this._nativeCtxTexture);\n glw.activeTexture(0);\n // If textureData is null, the texture is empty (0, 0) and we don't need to\n // upload any data to the GPU.\n if (textureData.data instanceof ImageBitmap ||\n textureData.data instanceof ImageData ||\n // not using typeof HTMLImageElement due to web worker\n isHTMLImageElement(textureData.data)) {\n const data = textureData.data;\n width = data.width;\n height = data.height;\n glw.bindTexture(this._nativeCtxTexture);\n glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha);\n glw.texImage2D(0, glw.RGBA, glw.RGBA, glw.UNSIGNED_BYTE, data);\n memManager.setTextureMemUse(this, width * height * 4);\n // generate mipmaps for power-of-2 textures or in WebGL2RenderingContext\n if (glw.isWebGl2() || (isPowerOfTwo(width) && isPowerOfTwo(height))) {\n glw.generateMipmap();\n }\n }\n else if (textureData.data === null) {\n width = 0;\n height = 0;\n // Reset to a 1x1 transparent texture\n glw.bindTexture(this._nativeCtxTexture);\n glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, TRANSPARENT_TEXTURE_DATA);\n memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength);\n }\n else if ('mipmaps' in textureData.data && textureData.data.mipmaps) {\n const { mipmaps, width = 0, height = 0, type, glInternalFormat, } = textureData.data;\n const view = type === 'ktx'\n ? new DataView(mipmaps[0] ?? new ArrayBuffer(0))\n : mipmaps[0];\n glw.bindTexture(this._nativeCtxTexture);\n glw.compressedTexImage2D(0, glInternalFormat, width, height, 0, view);\n glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);\n glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);\n memManager.setTextureMemUse(this, view.byteLength);\n }\n else {\n console.error(`WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned`, textureData);\n }\n return {\n width,\n height,\n };\n }\n /**\n * Free the WebGLTexture from the GPU\n *\n * @returns\n */\n free() {\n if (this._state === 'freed') {\n return;\n }\n this._state = 'freed';\n this.textureSource.setState('freed');\n this._w = 0;\n this._h = 0;\n if (!this._nativeCtxTexture) {\n return;\n }\n const { glw, memManager } = this;\n glw.deleteTexture(this._nativeCtxTexture);\n memManager.setTextureMemUse(this, 0);\n this._nativeCtxTexture = null;\n }\n /**\n * Create native context texture\n *\n * @remarks\n * When this method returns the returned texture will be bound to the GL context state.\n *\n * @param width\n * @param height\n * @returns\n */\n createNativeCtxTexture() {\n const { glw } = this;\n const nativeTexture = glw.createTexture();\n if (!nativeTexture) {\n throw new Error('Could not create WebGL Texture');\n }\n // On initial load request, create a 1x1 transparent texture to use until\n // the texture data is finally loaded.\n glw.activeTexture(0);\n glw.bindTexture(nativeTexture);\n // linear texture filtering\n glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);\n glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);\n // texture wrapping method\n glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);\n return nativeTexture;\n }\n}\n//# sourceMappingURL=WebGlCoreCtxTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\n/**\n * Texture consisting of only a 1x1 color pixel\n *\n * @remarks\n * The pixel color is set with the {@link ColorTextureProps.color} prop.\n *\n * This is the default texture used for a Node if it's\n * {@link INodeWritableProps.texture} prop is set to `null` (the default)\n *\n * Generally the 1x1 color pixel is stretched to whatever the set dimensions of\n * a Node are.\n */\nexport class ColorTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = ColorTexture.resolveDefaults(props || {});\n }\n get color() {\n return this.props.color;\n }\n set color(color) {\n this.props.color = color;\n }\n async getTextureData() {\n const pixelData32 = new Uint32Array([this.color]);\n const pixelData8 = new Uint8ClampedArray(pixelData32.buffer);\n return {\n data: new ImageData(pixelData8, 1, 1),\n premultiplyAlpha: true,\n };\n }\n static makeCacheKey(props) {\n const resolvedProps = ColorTexture.resolveDefaults(props);\n return `ColorTexture,${resolvedProps.color}`;\n }\n static resolveDefaults(props) {\n return {\n color: props.color || 0xffffffff,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=ColorTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture, } from './Texture.js';\n/**\n * A Texture that is a sub-region of another Texture.\n *\n * @remarks\n * The parent texture can be a Sprite Sheet/Texture Atlas and set using the\n * {@link SubTextureProps.texture} prop. The sub-region relative to the parent\n * texture is defined with the {@link SubTextureProps.x},\n * {@link SubTextureProps.y}, {@link SubTextureProps.width}, and\n * {@link SubTextureProps.height} pixel values.\n */\nexport class SubTexture extends Texture {\n props;\n parentTexture;\n constructor(txManager, props) {\n super(txManager);\n this.parentTexture = this.txManager.loadTexture(props.texture.txType, props.texture.props, props.texture.options);\n this.props = SubTexture.resolveDefaults(props || {});\n // If parent texture is already loaded / failed, trigger loaded event manually\n // so that users get a consistent event experience.\n // We do this in a microtask to allow listeners to be attached in the same\n // synchronous task after calling loadTexture()\n queueMicrotask(() => {\n const parentTx = this.parentTexture;\n if (parentTx.state === 'loaded') {\n this.onParentTxLoaded(parentTx, parentTx.dimensions);\n }\n else if (parentTx.state === 'failed') {\n this.onParentTxFailed(parentTx, parentTx.error);\n }\n parentTx.on('loaded', this.onParentTxLoaded);\n parentTx.on('failed', this.onParentTxFailed);\n });\n }\n onParentTxLoaded = () => {\n // We ignore the parent's passed dimensions, and simply use the SubTexture's\n // configured dimensions (because that's all that matters here)\n this.setState('loaded', {\n width: this.props.width,\n height: this.props.height,\n });\n };\n onParentTxFailed = (target, error) => {\n this.setState('failed', error);\n };\n async getTextureData() {\n return {\n data: this.props,\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static makeCacheKey(props) {\n return false;\n }\n static resolveDefaults(props) {\n return {\n texture: props.texture,\n x: props.x || 0,\n y: props.y || 0,\n width: props.width || 0,\n height: props.height || 0,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=SubTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nexport class WebGlCoreCtxSubTexture extends WebGlCoreCtxTexture {\n constructor(glw, memManager, textureSource) {\n super(glw, memManager, textureSource);\n }\n async onLoadRequest() {\n const props = await this.textureSource.getTextureData();\n return {\n width: props.data?.width || 0,\n height: props.data?.height || 0,\n };\n }\n}\n//# sourceMappingURL=WebGlCoreCtxSubTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents a collection of WebGL Buffers along with their associated\n * vertex attribute formats.\n */\nexport class BufferCollection {\n config;\n constructor(config) {\n this.config = config;\n }\n /**\n * Get the WebGLBuffer associated with the given attribute name if it exists.\n *\n * @param attributeName\n * @returns\n */\n getBuffer(attributeName) {\n return this.config.find((item) => item.attributes[attributeName])?.buffer;\n }\n /**\n * Get the AttributeInfo associated with the given attribute name if it exists.\n *\n * @param attributeName\n * @returns\n */\n getAttributeInfo(attributeName) {\n return this.config.find((item) => item.attributes[attributeName])\n ?.attributes[attributeName];\n }\n}\n//# sourceMappingURL=BufferCollection.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\nimport { assertTruthy } from '../../utils.js';\nimport { isWebGl2 } from '../renderers/webgl/internal/WebGlUtils.js';\n/**\n * Optimized WebGL Context Wrapper\n *\n * @remarks\n * This class contains the subset of the WebGLRenderingContext & WebGL2RenderingContext\n * API that is used by the renderer. Select high volume WebGL methods include\n * caching optimizations to avoid making WebGL calls if the state is already set\n * to the desired value.\n *\n * While most methods contained are direct passthroughs to the WebGL context,\n * some methods combine multiple WebGL calls into one for convenience, modify\n * arguments to be more convenient, or are replaced by more specific methods.\n *\n * Not all methods are optimized. Only methods that are called frequently\n * and/or have a high cost are optimized.\n *\n * A subset of GLenum constants are also exposed as properties on this class\n * for convenience.\n */\nexport class WebGlContextWrapper {\n gl;\n //#region Cached WebGL State\n activeTextureUnit = 0;\n texture2dUnits;\n texture2dParams = new WeakMap();\n scissorEnabled;\n scissorX;\n scissorY;\n scissorWidth;\n scissorHeight;\n blendEnabled;\n blendSrcRgb;\n blendDstRgb;\n blendSrcAlpha;\n blendDstAlpha;\n boundArrayBuffer;\n boundElementArrayBuffer;\n curProgram;\n programUniforms = new WeakMap();\n //#endregion Cached WebGL State\n //#region Canvas\n canvas;\n //#endregion Canvas\n //#region WebGL Enums\n MAX_RENDERBUFFER_SIZE;\n MAX_TEXTURE_SIZE;\n MAX_VIEWPORT_DIMS;\n MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n MAX_TEXTURE_IMAGE_UNITS;\n MAX_COMBINED_TEXTURE_IMAGE_UNITS;\n MAX_VERTEX_ATTRIBS;\n MAX_VARYING_VECTORS;\n MAX_VERTEX_UNIFORM_VECTORS;\n MAX_FRAGMENT_UNIFORM_VECTORS;\n TEXTURE_MAG_FILTER;\n TEXTURE_MIN_FILTER;\n TEXTURE_WRAP_S;\n TEXTURE_WRAP_T;\n LINEAR;\n CLAMP_TO_EDGE;\n RGBA;\n UNSIGNED_BYTE;\n UNPACK_PREMULTIPLY_ALPHA_WEBGL;\n UNPACK_FLIP_Y_WEBGL;\n FLOAT;\n TRIANGLES;\n UNSIGNED_SHORT;\n ONE;\n ONE_MINUS_SRC_ALPHA;\n VERTEX_SHADER;\n FRAGMENT_SHADER;\n STATIC_DRAW;\n COMPILE_STATUS;\n LINK_STATUS;\n DYNAMIC_DRAW;\n COLOR_ATTACHMENT0;\n //#endregion WebGL Enums\n constructor(gl) {\n this.gl = gl;\n // The following code extracts the current state of the WebGL context\n // to our local JavaScript cached version of it. This is so we can\n // avoid making WebGL calls if we don't need to.\n // We could assume that the WebGL context is in a default state, but\n // in the future we may want to support restoring a broken WebGL context\n // and this will help with that.\n this.activeTextureUnit =\n gl.getParameter(gl.ACTIVE_TEXTURE) - gl.TEXTURE0;\n const maxTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n // save current texture units\n this.texture2dUnits = new Array(maxTextureUnits)\n .fill(undefined)\n .map((_, i) => {\n this.activeTexture(i);\n return gl.getParameter(gl.TEXTURE_BINDING_2D);\n });\n // restore active texture unit\n this.activeTexture(this.activeTextureUnit);\n this.scissorEnabled = gl.isEnabled(gl.SCISSOR_TEST);\n const scissorBox = gl.getParameter(gl.SCISSOR_BOX);\n this.scissorX = scissorBox[0];\n this.scissorY = scissorBox[1];\n this.scissorWidth = scissorBox[2];\n this.scissorHeight = scissorBox[3];\n this.blendEnabled = gl.isEnabled(gl.BLEND);\n this.blendSrcRgb = gl.getParameter(gl.BLEND_SRC_RGB);\n this.blendDstRgb = gl.getParameter(gl.BLEND_DST_RGB);\n this.blendSrcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA);\n this.blendDstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA);\n this.boundArrayBuffer = gl.getParameter(gl.ARRAY_BUFFER_BINDING);\n this.boundElementArrayBuffer = gl.getParameter(gl.ELEMENT_ARRAY_BUFFER_BINDING);\n this.curProgram = gl.getParameter(gl.CURRENT_PROGRAM);\n this.canvas = gl.canvas;\n // Extract GLenums\n this.MAX_RENDERBUFFER_SIZE = gl.MAX_RENDERBUFFER_SIZE;\n this.MAX_TEXTURE_SIZE = gl.MAX_TEXTURE_SIZE;\n this.MAX_VIEWPORT_DIMS = gl.MAX_VIEWPORT_DIMS;\n this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n this.MAX_TEXTURE_IMAGE_UNITS = gl.MAX_TEXTURE_IMAGE_UNITS;\n this.MAX_COMBINED_TEXTURE_IMAGE_UNITS = gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS;\n this.MAX_VERTEX_ATTRIBS = gl.MAX_VERTEX_ATTRIBS;\n this.MAX_VARYING_VECTORS = gl.MAX_VARYING_VECTORS;\n this.MAX_VERTEX_UNIFORM_VECTORS = gl.MAX_VERTEX_UNIFORM_VECTORS;\n this.MAX_FRAGMENT_UNIFORM_VECTORS = gl.MAX_FRAGMENT_UNIFORM_VECTORS;\n this.TEXTURE_MAG_FILTER = gl.TEXTURE_MAG_FILTER;\n this.TEXTURE_MIN_FILTER = gl.TEXTURE_MIN_FILTER;\n this.TEXTURE_WRAP_S = gl.TEXTURE_WRAP_S;\n this.TEXTURE_WRAP_T = gl.TEXTURE_WRAP_T;\n this.LINEAR = gl.LINEAR;\n this.CLAMP_TO_EDGE = gl.CLAMP_TO_EDGE;\n this.RGBA = gl.RGBA;\n this.UNSIGNED_BYTE = gl.UNSIGNED_BYTE;\n this.UNPACK_PREMULTIPLY_ALPHA_WEBGL = gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL;\n this.UNPACK_FLIP_Y_WEBGL = gl.UNPACK_FLIP_Y_WEBGL;\n this.FLOAT = gl.FLOAT;\n this.TRIANGLES = gl.TRIANGLES;\n this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT;\n this.ONE = gl.ONE;\n this.ONE_MINUS_SRC_ALPHA = gl.ONE_MINUS_SRC_ALPHA;\n this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n this.TRIANGLES = gl.TRIANGLES;\n this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT;\n this.VERTEX_SHADER = gl.VERTEX_SHADER;\n this.FRAGMENT_SHADER = gl.FRAGMENT_SHADER;\n this.STATIC_DRAW = gl.STATIC_DRAW;\n this.COMPILE_STATUS = gl.COMPILE_STATUS;\n this.LINK_STATUS = gl.LINK_STATUS;\n this.DYNAMIC_DRAW = gl.DYNAMIC_DRAW;\n this.COLOR_ATTACHMENT0 = gl.COLOR_ATTACHMENT0;\n }\n /**\n * Returns true if the WebGL context is WebGL2\n *\n * @returns\n */\n isWebGl2() {\n return isWebGl2(this.gl);\n }\n /**\n * ```\n * gl.activeTexture(textureUnit + gl.TEXTURE0);\n * ```\n *\n * @remarks\n * **WebGL Difference**: `textureUnit` is based from 0, not `gl.TEXTURE0`.\n *\n * @param textureUnit\n */\n activeTexture(textureUnit) {\n const { gl } = this;\n if (this.activeTextureUnit !== textureUnit) {\n gl.activeTexture(textureUnit + gl.TEXTURE0);\n this.activeTextureUnit = textureUnit;\n }\n }\n /**\n * ```\n * gl.bindTexture(gl.TEXTURE_2D, texture);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n *\n * @param texture\n */\n bindTexture(texture) {\n const { gl, activeTextureUnit, texture2dUnits } = this;\n if (texture2dUnits[activeTextureUnit] === texture) {\n return;\n }\n texture2dUnits[activeTextureUnit] = texture;\n gl.bindTexture(this.gl.TEXTURE_2D, texture);\n }\n _getActiveTexture() {\n const { activeTextureUnit, texture2dUnits } = this;\n return texture2dUnits[activeTextureUnit];\n }\n /**\n * ```\n * gl.texParameteri(gl.TEXTURE_2D, pname, param);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n *\n * @param pname\n * @param param\n * @returns\n */\n texParameteri(pname, param) {\n const { gl, texture2dParams } = this;\n const activeTexture = this._getActiveTexture();\n if (!activeTexture) {\n throw new Error('No active texture');\n }\n let textureParams = texture2dParams.get(activeTexture);\n if (!textureParams) {\n textureParams = {};\n texture2dParams.set(activeTexture, textureParams);\n }\n if (textureParams[pname] === param) {\n return;\n }\n textureParams[pname] = param;\n gl.texParameteri(gl.TEXTURE_2D, pname, param);\n }\n texImage2D(level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels) {\n const { gl } = this;\n if (format) {\n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels);\n }\n else {\n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource);\n }\n }\n /**\n * ```\n * gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, data);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n */\n compressedTexImage2D(level, internalformat, width, height, border, data) {\n const { gl } = this;\n gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalformat, width, height, border, data);\n }\n /**\n * ```\n * gl.pixelStorei(pname, param);\n * ```\n *\n * @param pname\n * @param param\n */\n pixelStorei(pname, param) {\n const { gl } = this;\n gl.pixelStorei(pname, param);\n }\n /**\n * ```\n * gl.generateMipmap(gl.TEXTURE_2D);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n */\n generateMipmap() {\n const { gl } = this;\n gl.generateMipmap(gl.TEXTURE_2D);\n }\n /**\n * ```\n * gl.createTexture();\n * ```\n *\n * @returns\n */\n createTexture() {\n const { gl } = this;\n return gl.createTexture();\n }\n /**\n * ```\n * gl.deleteTexture(texture);\n * ```\n *\n * @param texture\n */\n deleteTexture(texture) {\n const { gl } = this;\n if (texture) {\n this.texture2dParams.delete(texture);\n }\n gl.deleteTexture(texture);\n }\n /**\n * ```\n * gl.viewport(x, y, width, height);\n * ```\n */\n viewport(x, y, width, height) {\n const { gl } = this;\n gl.viewport(x, y, width, height);\n }\n /**\n * ```\n * gl.clearColor(red, green, blue, alpha);\n * ```\n *\n * @param red\n * @param green\n * @param blue\n * @param alpha\n */\n clearColor(red, green, blue, alpha) {\n const { gl } = this;\n gl.clearColor(red, green, blue, alpha);\n }\n /**\n * ```\n * gl[\"enable\"|\"disable\"](gl.SCISSOR_TEST);\n * ```\n * @param enable\n */\n setScissorTest(enable) {\n const { gl, scissorEnabled } = this;\n if (enable === scissorEnabled) {\n return;\n }\n if (enable) {\n gl.enable(gl.SCISSOR_TEST);\n }\n else {\n gl.disable(gl.SCISSOR_TEST);\n }\n this.scissorEnabled = enable;\n }\n /**\n * ```\n * gl.scissor(x, y, width, height);\n * ```\n *\n * @param x\n * @param y\n * @param width\n * @param height\n */\n scissor(x, y, width, height) {\n const { gl, scissorX, scissorY, scissorWidth, scissorHeight } = this;\n if (x !== scissorX ||\n y !== scissorY ||\n width !== scissorWidth ||\n height !== scissorHeight) {\n gl.scissor(x, y, width, height);\n this.scissorX = x;\n this.scissorY = y;\n this.scissorWidth = width;\n this.scissorHeight = height;\n }\n }\n /**\n * ```\n * gl[\"enable\"|\"disable\"](gl.BLEND);\n * ```\n *\n * @param blend\n * @returns\n */\n setBlend(blend) {\n const { gl, blendEnabled } = this;\n if (blend === blendEnabled) {\n return;\n }\n if (blend) {\n gl.enable(gl.BLEND);\n }\n else {\n gl.disable(gl.BLEND);\n }\n this.blendEnabled = blend;\n }\n /**\n * ```\n * gl.blendFunc(src, dst);\n * ```\n *\n * @param src\n * @param dst\n */\n blendFunc(src, dst) {\n const { gl, blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha } = this;\n if (src !== blendSrcRgb ||\n dst !== blendDstRgb ||\n src !== blendSrcAlpha ||\n dst !== blendDstAlpha) {\n gl.blendFunc(src, dst);\n this.blendSrcRgb = src;\n this.blendDstRgb = dst;\n this.blendSrcAlpha = src;\n this.blendDstAlpha = dst;\n }\n }\n /**\n * ```\n * gl.createBuffer();\n * ```\n *\n * @returns\n */\n createBuffer() {\n const { gl } = this;\n return gl.createBuffer();\n }\n /**\n * ```\n * gl.createFramebuffer();\n * ```\n * @returns\n */\n createFramebuffer() {\n const { gl } = this;\n return gl.createFramebuffer();\n }\n /**\n * ```\n * gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n * ```\n *\n * @param framebuffer\n */\n bindFramebuffer(framebuffer) {\n const { gl } = this;\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n }\n /**\n * ```\n * gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.FRAMEBUFFER` and textarget is always `gl.TEXTURE_2D`\n */\n framebufferTexture2D(attachment, texture, level) {\n const { gl } = this;\n gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, texture, level);\n }\n /**\n * ```\n * gl.clear(gl.COLOR_BUFFER_BIT);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT`\n */\n clear() {\n const { gl } = this;\n gl.clear(gl.COLOR_BUFFER_BIT);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n * gl.bufferData(gl.ARRAY_BUFFER, data, usage);\n * ```\n *\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.\n *\n * @param buffer\n * @param data\n * @param usage\n */\n arrayBufferData(buffer, data, usage) {\n const { gl, boundArrayBuffer } = this;\n if (boundArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n this.boundArrayBuffer = buffer;\n }\n gl.bufferData(gl.ARRAY_BUFFER, data, usage);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);\n * gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);\n * ```\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.\n *\n * @param buffer\n * @param data\n * @param usage\n */\n elementArrayBufferData(buffer, data, usage) {\n const { gl, boundElementArrayBuffer } = this;\n if (boundElementArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);\n this.boundElementArrayBuffer = buffer;\n }\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n * gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n * ```\n *\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.vertexAttribPointer` are combined into one function.\n *\n * @param buffer\n * @param index\n * @param size\n * @param type\n * @param normalized\n * @param stride\n * @param offset\n */\n vertexAttribPointer(buffer, index, size, type, normalized, stride, offset) {\n const { gl, boundArrayBuffer } = this;\n if (boundArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n this.boundArrayBuffer = buffer;\n }\n gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n }\n /**\n * ```\n * gl.useProgram(program);\n * ```\n *\n * @param program\n * @returns\n */\n useProgram(program) {\n const { gl, curProgram } = this;\n if (curProgram === program) {\n return;\n }\n gl.useProgram(program);\n this.curProgram = program;\n }\n setUniform(type, location, ...args) {\n const { gl, programUniforms } = this;\n let uniforms = programUniforms.get(this.curProgram);\n if (!uniforms) {\n uniforms = new Map();\n programUniforms.set(this.curProgram, uniforms);\n }\n const uniformArgs = uniforms.get(location);\n if (!uniformArgs || !compareArrays(uniformArgs, args)) {\n uniforms.set(location, args);\n gl[type](location, ...args);\n }\n }\n /**\n * ```\n * gl.getParameter(pname);\n * ```\n *\n * @param pname\n * @returns\n */\n getParameter(pname) {\n const { gl } = this;\n return gl.getParameter(pname);\n }\n /**\n * ```\n * gl.drawElements(mode, count, type, offset);\n * ```\n *\n * @param mode\n * @param count\n * @param type\n * @param offset\n */\n drawElements(mode, count, type, offset) {\n const { gl } = this;\n gl.drawElements(mode, count, type, offset);\n }\n /**\n * ```\n * gl.drawArrays(mode, first, count);\n * ```\n *\n * @param name\n * @returns\n */\n getExtension(name) {\n const { gl } = this;\n return gl.getExtension(name);\n }\n /**\n * ```\n * gl.createVertexArray();\n * ```\n *\n * @returns\n */\n createVertexArray() {\n const { gl } = this;\n assertTruthy(gl instanceof WebGL2RenderingContext);\n return gl.createVertexArray();\n }\n /**\n * ```\n * gl.bindVertexArray(vertexArray);\n * ```\n *\n * @param vertexArray\n */\n bindVertexArray(vertexArray) {\n const { gl } = this;\n assertTruthy(gl instanceof WebGL2RenderingContext);\n gl.bindVertexArray(vertexArray);\n }\n /**\n * ```\n * gl.getAttribLocation(program, name);\n * ```\n *\n * @param program\n * @param name\n * @returns\n */\n getAttribLocation(program, name) {\n const { gl } = this;\n return gl.getAttribLocation(program, name);\n }\n /**\n * ```\n * gl.getUniformLocation(program, name);\n * ```\n *\n * @param program\n * @param name\n * @returns\n */\n getUniformLocation(program, name) {\n const { gl } = this;\n return gl.getUniformLocation(program, name);\n }\n /**\n * ```\n * gl.enableVertexAttribArray(index);\n * ```\n *\n * @param index\n */\n enableVertexAttribArray(index) {\n const { gl } = this;\n gl.enableVertexAttribArray(index);\n }\n /**\n * ```\n * gl.disableVertexAttribArray(index);\n * ```\n *\n * @param index\n */\n disableVertexAttribArray(index) {\n const { gl } = this;\n gl.disableVertexAttribArray(index);\n }\n /**\n * ```\n * gl.createShader(type);\n * ```\n *\n * @param type\n * @returns\n */\n createShader(type) {\n const { gl } = this;\n return gl.createShader(type);\n }\n /**\n * ```\n * gl.compileShader(shader);\n * ```\n *\n * @param shader\n * @returns\n */\n compileShader(shader) {\n const { gl } = this;\n gl.compileShader(shader);\n }\n /**\n * ```\n * gl.attachShader(program, shader);\n * ```\n *\n * @param program\n * @param shader\n */\n attachShader(program, shader) {\n const { gl } = this;\n gl.attachShader(program, shader);\n }\n /**\n * ```\n * gl.linkProgram(program);\n * ```\n *\n * @param program\n */\n linkProgram(program) {\n const { gl } = this;\n gl.linkProgram(program);\n }\n /**\n * ```\n * gl.deleteProgram(shader);\n * ```\n *\n * @param shader\n */\n deleteProgram(shader) {\n const { gl } = this;\n gl.deleteProgram(shader);\n }\n /**\n * ```\n * gl.getShaderParameter(shader, pname);\n * ```\n *\n * @param shader\n * @param pname\n */\n getShaderParameter(shader, pname) {\n const { gl } = this;\n return gl.getShaderParameter(shader, pname);\n }\n /**\n * ```\n * gl.getShaderInfoLog(shader);\n * ```\n *\n * @param shader\n */\n getShaderInfoLog(shader) {\n const { gl } = this;\n return gl.getShaderInfoLog(shader);\n }\n /**\n * ```\n * gl.createProgram();\n * ```\n *\n * @returns\n */\n createProgram() {\n const { gl } = this;\n return gl.createProgram();\n }\n /**\n * ```\n * gl.getProgramParameter(program, pname);\n * ```\n *\n * @param program\n * @param pname\n * @returns\n */\n getProgramParameter(program, pname) {\n const { gl } = this;\n return gl.getProgramParameter(program, pname);\n }\n /**\n * ```\n * gl.getProgramInfoLog(program);\n * ```\n *\n * @param program\n * @returns\n */\n getProgramInfoLog(program) {\n const { gl } = this;\n return gl.getProgramInfoLog(program);\n }\n /**\n * ```\n * gl.shaderSource(shader, source);\n * ```\n *\n * @param shader\n * @param source\n */\n shaderSource(shader, source) {\n const { gl } = this;\n gl.shaderSource(shader, source);\n }\n /**\n * ```\n * gl.deleteShader(shader);\n * ```\n *\n * @param shader\n */\n deleteShader(shader) {\n const { gl } = this;\n gl.deleteShader(shader);\n }\n}\n/**\n * Compare two arrays for equality.\n *\n * @remarks\n * This function will not try to compare nested arrays or Float32Arrays and\n * instead will always return false when they are encountered.\n *\n * @param a\n * @param b\n * @returns\n */\nexport function compareArrays(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n return a.every((v, i) => {\n // Don't bother to compare nested arrays or Float32Arrays\n if (Array.isArray(v) || v instanceof Float32Array) {\n return false;\n }\n else {\n return v === b[i];\n }\n });\n}\n//# sourceMappingURL=WebGlContextWrapper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\nexport class RenderTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = RenderTexture.resolveDefaults(props || {});\n }\n get width() {\n return this.props.width;\n }\n set width(value) {\n this.props.width = value;\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n this.props.height = value;\n }\n async getTextureData() {\n return {\n data: null,\n premultiplyAlpha: null,\n };\n }\n static resolveDefaults(props) {\n return {\n width: props.width || 256,\n height: props.height || 256,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=RenderTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2024 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../utils.js';\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nexport class WebGlCoreCtxRenderTexture extends WebGlCoreCtxTexture {\n framebuffer;\n constructor(glw, memManager, textureSource) {\n super(glw, memManager, textureSource);\n // Create Framebuffer object\n const framebuffer = glw.createFramebuffer();\n assertTruthy(framebuffer, 'Unable to create framebuffer');\n this.framebuffer = framebuffer;\n }\n async onLoadRequest() {\n const { glw, memManager } = this;\n const nativeTexture = (this._nativeCtxTexture =\n this.createNativeCtxTexture());\n const { width, height } = this.textureSource;\n // Set the dimensions of the render texture\n glw.texImage2D(0, glw.RGBA, width, height, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);\n // Update the texture memory manager\n memManager.setTextureMemUse(this, width * height * 4);\n // Bind the framebuffer\n glw.bindFramebuffer(this.framebuffer);\n // Attach the texture to the framebuffer\n glw.framebufferTexture2D(glw.COLOR_ATTACHMENT0, nativeTexture, 0);\n // Unbind the framebuffer\n glw.bindFramebuffer(null);\n return {\n width,\n height,\n };\n }\n}\n//# sourceMappingURL=WebGlCoreCtxRenderTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, createWebGLContext, hasOwn, mergeColorAlphaPremultiplied, } from '../../../utils.js';\nimport { CoreRenderer } from '../CoreRenderer.js';\nimport { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';\nimport { createIndexBuffer, getWebGlParameters, getWebGlExtensions, } from './internal/RendererUtils.js';\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nimport { Texture } from '../../textures/Texture.js';\nimport { ColorTexture } from '../../textures/ColorTexture.js';\nimport { SubTexture } from '../../textures/SubTexture.js';\nimport { WebGlCoreCtxSubTexture } from './WebGlCoreCtxSubTexture.js';\nimport { CoreShaderManager } from '../../CoreShaderManager.js';\nimport { BufferCollection } from './internal/BufferCollection.js';\nimport { compareRect, getNormalizedRgbaComponents, } from '../../lib/utils.js';\nimport { WebGlCoreShader } from './WebGlCoreShader.js';\nimport { RoundedRectangle } from './shaders/RoundedRectangle.js';\nimport { ContextSpy } from '../../lib/ContextSpy.js';\nimport { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';\nimport { RenderTexture } from '../../textures/RenderTexture.js';\nimport { WebGlCoreCtxRenderTexture } from './WebGlCoreCtxRenderTexture.js';\nconst WORDS_PER_QUAD = 24;\nconst BYTES_PER_QUAD = WORDS_PER_QUAD * 4;\nexport class WebGlCoreRenderer extends CoreRenderer {\n //// WebGL Native Context and Data\n glw;\n system;\n //// Core Managers\n txManager;\n txMemManager;\n shManager;\n //// Options\n options;\n //// Persistent data\n quadBuffer = new ArrayBuffer(1024 * 1024 * 4);\n fQuadBuffer = new Float32Array(this.quadBuffer);\n uiQuadBuffer = new Uint32Array(this.quadBuffer);\n renderOps = [];\n //// Render Op / Buffer Filling State\n curBufferIdx = 0;\n curRenderOp = null;\n rttNodes = [];\n activeRttNode = null;\n //// Default Shader\n defaultShader;\n quadBufferCollection;\n /**\n * White pixel texture used by default when no texture is specified.\n */\n defaultTexture;\n /**\n * Whether the renderer is currently rendering to a texture.\n */\n renderToTextureActive = false;\n constructor(options) {\n super(options.stage);\n const { canvas, clearColor, bufferMemory } = options;\n this.options = options;\n this.txManager = options.txManager;\n this.txMemManager = options.txMemManager;\n this.shManager = options.shManager;\n this.defaultTexture = new ColorTexture(this.txManager);\n // When the default texture is loaded, request a render in case the\n // RAF is paused. Fixes: https://github.com/lightning-js/renderer/issues/123\n this.defaultTexture.once('loaded', () => {\n this.stage.requestRender();\n });\n const gl = createWebGLContext(canvas, options.contextSpy);\n const glw = (this.glw = new WebGlContextWrapper(gl));\n const color = getNormalizedRgbaComponents(clearColor);\n glw.viewport(0, 0, canvas.width, canvas.height);\n glw.clearColor(color[0], color[1], color[2], color[3]);\n glw.setBlend(true);\n glw.blendFunc(glw.ONE, glw.ONE_MINUS_SRC_ALPHA);\n createIndexBuffer(glw, bufferMemory);\n this.system = {\n parameters: getWebGlParameters(this.glw),\n extensions: getWebGlExtensions(this.glw),\n };\n this.shManager.renderer = this;\n this.defaultShader = this.shManager.loadShader('DefaultShader').shader;\n const quadBuffer = glw.createBuffer();\n assertTruthy(quadBuffer);\n const stride = 6 * Float32Array.BYTES_PER_ELEMENT;\n this.quadBufferCollection = new BufferCollection([\n {\n buffer: quadBuffer,\n attributes: {\n a_position: {\n name: 'a_position',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 0, // start at the beginning of the buffer\n },\n a_textureCoordinate: {\n name: 'a_textureCoordinate',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 2 * Float32Array.BYTES_PER_ELEMENT,\n },\n a_color: {\n name: 'a_color',\n size: 4,\n type: glw.UNSIGNED_BYTE,\n normalized: true,\n stride,\n offset: 4 * Float32Array.BYTES_PER_ELEMENT,\n },\n a_textureIndex: {\n name: 'a_textureIndex',\n size: 1,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 5 * Float32Array.BYTES_PER_ELEMENT,\n },\n },\n },\n ]);\n }\n reset() {\n const { glw } = this;\n this.curBufferIdx = 0;\n this.curRenderOp = null;\n this.renderOps.length = 0;\n glw.setScissorTest(false);\n glw.clear();\n }\n getShaderManager() {\n return this.shManager;\n }\n createCtxTexture(textureSource) {\n if (textureSource instanceof SubTexture) {\n return new WebGlCoreCtxSubTexture(this.glw, this.txMemManager, textureSource);\n }\n else if (textureSource instanceof RenderTexture) {\n return new WebGlCoreCtxRenderTexture(this.glw, this.txMemManager, textureSource);\n }\n return new WebGlCoreCtxTexture(this.glw, this.txMemManager, textureSource);\n }\n /**\n * This function adds a quad (a rectangle composed of two triangles) to the WebGL rendering pipeline.\n *\n * It takes a set of options that define the quad's properties, such as its dimensions, colors, texture, shader, and transformation matrix.\n * The function first updates the shader properties with the current dimensions if necessary, then sets the default texture if none is provided.\n * It then checks if a new render operation is needed, based on the current shader and clipping rectangle.\n * If a new render operation is needed, it creates one and updates the current render operation.\n * The function then adjusts the texture coordinates based on the texture options and adds the texture to the texture manager.\n *\n * Finally, it calculates the vertices for the quad, taking into account any transformations, and adds them to the quad buffer.\n * The function updates the length and number of quads in the current render operation, and updates the current buffer index.\n */\n addQuad(params) {\n const { fQuadBuffer, uiQuadBuffer } = this;\n const { width, height, colorTl, colorTr, colorBl, colorBr, textureOptions, shader, shaderProps, alpha, clippingRect, tx, ty, ta, tb, tc, td, rtt: renderToTexture, parentHasRenderTexture, framebufferDimensions, } = params;\n let { texture } = params;\n /**\n * If the shader props contain any automatic properties, update it with the\n * current dimensions that will be used to render the quad.\n */\n if (shaderProps && hasOwn(shaderProps, '$dimensions')) {\n const dimensions = shaderProps.$dimensions;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n dimensions.width = width;\n dimensions.height = height;\n }\n texture = texture ?? this.defaultTexture;\n assertTruthy(texture instanceof Texture, 'Invalid texture type');\n let { curBufferIdx: bufferIdx, curRenderOp } = this;\n const targetDims = {\n width,\n height,\n };\n const targetShader = shader || this.defaultShader;\n assertTruthy(targetShader instanceof WebGlCoreShader);\n if (!this.reuseRenderOp(params)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.newRenderOp(targetShader, shaderProps, alpha, targetDims, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions);\n curRenderOp = this.curRenderOp;\n assertTruthy(curRenderOp);\n }\n const flipX = textureOptions?.flipX ?? false;\n const flipY = textureOptions?.flipY ?? false;\n let texCoordX1 = 0;\n let texCoordY1 = 0;\n let texCoordX2 = 1;\n let texCoordY2 = 1;\n if (texture instanceof SubTexture) {\n const { x: tx, y: ty, width: tw, height: th } = texture.props;\n const { width: parentW = 0, height: parentH = 0 } = texture.parentTexture\n .dimensions || { width: 0, height: 0 };\n texCoordX1 = tx / parentW;\n texCoordX2 = texCoordX1 + tw / parentW;\n texCoordY1 = ty / parentH;\n texCoordY2 = texCoordY1 + th / parentH;\n texture = texture.parentTexture;\n }\n // Flip texture coordinates if dictated by texture options\n if (flipX) {\n [texCoordX1, texCoordX2] = [texCoordX2, texCoordX1];\n }\n if (flipY) {\n [texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];\n }\n const { txManager } = this.stage;\n const ctxTexture = txManager.getCtxTexture(texture);\n assertTruthy(ctxTexture instanceof WebGlCoreCtxTexture);\n const textureIdx = this.addTexture(ctxTexture, bufferIdx);\n curRenderOp = this.curRenderOp;\n assertTruthy(curRenderOp);\n // render quad advanced\n if (tb !== 0 || tc !== 0) {\n // Upper-Left\n fQuadBuffer[bufferIdx++] = tx; // vertexX\n fQuadBuffer[bufferIdx++] = ty; // vertexY\n fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX\n fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY\n uiQuadBuffer[bufferIdx++] = colorTl; // color\n fQuadBuffer[bufferIdx++] = textureIdx; // texIndex\n // Upper-Right\n fQuadBuffer[bufferIdx++] = tx + width * ta;\n fQuadBuffer[bufferIdx++] = ty + width * tc;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY1;\n uiQuadBuffer[bufferIdx++] = colorTr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Left\n fQuadBuffer[bufferIdx++] = tx + height * tb;\n fQuadBuffer[bufferIdx++] = ty + height * td;\n fQuadBuffer[bufferIdx++] = texCoordX1;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBl;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Right\n fQuadBuffer[bufferIdx++] = tx + width * ta + height * tb;\n fQuadBuffer[bufferIdx++] = ty + width * tc + height * td;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n }\n else {\n // Calculate the right corner of the quad\n // multiplied by the scale\n const rightCornerX = tx + width * ta;\n const rightCornerY = ty + height * td;\n // Upper-Left\n fQuadBuffer[bufferIdx++] = tx; // vertexX\n fQuadBuffer[bufferIdx++] = ty; // vertexY\n fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX\n fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY\n uiQuadBuffer[bufferIdx++] = colorTl; // color\n fQuadBuffer[bufferIdx++] = textureIdx; // texIndex\n // Upper-Right\n fQuadBuffer[bufferIdx++] = rightCornerX;\n fQuadBuffer[bufferIdx++] = ty;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY1;\n uiQuadBuffer[bufferIdx++] = colorTr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Left\n fQuadBuffer[bufferIdx++] = tx;\n fQuadBuffer[bufferIdx++] = rightCornerY;\n fQuadBuffer[bufferIdx++] = texCoordX1;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBl;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Right\n fQuadBuffer[bufferIdx++] = rightCornerX;\n fQuadBuffer[bufferIdx++] = rightCornerY;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n }\n // Update the length of the current render op\n curRenderOp.length += WORDS_PER_QUAD;\n curRenderOp.numQuads++;\n this.curBufferIdx = bufferIdx;\n }\n /**\n * Replace the existing RenderOp with a new one that uses the specified Shader\n * and starts at the specified buffer index.\n *\n * @param shader\n * @param bufferIdx\n */\n newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions) {\n const curRenderOp = new WebGlCoreRenderOp(this.glw, this.options, this.quadBufferCollection, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, 0, // Z-Index is only used for explictly added Render Ops\n renderToTexture, parentHasRenderTexture, framebufferDimensions);\n this.curRenderOp = curRenderOp;\n this.renderOps.push(curRenderOp);\n }\n /**\n * Add a texture to the current RenderOp. If the texture cannot be added to the\n * current RenderOp, a new RenderOp will be created and the texture will be added\n * to that one.\n *\n * If the texture cannot be added to the new RenderOp, an error will be thrown.\n *\n * @param texture\n * @param bufferIdx\n * @param recursive\n * @returns Assigned Texture Index of the texture in the render op\n */\n addTexture(texture, bufferIdx, recursive) {\n const { curRenderOp } = this;\n assertTruthy(curRenderOp);\n const textureIdx = curRenderOp.addTexture(texture);\n // TODO: Refactor to be more DRY\n if (textureIdx === 0xffffffff) {\n if (recursive) {\n throw new Error('Unable to add texture to render op');\n }\n const { shader, shaderProps, dimensions, clippingRect, alpha } = curRenderOp;\n this.newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx);\n return this.addTexture(texture, bufferIdx, true);\n }\n return textureIdx;\n }\n /**\n * Test if the current Render operation can be reused for the specified parameters.\n * @param params\n * @returns\n */\n reuseRenderOp(params) {\n const { shader, shaderProps, parentHasRenderTexture, rtt, clippingRect } = params;\n const targetShader = shader || this.defaultShader;\n // Switching shader program will require a new render operation\n if (this.curRenderOp?.shader !== targetShader) {\n return false;\n }\n // Switching clipping rect will require a new render operation\n if (!compareRect(this.curRenderOp.clippingRect, clippingRect)) {\n return false;\n }\n // Force new render operation if rendering to texture\n // @todo: This needs to be improved, render operations could also be reused\n // for rendering to texture\n if (parentHasRenderTexture || rtt) {\n return false;\n }\n // Check if the shader can batch the shader properties\n if (this.curRenderOp.shader !== this.defaultShader &&\n (!shaderProps ||\n !this.curRenderOp.shader.canBatchShaderProps(this.curRenderOp.shaderProps, shaderProps))) {\n return false;\n }\n // Render operation can be reused\n return true;\n }\n /**\n * add RenderOp to the render pipeline\n */\n addRenderOp(renderable) {\n this.renderOps.push(renderable);\n this.curRenderOp = null;\n }\n /**\n * Render the current set of RenderOps to render to the specified surface.\n *\n * TODO: 'screen' is the only supported surface at the moment.\n *\n * @param surface\n */\n render(surface = 'screen') {\n const { glw, quadBuffer } = this;\n const arr = new Float32Array(quadBuffer, 0, this.curBufferIdx);\n const buffer = this.quadBufferCollection.getBuffer('a_position') ?? null;\n glw.arrayBufferData(buffer, arr, glw.STATIC_DRAW);\n const doLog = false; // idx++ % 100 === 0;\n if (doLog) {\n console.log('renderOps', this.renderOps.length);\n }\n this.renderOps.forEach((renderOp, i) => {\n if (doLog) {\n console.log('Quads per operation', renderOp.numQuads);\n }\n renderOp.draw();\n });\n }\n renderToTexture(node) {\n for (let i = 0; i < this.rttNodes.length; i++) {\n if (this.rttNodes[i] === node) {\n return;\n }\n }\n // @todo: Better bottom up rendering order\n this.rttNodes.unshift(node);\n }\n renderRTTNodes() {\n const { glw } = this;\n const { txManager } = this.stage;\n // Render all associated RTT nodes to their textures\n for (let i = 0; i < this.rttNodes.length; i++) {\n const node = this.rttNodes[i];\n // Skip nodes that don't have RTT updates\n if (!node || !node.hasRTTupdates) {\n continue;\n }\n // Set the active RTT node to the current node\n // So we can prevent rendering children of nested RTT nodes\n this.activeRttNode = node;\n assertTruthy(node.texture, 'RTT node missing texture');\n const ctxTexture = txManager.getCtxTexture(node.texture);\n assertTruthy(ctxTexture instanceof WebGlCoreCtxRenderTexture);\n this.renderToTextureActive = true;\n // Bind the the texture's framebuffer\n glw.bindFramebuffer(ctxTexture.framebuffer);\n glw.viewport(0, 0, ctxTexture.w, ctxTexture.h);\n glw.clear();\n // Render all associated quads to the texture\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (!child) {\n continue;\n }\n child.update(this.stage.deltaTime, {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n });\n this.stage.addQuads(child);\n child.hasRTTupdates = false;\n }\n // Render all associated quads to the texture\n this.render();\n // Reset render operations\n this.renderOps.length = 0;\n node.hasRTTupdates = false;\n }\n // Bind the default framebuffer\n glw.bindFramebuffer(null);\n glw.viewport(0, 0, this.glw.canvas.width, this.glw.canvas.height);\n this.renderToTextureActive = false;\n }\n}\n//# sourceMappingURL=WebGlCoreRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const SpecialCodepoints = {\n LINE_FEED: 0x0a,\n CARRIAGE_RETURN: 0x0d,\n SPACE: 0x20,\n TAB: 0x09,\n ZERO_WIDTH_SPACE: 0x200b,\n ZERO_WIDTH_NON_JOINER: 0x200c,\n ZERO_WIDTH_JOINER: 0x200d,\n LEFT_TO_RIGHT_MARK: 0x200e,\n RIGHT_TO_LEFT_MARK: 0x200f,\n LEFT_TO_RIGHT_EMBEDDING: 0x202a,\n RIGHT_TO_LEFT_EMBEDDING: 0x202b,\n POP_DIRECTIONAL_FORMATTING: 0x202c,\n LEFT_TO_RIGHT_OVERRIDE: 0x202d,\n RIGHT_TO_LEFT_OVERRIDE: 0x202e,\n LINE_SEPARATOR: 0x2028,\n PARAGRAPH_SEPARATOR: 0x2029,\n OBJECT_REPLACEMENT_CHARACTER: 0xfffc,\n REPLACEMENT_CHARACTER: 0xfffd,\n ZERO_WIDTH_NO_BREAK_SPACE: 0xfeff,\n LEFT_TO_RIGHT_ISOLATE: 0x2066,\n RIGHT_TO_LEFT_ISOLATE: 0x2067,\n FIRST_STRONG_ISOLATE: 0x2068,\n POP_DIRECTIONAL_ISOLATE: 0x2069,\n INHIBIT_SYMMETRIC_SWAPPING: 0x206a,\n ACTIVATE_SYMMETRIC_SWAPPING: 0x206b,\n INHIBIT_ARABIC_FORM_SHAPING: 0x206c,\n ACTIVATE_ARABIC_FORM_SHAPING: 0x206d,\n NATIONAL_DIGIT_SHAPES: 0x206e,\n NOMINAL_DIGIT_SHAPES: 0x206f,\n LEFT_TO_RIGHT_BOUNDARY: 0x200e,\n RIGHT_TO_LEFT_BOUNDARY: 0x200f,\n};\n//# sourceMappingURL=SpecialCodepoints.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class FontShaper {\n}\n//# sourceMappingURL=FontShaper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { SpecialCodepoints } from '../../../renderers/SdfTextRenderer/internal/SpecialCodepoints.js';\nimport { FontShaper, } from './FontShaper.js';\nexport class SdfFontShaper extends FontShaper {\n data;\n glyphMap;\n kernings;\n constructor(data, glyphMap) {\n super();\n this.data = data;\n this.glyphMap = glyphMap;\n const kernings = (this.kernings = {});\n data.kernings.forEach((kerning) => {\n const second = kerning.second;\n const firsts = (kernings[second] = kernings[second] || {});\n firsts[kerning.first] = kerning.amount;\n });\n this.kernings = kernings;\n }\n *shapeText(props, codepoints) {\n let codepointResult;\n let lastGlyphId = undefined;\n while ((codepointResult = codepoints.peek()) && !codepointResult.done) {\n const codepoint = codepointResult.value;\n const glyph = this.glyphMap.get(codepoint);\n codepoints.next();\n if (glyph !== undefined) {\n // We found a glyph for this codepoint\n // Yield the mapped glyph info\n /**\n * Kerning includes any possible additional letter spacing\n */\n const kerning = lastGlyphId !== undefined\n ? (this.kernings[glyph.id]?.[lastGlyphId] || 0) +\n props.letterSpacing\n : 0;\n lastGlyphId = glyph.id;\n yield {\n mapped: true,\n glyphId: glyph.id,\n codepoint,\n cluster: codepoints.lastIndex,\n xAdvance: glyph.xadvance + kerning,\n yAdvance: 0,\n xOffset: glyph.xoffset + kerning,\n yOffset: glyph.yoffset,\n xBearing: 0,\n yBearing: 0,\n width: glyph.width,\n height: glyph.height,\n };\n }\n else {\n // We didn't find a glyph for this codepoint\n // Yield the unmapped codepoint info\n // If this codepoint is a linebreak, we should reset the last glyph id\n // so that the next glyph will not be kerned with the last glyph of the\n // previous line.\n if (codepoint === SpecialCodepoints.LINE_FEED) {\n lastGlyphId = undefined;\n }\n yield {\n mapped: false,\n codepoint,\n cluster: codepoints.lastIndex,\n };\n }\n }\n }\n}\n//# sourceMappingURL=SdfFontShaper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// import type { Renderer } from '../../../Renderer';\nimport { assertTruthy } from '../../../../utils.js';\nimport { WebGlCoreRenderer } from '../../../renderers/webgl/WebGlCoreRenderer.js';\nimport { ImageTexture } from '../../../textures/ImageTexture.js';\nimport { TrFontFace } from '../TrFontFace.js';\nimport { SdfFontShaper } from './internal/SdfFontShaper.js';\nexport class SdfTrFontFace extends TrFontFace {\n type;\n texture;\n /**\n * Height of the tallest character in the font including the whitespace above it\n */\n maxCharHeight = 0;\n data;\n shaper;\n glyphMap = new Map();\n constructor(fontFamily, descriptors, type, stage, atlasUrl, atlasDataUrl) {\n super(fontFamily, descriptors);\n this.type = type;\n const renderer = stage.renderer;\n assertTruthy(renderer instanceof WebGlCoreRenderer, 'SDF Font Faces can only be used with the WebGL Renderer');\n this.texture = stage.txManager.loadTexture('ImageTexture', {\n src: atlasUrl,\n // IMPORTANT: The SDF shader requires the alpha channel to NOT be\n // premultiplied on the atlas texture. If it is premultiplied, the\n // rendering of SDF glyphs (especially single-channel SDF fonts) will\n // be very jagged.\n premultiplyAlpha: false,\n }, {\n preload: true,\n });\n this.texture.on('loaded', () => {\n this.checkLoaded();\n });\n // Set this.data to the fetched data from dataUrl\n fetch(atlasDataUrl)\n .then(async (response) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.data = await response.json();\n // Add all the glyphs to the glyph map\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let maxCharHeight = 0;\n this.data.chars.forEach((glyph) => {\n this.glyphMap.set(glyph.id, glyph);\n const charHeight = glyph.yoffset + glyph.height;\n if (charHeight > maxCharHeight) {\n maxCharHeight = charHeight;\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.maxCharHeight = maxCharHeight;\n // We know `data` is defined here, because we just set it\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.shaper = new SdfFontShaper(this.data, this.glyphMap);\n this.checkLoaded();\n })\n .catch(console.error);\n }\n getAtlasEntry(glyphId) {\n const glyph = this.glyphMap.get(glyphId);\n if (glyph === undefined) {\n throw new Error(`Glyph ${glyphId} not found in font ${this.fontFamily}`);\n }\n return {\n x: glyph.x,\n y: glyph.y,\n width: glyph.width,\n height: glyph.height,\n };\n }\n checkLoaded() {\n if (this.loaded)\n return;\n if (this.texture.state === 'loaded' && this.data) {\n this.loaded = true;\n this.emit('loaded');\n }\n }\n}\n//# sourceMappingURL=SdfTrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Base class for Core extensions.\n *\n * @remarks\n * Core extensions are used to extend the Core Renderer with custom code such as\n * custom fonts, custom shaders, custom textures, custom animation functions,\n * and more.\n */\nexport class CoreExtension {\n}\n//# sourceMappingURL=CoreExtension.js.map"],"names":["memo","width","height","tx","ty","i"],"mappings":"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","x_google_ignoreList":[14]} \ No newline at end of file diff --git a/assets/CoreExtension-BfzrAcK3.js b/assets/CoreExtension-BfzrAcK3.js deleted file mode 100644 index 9c3540f..0000000 --- a/assets/CoreExtension-BfzrAcK3.js +++ /dev/null @@ -1,2 +0,0 @@ -var de=Object.defineProperty;var le=(n,t,e)=>t in n?de(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var a=(n,t,e)=>(le(n,typeof t!="symbol"?t+"":t,e),e);function Te(n,t){const e={alpha:!0,antialias:!1,depth:!1,stencil:!0,desynchronized:!1,powerPreference:"high-performance",premultipliedAlpha:!0,preserveDrawingBuffer:!1},r=n.getContext("webgl",e)||n.getContext("experimental-webgl",e);if(!r)throw new Error("Unable to create WebGL context");return t?new Proxy(r,{get(s,i){const o=s[i];return typeof o=="function"?(t.increment(String(i)),o.bind(s)):o}}):r}function g(n,t){if(!Ee()&&!n)throw new Error(t||"Assertion failed")}function We(n,t,e){const r=Math.trunc(n>>>24),s=Math.trunc(n>>>16&255),i=Math.trunc(n>>>8&255),o=Math.trunc(n&255),h=Math.trunc(t>>>24),c=Math.trunc(t>>>16&255),u=Math.trunc(t>>>8&255),l=Math.trunc(t&255),d=Math.round(h*e+r*(1-e)),E=Math.round(c*e+s*(1-e)),x=Math.round(u*e+i*(1-e)),_=Math.round(l*e+o*(1-e));return(d<<24|E<<16|x<<8|_)>>>0}function He(n,t){const e=n>>>24,r=n>>>16&255,s=n>>>8&255,i=Math.trunc((n&255)*t);return(e<<24|r<<16|s<<8|i)>>>0}function Ve(n,t,e=!1){const r=(n&255)/255*t,s=Math.trunc((n>>>24)*r),i=Math.trunc((n>>>16&255)*r),o=Math.trunc((n>>>8&255)*r),h=Math.trunc(r*255);return e?(h<<24|o<<16|i<<8|s)>>>0:(s<<24|i<<16|o<<8|h)>>>0}function H(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function Ee(){return{BASE_URL:"/solid-demo-app/",MODE:"production",DEV:!1,PROD:!0,SSR:!1,LEGACY:!1}&&!0}class te{constructor(){a(this,"eventListeners",{})}on(t,e){let r=this.eventListeners[t];r||(r=[]),r.push(e),this.eventListeners[t]=r}off(t,e){const r=this.eventListeners[t];if(!r)return;if(!e){delete this.eventListeners[t];return}const s=r.indexOf(e);s>=0&&r.splice(s,1)}once(t,e){const r=(s,i)=>{this.off(t,r),e(s,i)};this.on(t,r)}emit(t,e){const r=this.eventListeners[t];r&&[...r].forEach(s=>{s(this,e)})}removeAllListeners(){this.eventListeners={}}}class _e{static makeCacheKey(t){return!1}static resolveDefaults(t){return{}}}function Q(n,t,e){const r=n.createShader(t);if(!r)throw new Error;if(n.shaderSource(r,e),n.compileShader(r),n.getShaderParameter(r,n.COMPILE_STATUS))return r;console.log(n.getShaderInfoLog(r)),n.deleteShader(r)}function xe(n,t,e){const r=n.createProgram();if(!r)throw new Error;if(n.attachShader(r,t),n.attachShader(r,e),n.linkProgram(r),n.getProgramParameter(r,n.LINK_STATUS))return r;console.log(n.getProgramInfoLog(r)),n.deleteProgram(r)}function Re(n){return self.WebGL2RenderingContext&&n instanceof self.WebGL2RenderingContext}class re extends _e{constructor(e){super();a(this,"boundBufferCollection",null);a(this,"buffersBound",!1);a(this,"program");a(this,"vao");a(this,"renderer");a(this,"glw");a(this,"attributeBuffers");a(this,"attributeLocations");a(this,"attributeNames");a(this,"uniformLocations");a(this,"uniformTypes");a(this,"supportsIndexedTextures");const r=this.renderer=e.renderer,s=this.glw=this.renderer.glw;this.supportsIndexedTextures=e.supportsIndexedTextures||!1;const i=s.isWebGl2(),o=i&&e.webgl2Extensions||!i&&e.webgl1Extensions||[],h=i?"2.0":"1.0";o.forEach(T=>{if(!s.getExtension(T))throw new Error('Shader "'.concat(this.constructor.name,'" requires extension "').concat(T,'" for WebGL ').concat(h," but wasn't found"))});const c=e.shaderSources||this.constructor.shaderSources;if(c)i&&(c!=null&&c.webGl2)&&(c.fragment=c.webGl2.fragment,c.vertex=c.webGl2.vertex,delete c.webGl2);else throw new Error('Shader "'.concat(this.constructor.name,'" is missing shaderSources.'));const u=r.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS,l=c.vertex instanceof Function?c.vertex(u):c.vertex,d=c.fragment instanceof Function?c.fragment(u):c.fragment,E=Q(s,s.VERTEX_SHADER,l),x=Q(s,s.FRAGMENT_SHADER,d);if(!E||!x)throw new Error;const _=xe(s,E,x);if(!_)throw new Error;if(this.program=_,i){const T=s.createVertexArray();if(!T)throw new Error;this.vao=T,s.bindVertexArray(this.vao)}this.attributeLocations={},this.attributeBuffers={},this.attributeNames=[],[...e.attributes].forEach(T=>{const R=s.getAttribLocation(this.program,T);if(R<0)throw new Error("".concat(this.constructor.name,': Vertex shader must have an attribute "').concat(T,'"!'));const A=s.createBuffer();if(!A)throw new Error("".concat(this.constructor.name,': Could not create buffer for attribute "').concat(T,'"'));this.attributeLocations[T]=R,this.attributeBuffers[T]=A,this.attributeNames.push(T)}),this.uniformLocations={},this.uniformTypes={},e.uniforms.forEach(T=>{const R=s.getUniformLocation(this.program,T.name);if(this.uniformTypes[T.name]=T.uniform,!R){console.warn('Shader "'.concat(this.constructor.name,'" could not get uniform location for "').concat(T.name,'"'));return}this.uniformLocations[T.name]=R})}bindBufferAttribute(e,r,s){const{glw:i}=this;i.enableVertexAttribArray(e),i.vertexAttribPointer(r,e,s.size,s.type,s.normalized,s.stride,s.offset)}disableAttribute(e){this.glw.disableVertexAttribArray(e)}disableAttributes(){for(const e in this.attributeLocations)this.disableAttribute(this.attributeLocations[e]);this.boundBufferCollection=null}canBatchShaderProps(e,r){return!1}bindRenderOp(e,r){this.bindBufferCollection(e.buffers),e.textures.length>0&&this.bindTextures(e.textures);const{glw:s,parentHasRenderTexture:i,renderToTexture:o}=e;if(!(o&&i)){if(i){const{width:h,height:c}=e.framebufferDimensions||{};this.setUniform("u_pixelRatio",1),this.setUniform("u_resolution",new Float32Array([h!=null?h:0,c!=null?c:0]))}else this.setUniform("u_pixelRatio",e.options.pixelRatio),this.setUniform("u_resolution",new Float32Array([s.canvas.width,s.canvas.height]));if(r){if(H(r,"$dimensions")){let h=r.$dimensions;h||(h=e.dimensions),this.setUniform("u_dimensions",[h.width,h.height])}if(H(r,"$alpha")){let h=r.$alpha;h||(h=e.alpha),this.setUniform("u_alpha",h)}this.bindProps(r)}}}setUniform(e,...r){this.glw.setUniform(this.uniformTypes[e],this.uniformLocations[e],...r)}bindBufferCollection(e){if(this.boundBufferCollection!==e){for(const r in this.attributeLocations){const s=e.getBuffer(r),i=e.getAttributeInfo(r);g(s,'Buffer for "'.concat(r,'" not found')),g(i),this.bindBufferAttribute(this.attributeLocations[r],s,i)}this.boundBufferCollection=e}}bindProps(e){}bindTextures(e){}attach(){this.glw.useProgram(this.program),this.glw.useProgram(this.program),this.glw.isWebGl2()&&this.vao&&this.glw.bindVertexArray(this.vao)}detach(){this.disableAttributes()}}a(re,"shaderSources");class O extends te{constructor(e){super();a(this,"txManager");a(this,"dimensions",null);a(this,"error",null);a(this,"state","freed");a(this,"renderableOwners",new Set);this.txManager=e}setRenderableOwner(e,r){r?this.renderableOwners.add(e):this.renderableOwners.delete(e)}get renderable(){return this.renderableOwners.size>0}setState(e,...r){if(this.state!==e){if(this.state=e,e==="loaded"){const s=r;this.dimensions=s[0]}else if(e==="failed"){const s=r;this.error=s[0]}this.emit(e,...r)}}static makeCacheKey(e){return!1}static resolveDefaults(e){return{}}}const Ae=n=>{const t=n>>>24,e=n>>>16&255,r=n>>>8&255,s=n&255;return[t/255,e/255,r/255,s/255]};function Ye(n){return(n&255)/255}function ke(n){const t=Math.floor(n[0]*255),e=Math.floor(n[1]*255),r=Math.floor(n[2]*255),s=Math.floor(n[3]*255);return"rgba(".concat(t,",").concat(e,",").concat(r,",").concat(s.toFixed(4),")")}function j(n,t,e,r,s){return s?(s.x1=n,s.y1=t,s.x2=e,s.y2=r,s):{x1:n,y1:t,x2:e,y2:r}}function $e(n,t,e){const r=j(Math.max(n.x1,t.x1),Math.max(n.y1,t.y1),Math.min(n.x2,t.x2),Math.min(n.y2,t.y2),e);return r.x1t.x1&&n.y1t.y1}function qe(n,t){return t?(t.x=n.x1,t.y=n.y1,t.width=n.x2-n.x1,t.height=n.y2-n.y1,t):{x:n.x1,y:n.y1,width:n.x2-n.x1,height:n.y2-n.y1}}function Ke(n,t,e){const r=Math.max(n.x,t.x),s=Math.max(n.y,t.y),i=Math.min(n.x+n.width,t.x+t.width)-r,o=Math.min(n.y+n.height,t.y+t.height)-s;return i>0&&o>0?e?(e.x=r,e.y=s,e.width=i,e.height=o,e):{x:r,y:s,width:i,height:o}:e?(e.x=0,e.y=0,e.width=0,e.height=0,e):{x:0,y:0,width:0,height:0}}function Ze(n,t){return t?(t.x=n.x,t.y=n.y,t.width=n.width,t.height=n.height,t):{x:n.x,y:n.y,width:n.width,height:n.height}}function ge(n,t){return n===t?!0:n===null||t===null?!1:n.x===t.x&&n.y===t.y&&n.width===t.width&&n.height===t.height}function Qe(n,t){return n.x1<=t.x2&&n.y1<=t.y2&&n.x2>=t.x1&&n.y2>=t.y1}function je(n){return n.x1h===e);if(i!==-1)return i;const o=r.length;return o>=s?4294967295:(this.textures.push(e),o)}draw(){const{glw:e,shader:r,shaderProps:s,options:i}=this,{shManager:o}=i;o.useShader(r),r.bindRenderOp(this,s);const h=this.bufferIdx/24*6*2;if(this.clippingRect.valid){const{x:c,y:u,width:l,height:d}=this.clippingRect,E=i.pixelRatio,x=i.canvas.height,_=Math.round(c*E),T=Math.round(l*E),R=Math.round(d*E),A=Math.round(x-R-u*E);e.setScissorTest(!0),e.scissor(_,A,T,R)}else e.setScissorTest(!1);e.drawElements(e.TRIANGLES,6*this.numQuads,e.UNSIGNED_SHORT,h)}}function Ne(n){const t={MAX_RENDERBUFFER_SIZE:0,MAX_TEXTURE_SIZE:0,MAX_VIEWPORT_DIMS:0,MAX_VERTEX_TEXTURE_IMAGE_UNITS:0,MAX_TEXTURE_IMAGE_UNITS:0,MAX_COMBINED_TEXTURE_IMAGE_UNITS:0,MAX_VERTEX_ATTRIBS:0,MAX_VARYING_VECTORS:0,MAX_VERTEX_UNIFORM_VECTORS:0,MAX_FRAGMENT_UNIFORM_VECTORS:0};return Object.keys(t).forEach(r=>{t[r]=n.getParameter(n[r])}),t}function be(n){const t={ANGLE_instanced_arrays:null,WEBGL_compressed_texture_s3tc:null,WEBGL_compressed_texture_astc:null,WEBGL_compressed_texture_etc:null,WEBGL_compressed_texture_etc1:null,WEBGL_compressed_texture_pvrtc:null,WEBKIT_WEBGL_compressed_texture_pvrtc:null,WEBGL_compressed_texture_s3tc_srgb:null,OES_vertex_array_object:null};return Object.keys(t).forEach(r=>{t[r]=n.getExtension(r)}),t}function we(n,t){const e=~~(t/80),r=new Uint16Array(e*6);for(let i=0,o=0;in&&!(n&n-1),m=(n,t,e,r)=>{const s=3*n,i=3*(e-n)-s,o=1-s-i,h=3*t,c=3*(r-t)-h,u=1-h-c;return function(l){if(l>=1)return 1;if(l<=0)return 0;let d=.5,E,x,_;for(let A=0;A<20;A++){if(E=d*(d*(d*o+i)+s),_=l-E,_>-1e-8&&_<1e-8)return d*(d*(d*u+c)+h);if(x=d*(d*(3*o)+2*i)+s,x>1e-10&&x<1e-10)break;d+=_/x}let T=0,R=1;for(let A=0;A<20;A++){if(d=.5*(T+R),E=d*(d*(d*o+i)+s),_=l-E,_>-1e-8&&_<1e-8)return d*(d*(d*u+c)+h);_<0?R=d:T=d}}},Je=ye(n=>{switch(n){case"linear":return function(e){return e};case"ease":return m(.25,.1,.25,1);case"ease-in":return m(.42,0,1,1);case"ease-out":return m(0,0,.58,1);case"ease-in-out":return m(.42,0,.58,1);case"ease-in-sine":return m(.12,0,.39,0);case"ease-out-sine":return m(.12,0,.39,0);case"ease-in-out-sine":return m(.37,0,.63,1);case"ease-in-cubic":return m(.32,0,.67,0);case"ease-out-cubic":return m(.33,1,.68,1);case"ease-in-out-cubic":return m(.65,0,.35,1);case"ease-in-circ":return m(.55,0,1,.45);case"ease-out-circ":return m(0,.55,.45,1);case"ease-in-out-circ":return m(.85,0,.15,1);case"ease-in-back":return m(.36,0,.66,-.56);case"ease-out-back":return m(.34,1.56,.64,1);case"ease-in-out-back":return m(.68,-.6,.32,1.6);case"step-start":return function(){return 1};case"step-end":return function(e){return e===1?1:0};default:const t="cubic-bezier(";if(n&&n.indexOf(t)===0){const e=n.substr(t.length,n.length-t.length-1).split(",");if(e.length!==4)return console.warn("Unknown timing function: "+n),function(h){return h};const r=parseFloat(e[0]||"0.42"),s=parseFloat(e[1]||"0"),i=parseFloat(e[2]||"1"),o=parseFloat(e[3]||"1");return isNaN(r)||isNaN(s)||isNaN(i)||isNaN(o)?(console.warn(" Unknown timing function: "+n),function(h){return h}):m(r,s,i,o)}else return console.warn("Unknown timing function: "+n),function(e){return e}}});Math.hypot||(Math.hypot=(...n)=>{let t=0,e=n.length;for(;e--;)t+=n[e]*n[e];return Math.sqrt(t)});const W=new Uint8Array([0,0,0,0]);class P extends pe{constructor(e,r,s){super(r,s);a(this,"glw");a(this,"_nativeCtxTexture",null);a(this,"_state","freed");a(this,"_w",0);a(this,"_h",0);this.glw=e}get ctxTexture(){return this._state==="freed"&&this.load(),g(this._nativeCtxTexture),this._nativeCtxTexture}get renderable(){return this.textureSource.renderable}get w(){return this._w}get h(){return this._h}load(){this._state==="loading"||this._state==="loaded"||(this._state="loading",this.textureSource.setState("loading"),this._nativeCtxTexture=this.createNativeCtxTexture(),this.onLoadRequest().then(({width:e,height:r})=>{this._state!=="freed"&&(this._state="loaded",this._w=e,this._h=r,this.textureSource.setState("loaded",{width:e,height:r}))}).catch(e=>{this._state="failed",this.textureSource.setState("failed",e),console.error(e)}))}async onLoadRequest(){var h,c;const{glw:e,memManager:r}=this;e.texImage2D(0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,null),r.setTextureMemUse(this,W.byteLength);const s=await((h=this.textureSource)==null?void 0:h.getTextureData());if(!this._nativeCtxTexture)return g(this._state==="freed"),{width:0,height:0};let i=0,o=0;if(g(this._nativeCtxTexture),e.activeTexture(0),s.data instanceof ImageBitmap||s.data instanceof ImageData||Le(s.data)){const u=s.data;i=u.width,o=u.height,e.bindTexture(this._nativeCtxTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!!s.premultiplyAlpha),e.texImage2D(0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,u),r.setTextureMemUse(this,i*o*4),(e.isWebGl2()||J(i)&&J(o))&&e.generateMipmap()}else if(s.data===null)i=0,o=0,e.bindTexture(this._nativeCtxTexture),e.texImage2D(0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,W),r.setTextureMemUse(this,W.byteLength);else if("mipmaps"in s.data&&s.data.mipmaps){const{mipmaps:u,width:l=0,height:d=0,type:E,glInternalFormat:x}=s.data,_=E==="ktx"?new DataView((c=u[0])!=null?c:new ArrayBuffer(0)):u[0];e.bindTexture(this._nativeCtxTexture),e.compressedTexImage2D(0,x,l,d,0,_),e.texParameteri(e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_MIN_FILTER,e.LINEAR),r.setTextureMemUse(this,_.byteLength)}else console.error("WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned",s);return{width:i,height:o}}free(){if(this._state==="freed"||(this._state="freed",this.textureSource.setState("freed"),this._w=0,this._h=0,!this._nativeCtxTexture))return;const{glw:e,memManager:r}=this;e.deleteTexture(this._nativeCtxTexture),r.setTextureMemUse(this,0),this._nativeCtxTexture=null}createNativeCtxTexture(){const{glw:e}=this,r=e.createTexture();if(!r)throw new Error("Could not create WebGL Texture");return e.activeTexture(0),e.bindTexture(r),e.texParameteri(e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),r}}const y=class y extends O{constructor(e,r){super(e);a(this,"props");this.props=y.resolveDefaults(r||{})}get color(){return this.props.color}set color(e){this.props.color=e}async getTextureData(){const e=new Uint32Array([this.color]),r=new Uint8ClampedArray(e.buffer);return{data:new ImageData(r,1,1),premultiplyAlpha:!0}}static makeCacheKey(e){const r=y.resolveDefaults(e);return"ColorTexture,".concat(r.color)}static resolveDefaults(e){return{color:e.color||4294967295}}};a(y,"z$__type__Props");let V=y;const C=class C extends O{constructor(e,r){super(e);a(this,"props");a(this,"parentTexture");a(this,"onParentTxLoaded",()=>{this.setState("loaded",{width:this.props.width,height:this.props.height})});a(this,"onParentTxFailed",(e,r)=>{this.setState("failed",r)});this.parentTexture=this.txManager.loadTexture(r.texture.txType,r.texture.props,r.texture.options),this.props=C.resolveDefaults(r||{}),queueMicrotask(()=>{const s=this.parentTexture;s.state==="loaded"?this.onParentTxLoaded(s,s.dimensions):s.state==="failed"&&this.onParentTxFailed(s,s.error),s.on("loaded",this.onParentTxLoaded),s.on("failed",this.onParentTxFailed)})}async getTextureData(){return{data:this.props}}static makeCacheKey(e){return!1}static resolveDefaults(e){return{texture:e.texture,x:e.x||0,y:e.y||0,width:e.width||0,height:e.height||0}}};a(C,"z$__type__Props");let B=C;class Ue extends P{constructor(t,e,r){super(t,e,r)}async onLoadRequest(){var e,r;const t=await this.textureSource.getTextureData();return{width:((e=t.data)==null?void 0:e.width)||0,height:((r=t.data)==null?void 0:r.height)||0}}}class Pe{constructor(t){a(this,"config");this.config=t}getBuffer(t){var e;return(e=this.config.find(r=>r.attributes[t]))==null?void 0:e.buffer}getAttributeInfo(t){var e;return(e=this.config.find(r=>r.attributes[t]))==null?void 0:e.attributes[t]}}class Be{constructor(t){a(this,"gl");a(this,"activeTextureUnit",0);a(this,"texture2dUnits");a(this,"texture2dParams",new WeakMap);a(this,"scissorEnabled");a(this,"scissorX");a(this,"scissorY");a(this,"scissorWidth");a(this,"scissorHeight");a(this,"blendEnabled");a(this,"blendSrcRgb");a(this,"blendDstRgb");a(this,"blendSrcAlpha");a(this,"blendDstAlpha");a(this,"boundArrayBuffer");a(this,"boundElementArrayBuffer");a(this,"curProgram");a(this,"programUniforms",new WeakMap);a(this,"canvas");a(this,"MAX_RENDERBUFFER_SIZE");a(this,"MAX_TEXTURE_SIZE");a(this,"MAX_VIEWPORT_DIMS");a(this,"MAX_VERTEX_TEXTURE_IMAGE_UNITS");a(this,"MAX_TEXTURE_IMAGE_UNITS");a(this,"MAX_COMBINED_TEXTURE_IMAGE_UNITS");a(this,"MAX_VERTEX_ATTRIBS");a(this,"MAX_VARYING_VECTORS");a(this,"MAX_VERTEX_UNIFORM_VECTORS");a(this,"MAX_FRAGMENT_UNIFORM_VECTORS");a(this,"TEXTURE_MAG_FILTER");a(this,"TEXTURE_MIN_FILTER");a(this,"TEXTURE_WRAP_S");a(this,"TEXTURE_WRAP_T");a(this,"LINEAR");a(this,"CLAMP_TO_EDGE");a(this,"RGBA");a(this,"UNSIGNED_BYTE");a(this,"UNPACK_PREMULTIPLY_ALPHA_WEBGL");a(this,"UNPACK_FLIP_Y_WEBGL");a(this,"FLOAT");a(this,"TRIANGLES");a(this,"UNSIGNED_SHORT");a(this,"ONE");a(this,"ONE_MINUS_SRC_ALPHA");a(this,"VERTEX_SHADER");a(this,"FRAGMENT_SHADER");a(this,"STATIC_DRAW");a(this,"COMPILE_STATUS");a(this,"LINK_STATUS");a(this,"DYNAMIC_DRAW");a(this,"COLOR_ATTACHMENT0");this.gl=t,this.activeTextureUnit=t.getParameter(t.ACTIVE_TEXTURE)-t.TEXTURE0;const e=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS);this.texture2dUnits=new Array(e).fill(void 0).map((s,i)=>(this.activeTexture(i),t.getParameter(t.TEXTURE_BINDING_2D))),this.activeTexture(this.activeTextureUnit),this.scissorEnabled=t.isEnabled(t.SCISSOR_TEST);const r=t.getParameter(t.SCISSOR_BOX);this.scissorX=r[0],this.scissorY=r[1],this.scissorWidth=r[2],this.scissorHeight=r[3],this.blendEnabled=t.isEnabled(t.BLEND),this.blendSrcRgb=t.getParameter(t.BLEND_SRC_RGB),this.blendDstRgb=t.getParameter(t.BLEND_DST_RGB),this.blendSrcAlpha=t.getParameter(t.BLEND_SRC_ALPHA),this.blendDstAlpha=t.getParameter(t.BLEND_DST_ALPHA),this.boundArrayBuffer=t.getParameter(t.ARRAY_BUFFER_BINDING),this.boundElementArrayBuffer=t.getParameter(t.ELEMENT_ARRAY_BUFFER_BINDING),this.curProgram=t.getParameter(t.CURRENT_PROGRAM),this.canvas=t.canvas,this.MAX_RENDERBUFFER_SIZE=t.MAX_RENDERBUFFER_SIZE,this.MAX_TEXTURE_SIZE=t.MAX_TEXTURE_SIZE,this.MAX_VIEWPORT_DIMS=t.MAX_VIEWPORT_DIMS,this.MAX_VERTEX_TEXTURE_IMAGE_UNITS=t.MAX_VERTEX_TEXTURE_IMAGE_UNITS,this.MAX_TEXTURE_IMAGE_UNITS=t.MAX_TEXTURE_IMAGE_UNITS,this.MAX_COMBINED_TEXTURE_IMAGE_UNITS=t.MAX_COMBINED_TEXTURE_IMAGE_UNITS,this.MAX_VERTEX_ATTRIBS=t.MAX_VERTEX_ATTRIBS,this.MAX_VARYING_VECTORS=t.MAX_VARYING_VECTORS,this.MAX_VERTEX_UNIFORM_VECTORS=t.MAX_VERTEX_UNIFORM_VECTORS,this.MAX_FRAGMENT_UNIFORM_VECTORS=t.MAX_FRAGMENT_UNIFORM_VECTORS,this.TEXTURE_MAG_FILTER=t.TEXTURE_MAG_FILTER,this.TEXTURE_MIN_FILTER=t.TEXTURE_MIN_FILTER,this.TEXTURE_WRAP_S=t.TEXTURE_WRAP_S,this.TEXTURE_WRAP_T=t.TEXTURE_WRAP_T,this.LINEAR=t.LINEAR,this.CLAMP_TO_EDGE=t.CLAMP_TO_EDGE,this.RGBA=t.RGBA,this.UNSIGNED_BYTE=t.UNSIGNED_BYTE,this.UNPACK_PREMULTIPLY_ALPHA_WEBGL=t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this.UNPACK_FLIP_Y_WEBGL=t.UNPACK_FLIP_Y_WEBGL,this.FLOAT=t.FLOAT,this.TRIANGLES=t.TRIANGLES,this.UNSIGNED_SHORT=t.UNSIGNED_SHORT,this.ONE=t.ONE,this.ONE_MINUS_SRC_ALPHA=t.ONE_MINUS_SRC_ALPHA,this.MAX_VERTEX_TEXTURE_IMAGE_UNITS=t.MAX_VERTEX_TEXTURE_IMAGE_UNITS,this.TRIANGLES=t.TRIANGLES,this.UNSIGNED_SHORT=t.UNSIGNED_SHORT,this.VERTEX_SHADER=t.VERTEX_SHADER,this.FRAGMENT_SHADER=t.FRAGMENT_SHADER,this.STATIC_DRAW=t.STATIC_DRAW,this.COMPILE_STATUS=t.COMPILE_STATUS,this.LINK_STATUS=t.LINK_STATUS,this.DYNAMIC_DRAW=t.DYNAMIC_DRAW,this.COLOR_ATTACHMENT0=t.COLOR_ATTACHMENT0}isWebGl2(){return Re(this.gl)}activeTexture(t){const{gl:e}=this;this.activeTextureUnit!==t&&(e.activeTexture(t+e.TEXTURE0),this.activeTextureUnit=t)}bindTexture(t){const{gl:e,activeTextureUnit:r,texture2dUnits:s}=this;s[r]!==t&&(s[r]=t,e.bindTexture(this.gl.TEXTURE_2D,t))}_getActiveTexture(){const{activeTextureUnit:t,texture2dUnits:e}=this;return e[t]}texParameteri(t,e){const{gl:r,texture2dParams:s}=this,i=this._getActiveTexture();if(!i)throw new Error("No active texture");let o=s.get(i);o||(o={},s.set(i,o)),o[t]!==e&&(o[t]=e,r.texParameteri(r.TEXTURE_2D,t,e))}texImage2D(t,e,r,s,i,o,h,c){const{gl:u}=this;o?u.texImage2D(u.TEXTURE_2D,t,e,r,s,i,o,h,c):u.texImage2D(u.TEXTURE_2D,t,e,r,s,i)}compressedTexImage2D(t,e,r,s,i,o){const{gl:h}=this;h.compressedTexImage2D(h.TEXTURE_2D,t,e,r,s,i,o)}pixelStorei(t,e){const{gl:r}=this;r.pixelStorei(t,e)}generateMipmap(){const{gl:t}=this;t.generateMipmap(t.TEXTURE_2D)}createTexture(){const{gl:t}=this;return t.createTexture()}deleteTexture(t){const{gl:e}=this;t&&this.texture2dParams.delete(t),e.deleteTexture(t)}viewport(t,e,r,s){const{gl:i}=this;i.viewport(t,e,r,s)}clearColor(t,e,r,s){const{gl:i}=this;i.clearColor(t,e,r,s)}setScissorTest(t){const{gl:e,scissorEnabled:r}=this;t!==r&&(t?e.enable(e.SCISSOR_TEST):e.disable(e.SCISSOR_TEST),this.scissorEnabled=t)}scissor(t,e,r,s){const{gl:i,scissorX:o,scissorY:h,scissorWidth:c,scissorHeight:u}=this;(t!==o||e!==h||r!==c||s!==u)&&(i.scissor(t,e,r,s),this.scissorX=t,this.scissorY=e,this.scissorWidth=r,this.scissorHeight=s)}setBlend(t){const{gl:e,blendEnabled:r}=this;t!==r&&(t?e.enable(e.BLEND):e.disable(e.BLEND),this.blendEnabled=t)}blendFunc(t,e){const{gl:r,blendSrcRgb:s,blendDstRgb:i,blendSrcAlpha:o,blendDstAlpha:h}=this;(t!==s||e!==i||t!==o||e!==h)&&(r.blendFunc(t,e),this.blendSrcRgb=t,this.blendDstRgb=e,this.blendSrcAlpha=t,this.blendDstAlpha=e)}createBuffer(){const{gl:t}=this;return t.createBuffer()}createFramebuffer(){const{gl:t}=this;return t.createFramebuffer()}bindFramebuffer(t){const{gl:e}=this;e.bindFramebuffer(e.FRAMEBUFFER,t)}framebufferTexture2D(t,e,r){const{gl:s}=this;s.framebufferTexture2D(s.FRAMEBUFFER,t,s.TEXTURE_2D,e,r)}clear(){const{gl:t}=this;t.clear(t.COLOR_BUFFER_BIT)}arrayBufferData(t,e,r){const{gl:s,boundArrayBuffer:i}=this;i!==t&&(s.bindBuffer(s.ARRAY_BUFFER,t),this.boundArrayBuffer=t),s.bufferData(s.ARRAY_BUFFER,e,r)}elementArrayBufferData(t,e,r){const{gl:s,boundElementArrayBuffer:i}=this;i!==t&&(s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,t),this.boundElementArrayBuffer=t),s.bufferData(s.ELEMENT_ARRAY_BUFFER,e,r)}vertexAttribPointer(t,e,r,s,i,o,h){const{gl:c,boundArrayBuffer:u}=this;u!==t&&(c.bindBuffer(c.ARRAY_BUFFER,t),this.boundArrayBuffer=t),c.vertexAttribPointer(e,r,s,i,o,h)}useProgram(t){const{gl:e,curProgram:r}=this;r!==t&&(e.useProgram(t),this.curProgram=t)}setUniform(t,e,...r){const{gl:s,programUniforms:i}=this;let o=i.get(this.curProgram);o||(o=new Map,i.set(this.curProgram,o));const h=o.get(e);(!h||!Ce(h,r))&&(o.set(e,r),s[t](e,...r))}getParameter(t){const{gl:e}=this;return e.getParameter(t)}drawElements(t,e,r,s){const{gl:i}=this;i.drawElements(t,e,r,s)}getExtension(t){const{gl:e}=this;return e.getExtension(t)}createVertexArray(){const{gl:t}=this;return g(t instanceof WebGL2RenderingContext),t.createVertexArray()}bindVertexArray(t){const{gl:e}=this;g(e instanceof WebGL2RenderingContext),e.bindVertexArray(t)}getAttribLocation(t,e){const{gl:r}=this;return r.getAttribLocation(t,e)}getUniformLocation(t,e){const{gl:r}=this;return r.getUniformLocation(t,e)}enableVertexAttribArray(t){const{gl:e}=this;e.enableVertexAttribArray(t)}disableVertexAttribArray(t){const{gl:e}=this;e.disableVertexAttribArray(t)}createShader(t){const{gl:e}=this;return e.createShader(t)}compileShader(t){const{gl:e}=this;e.compileShader(t)}attachShader(t,e){const{gl:r}=this;r.attachShader(t,e)}linkProgram(t){const{gl:e}=this;e.linkProgram(t)}deleteProgram(t){const{gl:e}=this;e.deleteProgram(t)}getShaderParameter(t,e){const{gl:r}=this;return r.getShaderParameter(t,e)}getShaderInfoLog(t){const{gl:e}=this;return e.getShaderInfoLog(t)}createProgram(){const{gl:t}=this;return t.createProgram()}getProgramParameter(t,e){const{gl:r}=this;return r.getProgramParameter(t,e)}getProgramInfoLog(t){const{gl:e}=this;return e.getProgramInfoLog(t)}shaderSource(t,e){const{gl:r}=this;r.shaderSource(t,e)}deleteShader(t){const{gl:e}=this;e.deleteShader(t)}}function Ce(n,t){return n.length!==t.length?!1:n.every((e,r)=>Array.isArray(e)||e instanceof Float32Array?!1:e===t[r])}const D=class D extends O{constructor(e,r){super(e);a(this,"props");this.props=D.resolveDefaults(r||{})}get width(){return this.props.width}set width(e){this.props.width=e}get height(){return this.props.height}set height(e){this.props.height=e}async getTextureData(){return{data:null,premultiplyAlpha:null}}static resolveDefaults(e){return{width:e.width||256,height:e.height||256}}};a(D,"z$__type__Props");let Y=D;class ee extends P{constructor(e,r,s){super(e,r,s);a(this,"framebuffer");const i=e.createFramebuffer();g(i,"Unable to create framebuffer"),this.framebuffer=i}async onLoadRequest(){const{glw:e,memManager:r}=this,s=this._nativeCtxTexture=this.createNativeCtxTexture(),{width:i,height:o}=this.textureSource;return e.texImage2D(0,e.RGBA,i,o,0,e.RGBA,e.UNSIGNED_BYTE,null),r.setTextureMemUse(this,i*o*4),e.bindFramebuffer(this.framebuffer),e.framebufferTexture2D(e.COLOR_ATTACHMENT0,s,0),e.bindFramebuffer(null),{width:i,height:o}}}const De=24;class Oe extends Ie{constructor(e){super(e.stage);a(this,"glw");a(this,"system");a(this,"txManager");a(this,"txMemManager");a(this,"shManager");a(this,"options");a(this,"quadBuffer",new ArrayBuffer(1024*1024*4));a(this,"fQuadBuffer",new Float32Array(this.quadBuffer));a(this,"uiQuadBuffer",new Uint32Array(this.quadBuffer));a(this,"renderOps",[]);a(this,"curBufferIdx",0);a(this,"curRenderOp",null);a(this,"rttNodes",[]);a(this,"activeRttNode",null);a(this,"defaultShader");a(this,"quadBufferCollection");a(this,"defaultTexture");a(this,"renderToTextureActive",!1);const{canvas:r,clearColor:s,bufferMemory:i}=e;this.options=e,this.txManager=e.txManager,this.txMemManager=e.txMemManager,this.shManager=e.shManager,this.defaultTexture=new V(this.txManager),this.defaultTexture.once("loaded",()=>{this.stage.requestRender()});const o=Te(r,e.contextSpy),h=this.glw=new Be(o),c=Ae(s);h.viewport(0,0,r.width,r.height),h.clearColor(c[0],c[1],c[2],c[3]),h.setBlend(!0),h.blendFunc(h.ONE,h.ONE_MINUS_SRC_ALPHA),we(h,i),this.system={parameters:Ne(this.glw),extensions:be(this.glw)},this.shManager.renderer=this,this.defaultShader=this.shManager.loadShader("DefaultShader").shader;const u=h.createBuffer();g(u);const l=6*Float32Array.BYTES_PER_ELEMENT;this.quadBufferCollection=new Pe([{buffer:u,attributes:{a_position:{name:"a_position",size:2,type:h.FLOAT,normalized:!1,stride:l,offset:0},a_textureCoordinate:{name:"a_textureCoordinate",size:2,type:h.FLOAT,normalized:!1,stride:l,offset:2*Float32Array.BYTES_PER_ELEMENT},a_color:{name:"a_color",size:4,type:h.UNSIGNED_BYTE,normalized:!0,stride:l,offset:4*Float32Array.BYTES_PER_ELEMENT},a_textureIndex:{name:"a_textureIndex",size:1,type:h.FLOAT,normalized:!1,stride:l,offset:5*Float32Array.BYTES_PER_ELEMENT}}}])}reset(){const{glw:e}=this;this.curBufferIdx=0,this.curRenderOp=null,this.renderOps.length=0,e.setScissorTest(!1),e.clear()}getShaderManager(){return this.shManager}createCtxTexture(e){return e instanceof B?new Ue(this.glw,this.txMemManager,e):e instanceof Y?new ee(this.glw,this.txMemManager,e):new P(this.glw,this.txMemManager,e)}addQuad(e){var z,q;const{fQuadBuffer:r,uiQuadBuffer:s}=this,{width:i,height:o,colorTl:h,colorTr:c,colorBl:u,colorBr:l,textureOptions:d,shader:E,shaderProps:x,alpha:_,clippingRect:T,tx:R,ty:A,ta:G,tb:X,tc:F,td:v,rtt:se,parentHasRenderTexture:ne,framebufferDimensions:ie}=e;let{texture:p}=e;if(x&&H(x,"$dimensions")){const w=x.$dimensions;w.width=i,w.height=o}p=p!=null?p:this.defaultTexture,g(p instanceof O,"Invalid texture type");let{curBufferIdx:f,curRenderOp:L}=this;const ae={width:i,height:o},k=E||this.defaultShader;g(k instanceof re),this.reuseRenderOp(e)||(this.newRenderOp(k,x,_,ae,T,f,se,ne,ie),L=this.curRenderOp,g(L));const oe=(z=d==null?void 0:d.flipX)!=null?z:!1,he=(q=d==null?void 0:d.flipY)!=null?q:!1;let I=0,S=0,N=1,b=1;if(p instanceof B){const{x:w,y:U,width:ue,height:fe}=p.props,{width:K=0,height:Z=0}=p.parentTexture.dimensions||{width:0,height:0};I=w/K,N=I+ue/K,S=U/Z,b=S+fe/Z,p=p.parentTexture}oe&&([I,N]=[N,I]),he&&([S,b]=[b,S]);const{txManager:ce}=this.stage,$=ce.getCtxTexture(p);g($ instanceof P);const M=this.addTexture($,f);if(L=this.curRenderOp,g(L),X!==0||F!==0)r[f++]=R,r[f++]=A,r[f++]=I,r[f++]=S,s[f++]=h,r[f++]=M,r[f++]=R+i*G,r[f++]=A+i*F,r[f++]=N,r[f++]=S,s[f++]=c,r[f++]=M,r[f++]=R+o*X,r[f++]=A+o*v,r[f++]=I,r[f++]=b,s[f++]=u,r[f++]=M,r[f++]=R+i*G+o*X,r[f++]=A+i*F+o*v,r[f++]=N,r[f++]=b,s[f++]=l,r[f++]=M;else{const w=R+i*G,U=A+o*v;r[f++]=R,r[f++]=A,r[f++]=I,r[f++]=S,s[f++]=h,r[f++]=M,r[f++]=w,r[f++]=A,r[f++]=N,r[f++]=S,s[f++]=c,r[f++]=M,r[f++]=R,r[f++]=U,r[f++]=I,r[f++]=b,s[f++]=u,r[f++]=M,r[f++]=w,r[f++]=U,r[f++]=N,r[f++]=b,s[f++]=l,r[f++]=M}L.length+=De,L.numQuads++,this.curBufferIdx=f}newRenderOp(e,r,s,i,o,h,c,u,l){const d=new Me(this.glw,this.options,this.quadBufferCollection,e,r,s,o,i,h,0,c,u,l);this.curRenderOp=d,this.renderOps.push(d)}addTexture(e,r,s){const{curRenderOp:i}=this;g(i);const o=i.addTexture(e);if(o===4294967295){if(s)throw new Error("Unable to add texture to render op");const{shader:h,shaderProps:c,dimensions:u,clippingRect:l,alpha:d}=i;return this.newRenderOp(h,c,d,u,l,r),this.addTexture(e,r,!0)}return o}reuseRenderOp(e){var u;const{shader:r,shaderProps:s,parentHasRenderTexture:i,rtt:o,clippingRect:h}=e,c=r||this.defaultShader;return!(((u=this.curRenderOp)==null?void 0:u.shader)!==c||!ge(this.curRenderOp.clippingRect,h)||i||o||this.curRenderOp.shader!==this.defaultShader&&(!s||!this.curRenderOp.shader.canBatchShaderProps(this.curRenderOp.shaderProps,s)))}addRenderOp(e){this.renderOps.push(e),this.curRenderOp=null}render(e="screen"){var h;const{glw:r,quadBuffer:s}=this,i=new Float32Array(s,0,this.curBufferIdx),o=(h=this.quadBufferCollection.getBuffer("a_position"))!=null?h:null;r.arrayBufferData(o,i,r.STATIC_DRAW),this.renderOps.forEach((c,u)=>{c.draw()})}renderToTexture(e){for(let r=0;r{const o=i.second,h=s[o]=s[o]||{};h[i.first]=i.amount}),this.kernings=s}*shapeText(e,r){var o;let s,i;for(;(s=r.peek())&&!s.done;){const h=s.value,c=this.glyphMap.get(h);if(r.next(),c!==void 0){const u=i!==void 0?(((o=this.kernings[c.id])==null?void 0:o[i])||0)+e.letterSpacing:0;i=c.id,yield{mapped:!0,glyphId:c.id,codepoint:h,cluster:r.lastIndex,xAdvance:c.xadvance+u,yAdvance:0,xOffset:c.xoffset+u,yOffset:c.yoffset,xBearing:0,yBearing:0,width:c.width,height:c.height}}else h===Ge.LINE_FEED&&(i=void 0),yield{mapped:!1,codepoint:h,cluster:r.lastIndex}}}}class et extends me{constructor(e,r,s,i,o,h){super(e,r);a(this,"type");a(this,"texture");a(this,"maxCharHeight",0);a(this,"data");a(this,"shaper");a(this,"glyphMap",new Map);this.type=s;const c=i.renderer;g(c instanceof Oe,"SDF Font Faces can only be used with the WebGL Renderer"),this.texture=i.txManager.loadTexture("ImageTexture",{src:o,premultiplyAlpha:!1},{preload:!0}),this.texture.on("loaded",()=>{this.checkLoaded()}),fetch(h).then(async u=>{this.data=await u.json();let l=0;this.data.chars.forEach(d=>{this.glyphMap.set(d.id,d);const E=d.yoffset+d.height;E>l&&(l=E)}),this.maxCharHeight=l,this.shaper=new Fe(this.data,this.glyphMap),this.checkLoaded()}).catch(console.error)}getAtlasEntry(e){const r=this.glyphMap.get(e);if(r===void 0)throw new Error("Glyph ".concat(e," not found in font ").concat(this.fontFamily));return{x:r.x,y:r.y,width:r.width,height:r.height}}checkLoaded(){this.loaded||this.texture.state==="loaded"&&this.data&&(this.loaded=!0,this.emit("loaded"))}}class tt{}export{Pe as B,tt as C,te as E,Y as R,et as S,me as T,re as W,g as a,Ae as b,j as c,$e as d,Ke as e,Ye as f,ke as g,ye as h,Ee as i,O as j,je as k,ze as l,Ve as m,qe as n,Ze as o,Me as p,He as q,Je as r,We as s,Qe as t,V as u,B as v,Oe as w}; -//# sourceMappingURL=CoreExtension-BfzrAcK3.js.map diff --git a/assets/CoreExtension-legacy-1r1p_2oI.js b/assets/CoreExtension-legacy-1r1p_2oI.js deleted file mode 100644 index 64882c8..0000000 --- a/assets/CoreExtension-legacy-1r1p_2oI.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){function t(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */t=function(){return r};var e,r={},i=Object.prototype,n=i.hasOwnProperty,s=Object.defineProperty||function(t,e,r){t[e]=r.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",h=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function d(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{d({},"")}catch(e){d=function(t,e,r){return t[e]=r}}function c(t,e,r,i){var n=e&&e.prototype instanceof T?e:T,a=Object.create(n.prototype),o=new N(i||[]);return s(a,"_invoke",{value:S(t,r,o)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}r.wrap=c;var f="suspendedStart",v="suspendedYield",g="executing",p="completed",E={};function T(){}function x(){}function _(){}var m={};d(m,o,(function(){return this}));var R=Object.getPrototypeOf,A=R&&R(R(U([])));A&&A!==i&&n.call(A,o)&&(m=A);var b=_.prototype=T.prototype=Object.create(m);function y(t){["next","throw","return"].forEach((function(e){d(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function r(i,s,a,o){var h=l(t[i],t,s);if("throw"!==h.type){var u=h.arg,d=u.value;return d&&"object"==typeof d&&n.call(d,"__await")?e.resolve(d.__await).then((function(t){r("next",t,a,o)}),(function(t){r("throw",t,a,o)})):e.resolve(d).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,o)}))}o(h.arg)}var i;s(this,"_invoke",{value:function(t,n){function s(){return new e((function(e,i){r(t,n,e,i)}))}return i=i?i.then(s,s):s()}})}function S(t,r,i){var n=f;return function(s,a){if(n===g)throw Error("Generator is already running");if(n===p){if("throw"===s)throw a;return{value:e,done:!0}}for(i.method=s,i.arg=a;;){var o=i.delegate;if(o){var h=M(o,i);if(h){if(h===E)continue;return h}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(n===f)throw n=p,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);n=g;var u=l(t,r,i);if("normal"===u.type){if(n=i.done?p:v,u.arg===E)continue;return{value:u.arg,done:i.done}}"throw"===u.type&&(n=p,i.method="throw",i.arg=u.arg)}}}function M(t,r){var i=r.method,n=t.iterator[i];if(n===e)return r.delegate=null,"throw"===i&&t.iterator.return&&(r.method="return",r.arg=e,M(t,r),"throw"===r.method)||"return"!==i&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+i+"' method")),E;var s=l(n,t.iterator,r.arg);if("throw"===s.type)return r.method="throw",r.arg=s.arg,r.delegate=null,E;var a=s.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,E):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,E)}function I(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function N(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(I,this),this.reset(!0)}function U(t){if(t||""===t){var r=t[o];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,s=function r(){for(;++i=0;--s){var a=this.tryEntries[s],o=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var h=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(h&&u){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),L(r),E}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var i=r.completion;if("throw"===i.type){var n=i.arg;L(r)}return n}}throw Error("illegal catch attempt")},delegateYield:function(t,r,i){return this.delegate={iterator:U(t),resultName:r,nextLoc:i},"next"===this.method&&(this.arg=e),E}},r}function e(t,e,r,i,n,s,a){try{var o=t[s](a),h=o.value}catch(u){return void r(u)}o.done?e(h):Promise.resolve(h).then(i,n)}function r(t){return function(){var r=this,i=arguments;return new Promise((function(n,s){var a=t.apply(r,i);function o(t){e(a,n,s,o,h,"next",t)}function h(t){e(a,n,s,o,h,"throw",t)}o(void 0)}))}}function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function n(t,e,r){var i;return(e="symbol"==typeof(i=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(e,"string"))?i:i+"")in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}System.register([],(function(e,s){"use strict";return{execute:function(){function s(t,e){}function a(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function o(){return{BASE_URL:"/solid-demo-app/",MODE:"production",DEV:!1,PROD:!0,SSR:!1,LEGACY:!0}&&!0}e({a:s,c:v,d:function(t,e,r){var i=v(Math.max(t.x1,e.x1),Math.max(t.y1,e.y1),Math.min(t.x2,e.x2),Math.min(t.y2,e.y2),r);if(i.x10&&a>0)return r?(r.x=i,r.y=n,r.width=s,r.height=a,r):{x:i,y:n,width:s,height:a};if(r)return r.x=0,r.y=0,r.width=0,r.height=0,r;return{x:0,y:0,width:0,height:0}},f:function(t){return(255&t)/255},g:function(t){var e=Math.floor(255*t[0]),r=Math.floor(255*t[1]),i=Math.floor(255*t[2]),n=Math.floor(255*t[3]);return`rgba(${e},${r},${i},${n.toFixed(4)})`},h:R,i:o,k:function(t){return t.x1e.x1&&t.y1e.y1},m:function(t,e,r=!1){var i=(255&t)/255*e,n=Math.trunc((t>>>24)*i),s=Math.trunc((t>>>16&255)*i),a=Math.trunc((t>>>8&255)*i),o=Math.trunc(255*i);if(r)return(o<<24|a<<16|s<<8|n)>>>0;return(n<<24|s<<16|a<<8|o)>>>0},n:function(t,e){if(e)return e.x=t.x1,e.y=t.y1,e.width=t.x2-t.x1,e.height=t.y2-t.y1,e;return{x:t.x1,y:t.y1,width:t.x2-t.x1,height:t.y2-t.y1}},o:function(t,e){if(e)return e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height,e;return{x:t.x,y:t.y,width:t.width,height:t.height}},q:function(t,e){var r=t>>>24,i=t>>>16&255,n=t>>>8&255,s=Math.trunc((255&t)*e);return(r<<24|i<<16|n<<8|s)>>>0},s:function(t,e,r){var i=Math.trunc(t>>>24),n=Math.trunc(t>>>16&255),s=Math.trunc(t>>>8&255),a=Math.trunc(255&t),o=Math.trunc(e>>>24),h=Math.trunc(e>>>16&255),u=Math.trunc(e>>>8&255),d=Math.trunc(255&e),c=Math.round(o*r+i*(1-r)),l=Math.round(h*r+n*(1-r)),f=Math.round(u*r+s*(1-r)),v=Math.round(d*r+a*(1-r));return(c<<24|l<<16|f<<8|v)>>>0},t:function(t,e){return t.x1<=e.x2&&t.y1<=e.y2&&t.x2>=e.x1&&t.y2>=e.y1}});class h{constructor(){n(this,"eventListeners",{})}on(t,e){var r=this.eventListeners[t];r||(r=[]),r.push(e),this.eventListeners[t]=r}off(t,e){var r=this.eventListeners[t];if(r)if(e){var i=r.indexOf(e);i>=0&&r.splice(i,1)}else delete this.eventListeners[t]}once(t,e){var r=(i,n)=>{this.off(t,r),e(i,n)};this.on(t,r)}emit(t,e){var r=this.eventListeners[t];r&&[...r].forEach((t=>{t(this,e)}))}removeAllListeners(){this.eventListeners={}}}e("E",h);class u{static makeCacheKey(t){return!1}static resolveDefaults(t){return{}}}function d(t,e,r){var i=t.createShader(e);if(!i)throw new Error;if(t.shaderSource(i,r),t.compileShader(i),t.getShaderParameter(i,t.COMPILE_STATUS))return i;console.log(t.getShaderInfoLog(i)),t.deleteShader(i)}class c extends u{constructor(t){super(),n(this,"boundBufferCollection",null),n(this,"buffersBound",!1),n(this,"program",void 0),n(this,"vao",void 0),n(this,"renderer",void 0),n(this,"glw",void 0),n(this,"attributeBuffers",void 0),n(this,"attributeLocations",void 0),n(this,"attributeNames",void 0),n(this,"uniformLocations",void 0),n(this,"uniformTypes",void 0),n(this,"supportsIndexedTextures",void 0);var e=this.renderer=t.renderer,r=this.glw=this.renderer.glw;this.supportsIndexedTextures=t.supportsIndexedTextures||!1;var i=r.isWebGl2(),s=i&&t.webgl2Extensions||!i&&t.webgl1Extensions||[],a=i?"2.0":"1.0";s.forEach((t=>{if(!r.getExtension(t))throw new Error(`Shader "${this.constructor.name}" requires extension "${t}" for WebGL ${a} but wasn't found`)}));var o=t.shaderSources||this.constructor.shaderSources;if(!o)throw new Error(`Shader "${this.constructor.name}" is missing shaderSources.`);i&&null!=o&&o.webGl2&&(o.fragment=o.webGl2.fragment,o.vertex=o.webGl2.vertex,delete o.webGl2);var h=e.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS,u=o.vertex instanceof Function?o.vertex(h):o.vertex,c=o.fragment instanceof Function?o.fragment(h):o.fragment,l=d(r,r.VERTEX_SHADER,u),f=d(r,r.FRAGMENT_SHADER,c);if(!l||!f)throw new Error;var v=function(t,e,r){var i=t.createProgram();if(!i)throw new Error;if(t.attachShader(i,e),t.attachShader(i,r),t.linkProgram(i),t.getProgramParameter(i,t.LINK_STATUS))return i;console.log(t.getProgramInfoLog(i)),t.deleteProgram(i)}(r,l,f);if(!v)throw new Error;if(this.program=v,i){var g=r.createVertexArray();if(!g)throw new Error;this.vao=g,r.bindVertexArray(this.vao)}this.attributeLocations={},this.attributeBuffers={},this.attributeNames=[],[...t.attributes].forEach((t=>{var e=r.getAttribLocation(this.program,t);if(e<0)throw new Error(`${this.constructor.name}: Vertex shader must have an attribute "${t}"!`);var i=r.createBuffer();if(!i)throw new Error(`${this.constructor.name}: Could not create buffer for attribute "${t}"`);this.attributeLocations[t]=e,this.attributeBuffers[t]=i,this.attributeNames.push(t)})),this.uniformLocations={},this.uniformTypes={},t.uniforms.forEach((t=>{var e=r.getUniformLocation(this.program,t.name);this.uniformTypes[t.name]=t.uniform,e?this.uniformLocations[t.name]=e:console.warn(`Shader "${this.constructor.name}" could not get uniform location for "${t.name}"`)}))}bindBufferAttribute(t,e,r){var i=this.glw;i.enableVertexAttribArray(t),i.vertexAttribPointer(e,t,r.size,r.type,r.normalized,r.stride,r.offset)}disableAttribute(t){this.glw.disableVertexAttribArray(t)}disableAttributes(){for(var t in this.attributeLocations)this.disableAttribute(this.attributeLocations[t]);this.boundBufferCollection=null}canBatchShaderProps(t,e){return!1}bindRenderOp(t,e){this.bindBufferCollection(t.buffers),t.textures.length>0&&this.bindTextures(t.textures);var r=t.glw,i=t.parentHasRenderTexture;if(!t.renderToTexture||!i){if(i){var n=t.framebufferDimensions||{},s=n.width,o=n.height;this.setUniform("u_pixelRatio",1),this.setUniform("u_resolution",new Float32Array([null!=s?s:0,null!=o?o:0]))}else this.setUniform("u_pixelRatio",t.options.pixelRatio),this.setUniform("u_resolution",new Float32Array([r.canvas.width,r.canvas.height]));if(e){if(a(e,"$dimensions")){var h=e.$dimensions;h||(h=t.dimensions),this.setUniform("u_dimensions",[h.width,h.height])}if(a(e,"$alpha")){var u=e.$alpha;u||(u=t.alpha),this.setUniform("u_alpha",u)}this.bindProps(e)}}}setUniform(t,...e){this.glw.setUniform(this.uniformTypes[t],this.uniformLocations[t],...e)}bindBufferCollection(t){if(this.boundBufferCollection!==t){for(var e in this.attributeLocations){var r=t.getBuffer(e),i=t.getAttributeInfo(e);this.bindBufferAttribute(this.attributeLocations[e],r,i)}this.boundBufferCollection=t}}bindProps(t){}bindTextures(t){}attach(){this.glw.useProgram(this.program),this.glw.useProgram(this.program),this.glw.isWebGl2()&&this.vao&&this.glw.bindVertexArray(this.vao)}detach(){this.disableAttributes()}}n(c,"shaderSources",void 0),e("W",c);class l extends h{constructor(t){super(),n(this,"txManager",void 0),n(this,"dimensions",null),n(this,"error",null),n(this,"state","freed"),n(this,"renderableOwners",new Set),this.txManager=t}setRenderableOwner(t,e){e?this.renderableOwners.add(t):this.renderableOwners.delete(t)}get renderable(){return this.renderableOwners.size>0}setState(t,...e){if(this.state!==t){if(this.state=t,"loaded"===t){var r=e;this.dimensions=r[0]}else if("failed"===t){var i=e;this.error=i[0]}this.emit(t,...e)}}static makeCacheKey(t){return!1}static resolveDefaults(t){return{}}}e("j",l);var f=e("b",(t=>[(t>>>24)/255,(t>>>16&255)/255,(t>>>8&255)/255,(255&t)/255]));function v(t,e,r,i,n){return n?(n.x1=t,n.y1=e,n.x2=r,n.y2=i,n):{x1:t,y1:e,x2:r,y2:i}}class g extends h{constructor(t,e){super(),n(this,"fontFamily",void 0),n(this,"descriptors",void 0),n(this,"loaded",!1),this.fontFamily=t,this.descriptors=function(t){for(var e=1;ee===t));if(-1!==i)return i;var n=e.length;return n>=r?4294967295:(this.textures.push(t),n)}draw(){var t=this.glw,e=this.shader,r=this.shaderProps,i=this.options;i.shManager.useShader(e),e.bindRenderOp(this,r);var n=this.bufferIdx/24*6*2;if(this.clippingRect.valid){var s=this.clippingRect,a=s.x,o=s.y,h=s.width,u=s.height,d=i.pixelRatio,c=i.canvas.height,l=Math.round(a*d),f=Math.round(h*d),v=Math.round(u*d),g=Math.round(c-v-o*d);t.setScissorTest(!0),t.scissor(l,g,f,v)}else t.setScissorTest(!1);t.drawElements(t.TRIANGLES,6*this.numQuads,t.UNSIGNED_SHORT,n)}}function _(t){var e={MAX_RENDERBUFFER_SIZE:0,MAX_TEXTURE_SIZE:0,MAX_VIEWPORT_DIMS:0,MAX_VERTEX_TEXTURE_IMAGE_UNITS:0,MAX_TEXTURE_IMAGE_UNITS:0,MAX_COMBINED_TEXTURE_IMAGE_UNITS:0,MAX_VERTEX_ATTRIBS:0,MAX_VARYING_VECTORS:0,MAX_VERTEX_UNIFORM_VECTORS:0,MAX_FRAGMENT_UNIFORM_VECTORS:0};return Object.keys(e).forEach((r=>{e[r]=t.getParameter(t[r])})),e}function m(t){var e={ANGLE_instanced_arrays:null,WEBGL_compressed_texture_s3tc:null,WEBGL_compressed_texture_astc:null,WEBGL_compressed_texture_etc:null,WEBGL_compressed_texture_etc1:null,WEBGL_compressed_texture_pvrtc:null,WEBKIT_WEBGL_compressed_texture_pvrtc:null,WEBGL_compressed_texture_s3tc_srgb:null,OES_vertex_array_object:null};return Object.keys(e).forEach((r=>{e[r]=t.getExtension(r)})),e}function R(t,e){var r,i,n=0;function s(){var s,a,o=r,h=arguments.length;t:for(;o;){if(o.args.length===arguments.length){for(a=0;at&&!(t&t-1),b=(t,e,r,i)=>{var n=3*t,s=3*(r-t)-n,a=1-n-s,o=3*e,h=3*(i-e)-o,u=1-o-h;return function(t){if(t>=1)return 1;if(t<=0)return 0;for(var e,r,i=.5,d=0;d<20;d++){if((r=t-i*(i*(i*a+s)+n))>-1e-8&&r<1e-8)return i*(i*(i*u+h)+o);if((e=i*(i*(3*a)+2*s)+n)>1e-10&&e<1e-10)break;i+=r/e}for(var c=0,l=1,f=0;f<20;f++){if((r=t-(i=.5*(c+l))*(i*(i*a+s)+n))>-1e-8&&r<1e-8)return i*(i*(i*u+h)+o);r<0?l=i:c=i}}};e("r",R((t=>{switch(t){case"linear":return function(t){return t};case"ease":return b(.25,.1,.25,1);case"ease-in":return b(.42,0,1,1);case"ease-out":return b(0,0,.58,1);case"ease-in-out":return b(.42,0,.58,1);case"ease-in-sine":case"ease-out-sine":return b(.12,0,.39,0);case"ease-in-out-sine":return b(.37,0,.63,1);case"ease-in-cubic":return b(.32,0,.67,0);case"ease-out-cubic":return b(.33,1,.68,1);case"ease-in-out-cubic":return b(.65,0,.35,1);case"ease-in-circ":return b(.55,0,1,.45);case"ease-out-circ":return b(0,.55,.45,1);case"ease-in-out-circ":return b(.85,0,.15,1);case"ease-in-back":return b(.36,0,.66,-.56);case"ease-out-back":return b(.34,1.56,.64,1);case"ease-in-out-back":return b(.68,-.6,.32,1.6);case"step-start":return function(){return 1};case"step-end":return function(t){return 1===t?1:0};default:var e="cubic-bezier(";if(t&&0===t.indexOf(e)){var r=t.substr(13,t.length-13-1).split(",");if(4!==r.length)return console.warn("Unknown timing function: "+t),function(t){return t};var i=parseFloat(r[0]||"0.42"),n=parseFloat(r[1]||"0"),s=parseFloat(r[2]||"1"),a=parseFloat(r[3]||"1");return isNaN(i)||isNaN(n)||isNaN(s)||isNaN(a)?(console.warn(" Unknown timing function: "+t),function(t){return t}):b(i,n,s,a)}return console.warn("Unknown timing function: "+t),function(t){return t}}})));Math.hypot||(Math.hypot=(...t)=>{for(var e=0,r=t.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var y=new Uint8Array([0,0,0,0]);class w extends p{constructor(t,e,r){super(e,r),n(this,"glw",void 0),n(this,"_nativeCtxTexture",null),n(this,"_state","freed"),n(this,"_w",0),n(this,"_h",0),this.glw=t}get ctxTexture(){return"freed"===this._state&&this.load(),this._nativeCtxTexture,this._nativeCtxTexture}get renderable(){return this.textureSource.renderable}get w(){return this._w}get h(){return this._h}load(){"loading"!==this._state&&"loaded"!==this._state&&(this._state="loading",this.textureSource.setState("loading"),this._nativeCtxTexture=this.createNativeCtxTexture(),this.onLoadRequest().then((({width:t,height:e})=>{"freed"!==this._state&&(this._state="loaded",this._w=t,this._h=e,this.textureSource.setState("loaded",{width:t,height:e}))})).catch((t=>{this._state="failed",this.textureSource.setState("failed",t),console.error(t)})))}onLoadRequest(){var e=this;return r(t().mark((function r(){var i,n,s,a,o,h,u,d,c,l,f,v,g,p,E,T,x;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.glw,s=e.memManager,n.texImage2D(0,n.RGBA,1,1,0,n.RGBA,n.UNSIGNED_BYTE,null),s.setTextureMemUse(e,y.byteLength),t.next=5,null===(i=e.textureSource)||void 0===i?void 0:i.getTextureData();case 5:if(a=t.sent,e._nativeCtxTexture){t.next=9;break}return e._state,t.abrupt("return",{width:0,height:0});case 9:return o=0,h=0,e._nativeCtxTexture,n.activeTexture(0),a.data instanceof ImageBitmap||a.data instanceof ImageData||null!==(r=a.data)&&"object"==typeof r&&r.constructor&&"HTMLImageElement"===r.constructor.name?(u=a.data,o=u.width,h=u.height,n.bindTexture(e._nativeCtxTexture),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!!a.premultiplyAlpha),n.texImage2D(0,n.RGBA,n.RGBA,n.UNSIGNED_BYTE,u),s.setTextureMemUse(e,o*h*4),(n.isWebGl2()||A(o)&&A(h))&&n.generateMipmap()):null===a.data?(o=0,h=0,n.bindTexture(e._nativeCtxTexture),n.texImage2D(0,n.RGBA,1,1,0,n.RGBA,n.UNSIGNED_BYTE,y),s.setTextureMemUse(e,y.byteLength)):"mipmaps"in a.data&&a.data.mipmaps?(c=a.data,l=c.mipmaps,f=c.width,v=void 0===f?0:f,g=c.height,p=void 0===g?0:g,E=c.type,T=c.glInternalFormat,x="ktx"===E?new DataView(null!==(d=l[0])&&void 0!==d?d:new ArrayBuffer(0)):l[0],n.bindTexture(e._nativeCtxTexture),n.compressedTexImage2D(0,T,v,p,0,x),n.texParameteri(n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_MAG_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_MIN_FILTER,n.LINEAR),s.setTextureMemUse(e,x.byteLength)):console.error("WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned",a),t.abrupt("return",{width:o,height:h});case 15:case"end":return t.stop()}var r}),r)})))()}free(){if("freed"!==this._state&&(this._state="freed",this.textureSource.setState("freed"),this._w=0,this._h=0,this._nativeCtxTexture)){var t=this.glw,e=this.memManager;t.deleteTexture(this._nativeCtxTexture),e.setTextureMemUse(this,0),this._nativeCtxTexture=null}}createNativeCtxTexture(){var t=this.glw,e=t.createTexture();if(!e)throw new Error("Could not create WebGL Texture");return t.activeTexture(0),t.bindTexture(e),t.texParameteri(t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e}}class S extends l{constructor(t,e){super(t),n(this,"props",void 0),this.props=S.resolveDefaults(e||{})}get color(){return this.props.color}set color(t){this.props.color=t}getTextureData(){var e=this;return r(t().mark((function r(){var i,n;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=new Uint32Array([e.color]),n=new Uint8ClampedArray(i.buffer),t.abrupt("return",{data:new ImageData(n,1,1),premultiplyAlpha:!0});case 3:case"end":return t.stop()}}),r)})))()}static makeCacheKey(t){return`ColorTexture,${S.resolveDefaults(t).color}`}static resolveDefaults(t){return{color:t.color||4294967295}}}n(S,"z$__type__Props",void 0),e("u",S);class M extends l{constructor(t,e){super(t),n(this,"props",void 0),n(this,"parentTexture",void 0),n(this,"onParentTxLoaded",(()=>{this.setState("loaded",{width:this.props.width,height:this.props.height})})),n(this,"onParentTxFailed",((t,e)=>{this.setState("failed",e)})),this.parentTexture=this.txManager.loadTexture(e.texture.txType,e.texture.props,e.texture.options),this.props=M.resolveDefaults(e||{}),queueMicrotask((()=>{var t=this.parentTexture;"loaded"===t.state?this.onParentTxLoaded(t,t.dimensions):"failed"===t.state&&this.onParentTxFailed(t,t.error),t.on("loaded",this.onParentTxLoaded),t.on("failed",this.onParentTxFailed)}))}getTextureData(){var e=this;return r(t().mark((function r(){return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",{data:e.props});case 1:case"end":return t.stop()}}),r)})))()}static makeCacheKey(t){return!1}static resolveDefaults(t){return{texture:t.texture,x:t.x||0,y:t.y||0,width:t.width||0,height:t.height||0}}}n(M,"z$__type__Props",void 0),e("v",M);class I extends w{constructor(t,e,r){super(t,e,r)}onLoadRequest(){var e=this;return r(t().mark((function r(){var i,n,s;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.textureSource.getTextureData();case 2:return s=t.sent,t.abrupt("return",{width:(null===(i=s.data)||void 0===i?void 0:i.width)||0,height:(null===(n=s.data)||void 0===n?void 0:n.height)||0});case 4:case"end":return t.stop()}}),r)})))()}}class L{constructor(t){n(this,"config",void 0),this.config=t}getBuffer(t){var e;return null===(e=this.config.find((e=>e.attributes[t])))||void 0===e?void 0:e.buffer}getAttributeInfo(t){var e;return null===(e=this.config.find((e=>e.attributes[t])))||void 0===e?void 0:e.attributes[t]}}e("B",L);class N{constructor(t){n(this,"gl",void 0),n(this,"activeTextureUnit",0),n(this,"texture2dUnits",void 0),n(this,"texture2dParams",new WeakMap),n(this,"scissorEnabled",void 0),n(this,"scissorX",void 0),n(this,"scissorY",void 0),n(this,"scissorWidth",void 0),n(this,"scissorHeight",void 0),n(this,"blendEnabled",void 0),n(this,"blendSrcRgb",void 0),n(this,"blendDstRgb",void 0),n(this,"blendSrcAlpha",void 0),n(this,"blendDstAlpha",void 0),n(this,"boundArrayBuffer",void 0),n(this,"boundElementArrayBuffer",void 0),n(this,"curProgram",void 0),n(this,"programUniforms",new WeakMap),n(this,"canvas",void 0),n(this,"MAX_RENDERBUFFER_SIZE",void 0),n(this,"MAX_TEXTURE_SIZE",void 0),n(this,"MAX_VIEWPORT_DIMS",void 0),n(this,"MAX_VERTEX_TEXTURE_IMAGE_UNITS",void 0),n(this,"MAX_TEXTURE_IMAGE_UNITS",void 0),n(this,"MAX_COMBINED_TEXTURE_IMAGE_UNITS",void 0),n(this,"MAX_VERTEX_ATTRIBS",void 0),n(this,"MAX_VARYING_VECTORS",void 0),n(this,"MAX_VERTEX_UNIFORM_VECTORS",void 0),n(this,"MAX_FRAGMENT_UNIFORM_VECTORS",void 0),n(this,"TEXTURE_MAG_FILTER",void 0),n(this,"TEXTURE_MIN_FILTER",void 0),n(this,"TEXTURE_WRAP_S",void 0),n(this,"TEXTURE_WRAP_T",void 0),n(this,"LINEAR",void 0),n(this,"CLAMP_TO_EDGE",void 0),n(this,"RGBA",void 0),n(this,"UNSIGNED_BYTE",void 0),n(this,"UNPACK_PREMULTIPLY_ALPHA_WEBGL",void 0),n(this,"UNPACK_FLIP_Y_WEBGL",void 0),n(this,"FLOAT",void 0),n(this,"TRIANGLES",void 0),n(this,"UNSIGNED_SHORT",void 0),n(this,"ONE",void 0),n(this,"ONE_MINUS_SRC_ALPHA",void 0),n(this,"VERTEX_SHADER",void 0),n(this,"FRAGMENT_SHADER",void 0),n(this,"STATIC_DRAW",void 0),n(this,"COMPILE_STATUS",void 0),n(this,"LINK_STATUS",void 0),n(this,"DYNAMIC_DRAW",void 0),n(this,"COLOR_ATTACHMENT0",void 0),this.gl=t,this.activeTextureUnit=t.getParameter(t.ACTIVE_TEXTURE)-t.TEXTURE0;var e=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS);this.texture2dUnits=new Array(e).fill(void 0).map(((e,r)=>(this.activeTexture(r),t.getParameter(t.TEXTURE_BINDING_2D)))),this.activeTexture(this.activeTextureUnit),this.scissorEnabled=t.isEnabled(t.SCISSOR_TEST);var r=t.getParameter(t.SCISSOR_BOX);this.scissorX=r[0],this.scissorY=r[1],this.scissorWidth=r[2],this.scissorHeight=r[3],this.blendEnabled=t.isEnabled(t.BLEND),this.blendSrcRgb=t.getParameter(t.BLEND_SRC_RGB),this.blendDstRgb=t.getParameter(t.BLEND_DST_RGB),this.blendSrcAlpha=t.getParameter(t.BLEND_SRC_ALPHA),this.blendDstAlpha=t.getParameter(t.BLEND_DST_ALPHA),this.boundArrayBuffer=t.getParameter(t.ARRAY_BUFFER_BINDING),this.boundElementArrayBuffer=t.getParameter(t.ELEMENT_ARRAY_BUFFER_BINDING),this.curProgram=t.getParameter(t.CURRENT_PROGRAM),this.canvas=t.canvas,this.MAX_RENDERBUFFER_SIZE=t.MAX_RENDERBUFFER_SIZE,this.MAX_TEXTURE_SIZE=t.MAX_TEXTURE_SIZE,this.MAX_VIEWPORT_DIMS=t.MAX_VIEWPORT_DIMS,this.MAX_VERTEX_TEXTURE_IMAGE_UNITS=t.MAX_VERTEX_TEXTURE_IMAGE_UNITS,this.MAX_TEXTURE_IMAGE_UNITS=t.MAX_TEXTURE_IMAGE_UNITS,this.MAX_COMBINED_TEXTURE_IMAGE_UNITS=t.MAX_COMBINED_TEXTURE_IMAGE_UNITS,this.MAX_VERTEX_ATTRIBS=t.MAX_VERTEX_ATTRIBS,this.MAX_VARYING_VECTORS=t.MAX_VARYING_VECTORS,this.MAX_VERTEX_UNIFORM_VECTORS=t.MAX_VERTEX_UNIFORM_VECTORS,this.MAX_FRAGMENT_UNIFORM_VECTORS=t.MAX_FRAGMENT_UNIFORM_VECTORS,this.TEXTURE_MAG_FILTER=t.TEXTURE_MAG_FILTER,this.TEXTURE_MIN_FILTER=t.TEXTURE_MIN_FILTER,this.TEXTURE_WRAP_S=t.TEXTURE_WRAP_S,this.TEXTURE_WRAP_T=t.TEXTURE_WRAP_T,this.LINEAR=t.LINEAR,this.CLAMP_TO_EDGE=t.CLAMP_TO_EDGE,this.RGBA=t.RGBA,this.UNSIGNED_BYTE=t.UNSIGNED_BYTE,this.UNPACK_PREMULTIPLY_ALPHA_WEBGL=t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this.UNPACK_FLIP_Y_WEBGL=t.UNPACK_FLIP_Y_WEBGL,this.FLOAT=t.FLOAT,this.TRIANGLES=t.TRIANGLES,this.UNSIGNED_SHORT=t.UNSIGNED_SHORT,this.ONE=t.ONE,this.ONE_MINUS_SRC_ALPHA=t.ONE_MINUS_SRC_ALPHA,this.MAX_VERTEX_TEXTURE_IMAGE_UNITS=t.MAX_VERTEX_TEXTURE_IMAGE_UNITS,this.TRIANGLES=t.TRIANGLES,this.UNSIGNED_SHORT=t.UNSIGNED_SHORT,this.VERTEX_SHADER=t.VERTEX_SHADER,this.FRAGMENT_SHADER=t.FRAGMENT_SHADER,this.STATIC_DRAW=t.STATIC_DRAW,this.COMPILE_STATUS=t.COMPILE_STATUS,this.LINK_STATUS=t.LINK_STATUS,this.DYNAMIC_DRAW=t.DYNAMIC_DRAW,this.COLOR_ATTACHMENT0=t.COLOR_ATTACHMENT0}isWebGl2(){return t=this.gl,self.WebGL2RenderingContext&&t instanceof self.WebGL2RenderingContext;var t}activeTexture(t){var e=this.gl;this.activeTextureUnit!==t&&(e.activeTexture(t+e.TEXTURE0),this.activeTextureUnit=t)}bindTexture(t){var e=this.gl,r=this.activeTextureUnit,i=this.texture2dUnits;i[r]!==t&&(i[r]=t,e.bindTexture(this.gl.TEXTURE_2D,t))}_getActiveTexture(){var t=this.activeTextureUnit;return this.texture2dUnits[t]}texParameteri(t,e){var r=this.gl,i=this.texture2dParams,n=this._getActiveTexture();if(!n)throw new Error("No active texture");var s=i.get(n);s||(s={},i.set(n,s)),s[t]!==e&&(s[t]=e,r.texParameteri(r.TEXTURE_2D,t,e))}texImage2D(t,e,r,i,n,s,a,o){var h=this.gl;s?h.texImage2D(h.TEXTURE_2D,t,e,r,i,n,s,a,o):h.texImage2D(h.TEXTURE_2D,t,e,r,i,n)}compressedTexImage2D(t,e,r,i,n,s){var a=this.gl;a.compressedTexImage2D(a.TEXTURE_2D,t,e,r,i,n,s)}pixelStorei(t,e){this.gl.pixelStorei(t,e)}generateMipmap(){var t=this.gl;t.generateMipmap(t.TEXTURE_2D)}createTexture(){return this.gl.createTexture()}deleteTexture(t){var e=this.gl;t&&this.texture2dParams.delete(t),e.deleteTexture(t)}viewport(t,e,r,i){this.gl.viewport(t,e,r,i)}clearColor(t,e,r,i){this.gl.clearColor(t,e,r,i)}setScissorTest(t){var e=this.gl;t!==this.scissorEnabled&&(t?e.enable(e.SCISSOR_TEST):e.disable(e.SCISSOR_TEST),this.scissorEnabled=t)}scissor(t,e,r,i){var n=this.gl,s=this.scissorX,a=this.scissorY,o=this.scissorWidth,h=this.scissorHeight;t===s&&e===a&&r===o&&i===h||(n.scissor(t,e,r,i),this.scissorX=t,this.scissorY=e,this.scissorWidth=r,this.scissorHeight=i)}setBlend(t){var e=this.gl;t!==this.blendEnabled&&(t?e.enable(e.BLEND):e.disable(e.BLEND),this.blendEnabled=t)}blendFunc(t,e){var r=this.gl,i=this.blendSrcRgb,n=this.blendDstRgb,s=this.blendSrcAlpha,a=this.blendDstAlpha;t===i&&e===n&&t===s&&e===a||(r.blendFunc(t,e),this.blendSrcRgb=t,this.blendDstRgb=e,this.blendSrcAlpha=t,this.blendDstAlpha=e)}createBuffer(){return this.gl.createBuffer()}createFramebuffer(){return this.gl.createFramebuffer()}bindFramebuffer(t){var e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,t)}framebufferTexture2D(t,e,r){var i=this.gl;i.framebufferTexture2D(i.FRAMEBUFFER,t,i.TEXTURE_2D,e,r)}clear(){var t=this.gl;t.clear(t.COLOR_BUFFER_BIT)}arrayBufferData(t,e,r){var i=this.gl;this.boundArrayBuffer!==t&&(i.bindBuffer(i.ARRAY_BUFFER,t),this.boundArrayBuffer=t),i.bufferData(i.ARRAY_BUFFER,e,r)}elementArrayBufferData(t,e,r){var i=this.gl;this.boundElementArrayBuffer!==t&&(i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t),this.boundElementArrayBuffer=t),i.bufferData(i.ELEMENT_ARRAY_BUFFER,e,r)}vertexAttribPointer(t,e,r,i,n,s,a){var o=this.gl;this.boundArrayBuffer!==t&&(o.bindBuffer(o.ARRAY_BUFFER,t),this.boundArrayBuffer=t),o.vertexAttribPointer(e,r,i,n,s,a)}useProgram(t){var e=this.gl;this.curProgram!==t&&(e.useProgram(t),this.curProgram=t)}setUniform(t,e,...r){var i=this.gl,n=this.programUniforms,s=n.get(this.curProgram);s||(s=new Map,n.set(this.curProgram,s));var a=s.get(e);a&&function(t,e){if(t.length!==e.length)return!1;return t.every(((t,r)=>!(Array.isArray(t)||t instanceof Float32Array)&&t===e[r]))}(a,r)||(s.set(e,r),i[t](e,...r))}getParameter(t){return this.gl.getParameter(t)}drawElements(t,e,r,i){this.gl.drawElements(t,e,r,i)}getExtension(t){return this.gl.getExtension(t)}createVertexArray(){var t=this.gl;return WebGL2RenderingContext,t.createVertexArray()}bindVertexArray(t){var e=this.gl;WebGL2RenderingContext,e.bindVertexArray(t)}getAttribLocation(t,e){return this.gl.getAttribLocation(t,e)}getUniformLocation(t,e){return this.gl.getUniformLocation(t,e)}enableVertexAttribArray(t){this.gl.enableVertexAttribArray(t)}disableVertexAttribArray(t){this.gl.disableVertexAttribArray(t)}createShader(t){return this.gl.createShader(t)}compileShader(t){this.gl.compileShader(t)}attachShader(t,e){this.gl.attachShader(t,e)}linkProgram(t){this.gl.linkProgram(t)}deleteProgram(t){this.gl.deleteProgram(t)}getShaderParameter(t,e){return this.gl.getShaderParameter(t,e)}getShaderInfoLog(t){return this.gl.getShaderInfoLog(t)}createProgram(){return this.gl.createProgram()}getProgramParameter(t,e){return this.gl.getProgramParameter(t,e)}getProgramInfoLog(t){return this.gl.getProgramInfoLog(t)}shaderSource(t,e){this.gl.shaderSource(t,e)}deleteShader(t){this.gl.deleteShader(t)}}class U extends l{constructor(t,e){super(t),n(this,"props",void 0),this.props=U.resolveDefaults(e||{})}get width(){return this.props.width}set width(t){this.props.width=t}get height(){return this.props.height}set height(t){this.props.height=t}getTextureData(){return r(t().mark((function e(){return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",{data:null,premultiplyAlpha:null});case 1:case"end":return t.stop()}}),e)})))()}static resolveDefaults(t){return{width:t.width||256,height:t.height||256}}}n(U,"z$__type__Props",void 0),e("R",U);class P extends w{constructor(t,e,r){super(t,e,r),n(this,"framebuffer",void 0);var i=t.createFramebuffer();this.framebuffer=i}onLoadRequest(){var e=this;return r(t().mark((function r(){var i,n,s,a,o,h;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=e.glw,n=e.memManager,s=e._nativeCtxTexture=e.createNativeCtxTexture(),a=e.textureSource,o=a.width,h=a.height,i.texImage2D(0,i.RGBA,o,h,0,i.RGBA,i.UNSIGNED_BYTE,null),n.setTextureMemUse(e,o*h*4),i.bindFramebuffer(e.framebuffer),i.framebufferTexture2D(i.COLOR_ATTACHMENT0,s,0),i.bindFramebuffer(null),t.abrupt("return",{width:o,height:h});case 9:case"end":return t.stop()}}),r)})))()}}class O extends E{constructor(t){super(t.stage),n(this,"glw",void 0),n(this,"system",void 0),n(this,"txManager",void 0),n(this,"txMemManager",void 0),n(this,"shManager",void 0),n(this,"options",void 0),n(this,"quadBuffer",new ArrayBuffer(4194304)),n(this,"fQuadBuffer",new Float32Array(this.quadBuffer)),n(this,"uiQuadBuffer",new Uint32Array(this.quadBuffer)),n(this,"renderOps",[]),n(this,"curBufferIdx",0),n(this,"curRenderOp",null),n(this,"rttNodes",[]),n(this,"activeRttNode",null),n(this,"defaultShader",void 0),n(this,"quadBufferCollection",void 0),n(this,"defaultTexture",void 0),n(this,"renderToTextureActive",!1);var e=t.canvas,r=t.clearColor,i=t.bufferMemory;this.options=t,this.txManager=t.txManager,this.txMemManager=t.txMemManager,this.shManager=t.shManager,this.defaultTexture=new S(this.txManager),this.defaultTexture.once("loaded",(()=>{this.stage.requestRender()}));var s=function(t,e){var r={alpha:!0,antialias:!1,depth:!1,stencil:!0,desynchronized:!1,powerPreference:"high-performance",premultipliedAlpha:!0,preserveDrawingBuffer:!1},i=t.getContext("webgl",r)||t.getContext("experimental-webgl",r);if(!i)throw new Error("Unable to create WebGL context");return e?new Proxy(i,{get(t,r){var i=t[r];return"function"==typeof i?(e.increment(String(r)),i.bind(t)):i}}):i}(e,t.contextSpy),a=this.glw=new N(s),o=f(r);a.viewport(0,0,e.width,e.height),a.clearColor(o[0],o[1],o[2],o[3]),a.setBlend(!0),a.blendFunc(a.ONE,a.ONE_MINUS_SRC_ALPHA),function(t,e){for(var r=~~(e/80),i=new Uint16Array(6*r),n=0,s=0;n{t.draw()}))}renderToTexture(t){for(var e=0;e{var e=t.second;(r[e]=r[e]||{})[t.first]=t.amount})),this.kernings=r}shapeText(e,r){var i=this;return t().mark((function n(){var s,a,o,h,u,d;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:a=void 0;case 1:if(!(s=r.peek())||s.done){t.next=17;break}if(o=s.value,h=i.glyphMap.get(o),r.next(),void 0===h){t.next=12;break}return d=void 0!==a?((null===(u=i.kernings[h.id])||void 0===u?void 0:u[a])||0)+e.letterSpacing:0,a=h.id,t.next=10,{mapped:!0,glyphId:h.id,codepoint:o,cluster:r.lastIndex,xAdvance:h.xadvance+d,yAdvance:0,xOffset:h.xoffset+d,yOffset:h.yoffset,xBearing:0,yBearing:0,width:h.width,height:h.height};case 10:t.next=15;break;case 12:return o===B&&(a=void 0),t.next=15,{mapped:!1,codepoint:o,cluster:r.lastIndex};case 15:t.next=1;break;case 17:case"end":return t.stop()}}),n)}))()}}e("S",class extends g{constructor(e,i,s,a,o,h){var u;super(e,i),u=this,n(this,"type",void 0),n(this,"texture",void 0),n(this,"maxCharHeight",0),n(this,"data",void 0),n(this,"shaper",void 0),n(this,"glyphMap",new Map),this.type=s;a.renderer;this.texture=a.txManager.loadTexture("ImageTexture",{src:o,premultiplyAlpha:!1},{preload:!0}),this.texture.on("loaded",(()=>{this.checkLoaded()})),fetch(h).then(function(){var e=r(t().mark((function e(r){var i;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r.json();case 2:u.data=t.sent,i=0,u.data.chars.forEach((t=>{u.glyphMap.set(t.id,t);var e=t.yoffset+t.height;e>i&&(i=e)})),u.maxCharHeight=i,u.shaper=new X(u.data,u.glyphMap),u.checkLoaded();case 8:case"end":return t.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch(console.error)}getAtlasEntry(t){var e=this.glyphMap.get(t);if(void 0===e)throw new Error(`Glyph ${t} not found in font ${this.fontFamily}`);return{x:e.x,y:e.y,width:e.width,height:e.height}}checkLoaded(){this.loaded||"loaded"===this.texture.state&&this.data&&(this.loaded=!0,this.emit("loaded"))}});e("C",class{})}}}))}(); -//# sourceMappingURL=CoreExtension-legacy-1r1p_2oI.js.map diff --git a/assets/CoreExtension-legacy-1r1p_2oI.js.map b/assets/CoreExtension-legacy-1r1p_2oI.js.map deleted file mode 100644 index acc912c..0000000 --- a/assets/CoreExtension-legacy-1r1p_2oI.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CoreExtension-legacy-1r1p_2oI.js","sources":["../../../../../renderer/dist/src/utils.js","../../../../../renderer/dist/src/core/lib/utils.js","../../../../../renderer/dist/src/common/EventEmitter.js","../../../../../renderer/dist/src/core/renderers/CoreShader.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/ShaderUtils.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreShader.js","../../../../../renderer/dist/src/core/textures/Texture.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/TrFontFace.js","../../../../../renderer/dist/src/core/renderers/CoreContextTexture.js","../../../../../renderer/dist/src/core/renderers/CoreRenderer.js","../../../../../renderer/dist/src/core/renderers/CoreRenderOp.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/RendererUtils.js","../../../../../renderer/node_modules/.pnpm/memize@2.1.0/node_modules/memize/dist/index.js","../../../../../renderer/dist/src/core/utils.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js","../../../../../renderer/dist/src/core/textures/ColorTexture.js","../../../../../renderer/dist/src/core/textures/SubTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/BufferCollection.js","../../../../../renderer/dist/src/core/lib/WebGlContextWrapper.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/WebGlUtils.js","../../../../../renderer/dist/src/core/textures/RenderTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreRenderer.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js","../../../../../renderer/dist/src/core/CoreExtension.js"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function createWebGLContext(canvas, contextSpy) {\n const config = {\n alpha: true,\n antialias: false,\n depth: false,\n stencil: true,\n desynchronized: false,\n // Disabled because it prevents Visual Regression Tests from working\n // failIfMajorPerformanceCaveat: true,\n powerPreference: 'high-performance',\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n };\n const gl = \n // TODO: Remove this assertion once this issue is fixed in TypeScript\n // https://github.com/microsoft/TypeScript/issues/53614\n (canvas.getContext('webgl', config) ||\n canvas.getContext('experimental-webgl', config));\n if (!gl) {\n throw new Error('Unable to create WebGL context');\n }\n if (contextSpy) {\n // Proxy the GL context to log all GL calls\n return new Proxy(gl, {\n get(target, prop) {\n const value = target[prop];\n if (typeof value === 'function') {\n contextSpy.increment(String(prop));\n return value.bind(target);\n }\n return value;\n },\n });\n }\n return gl;\n}\n/**\n * Asserts a condition is truthy, otherwise throws an error\n *\n * @remarks\n * Useful at the top of functions to ensure certain conditions, arguments and\n * properties are set/met before continuing. When using this function,\n * TypeScript will narrow away falsy types from the condition.\n *\n * @param condition\n * @param message\n * @returns\n */\nexport function assertTruthy(condition, message) {\n if (isProductionEnvironment())\n return;\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n/**\n * Merges two colors based on a given progress value.\n *\n * This function takes two colors (c1 and c2) represented as 32-bit integers\n * in RGBA format and blends them based on the provided progress value (p).\n * The result is a new color that is a weighted combination of the input colors,\n * where the weight is determined by the progress value.\n *\n * @param {number} c1 - The first color in RGBA format (32-bit integer).\n * @param {number} c2 - The second color in RGBA format (32-bit integer).\n * @param {number} p - The progress value between 0 and 1.\n * @returns {number} The merged color as a 32-bit integer in RGBA format.\n */\nexport function mergeColorProgress(rgba1, rgba2, p) {\n const r1 = Math.trunc(rgba1 >>> 24);\n const g1 = Math.trunc((rgba1 >>> 16) & 0xff);\n const b1 = Math.trunc((rgba1 >>> 8) & 0xff);\n const a1 = Math.trunc(rgba1 & 0xff);\n const r2 = Math.trunc(rgba2 >>> 24);\n const g2 = Math.trunc((rgba2 >>> 16) & 0xff);\n const b2 = Math.trunc((rgba2 >>> 8) & 0xff);\n const a2 = Math.trunc(rgba2 & 0xff);\n const r = Math.round(r2 * p + r1 * (1 - p));\n const g = Math.round(g2 * p + g1 * (1 - p));\n const b = Math.round(b2 * p + b1 * (1 - p));\n const a = Math.round(a2 * p + a1 * (1 - p));\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Given an RGBA encoded number, returns back the RGBA number with it's alpha\n * component multiplied by the passed `alpha` parameter.\n *\n * @internalRemarks\n * This method does NOT premultiply the alpha into the color channels. If that\n * is required (for internal use only) use {@link mergeColorAlphaPremultiplied}\n * instead.\n *\n * @param rgba RGBA encoded number\n * @param alpha Normalized alpha value (Range: 0.0 - 1.0)\n * @returns\n */\nexport function mergeColorAlpha(rgba, alpha) {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = Math.trunc((rgba & 0xff) * alpha);\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Given an RGBA encoded number, returns back the RGBA number with it's alpha\n * component multiplied by the passed `alpha` parameter. Before returning, the\n * final alpha value is multiplied into the color channels.\n *\n * @remarks\n * If `flipEndianess` is set to true, the function will returned an ABGR encoded number\n * which is useful when the color value needs to be passed into a shader attribute.\n *\n * NOTE: This method returns a PREMULTIPLIED alpha color which is generally only useful\n * in the context of the internal rendering process. Use {@link mergeColorAlpha} if you\n * need to blend an alpha value into a color in the context of the Renderer's\n * main API.\n *\n * @internalRemarks\n * Do not expose this method in the main API because Renderer users should instead use\n * {@link mergeColorAlpha} to manipulate the alpha value of a color.\n *\n * @internal\n * @param rgba RGBA encoded number\n * @param alpha Normalized alpha value (Range: 0.0 - 1.0)\n * @param flipEndianess Flip the endianess. RGBA becomes encoded as ABGR (for inserting colors into shader attributes)\n * @returns\n */\nexport function mergeColorAlphaPremultiplied(rgba, alpha, flipEndianess = false) {\n const newAlpha = ((rgba & 0xff) / 255) * alpha;\n const r = Math.trunc((rgba >>> 24) * newAlpha);\n const g = Math.trunc(((rgba >>> 16) & 0xff) * newAlpha);\n const b = Math.trunc(((rgba >>> 8) & 0xff) * newAlpha);\n const a = Math.trunc(newAlpha * 255);\n if (flipEndianess) {\n return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0;\n }\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Returns true if the given object has the given \"own\" property.\n *\n * @param obj\n * @param prop\n * @returns\n */\nexport function hasOwn(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n/**\n * Converts degrees to radians\n *\n * @param degrees\n * @returns\n */\nexport function deg2Rad(degrees) {\n return (degrees * Math.PI) / 180;\n}\n/**\n * Returns image aspect ratio\n *\n * @param width\n * @param height\n * @returns\n */\nexport function getImageAspectRatio(width, height) {\n return width / height;\n}\n/**\n * Checks import.meta if env is production\n *\n * @returns\n */\nexport function isProductionEnvironment() {\n return import.meta.env && import.meta.env.PROD;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const getNormalizedRgbaComponents = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n return [r / 255, g / 255, b / 255, a / 255];\n};\nexport const getRgbaComponents = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n return [r, g, b, a];\n};\nexport const norm = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n const rgbaArr = [r / 255, g / 255, b / 255, a / 255];\n rgbaArr[0] = Math.max(0, Math.min(255, rgbaArr[0]));\n rgbaArr[1] = Math.max(0, Math.min(255, rgbaArr[1]));\n rgbaArr[2] = Math.max(0, Math.min(255, rgbaArr[2]));\n rgbaArr[3] = Math.max(0, Math.min(255, rgbaArr[3]));\n let v = ((rgbaArr[3] | 0) << 24) +\n ((rgbaArr[0] | 0) << 16) +\n ((rgbaArr[1] | 0) << 8) +\n (rgbaArr[2] | 0);\n if (v < 0) {\n v = 0xffffffff + v + 1;\n }\n return v;\n};\nexport function getNormalizedAlphaComponent(rgba) {\n return (rgba & 0xff) / 255.0;\n}\n/**\n * Get a CSS color string from a RGBA color\n *\n * @param color\n * @returns\n */\nexport function getRgbaString(color) {\n const r = Math.floor(color[0] * 255.0);\n const g = Math.floor(color[1] * 255.0);\n const b = Math.floor(color[2] * 255.0);\n const a = Math.floor(color[3] * 255.0);\n return `rgba(${r},${g},${b},${a.toFixed(4)})`;\n}\nexport function createBound(x1, y1, x2, y2, out) {\n if (out) {\n out.x1 = x1;\n out.y1 = y1;\n out.x2 = x2;\n out.y2 = y2;\n return out;\n }\n return {\n x1,\n y1,\n x2,\n y2,\n };\n}\nexport function intersectBound(a, b, out) {\n const intersection = createBound(Math.max(a.x1, b.x1), Math.max(a.y1, b.y1), Math.min(a.x2, b.x2), Math.min(a.y2, b.y2), out);\n if (intersection.x1 < intersection.x2 && intersection.y1 < intersection.y2) {\n return intersection;\n }\n return createBound(0, 0, 0, 0, intersection);\n}\nexport function boundsOverlap(a, b) {\n return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1;\n}\nexport function convertBoundToRect(bound, out) {\n if (out) {\n out.x = bound.x1;\n out.y = bound.y1;\n out.width = bound.x2 - bound.x1;\n out.height = bound.y2 - bound.y1;\n return out;\n }\n return {\n x: bound.x1,\n y: bound.y1,\n width: bound.x2 - bound.x1,\n height: bound.y2 - bound.y1,\n };\n}\nexport function intersectRect(a, b, out) {\n const x = Math.max(a.x, b.x);\n const y = Math.max(a.y, b.y);\n const width = Math.min(a.x + a.width, b.x + b.width) - x;\n const height = Math.min(a.y + a.height, b.y + b.height) - y;\n if (width > 0 && height > 0) {\n if (out) {\n out.x = x;\n out.y = y;\n out.width = width;\n out.height = height;\n return out;\n }\n return {\n x,\n y,\n width,\n height,\n };\n }\n if (out) {\n out.x = 0;\n out.y = 0;\n out.width = 0;\n out.height = 0;\n return out;\n }\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n}\nexport function copyRect(a, out) {\n if (out) {\n out.x = a.x;\n out.y = a.y;\n out.width = a.width;\n out.height = a.height;\n return out;\n }\n return {\n x: a.x,\n y: a.y,\n width: a.width,\n height: a.height,\n };\n}\nexport function compareRect(a, b) {\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return false;\n }\n return (a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height);\n}\nexport function boundInsideBound(bound1, bound2) {\n return (bound1.x1 <= bound2.x2 &&\n bound1.y1 <= bound2.y2 &&\n bound1.x2 >= bound2.x1 &&\n bound1.y2 >= bound2.y1);\n}\nexport function isBoundPositive(bound) {\n return bound.x1 < bound.x2 && bound.y1 < bound.y2;\n}\nexport function isRectPositive(rect) {\n return rect.width > 0 && rect.height > 0;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * EventEmitter base class\n */\nexport class EventEmitter {\n eventListeners = {};\n on(event, listener) {\n let listeners = this.eventListeners[event];\n if (!listeners) {\n listeners = [];\n }\n listeners.push(listener);\n this.eventListeners[event] = listeners;\n }\n off(event, listener) {\n const listeners = this.eventListeners[event];\n if (!listeners) {\n return;\n }\n if (!listener) {\n delete this.eventListeners[event];\n return;\n }\n const index = listeners.indexOf(listener);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n }\n once(event, listener) {\n const onceListener = (target, data) => {\n this.off(event, onceListener);\n listener(target, data);\n };\n this.on(event, onceListener);\n }\n emit(event, data) {\n const listeners = this.eventListeners[event];\n if (!listeners) {\n return;\n }\n [...listeners].forEach((listener) => {\n listener(this, data);\n });\n }\n removeAllListeners() {\n this.eventListeners = {};\n }\n}\n//# sourceMappingURL=EventEmitter.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreShader {\n // abstract draw(): void;\n static makeCacheKey(props) {\n return false;\n }\n static resolveDefaults(props) {\n return {};\n }\n}\n//# sourceMappingURL=CoreShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion Types\nexport function createShader(glw, type, source) {\n const shader = glw.createShader(type);\n if (!shader) {\n throw new Error();\n }\n glw.shaderSource(shader, source);\n glw.compileShader(shader);\n const success = glw.getShaderParameter(shader, glw.COMPILE_STATUS);\n if (success) {\n return shader;\n }\n console.log(glw.getShaderInfoLog(shader));\n glw.deleteShader(shader);\n}\nexport function createProgram(glw, vertexShader, fragmentShader) {\n const program = glw.createProgram();\n if (!program) {\n throw new Error();\n }\n glw.attachShader(program, vertexShader);\n glw.attachShader(program, fragmentShader);\n glw.linkProgram(program);\n const success = glw.getProgramParameter(program, glw.LINK_STATUS);\n if (success) {\n return program;\n }\n console.log(glw.getProgramInfoLog(program));\n glw.deleteProgram(program);\n return undefined;\n}\n//# sourceMappingURL=ShaderUtils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, hasOwn } from '../../../utils.js';\nimport { CoreShader } from '../CoreShader.js';\nimport { createProgram, createShader, } from './internal/ShaderUtils.js';\nimport { isWebGl2 } from './internal/WebGlUtils.js';\nexport class WebGlCoreShader extends CoreShader {\n boundBufferCollection = null;\n buffersBound = false;\n program;\n /**\n * Vertex Array Object\n *\n * @remarks\n * Used by WebGL2 Only\n */\n vao;\n renderer;\n glw;\n attributeBuffers;\n attributeLocations;\n attributeNames;\n uniformLocations;\n uniformTypes;\n supportsIndexedTextures;\n constructor(options) {\n super();\n const renderer = (this.renderer = options.renderer);\n const glw = (this.glw = this.renderer.glw);\n this.supportsIndexedTextures = options.supportsIndexedTextures || false;\n // Check that extensions are supported\n const webGl2 = glw.isWebGl2();\n const requiredExtensions = (webGl2 && options.webgl2Extensions) ||\n (!webGl2 && options.webgl1Extensions) ||\n [];\n const glVersion = webGl2 ? '2.0' : '1.0';\n requiredExtensions.forEach((extensionName) => {\n if (!glw.getExtension(extensionName)) {\n throw new Error(`Shader \"${this.constructor.name}\" requires extension \"${extensionName}\" for WebGL ${glVersion} but wasn't found`);\n }\n });\n // Gather shader sources\n // - If WebGL 2 and special WebGL 2 sources are provided, we copy those sources and delete\n // the extra copy of them to save memory.\n // TODO: This could be further made optimal by just caching the compiled shaders and completely deleting\n // the source code\n const shaderSources = options.shaderSources ||\n this.constructor.shaderSources;\n if (!shaderSources) {\n throw new Error(`Shader \"${this.constructor.name}\" is missing shaderSources.`);\n }\n else if (webGl2 && shaderSources?.webGl2) {\n shaderSources.fragment = shaderSources.webGl2.fragment;\n shaderSources.vertex = shaderSources.webGl2.vertex;\n delete shaderSources.webGl2;\n }\n const textureUnits = renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n const vertexSource = shaderSources.vertex instanceof Function\n ? shaderSources.vertex(textureUnits)\n : shaderSources.vertex;\n const fragmentSource = shaderSources.fragment instanceof Function\n ? shaderSources.fragment(textureUnits)\n : shaderSources.fragment;\n const vertexShader = createShader(glw, glw.VERTEX_SHADER, vertexSource);\n const fragmentShader = createShader(glw, glw.FRAGMENT_SHADER, fragmentSource);\n if (!vertexShader || !fragmentShader) {\n throw new Error();\n }\n const program = createProgram(glw, vertexShader, fragmentShader);\n if (!program) {\n throw new Error();\n }\n this.program = program;\n if (webGl2) {\n const vao = glw.createVertexArray();\n if (!vao) {\n throw new Error();\n }\n this.vao = vao;\n glw.bindVertexArray(this.vao);\n }\n this.attributeLocations = {};\n this.attributeBuffers = {};\n this.attributeNames = [];\n [...options.attributes].forEach((attributeName) => {\n const location = glw.getAttribLocation(this.program, attributeName);\n if (location < 0) {\n throw new Error(`${this.constructor.name}: Vertex shader must have an attribute \"${attributeName}\"!`);\n }\n const buffer = glw.createBuffer();\n if (!buffer) {\n throw new Error(`${this.constructor.name}: Could not create buffer for attribute \"${attributeName}\"`);\n }\n this.attributeLocations[attributeName] = location;\n this.attributeBuffers[attributeName] = buffer;\n this.attributeNames.push(attributeName);\n });\n this.uniformLocations = {};\n this.uniformTypes = {};\n options.uniforms.forEach((uniform) => {\n const location = glw.getUniformLocation(this.program, uniform.name);\n this.uniformTypes[uniform.name] = uniform.uniform;\n if (!location) {\n console.warn(`Shader \"${this.constructor.name}\" could not get uniform location for \"${uniform.name}\"`);\n return;\n }\n this.uniformLocations[uniform.name] = location;\n });\n }\n bindBufferAttribute(location, buffer, attribute) {\n const { glw } = this;\n glw.enableVertexAttribArray(location);\n glw.vertexAttribPointer(buffer, location, attribute.size, attribute.type, attribute.normalized, attribute.stride, attribute.offset);\n }\n disableAttribute(location) {\n this.glw.disableVertexAttribArray(location);\n }\n disableAttributes() {\n for (const loc in this.attributeLocations) {\n this.disableAttribute(this.attributeLocations[loc]);\n }\n this.boundBufferCollection = null;\n }\n /**\n * Given two sets of Shader props destined for this Shader, determine if they can be batched together\n * to reduce the number of draw calls.\n *\n * @remarks\n * This is used by the {@link WebGlCoreRenderer} to determine if it can batch multiple consecutive draw\n * calls into a single draw call.\n *\n * By default, this returns false (meaning no batching is allowed), but can be\n * overridden by child classes to provide more efficient batching.\n *\n * @param propsA\n * @param propsB\n * @returns\n */\n canBatchShaderProps(propsA, propsB) {\n return false;\n }\n bindRenderOp(renderOp, props) {\n this.bindBufferCollection(renderOp.buffers);\n if (renderOp.textures.length > 0) {\n this.bindTextures(renderOp.textures);\n }\n const { glw, parentHasRenderTexture, renderToTexture } = renderOp;\n // Skip if the parent and current operation both have render textures\n if (renderToTexture && parentHasRenderTexture) {\n return;\n }\n // Bind render texture framebuffer dimensions as resolution\n // if the parent has a render texture\n if (parentHasRenderTexture) {\n const { width, height } = renderOp.framebufferDimensions || {};\n // Force pixel ratio to 1.0 for render textures since they are always 1:1\n // the final render texture will be rendered to the screen with the correct pixel ratio\n this.setUniform('u_pixelRatio', 1.0);\n // Set resolution to the framebuffer dimensions\n this.setUniform('u_resolution', new Float32Array([width ?? 0, height ?? 0]));\n }\n else {\n this.setUniform('u_pixelRatio', renderOp.options.pixelRatio);\n this.setUniform('u_resolution', new Float32Array([glw.canvas.width, glw.canvas.height]));\n }\n if (props) {\n // Bind optional automatic uniforms\n // These are only bound if their keys are present in the props.\n if (hasOwn(props, '$dimensions')) {\n let dimensions = props.$dimensions;\n if (!dimensions) {\n dimensions = renderOp.dimensions;\n }\n this.setUniform('u_dimensions', [dimensions.width, dimensions.height]);\n }\n if (hasOwn(props, '$alpha')) {\n let alpha = props.$alpha;\n if (!alpha) {\n alpha = renderOp.alpha;\n }\n this.setUniform('u_alpha', alpha);\n }\n this.bindProps(props);\n }\n }\n setUniform(name, ...value) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-unsafe-argument\n this.glw.setUniform(this.uniformTypes[name], this.uniformLocations[name], ...value);\n }\n bindBufferCollection(buffer) {\n if (this.boundBufferCollection === buffer) {\n return;\n }\n for (const attributeName in this.attributeLocations) {\n const resolvedBuffer = buffer.getBuffer(attributeName);\n const resolvedInfo = buffer.getAttributeInfo(attributeName);\n assertTruthy(resolvedBuffer, `Buffer for \"${attributeName}\" not found`);\n assertTruthy(resolvedInfo);\n this.bindBufferAttribute(this.attributeLocations[attributeName], resolvedBuffer, resolvedInfo);\n }\n this.boundBufferCollection = buffer;\n }\n bindProps(props) {\n // Implement in child class\n }\n bindTextures(textures) {\n // no defaults\n }\n attach() {\n this.glw.useProgram(this.program);\n this.glw.useProgram(this.program);\n if (this.glw.isWebGl2() && this.vao) {\n this.glw.bindVertexArray(this.vao);\n }\n }\n detach() {\n this.disableAttributes();\n }\n static shaderSources;\n}\n//# sourceMappingURL=WebGlCoreShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../common/EventEmitter.js';\n/**\n * Represents a source of texture data for a CoreContextTexture.\n *\n * @remarks\n * Texture sources are used to populate a CoreContextTexture when that texture\n * is loaded. Texture data retrieved by the CoreContextTexture by the\n * `getTextureData` method. It's the responsibility of the concerete `Texture`\n * subclass to implement this method appropriately.\n */\nexport class Texture extends EventEmitter {\n txManager;\n /**\n * The dimensions of the texture\n *\n * @remarks\n * Until the texture data is loaded for the first time the value will be\n * `null`.\n */\n dimensions = null;\n error = null;\n state = 'freed';\n renderableOwners = new Set();\n constructor(txManager) {\n super();\n this.txManager = txManager;\n }\n /**\n * Add/remove an owner to/from the Texture based on its renderability.\n *\n * @remarks\n * Any object can own a texture, be it a CoreNode or even the state object\n * from a Text Renderer.\n *\n * When the reference to the texture that an owner object holds is replaced\n * or cleared it must call this with `renderable=false` to release the owner\n * association.\n *\n * @param owner\n * @param renderable\n */\n setRenderableOwner(owner, renderable) {\n if (renderable) {\n this.renderableOwners.add(owner);\n }\n else {\n this.renderableOwners.delete(owner);\n }\n }\n /**\n * Returns true if the texture is assigned to any Nodes that are renderable.\n */\n get renderable() {\n return this.renderableOwners.size > 0;\n }\n /**\n * Set the state of the texture\n *\n * @remark\n * Intended for internal-use only but declared public so that it can be set\n * by it's associated {@link CoreContextTexture}\n *\n * @param state\n * @param args\n */\n setState(state, ...args) {\n if (this.state !== state) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.state = state;\n if (state === 'loaded') {\n const loadedArgs = args;\n this.dimensions = loadedArgs[0];\n }\n else if (state === 'failed') {\n const failedArgs = args;\n this.error = failedArgs[0];\n }\n this.emit(state, ...args);\n }\n }\n /**\n * Make a cache key for this texture.\n *\n * @remarks\n * Each concrete `Texture` subclass must implement this method to provide an\n * appropriate cache key for the texture type including the texture's\n * properties that uniquely identify a copy of the texture. If the texture\n * type does not support caching, then this method should return `false`.\n *\n * @param props\n * @returns\n * A cache key for this texture or `false` if the texture type does not\n * support caching.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static makeCacheKey(props) {\n return false;\n }\n /**\n * Resolve the default values for the texture's properties.\n *\n * @remarks\n * Each concrete `Texture` subclass must implement this method to provide\n * default values for the texture's optional properties.\n *\n * @param props\n * @returns\n * The default values for the texture's properties.\n */\n static resolveDefaults(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n props) {\n return {};\n }\n}\n//# sourceMappingURL=Texture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../../common/EventEmitter.js';\nexport class TrFontFace extends EventEmitter {\n fontFamily;\n descriptors;\n loaded = false;\n constructor(fontFamily, descriptors) {\n super();\n this.fontFamily = fontFamily;\n this.descriptors = {\n style: 'normal',\n weight: 'normal',\n stretch: 'normal',\n ...descriptors,\n };\n }\n /**\n * Convert a TrFontFaceDescriptors to a FontFaceDescriptors which differ slightly\n *\n * @param descriptors\n * @returns\n */\n static convertToCssFontFaceDescriptors(descriptors) {\n return {\n style: descriptors.style,\n weight: typeof descriptors.weight === 'number'\n ? `${descriptors.weight}`\n : descriptors.weight,\n stretch: descriptors.stretch,\n unicodeRange: descriptors.unicodeRange,\n variant: descriptors.variant,\n featureSettings: descriptors.featureSettings,\n display: descriptors.display,\n };\n }\n}\n//# sourceMappingURL=TrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreContextTexture {\n memManager;\n textureSource;\n constructor(memManager, textureSource) {\n this.memManager = memManager;\n this.textureSource = textureSource;\n }\n}\n//# sourceMappingURL=CoreContextTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreContextTexture } from './CoreContextTexture.js';\nexport class CoreRenderer {\n stage;\n constructor(stage) {\n this.stage = stage;\n }\n}\n//# sourceMappingURL=CoreRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreRenderOp {\n}\n//# sourceMappingURL=CoreRenderOp.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreRenderOp } from '../CoreRenderOp.js';\nimport { WebGlCoreShader } from './WebGlCoreShader.js';\nconst MAX_TEXTURES = 8; // TODO: get from gl\n/**\n * Can render multiple quads with multiple textures (up to vertex shader texture limit)\n *\n */\nexport class WebGlCoreRenderOp extends CoreRenderOp {\n glw;\n options;\n buffers;\n shader;\n shaderProps;\n alpha;\n clippingRect;\n dimensions;\n bufferIdx;\n zIndex;\n renderToTexture;\n parentHasRenderTexture;\n framebufferDimensions;\n length = 0;\n numQuads = 0;\n textures = [];\n maxTextures;\n constructor(glw, options, buffers, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, zIndex, renderToTexture, parentHasRenderTexture, framebufferDimensions) {\n super();\n this.glw = glw;\n this.options = options;\n this.buffers = buffers;\n this.shader = shader;\n this.shaderProps = shaderProps;\n this.alpha = alpha;\n this.clippingRect = clippingRect;\n this.dimensions = dimensions;\n this.bufferIdx = bufferIdx;\n this.zIndex = zIndex;\n this.renderToTexture = renderToTexture;\n this.parentHasRenderTexture = parentHasRenderTexture;\n this.framebufferDimensions = framebufferDimensions;\n this.maxTextures = shader.supportsIndexedTextures\n ? glw.getParameter(glw.MAX_VERTEX_TEXTURE_IMAGE_UNITS)\n : 1;\n }\n addTexture(texture) {\n const { textures, maxTextures } = this;\n const existingIdx = textures.findIndex((t) => t === texture);\n if (existingIdx !== -1) {\n return existingIdx;\n }\n const newIdx = textures.length;\n if (newIdx >= maxTextures) {\n return 0xffffffff;\n }\n this.textures.push(texture);\n return newIdx;\n }\n draw() {\n const { glw, shader, shaderProps, options } = this;\n const { shManager } = options;\n shManager.useShader(shader);\n shader.bindRenderOp(this, shaderProps);\n // TODO: Reduce calculations required\n const quadIdx = (this.bufferIdx / 24) * 6 * 2;\n // Clipping\n if (this.clippingRect.valid) {\n const { x, y, width, height } = this.clippingRect;\n const pixelRatio = options.pixelRatio;\n const canvasHeight = options.canvas.height;\n const clipX = Math.round(x * pixelRatio);\n const clipWidth = Math.round(width * pixelRatio);\n const clipHeight = Math.round(height * pixelRatio);\n const clipY = Math.round(canvasHeight - clipHeight - y * pixelRatio);\n glw.setScissorTest(true);\n glw.scissor(clipX, clipY, clipWidth, clipHeight);\n }\n else {\n glw.setScissorTest(false);\n }\n glw.drawElements(glw.TRIANGLES, 6 * this.numQuads, glw.UNSIGNED_SHORT, quadIdx);\n }\n}\n//# sourceMappingURL=WebGlCoreRenderOp.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Get device specific webgl parameters\n * @param glw\n */\nexport function getWebGlParameters(glw) {\n const params = {\n MAX_RENDERBUFFER_SIZE: 0,\n MAX_TEXTURE_SIZE: 0,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n MAX_VIEWPORT_DIMS: 0,\n MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0,\n MAX_TEXTURE_IMAGE_UNITS: 0,\n MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0,\n MAX_VERTEX_ATTRIBS: 0,\n MAX_VARYING_VECTORS: 0,\n MAX_VERTEX_UNIFORM_VECTORS: 0,\n MAX_FRAGMENT_UNIFORM_VECTORS: 0,\n };\n // Map over all parameters and get them\n const keys = Object.keys(params);\n keys.forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params[key] = glw.getParameter(glw[key]);\n });\n return params;\n}\n/**\n * Get device webgl extensions\n * @param glw\n */\nexport function getWebGlExtensions(glw) {\n const extensions = {\n ANGLE_instanced_arrays: null,\n WEBGL_compressed_texture_s3tc: null,\n WEBGL_compressed_texture_astc: null,\n WEBGL_compressed_texture_etc: null,\n WEBGL_compressed_texture_etc1: null,\n WEBGL_compressed_texture_pvrtc: null,\n WEBKIT_WEBGL_compressed_texture_pvrtc: null,\n WEBGL_compressed_texture_s3tc_srgb: null,\n OES_vertex_array_object: null,\n };\n // Map over all extensions and get them\n const keys = Object.keys(extensions);\n keys.forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n extensions[key] = glw.getExtension(key);\n });\n return extensions;\n}\n/**\n * Allocate big memory chunk that we\n * can re-use to draw quads\n *\n * @param glw\n * @param size\n */\nexport function createIndexBuffer(glw, size) {\n const maxQuads = ~~(size / 80);\n const indices = new Uint16Array(maxQuads * 6);\n for (let i = 0, j = 0; i < maxQuads; i += 6, j += 4) {\n indices[i] = j;\n indices[i + 1] = j + 1;\n indices[i + 2] = j + 2;\n indices[i + 3] = j + 2;\n indices[i + 4] = j + 1;\n indices[i + 5] = j + 3;\n }\n const buffer = glw.createBuffer();\n glw.elementArrayBufferData(buffer, indices, glw.STATIC_DRAW);\n}\n/**\n * Checks if an object is of type HTMLImageElement.\n * This is used because we cant check for HTMLImageElement directly when the\n * renderer is running in a seperate web worker context.\n *\n * @param obj\n * @returns\n */\nexport function isHTMLImageElement(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n obj.constructor &&\n obj.constructor.name === 'HTMLImageElement');\n}\n//# sourceMappingURL=RendererUtils.js.map","/**\n * Memize options object.\n *\n * @typedef MemizeOptions\n *\n * @property {number} [maxSize] Maximum size of the cache.\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef MemizeCacheNode\n *\n * @property {?MemizeCacheNode|undefined} [prev] Previous node.\n * @property {?MemizeCacheNode|undefined} [next] Next node.\n * @property {Array<*>} args Function arguments for cache\n * entry.\n * @property {*} val Function result.\n */\n\n/**\n * Properties of the enhanced function for controlling cache.\n *\n * @typedef MemizeMemoizedFunction\n *\n * @property {()=>void} clear Clear the cache.\n */\n\n/**\n * Accepts a function to be memoized, and returns a new memoized function, with\n * optional options.\n *\n * @template {(...args: any[]) => any} F\n *\n * @param {F} fn Function to memoize.\n * @param {MemizeOptions} [options] Options object.\n *\n * @return {((...args: Parameters) => ReturnType) & MemizeMemoizedFunction} Memoized function.\n */\nfunction memize(fn, options) {\n\tvar size = 0;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar head;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar tail;\n\n\toptions = options || {};\n\n\tfunction memoized(/* ...args */) {\n\t\tvar node = head,\n\t\t\tlen = arguments.length,\n\t\t\targs,\n\t\t\ti;\n\n\t\tsearchCache: while (node) {\n\t\t\t// Perform a shallow equality test to confirm that whether the node\n\t\t\t// under test is a candidate for the arguments passed. Two arrays\n\t\t\t// are shallowly equal if their length matches and each entry is\n\t\t\t// strictly equal between the two sets. Avoid abstracting to a\n\t\t\t// function which could incur an arguments leaking deoptimization.\n\n\t\t\t// Check whether node arguments match arguments length\n\t\t\tif (node.args.length !== arguments.length) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check whether node arguments match arguments values\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tif (node.args[i] !== arguments[i]) {\n\t\t\t\t\tnode = node.next;\n\t\t\t\t\tcontinue searchCache;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif (node !== head) {\n\t\t\t\t// As tail, shift to previous. Must only shift if not also\n\t\t\t\t// head, since if both head and tail, there is no previous.\n\t\t\t\tif (node === tail) {\n\t\t\t\t\ttail = node.prev;\n\t\t\t\t}\n\n\t\t\t\t// Adjust siblings to point to each other. If node was tail,\n\t\t\t\t// this also handles new tail's empty `next` assignment.\n\t\t\t\t/** @type {MemizeCacheNode} */ (node.prev).next = node.next;\n\t\t\t\tif (node.next) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {MemizeCacheNode} */ (head).prev = node;\n\t\t\t\thead = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\t// Create a copy of arguments (avoid leaking deoptimization)\n\t\targs = new Array(len);\n\t\tfor (i = 0; i < len; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\tnode = {\n\t\t\targs: args,\n\n\t\t\t// Generate the result from original function\n\t\t\tval: fn.apply(null, args),\n\t\t};\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif (head) {\n\t\t\thead.prev = node;\n\t\t\tnode.next = head;\n\t\t} else {\n\t\t\t// If no head, follows that there's no tail (at initial or reset)\n\t\t\ttail = node;\n\t\t}\n\n\t\t// Trim tail if we're reached max size and are pending cache insertion\n\t\tif (size === /** @type {MemizeOptions} */ (options).maxSize) {\n\t\t\ttail = /** @type {MemizeCacheNode} */ (tail).prev;\n\t\t\t/** @type {MemizeCacheNode} */ (tail).next = null;\n\t\t} else {\n\t\t\tsize++;\n\t\t}\n\n\t\thead = node;\n\n\t\treturn node.val;\n\t}\n\n\tmemoized.clear = function () {\n\t\thead = null;\n\t\ttail = null;\n\t\tsize = 0;\n\t};\n\n\t// Ignore reason: There's not a clear solution to create an intersection of\n\t// the function with additional properties, where the goal is to retain the\n\t// function signature of the incoming argument and add control properties\n\t// on the return value.\n\n\t// @ts-ignore\n\treturn memoized;\n}\n\nexport { memize as default };\n","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Core Utility Functions\n *\n * @module\n */\nimport memo from 'memize';\nexport const EPSILON = 0.000001;\nexport let ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport const RANDOM = Math.random;\nexport const ANGLE_ORDER = 'zyx';\nconst degree = Math.PI / 180;\nexport const setMatrixArrayType = (type) => {\n ARRAY_TYPE = type;\n};\nexport const toRadian = (a) => {\n return a * degree;\n};\nexport const equals = (a, b) => {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n};\nexport const rand = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1) + min);\n};\nexport const isPowerOfTwo = (value) => {\n return value && !(value & (value - 1));\n};\nconst getTimingBezier = (a, b, c, d) => {\n const xc = 3.0 * a;\n const xb = 3.0 * (c - a) - xc;\n const xa = 1.0 - xc - xb;\n const yc = 3.0 * b;\n const yb = 3.0 * (d - b) - yc;\n const ya = 1.0 - yc - yb;\n return function (time) {\n if (time >= 1.0) {\n return 1;\n }\n if (time <= 0) {\n return 0;\n }\n let t = 0.5, cbx, cbxd, dx;\n for (let it = 0; it < 20; it++) {\n cbx = t * (t * (t * xa + xb) + xc);\n dx = time - cbx;\n if (dx > -1e-8 && dx < 1e-8) {\n return t * (t * (t * ya + yb) + yc);\n }\n // Cubic bezier derivative.\n cbxd = t * (t * (3 * xa) + 2 * xb) + xc;\n if (cbxd > 1e-10 && cbxd < 1e-10) {\n // Problematic. Fall back to binary search method.\n break;\n }\n t += dx / cbxd;\n }\n // Fallback: binary search method. This is more reliable when there are near-0 slopes.\n let minT = 0;\n let maxT = 1;\n for (let it = 0; it < 20; it++) {\n t = 0.5 * (minT + maxT);\n cbx = t * (t * (t * xa + xb) + xc);\n dx = time - cbx;\n if (dx > -1e-8 && dx < 1e-8) {\n // Solution found!\n return t * (t * (t * ya + yb) + yc);\n }\n if (dx < 0) {\n maxT = t;\n }\n else {\n minT = t;\n }\n }\n };\n};\nexport const getTimingFunction = memo((str) => {\n switch (str) {\n case 'linear':\n return function (time) {\n return time;\n };\n case 'ease':\n return getTimingBezier(0.25, 0.1, 0.25, 1.0);\n case 'ease-in':\n return getTimingBezier(0.42, 0, 1.0, 1.0);\n case 'ease-out':\n return getTimingBezier(0, 0, 0.58, 1.0);\n case 'ease-in-out':\n return getTimingBezier(0.42, 0, 0.58, 1.0);\n case 'ease-in-sine':\n return getTimingBezier(0.12, 0, 0.39, 0);\n case 'ease-out-sine':\n return getTimingBezier(0.12, 0, 0.39, 0);\n case 'ease-in-out-sine':\n return getTimingBezier(0.37, 0, 0.63, 1);\n case 'ease-in-cubic':\n return getTimingBezier(0.32, 0, 0.67, 0);\n case 'ease-out-cubic':\n return getTimingBezier(0.33, 1, 0.68, 1);\n case 'ease-in-out-cubic':\n return getTimingBezier(0.65, 0, 0.35, 1);\n case 'ease-in-circ':\n return getTimingBezier(0.55, 0, 1, 0.45);\n case 'ease-out-circ':\n return getTimingBezier(0, 0.55, 0.45, 1);\n case 'ease-in-out-circ':\n return getTimingBezier(0.85, 0, 0.15, 1);\n case 'ease-in-back':\n return getTimingBezier(0.36, 0, 0.66, -0.56);\n case 'ease-out-back':\n return getTimingBezier(0.34, 1.56, 0.64, 1);\n case 'ease-in-out-back':\n return getTimingBezier(0.68, -0.6, 0.32, 1.6);\n case 'step-start':\n return function () {\n return 1;\n };\n case 'step-end':\n return function (time) {\n return time === 1 ? 1 : 0;\n };\n default:\n // eslint-disable-next-line no-case-declarations\n const s = 'cubic-bezier(';\n if (str && str.indexOf(s) === 0) {\n const parts = str\n .substr(s.length, str.length - s.length - 1)\n .split(',');\n if (parts.length !== 4) {\n console.warn('Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n const a = parseFloat(parts[0] || '0.42');\n const b = parseFloat(parts[1] || '0');\n const c = parseFloat(parts[2] || '1');\n const d = parseFloat(parts[3] || '1');\n if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d)) {\n console.warn(' Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n return getTimingBezier(a, b, c, d);\n }\n else {\n console.warn('Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n }\n});\nif (!Math.hypot)\n Math.hypot = (...args) => {\n let y = 0, i = args.length;\n while (i--) {\n y += args[i] * args[i];\n }\n return Math.sqrt(y);\n };\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../utils.js';\nimport { isPowerOfTwo } from '../../utils.js';\nimport { CoreContextTexture } from '../CoreContextTexture.js';\nimport { isHTMLImageElement } from './internal/RendererUtils.js';\nconst TRANSPARENT_TEXTURE_DATA = new Uint8Array([0, 0, 0, 0]);\n/**\n * A wrapper around a WebGLTexture that handles loading the texture data\n * from a Texture source and uploading it to the GPU as well as freeing\n * the uploaded texture.\n *\n * @remarks\n * When accessing the ctxTexture property, the texture will be loaded if\n * it hasn't been already. ctxTexture will always return a valid WebGLTexture\n * and trigger the loading/uploading of the texture's data if it hasn't been\n * loaded yet.\n */\nexport class WebGlCoreCtxTexture extends CoreContextTexture {\n glw;\n _nativeCtxTexture = null;\n _state = 'freed';\n _w = 0;\n _h = 0;\n constructor(glw, memManager, textureSource) {\n super(memManager, textureSource);\n this.glw = glw;\n }\n get ctxTexture() {\n if (this._state === 'freed') {\n this.load();\n }\n assertTruthy(this._nativeCtxTexture);\n return this._nativeCtxTexture;\n }\n get renderable() {\n return this.textureSource.renderable;\n }\n get w() {\n return this._w;\n }\n get h() {\n return this._h;\n }\n /**\n * Load the texture data from the Texture source and upload it to the GPU\n *\n * @remarks\n * This method is called automatically when accessing the ctxTexture property\n * if the texture hasn't been loaded yet. But it can also be called manually\n * to force the texture to be pre-loaded prior to accessing the ctxTexture\n * property.\n */\n load() {\n // If the texture is already loading or loaded, don't load it again.\n if (this._state === 'loading' || this._state === 'loaded') {\n return;\n }\n this._state = 'loading';\n this.textureSource.setState('loading');\n this._nativeCtxTexture = this.createNativeCtxTexture();\n this.onLoadRequest()\n .then(({ width, height }) => {\n if (this._state === 'freed') {\n return;\n }\n this._state = 'loaded';\n this._w = width;\n this._h = height;\n // Update the texture source's width and height so that it can be used\n // for rendering.\n this.textureSource.setState('loaded', { width, height });\n })\n .catch((err) => {\n this._state = 'failed';\n this.textureSource.setState('failed', err);\n console.error(err);\n });\n }\n /**\n * Called when the texture data needs to be loaded and uploaded to a texture\n */\n async onLoadRequest() {\n const { glw, memManager } = this;\n // Set to a 1x1 transparent texture\n glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);\n memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength);\n const textureData = await this.textureSource?.getTextureData();\n // If the texture has been freed while loading, return early.\n if (!this._nativeCtxTexture) {\n assertTruthy(this._state === 'freed');\n return { width: 0, height: 0 };\n }\n let width = 0;\n let height = 0;\n assertTruthy(this._nativeCtxTexture);\n glw.activeTexture(0);\n // If textureData is null, the texture is empty (0, 0) and we don't need to\n // upload any data to the GPU.\n if (textureData.data instanceof ImageBitmap ||\n textureData.data instanceof ImageData ||\n // not using typeof HTMLImageElement due to web worker\n isHTMLImageElement(textureData.data)) {\n const data = textureData.data;\n width = data.width;\n height = data.height;\n glw.bindTexture(this._nativeCtxTexture);\n glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha);\n glw.texImage2D(0, glw.RGBA, glw.RGBA, glw.UNSIGNED_BYTE, data);\n memManager.setTextureMemUse(this, width * height * 4);\n // generate mipmaps for power-of-2 textures or in WebGL2RenderingContext\n if (glw.isWebGl2() || (isPowerOfTwo(width) && isPowerOfTwo(height))) {\n glw.generateMipmap();\n }\n }\n else if (textureData.data === null) {\n width = 0;\n height = 0;\n // Reset to a 1x1 transparent texture\n glw.bindTexture(this._nativeCtxTexture);\n glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, TRANSPARENT_TEXTURE_DATA);\n memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength);\n }\n else if ('mipmaps' in textureData.data && textureData.data.mipmaps) {\n const { mipmaps, width = 0, height = 0, type, glInternalFormat, } = textureData.data;\n const view = type === 'ktx'\n ? new DataView(mipmaps[0] ?? new ArrayBuffer(0))\n : mipmaps[0];\n glw.bindTexture(this._nativeCtxTexture);\n glw.compressedTexImage2D(0, glInternalFormat, width, height, 0, view);\n glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);\n glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);\n memManager.setTextureMemUse(this, view.byteLength);\n }\n else {\n console.error(`WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned`, textureData);\n }\n return {\n width,\n height,\n };\n }\n /**\n * Free the WebGLTexture from the GPU\n *\n * @returns\n */\n free() {\n if (this._state === 'freed') {\n return;\n }\n this._state = 'freed';\n this.textureSource.setState('freed');\n this._w = 0;\n this._h = 0;\n if (!this._nativeCtxTexture) {\n return;\n }\n const { glw, memManager } = this;\n glw.deleteTexture(this._nativeCtxTexture);\n memManager.setTextureMemUse(this, 0);\n this._nativeCtxTexture = null;\n }\n /**\n * Create native context texture\n *\n * @remarks\n * When this method returns the returned texture will be bound to the GL context state.\n *\n * @param width\n * @param height\n * @returns\n */\n createNativeCtxTexture() {\n const { glw } = this;\n const nativeTexture = glw.createTexture();\n if (!nativeTexture) {\n throw new Error('Could not create WebGL Texture');\n }\n // On initial load request, create a 1x1 transparent texture to use until\n // the texture data is finally loaded.\n glw.activeTexture(0);\n glw.bindTexture(nativeTexture);\n // linear texture filtering\n glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);\n glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);\n // texture wrapping method\n glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);\n return nativeTexture;\n }\n}\n//# sourceMappingURL=WebGlCoreCtxTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\n/**\n * Texture consisting of only a 1x1 color pixel\n *\n * @remarks\n * The pixel color is set with the {@link ColorTextureProps.color} prop.\n *\n * This is the default texture used for a Node if it's\n * {@link INodeWritableProps.texture} prop is set to `null` (the default)\n *\n * Generally the 1x1 color pixel is stretched to whatever the set dimensions of\n * a Node are.\n */\nexport class ColorTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = ColorTexture.resolveDefaults(props || {});\n }\n get color() {\n return this.props.color;\n }\n set color(color) {\n this.props.color = color;\n }\n async getTextureData() {\n const pixelData32 = new Uint32Array([this.color]);\n const pixelData8 = new Uint8ClampedArray(pixelData32.buffer);\n return {\n data: new ImageData(pixelData8, 1, 1),\n premultiplyAlpha: true,\n };\n }\n static makeCacheKey(props) {\n const resolvedProps = ColorTexture.resolveDefaults(props);\n return `ColorTexture,${resolvedProps.color}`;\n }\n static resolveDefaults(props) {\n return {\n color: props.color || 0xffffffff,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=ColorTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture, } from './Texture.js';\n/**\n * A Texture that is a sub-region of another Texture.\n *\n * @remarks\n * The parent texture can be a Sprite Sheet/Texture Atlas and set using the\n * {@link SubTextureProps.texture} prop. The sub-region relative to the parent\n * texture is defined with the {@link SubTextureProps.x},\n * {@link SubTextureProps.y}, {@link SubTextureProps.width}, and\n * {@link SubTextureProps.height} pixel values.\n */\nexport class SubTexture extends Texture {\n props;\n parentTexture;\n constructor(txManager, props) {\n super(txManager);\n this.parentTexture = this.txManager.loadTexture(props.texture.txType, props.texture.props, props.texture.options);\n this.props = SubTexture.resolveDefaults(props || {});\n // If parent texture is already loaded / failed, trigger loaded event manually\n // so that users get a consistent event experience.\n // We do this in a microtask to allow listeners to be attached in the same\n // synchronous task after calling loadTexture()\n queueMicrotask(() => {\n const parentTx = this.parentTexture;\n if (parentTx.state === 'loaded') {\n this.onParentTxLoaded(parentTx, parentTx.dimensions);\n }\n else if (parentTx.state === 'failed') {\n this.onParentTxFailed(parentTx, parentTx.error);\n }\n parentTx.on('loaded', this.onParentTxLoaded);\n parentTx.on('failed', this.onParentTxFailed);\n });\n }\n onParentTxLoaded = () => {\n // We ignore the parent's passed dimensions, and simply use the SubTexture's\n // configured dimensions (because that's all that matters here)\n this.setState('loaded', {\n width: this.props.width,\n height: this.props.height,\n });\n };\n onParentTxFailed = (target, error) => {\n this.setState('failed', error);\n };\n async getTextureData() {\n return {\n data: this.props,\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static makeCacheKey(props) {\n return false;\n }\n static resolveDefaults(props) {\n return {\n texture: props.texture,\n x: props.x || 0,\n y: props.y || 0,\n width: props.width || 0,\n height: props.height || 0,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=SubTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nexport class WebGlCoreCtxSubTexture extends WebGlCoreCtxTexture {\n constructor(glw, memManager, textureSource) {\n super(glw, memManager, textureSource);\n }\n async onLoadRequest() {\n const props = await this.textureSource.getTextureData();\n return {\n width: props.data?.width || 0,\n height: props.data?.height || 0,\n };\n }\n}\n//# sourceMappingURL=WebGlCoreCtxSubTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents a collection of WebGL Buffers along with their associated\n * vertex attribute formats.\n */\nexport class BufferCollection {\n config;\n constructor(config) {\n this.config = config;\n }\n /**\n * Get the WebGLBuffer associated with the given attribute name if it exists.\n *\n * @param attributeName\n * @returns\n */\n getBuffer(attributeName) {\n return this.config.find((item) => item.attributes[attributeName])?.buffer;\n }\n /**\n * Get the AttributeInfo associated with the given attribute name if it exists.\n *\n * @param attributeName\n * @returns\n */\n getAttributeInfo(attributeName) {\n return this.config.find((item) => item.attributes[attributeName])\n ?.attributes[attributeName];\n }\n}\n//# sourceMappingURL=BufferCollection.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\nimport { assertTruthy } from '../../utils.js';\nimport { isWebGl2 } from '../renderers/webgl/internal/WebGlUtils.js';\n/**\n * Optimized WebGL Context Wrapper\n *\n * @remarks\n * This class contains the subset of the WebGLRenderingContext & WebGL2RenderingContext\n * API that is used by the renderer. Select high volume WebGL methods include\n * caching optimizations to avoid making WebGL calls if the state is already set\n * to the desired value.\n *\n * While most methods contained are direct passthroughs to the WebGL context,\n * some methods combine multiple WebGL calls into one for convenience, modify\n * arguments to be more convenient, or are replaced by more specific methods.\n *\n * Not all methods are optimized. Only methods that are called frequently\n * and/or have a high cost are optimized.\n *\n * A subset of GLenum constants are also exposed as properties on this class\n * for convenience.\n */\nexport class WebGlContextWrapper {\n gl;\n //#region Cached WebGL State\n activeTextureUnit = 0;\n texture2dUnits;\n texture2dParams = new WeakMap();\n scissorEnabled;\n scissorX;\n scissorY;\n scissorWidth;\n scissorHeight;\n blendEnabled;\n blendSrcRgb;\n blendDstRgb;\n blendSrcAlpha;\n blendDstAlpha;\n boundArrayBuffer;\n boundElementArrayBuffer;\n curProgram;\n programUniforms = new WeakMap();\n //#endregion Cached WebGL State\n //#region Canvas\n canvas;\n //#endregion Canvas\n //#region WebGL Enums\n MAX_RENDERBUFFER_SIZE;\n MAX_TEXTURE_SIZE;\n MAX_VIEWPORT_DIMS;\n MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n MAX_TEXTURE_IMAGE_UNITS;\n MAX_COMBINED_TEXTURE_IMAGE_UNITS;\n MAX_VERTEX_ATTRIBS;\n MAX_VARYING_VECTORS;\n MAX_VERTEX_UNIFORM_VECTORS;\n MAX_FRAGMENT_UNIFORM_VECTORS;\n TEXTURE_MAG_FILTER;\n TEXTURE_MIN_FILTER;\n TEXTURE_WRAP_S;\n TEXTURE_WRAP_T;\n LINEAR;\n CLAMP_TO_EDGE;\n RGBA;\n UNSIGNED_BYTE;\n UNPACK_PREMULTIPLY_ALPHA_WEBGL;\n UNPACK_FLIP_Y_WEBGL;\n FLOAT;\n TRIANGLES;\n UNSIGNED_SHORT;\n ONE;\n ONE_MINUS_SRC_ALPHA;\n VERTEX_SHADER;\n FRAGMENT_SHADER;\n STATIC_DRAW;\n COMPILE_STATUS;\n LINK_STATUS;\n DYNAMIC_DRAW;\n COLOR_ATTACHMENT0;\n //#endregion WebGL Enums\n constructor(gl) {\n this.gl = gl;\n // The following code extracts the current state of the WebGL context\n // to our local JavaScript cached version of it. This is so we can\n // avoid making WebGL calls if we don't need to.\n // We could assume that the WebGL context is in a default state, but\n // in the future we may want to support restoring a broken WebGL context\n // and this will help with that.\n this.activeTextureUnit =\n gl.getParameter(gl.ACTIVE_TEXTURE) - gl.TEXTURE0;\n const maxTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n // save current texture units\n this.texture2dUnits = new Array(maxTextureUnits)\n .fill(undefined)\n .map((_, i) => {\n this.activeTexture(i);\n return gl.getParameter(gl.TEXTURE_BINDING_2D);\n });\n // restore active texture unit\n this.activeTexture(this.activeTextureUnit);\n this.scissorEnabled = gl.isEnabled(gl.SCISSOR_TEST);\n const scissorBox = gl.getParameter(gl.SCISSOR_BOX);\n this.scissorX = scissorBox[0];\n this.scissorY = scissorBox[1];\n this.scissorWidth = scissorBox[2];\n this.scissorHeight = scissorBox[3];\n this.blendEnabled = gl.isEnabled(gl.BLEND);\n this.blendSrcRgb = gl.getParameter(gl.BLEND_SRC_RGB);\n this.blendDstRgb = gl.getParameter(gl.BLEND_DST_RGB);\n this.blendSrcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA);\n this.blendDstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA);\n this.boundArrayBuffer = gl.getParameter(gl.ARRAY_BUFFER_BINDING);\n this.boundElementArrayBuffer = gl.getParameter(gl.ELEMENT_ARRAY_BUFFER_BINDING);\n this.curProgram = gl.getParameter(gl.CURRENT_PROGRAM);\n this.canvas = gl.canvas;\n // Extract GLenums\n this.MAX_RENDERBUFFER_SIZE = gl.MAX_RENDERBUFFER_SIZE;\n this.MAX_TEXTURE_SIZE = gl.MAX_TEXTURE_SIZE;\n this.MAX_VIEWPORT_DIMS = gl.MAX_VIEWPORT_DIMS;\n this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n this.MAX_TEXTURE_IMAGE_UNITS = gl.MAX_TEXTURE_IMAGE_UNITS;\n this.MAX_COMBINED_TEXTURE_IMAGE_UNITS = gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS;\n this.MAX_VERTEX_ATTRIBS = gl.MAX_VERTEX_ATTRIBS;\n this.MAX_VARYING_VECTORS = gl.MAX_VARYING_VECTORS;\n this.MAX_VERTEX_UNIFORM_VECTORS = gl.MAX_VERTEX_UNIFORM_VECTORS;\n this.MAX_FRAGMENT_UNIFORM_VECTORS = gl.MAX_FRAGMENT_UNIFORM_VECTORS;\n this.TEXTURE_MAG_FILTER = gl.TEXTURE_MAG_FILTER;\n this.TEXTURE_MIN_FILTER = gl.TEXTURE_MIN_FILTER;\n this.TEXTURE_WRAP_S = gl.TEXTURE_WRAP_S;\n this.TEXTURE_WRAP_T = gl.TEXTURE_WRAP_T;\n this.LINEAR = gl.LINEAR;\n this.CLAMP_TO_EDGE = gl.CLAMP_TO_EDGE;\n this.RGBA = gl.RGBA;\n this.UNSIGNED_BYTE = gl.UNSIGNED_BYTE;\n this.UNPACK_PREMULTIPLY_ALPHA_WEBGL = gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL;\n this.UNPACK_FLIP_Y_WEBGL = gl.UNPACK_FLIP_Y_WEBGL;\n this.FLOAT = gl.FLOAT;\n this.TRIANGLES = gl.TRIANGLES;\n this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT;\n this.ONE = gl.ONE;\n this.ONE_MINUS_SRC_ALPHA = gl.ONE_MINUS_SRC_ALPHA;\n this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n this.TRIANGLES = gl.TRIANGLES;\n this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT;\n this.VERTEX_SHADER = gl.VERTEX_SHADER;\n this.FRAGMENT_SHADER = gl.FRAGMENT_SHADER;\n this.STATIC_DRAW = gl.STATIC_DRAW;\n this.COMPILE_STATUS = gl.COMPILE_STATUS;\n this.LINK_STATUS = gl.LINK_STATUS;\n this.DYNAMIC_DRAW = gl.DYNAMIC_DRAW;\n this.COLOR_ATTACHMENT0 = gl.COLOR_ATTACHMENT0;\n }\n /**\n * Returns true if the WebGL context is WebGL2\n *\n * @returns\n */\n isWebGl2() {\n return isWebGl2(this.gl);\n }\n /**\n * ```\n * gl.activeTexture(textureUnit + gl.TEXTURE0);\n * ```\n *\n * @remarks\n * **WebGL Difference**: `textureUnit` is based from 0, not `gl.TEXTURE0`.\n *\n * @param textureUnit\n */\n activeTexture(textureUnit) {\n const { gl } = this;\n if (this.activeTextureUnit !== textureUnit) {\n gl.activeTexture(textureUnit + gl.TEXTURE0);\n this.activeTextureUnit = textureUnit;\n }\n }\n /**\n * ```\n * gl.bindTexture(gl.TEXTURE_2D, texture);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n *\n * @param texture\n */\n bindTexture(texture) {\n const { gl, activeTextureUnit, texture2dUnits } = this;\n if (texture2dUnits[activeTextureUnit] === texture) {\n return;\n }\n texture2dUnits[activeTextureUnit] = texture;\n gl.bindTexture(this.gl.TEXTURE_2D, texture);\n }\n _getActiveTexture() {\n const { activeTextureUnit, texture2dUnits } = this;\n return texture2dUnits[activeTextureUnit];\n }\n /**\n * ```\n * gl.texParameteri(gl.TEXTURE_2D, pname, param);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n *\n * @param pname\n * @param param\n * @returns\n */\n texParameteri(pname, param) {\n const { gl, texture2dParams } = this;\n const activeTexture = this._getActiveTexture();\n if (!activeTexture) {\n throw new Error('No active texture');\n }\n let textureParams = texture2dParams.get(activeTexture);\n if (!textureParams) {\n textureParams = {};\n texture2dParams.set(activeTexture, textureParams);\n }\n if (textureParams[pname] === param) {\n return;\n }\n textureParams[pname] = param;\n gl.texParameteri(gl.TEXTURE_2D, pname, param);\n }\n texImage2D(level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels) {\n const { gl } = this;\n if (format) {\n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels);\n }\n else {\n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource);\n }\n }\n /**\n * ```\n * gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, data);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n */\n compressedTexImage2D(level, internalformat, width, height, border, data) {\n const { gl } = this;\n gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalformat, width, height, border, data);\n }\n /**\n * ```\n * gl.pixelStorei(pname, param);\n * ```\n *\n * @param pname\n * @param param\n */\n pixelStorei(pname, param) {\n const { gl } = this;\n gl.pixelStorei(pname, param);\n }\n /**\n * ```\n * gl.generateMipmap(gl.TEXTURE_2D);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n */\n generateMipmap() {\n const { gl } = this;\n gl.generateMipmap(gl.TEXTURE_2D);\n }\n /**\n * ```\n * gl.createTexture();\n * ```\n *\n * @returns\n */\n createTexture() {\n const { gl } = this;\n return gl.createTexture();\n }\n /**\n * ```\n * gl.deleteTexture(texture);\n * ```\n *\n * @param texture\n */\n deleteTexture(texture) {\n const { gl } = this;\n if (texture) {\n this.texture2dParams.delete(texture);\n }\n gl.deleteTexture(texture);\n }\n /**\n * ```\n * gl.viewport(x, y, width, height);\n * ```\n */\n viewport(x, y, width, height) {\n const { gl } = this;\n gl.viewport(x, y, width, height);\n }\n /**\n * ```\n * gl.clearColor(red, green, blue, alpha);\n * ```\n *\n * @param red\n * @param green\n * @param blue\n * @param alpha\n */\n clearColor(red, green, blue, alpha) {\n const { gl } = this;\n gl.clearColor(red, green, blue, alpha);\n }\n /**\n * ```\n * gl[\"enable\"|\"disable\"](gl.SCISSOR_TEST);\n * ```\n * @param enable\n */\n setScissorTest(enable) {\n const { gl, scissorEnabled } = this;\n if (enable === scissorEnabled) {\n return;\n }\n if (enable) {\n gl.enable(gl.SCISSOR_TEST);\n }\n else {\n gl.disable(gl.SCISSOR_TEST);\n }\n this.scissorEnabled = enable;\n }\n /**\n * ```\n * gl.scissor(x, y, width, height);\n * ```\n *\n * @param x\n * @param y\n * @param width\n * @param height\n */\n scissor(x, y, width, height) {\n const { gl, scissorX, scissorY, scissorWidth, scissorHeight } = this;\n if (x !== scissorX ||\n y !== scissorY ||\n width !== scissorWidth ||\n height !== scissorHeight) {\n gl.scissor(x, y, width, height);\n this.scissorX = x;\n this.scissorY = y;\n this.scissorWidth = width;\n this.scissorHeight = height;\n }\n }\n /**\n * ```\n * gl[\"enable\"|\"disable\"](gl.BLEND);\n * ```\n *\n * @param blend\n * @returns\n */\n setBlend(blend) {\n const { gl, blendEnabled } = this;\n if (blend === blendEnabled) {\n return;\n }\n if (blend) {\n gl.enable(gl.BLEND);\n }\n else {\n gl.disable(gl.BLEND);\n }\n this.blendEnabled = blend;\n }\n /**\n * ```\n * gl.blendFunc(src, dst);\n * ```\n *\n * @param src\n * @param dst\n */\n blendFunc(src, dst) {\n const { gl, blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha } = this;\n if (src !== blendSrcRgb ||\n dst !== blendDstRgb ||\n src !== blendSrcAlpha ||\n dst !== blendDstAlpha) {\n gl.blendFunc(src, dst);\n this.blendSrcRgb = src;\n this.blendDstRgb = dst;\n this.blendSrcAlpha = src;\n this.blendDstAlpha = dst;\n }\n }\n /**\n * ```\n * gl.createBuffer();\n * ```\n *\n * @returns\n */\n createBuffer() {\n const { gl } = this;\n return gl.createBuffer();\n }\n /**\n * ```\n * gl.createFramebuffer();\n * ```\n * @returns\n */\n createFramebuffer() {\n const { gl } = this;\n return gl.createFramebuffer();\n }\n /**\n * ```\n * gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n * ```\n *\n * @param framebuffer\n */\n bindFramebuffer(framebuffer) {\n const { gl } = this;\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n }\n /**\n * ```\n * gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.FRAMEBUFFER` and textarget is always `gl.TEXTURE_2D`\n */\n framebufferTexture2D(attachment, texture, level) {\n const { gl } = this;\n gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, texture, level);\n }\n /**\n * ```\n * gl.clear(gl.COLOR_BUFFER_BIT);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT`\n */\n clear() {\n const { gl } = this;\n gl.clear(gl.COLOR_BUFFER_BIT);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n * gl.bufferData(gl.ARRAY_BUFFER, data, usage);\n * ```\n *\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.\n *\n * @param buffer\n * @param data\n * @param usage\n */\n arrayBufferData(buffer, data, usage) {\n const { gl, boundArrayBuffer } = this;\n if (boundArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n this.boundArrayBuffer = buffer;\n }\n gl.bufferData(gl.ARRAY_BUFFER, data, usage);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);\n * gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);\n * ```\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.\n *\n * @param buffer\n * @param data\n * @param usage\n */\n elementArrayBufferData(buffer, data, usage) {\n const { gl, boundElementArrayBuffer } = this;\n if (boundElementArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);\n this.boundElementArrayBuffer = buffer;\n }\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n * gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n * ```\n *\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.vertexAttribPointer` are combined into one function.\n *\n * @param buffer\n * @param index\n * @param size\n * @param type\n * @param normalized\n * @param stride\n * @param offset\n */\n vertexAttribPointer(buffer, index, size, type, normalized, stride, offset) {\n const { gl, boundArrayBuffer } = this;\n if (boundArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n this.boundArrayBuffer = buffer;\n }\n gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n }\n /**\n * ```\n * gl.useProgram(program);\n * ```\n *\n * @param program\n * @returns\n */\n useProgram(program) {\n const { gl, curProgram } = this;\n if (curProgram === program) {\n return;\n }\n gl.useProgram(program);\n this.curProgram = program;\n }\n setUniform(type, location, ...args) {\n const { gl, programUniforms } = this;\n let uniforms = programUniforms.get(this.curProgram);\n if (!uniforms) {\n uniforms = new Map();\n programUniforms.set(this.curProgram, uniforms);\n }\n const uniformArgs = uniforms.get(location);\n if (!uniformArgs || !compareArrays(uniformArgs, args)) {\n uniforms.set(location, args);\n gl[type](location, ...args);\n }\n }\n /**\n * ```\n * gl.getParameter(pname);\n * ```\n *\n * @param pname\n * @returns\n */\n getParameter(pname) {\n const { gl } = this;\n return gl.getParameter(pname);\n }\n /**\n * ```\n * gl.drawElements(mode, count, type, offset);\n * ```\n *\n * @param mode\n * @param count\n * @param type\n * @param offset\n */\n drawElements(mode, count, type, offset) {\n const { gl } = this;\n gl.drawElements(mode, count, type, offset);\n }\n /**\n * ```\n * gl.drawArrays(mode, first, count);\n * ```\n *\n * @param name\n * @returns\n */\n getExtension(name) {\n const { gl } = this;\n return gl.getExtension(name);\n }\n /**\n * ```\n * gl.createVertexArray();\n * ```\n *\n * @returns\n */\n createVertexArray() {\n const { gl } = this;\n assertTruthy(gl instanceof WebGL2RenderingContext);\n return gl.createVertexArray();\n }\n /**\n * ```\n * gl.bindVertexArray(vertexArray);\n * ```\n *\n * @param vertexArray\n */\n bindVertexArray(vertexArray) {\n const { gl } = this;\n assertTruthy(gl instanceof WebGL2RenderingContext);\n gl.bindVertexArray(vertexArray);\n }\n /**\n * ```\n * gl.getAttribLocation(program, name);\n * ```\n *\n * @param program\n * @param name\n * @returns\n */\n getAttribLocation(program, name) {\n const { gl } = this;\n return gl.getAttribLocation(program, name);\n }\n /**\n * ```\n * gl.getUniformLocation(program, name);\n * ```\n *\n * @param program\n * @param name\n * @returns\n */\n getUniformLocation(program, name) {\n const { gl } = this;\n return gl.getUniformLocation(program, name);\n }\n /**\n * ```\n * gl.enableVertexAttribArray(index);\n * ```\n *\n * @param index\n */\n enableVertexAttribArray(index) {\n const { gl } = this;\n gl.enableVertexAttribArray(index);\n }\n /**\n * ```\n * gl.disableVertexAttribArray(index);\n * ```\n *\n * @param index\n */\n disableVertexAttribArray(index) {\n const { gl } = this;\n gl.disableVertexAttribArray(index);\n }\n /**\n * ```\n * gl.createShader(type);\n * ```\n *\n * @param type\n * @returns\n */\n createShader(type) {\n const { gl } = this;\n return gl.createShader(type);\n }\n /**\n * ```\n * gl.compileShader(shader);\n * ```\n *\n * @param shader\n * @returns\n */\n compileShader(shader) {\n const { gl } = this;\n gl.compileShader(shader);\n }\n /**\n * ```\n * gl.attachShader(program, shader);\n * ```\n *\n * @param program\n * @param shader\n */\n attachShader(program, shader) {\n const { gl } = this;\n gl.attachShader(program, shader);\n }\n /**\n * ```\n * gl.linkProgram(program);\n * ```\n *\n * @param program\n */\n linkProgram(program) {\n const { gl } = this;\n gl.linkProgram(program);\n }\n /**\n * ```\n * gl.deleteProgram(shader);\n * ```\n *\n * @param shader\n */\n deleteProgram(shader) {\n const { gl } = this;\n gl.deleteProgram(shader);\n }\n /**\n * ```\n * gl.getShaderParameter(shader, pname);\n * ```\n *\n * @param shader\n * @param pname\n */\n getShaderParameter(shader, pname) {\n const { gl } = this;\n return gl.getShaderParameter(shader, pname);\n }\n /**\n * ```\n * gl.getShaderInfoLog(shader);\n * ```\n *\n * @param shader\n */\n getShaderInfoLog(shader) {\n const { gl } = this;\n return gl.getShaderInfoLog(shader);\n }\n /**\n * ```\n * gl.createProgram();\n * ```\n *\n * @returns\n */\n createProgram() {\n const { gl } = this;\n return gl.createProgram();\n }\n /**\n * ```\n * gl.getProgramParameter(program, pname);\n * ```\n *\n * @param program\n * @param pname\n * @returns\n */\n getProgramParameter(program, pname) {\n const { gl } = this;\n return gl.getProgramParameter(program, pname);\n }\n /**\n * ```\n * gl.getProgramInfoLog(program);\n * ```\n *\n * @param program\n * @returns\n */\n getProgramInfoLog(program) {\n const { gl } = this;\n return gl.getProgramInfoLog(program);\n }\n /**\n * ```\n * gl.shaderSource(shader, source);\n * ```\n *\n * @param shader\n * @param source\n */\n shaderSource(shader, source) {\n const { gl } = this;\n gl.shaderSource(shader, source);\n }\n /**\n * ```\n * gl.deleteShader(shader);\n * ```\n *\n * @param shader\n */\n deleteShader(shader) {\n const { gl } = this;\n gl.deleteShader(shader);\n }\n}\n/**\n * Compare two arrays for equality.\n *\n * @remarks\n * This function will not try to compare nested arrays or Float32Arrays and\n * instead will always return false when they are encountered.\n *\n * @param a\n * @param b\n * @returns\n */\nexport function compareArrays(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n return a.every((v, i) => {\n // Don't bother to compare nested arrays or Float32Arrays\n if (Array.isArray(v) || v instanceof Float32Array) {\n return false;\n }\n else {\n return v === b[i];\n }\n });\n}\n//# sourceMappingURL=WebGlContextWrapper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Generic WebGL Utility Functions\n *\n * @remarks\n * Nothing here should be coupled to Renderer logic / types.\n *\n * @param gl\n * @returns\n */\nexport function isWebGl2(gl) {\n return (self.WebGL2RenderingContext && gl instanceof self.WebGL2RenderingContext);\n}\n//# sourceMappingURL=WebGlUtils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\nexport class RenderTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = RenderTexture.resolveDefaults(props || {});\n }\n get width() {\n return this.props.width;\n }\n set width(value) {\n this.props.width = value;\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n this.props.height = value;\n }\n async getTextureData() {\n return {\n data: null,\n premultiplyAlpha: null,\n };\n }\n static resolveDefaults(props) {\n return {\n width: props.width || 256,\n height: props.height || 256,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=RenderTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2024 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../utils.js';\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nexport class WebGlCoreCtxRenderTexture extends WebGlCoreCtxTexture {\n framebuffer;\n constructor(glw, memManager, textureSource) {\n super(glw, memManager, textureSource);\n // Create Framebuffer object\n const framebuffer = glw.createFramebuffer();\n assertTruthy(framebuffer, 'Unable to create framebuffer');\n this.framebuffer = framebuffer;\n }\n async onLoadRequest() {\n const { glw, memManager } = this;\n const nativeTexture = (this._nativeCtxTexture =\n this.createNativeCtxTexture());\n const { width, height } = this.textureSource;\n // Set the dimensions of the render texture\n glw.texImage2D(0, glw.RGBA, width, height, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);\n // Update the texture memory manager\n memManager.setTextureMemUse(this, width * height * 4);\n // Bind the framebuffer\n glw.bindFramebuffer(this.framebuffer);\n // Attach the texture to the framebuffer\n glw.framebufferTexture2D(glw.COLOR_ATTACHMENT0, nativeTexture, 0);\n // Unbind the framebuffer\n glw.bindFramebuffer(null);\n return {\n width,\n height,\n };\n }\n}\n//# sourceMappingURL=WebGlCoreCtxRenderTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, createWebGLContext, hasOwn, mergeColorAlphaPremultiplied, } from '../../../utils.js';\nimport { CoreRenderer } from '../CoreRenderer.js';\nimport { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';\nimport { createIndexBuffer, getWebGlParameters, getWebGlExtensions, } from './internal/RendererUtils.js';\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nimport { Texture } from '../../textures/Texture.js';\nimport { ColorTexture } from '../../textures/ColorTexture.js';\nimport { SubTexture } from '../../textures/SubTexture.js';\nimport { WebGlCoreCtxSubTexture } from './WebGlCoreCtxSubTexture.js';\nimport { CoreShaderManager } from '../../CoreShaderManager.js';\nimport { BufferCollection } from './internal/BufferCollection.js';\nimport { compareRect, getNormalizedRgbaComponents, } from '../../lib/utils.js';\nimport { WebGlCoreShader } from './WebGlCoreShader.js';\nimport { RoundedRectangle } from './shaders/RoundedRectangle.js';\nimport { ContextSpy } from '../../lib/ContextSpy.js';\nimport { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';\nimport { RenderTexture } from '../../textures/RenderTexture.js';\nimport { WebGlCoreCtxRenderTexture } from './WebGlCoreCtxRenderTexture.js';\nconst WORDS_PER_QUAD = 24;\nconst BYTES_PER_QUAD = WORDS_PER_QUAD * 4;\nexport class WebGlCoreRenderer extends CoreRenderer {\n //// WebGL Native Context and Data\n glw;\n system;\n //// Core Managers\n txManager;\n txMemManager;\n shManager;\n //// Options\n options;\n //// Persistent data\n quadBuffer = new ArrayBuffer(1024 * 1024 * 4);\n fQuadBuffer = new Float32Array(this.quadBuffer);\n uiQuadBuffer = new Uint32Array(this.quadBuffer);\n renderOps = [];\n //// Render Op / Buffer Filling State\n curBufferIdx = 0;\n curRenderOp = null;\n rttNodes = [];\n activeRttNode = null;\n //// Default Shader\n defaultShader;\n quadBufferCollection;\n /**\n * White pixel texture used by default when no texture is specified.\n */\n defaultTexture;\n /**\n * Whether the renderer is currently rendering to a texture.\n */\n renderToTextureActive = false;\n constructor(options) {\n super(options.stage);\n const { canvas, clearColor, bufferMemory } = options;\n this.options = options;\n this.txManager = options.txManager;\n this.txMemManager = options.txMemManager;\n this.shManager = options.shManager;\n this.defaultTexture = new ColorTexture(this.txManager);\n // When the default texture is loaded, request a render in case the\n // RAF is paused. Fixes: https://github.com/lightning-js/renderer/issues/123\n this.defaultTexture.once('loaded', () => {\n this.stage.requestRender();\n });\n const gl = createWebGLContext(canvas, options.contextSpy);\n const glw = (this.glw = new WebGlContextWrapper(gl));\n const color = getNormalizedRgbaComponents(clearColor);\n glw.viewport(0, 0, canvas.width, canvas.height);\n glw.clearColor(color[0], color[1], color[2], color[3]);\n glw.setBlend(true);\n glw.blendFunc(glw.ONE, glw.ONE_MINUS_SRC_ALPHA);\n createIndexBuffer(glw, bufferMemory);\n this.system = {\n parameters: getWebGlParameters(this.glw),\n extensions: getWebGlExtensions(this.glw),\n };\n this.shManager.renderer = this;\n this.defaultShader = this.shManager.loadShader('DefaultShader').shader;\n const quadBuffer = glw.createBuffer();\n assertTruthy(quadBuffer);\n const stride = 6 * Float32Array.BYTES_PER_ELEMENT;\n this.quadBufferCollection = new BufferCollection([\n {\n buffer: quadBuffer,\n attributes: {\n a_position: {\n name: 'a_position',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 0, // start at the beginning of the buffer\n },\n a_textureCoordinate: {\n name: 'a_textureCoordinate',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 2 * Float32Array.BYTES_PER_ELEMENT,\n },\n a_color: {\n name: 'a_color',\n size: 4,\n type: glw.UNSIGNED_BYTE,\n normalized: true,\n stride,\n offset: 4 * Float32Array.BYTES_PER_ELEMENT,\n },\n a_textureIndex: {\n name: 'a_textureIndex',\n size: 1,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 5 * Float32Array.BYTES_PER_ELEMENT,\n },\n },\n },\n ]);\n }\n reset() {\n const { glw } = this;\n this.curBufferIdx = 0;\n this.curRenderOp = null;\n this.renderOps.length = 0;\n glw.setScissorTest(false);\n glw.clear();\n }\n getShaderManager() {\n return this.shManager;\n }\n createCtxTexture(textureSource) {\n if (textureSource instanceof SubTexture) {\n return new WebGlCoreCtxSubTexture(this.glw, this.txMemManager, textureSource);\n }\n else if (textureSource instanceof RenderTexture) {\n return new WebGlCoreCtxRenderTexture(this.glw, this.txMemManager, textureSource);\n }\n return new WebGlCoreCtxTexture(this.glw, this.txMemManager, textureSource);\n }\n /**\n * This function adds a quad (a rectangle composed of two triangles) to the WebGL rendering pipeline.\n *\n * It takes a set of options that define the quad's properties, such as its dimensions, colors, texture, shader, and transformation matrix.\n * The function first updates the shader properties with the current dimensions if necessary, then sets the default texture if none is provided.\n * It then checks if a new render operation is needed, based on the current shader and clipping rectangle.\n * If a new render operation is needed, it creates one and updates the current render operation.\n * The function then adjusts the texture coordinates based on the texture options and adds the texture to the texture manager.\n *\n * Finally, it calculates the vertices for the quad, taking into account any transformations, and adds them to the quad buffer.\n * The function updates the length and number of quads in the current render operation, and updates the current buffer index.\n */\n addQuad(params) {\n const { fQuadBuffer, uiQuadBuffer } = this;\n const { width, height, colorTl, colorTr, colorBl, colorBr, textureOptions, shader, shaderProps, alpha, clippingRect, tx, ty, ta, tb, tc, td, rtt: renderToTexture, parentHasRenderTexture, framebufferDimensions, } = params;\n let { texture } = params;\n /**\n * If the shader props contain any automatic properties, update it with the\n * current dimensions that will be used to render the quad.\n */\n if (shaderProps && hasOwn(shaderProps, '$dimensions')) {\n const dimensions = shaderProps.$dimensions;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n dimensions.width = width;\n dimensions.height = height;\n }\n texture = texture ?? this.defaultTexture;\n assertTruthy(texture instanceof Texture, 'Invalid texture type');\n let { curBufferIdx: bufferIdx, curRenderOp } = this;\n const targetDims = {\n width,\n height,\n };\n const targetShader = shader || this.defaultShader;\n assertTruthy(targetShader instanceof WebGlCoreShader);\n if (!this.reuseRenderOp(params)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.newRenderOp(targetShader, shaderProps, alpha, targetDims, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions);\n curRenderOp = this.curRenderOp;\n assertTruthy(curRenderOp);\n }\n const flipX = textureOptions?.flipX ?? false;\n const flipY = textureOptions?.flipY ?? false;\n let texCoordX1 = 0;\n let texCoordY1 = 0;\n let texCoordX2 = 1;\n let texCoordY2 = 1;\n if (texture instanceof SubTexture) {\n const { x: tx, y: ty, width: tw, height: th } = texture.props;\n const { width: parentW = 0, height: parentH = 0 } = texture.parentTexture\n .dimensions || { width: 0, height: 0 };\n texCoordX1 = tx / parentW;\n texCoordX2 = texCoordX1 + tw / parentW;\n texCoordY1 = ty / parentH;\n texCoordY2 = texCoordY1 + th / parentH;\n texture = texture.parentTexture;\n }\n // Flip texture coordinates if dictated by texture options\n if (flipX) {\n [texCoordX1, texCoordX2] = [texCoordX2, texCoordX1];\n }\n if (flipY) {\n [texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];\n }\n const { txManager } = this.stage;\n const ctxTexture = txManager.getCtxTexture(texture);\n assertTruthy(ctxTexture instanceof WebGlCoreCtxTexture);\n const textureIdx = this.addTexture(ctxTexture, bufferIdx);\n curRenderOp = this.curRenderOp;\n assertTruthy(curRenderOp);\n // render quad advanced\n if (tb !== 0 || tc !== 0) {\n // Upper-Left\n fQuadBuffer[bufferIdx++] = tx; // vertexX\n fQuadBuffer[bufferIdx++] = ty; // vertexY\n fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX\n fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY\n uiQuadBuffer[bufferIdx++] = colorTl; // color\n fQuadBuffer[bufferIdx++] = textureIdx; // texIndex\n // Upper-Right\n fQuadBuffer[bufferIdx++] = tx + width * ta;\n fQuadBuffer[bufferIdx++] = ty + width * tc;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY1;\n uiQuadBuffer[bufferIdx++] = colorTr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Left\n fQuadBuffer[bufferIdx++] = tx + height * tb;\n fQuadBuffer[bufferIdx++] = ty + height * td;\n fQuadBuffer[bufferIdx++] = texCoordX1;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBl;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Right\n fQuadBuffer[bufferIdx++] = tx + width * ta + height * tb;\n fQuadBuffer[bufferIdx++] = ty + width * tc + height * td;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n }\n else {\n // Calculate the right corner of the quad\n // multiplied by the scale\n const rightCornerX = tx + width * ta;\n const rightCornerY = ty + height * td;\n // Upper-Left\n fQuadBuffer[bufferIdx++] = tx; // vertexX\n fQuadBuffer[bufferIdx++] = ty; // vertexY\n fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX\n fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY\n uiQuadBuffer[bufferIdx++] = colorTl; // color\n fQuadBuffer[bufferIdx++] = textureIdx; // texIndex\n // Upper-Right\n fQuadBuffer[bufferIdx++] = rightCornerX;\n fQuadBuffer[bufferIdx++] = ty;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY1;\n uiQuadBuffer[bufferIdx++] = colorTr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Left\n fQuadBuffer[bufferIdx++] = tx;\n fQuadBuffer[bufferIdx++] = rightCornerY;\n fQuadBuffer[bufferIdx++] = texCoordX1;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBl;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Right\n fQuadBuffer[bufferIdx++] = rightCornerX;\n fQuadBuffer[bufferIdx++] = rightCornerY;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n }\n // Update the length of the current render op\n curRenderOp.length += WORDS_PER_QUAD;\n curRenderOp.numQuads++;\n this.curBufferIdx = bufferIdx;\n }\n /**\n * Replace the existing RenderOp with a new one that uses the specified Shader\n * and starts at the specified buffer index.\n *\n * @param shader\n * @param bufferIdx\n */\n newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions) {\n const curRenderOp = new WebGlCoreRenderOp(this.glw, this.options, this.quadBufferCollection, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, 0, // Z-Index is only used for explictly added Render Ops\n renderToTexture, parentHasRenderTexture, framebufferDimensions);\n this.curRenderOp = curRenderOp;\n this.renderOps.push(curRenderOp);\n }\n /**\n * Add a texture to the current RenderOp. If the texture cannot be added to the\n * current RenderOp, a new RenderOp will be created and the texture will be added\n * to that one.\n *\n * If the texture cannot be added to the new RenderOp, an error will be thrown.\n *\n * @param texture\n * @param bufferIdx\n * @param recursive\n * @returns Assigned Texture Index of the texture in the render op\n */\n addTexture(texture, bufferIdx, recursive) {\n const { curRenderOp } = this;\n assertTruthy(curRenderOp);\n const textureIdx = curRenderOp.addTexture(texture);\n // TODO: Refactor to be more DRY\n if (textureIdx === 0xffffffff) {\n if (recursive) {\n throw new Error('Unable to add texture to render op');\n }\n const { shader, shaderProps, dimensions, clippingRect, alpha } = curRenderOp;\n this.newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx);\n return this.addTexture(texture, bufferIdx, true);\n }\n return textureIdx;\n }\n /**\n * Test if the current Render operation can be reused for the specified parameters.\n * @param params\n * @returns\n */\n reuseRenderOp(params) {\n const { shader, shaderProps, parentHasRenderTexture, rtt, clippingRect } = params;\n const targetShader = shader || this.defaultShader;\n // Switching shader program will require a new render operation\n if (this.curRenderOp?.shader !== targetShader) {\n return false;\n }\n // Switching clipping rect will require a new render operation\n if (!compareRect(this.curRenderOp.clippingRect, clippingRect)) {\n return false;\n }\n // Force new render operation if rendering to texture\n // @todo: This needs to be improved, render operations could also be reused\n // for rendering to texture\n if (parentHasRenderTexture || rtt) {\n return false;\n }\n // Check if the shader can batch the shader properties\n if (this.curRenderOp.shader !== this.defaultShader &&\n (!shaderProps ||\n !this.curRenderOp.shader.canBatchShaderProps(this.curRenderOp.shaderProps, shaderProps))) {\n return false;\n }\n // Render operation can be reused\n return true;\n }\n /**\n * add RenderOp to the render pipeline\n */\n addRenderOp(renderable) {\n this.renderOps.push(renderable);\n this.curRenderOp = null;\n }\n /**\n * Render the current set of RenderOps to render to the specified surface.\n *\n * TODO: 'screen' is the only supported surface at the moment.\n *\n * @param surface\n */\n render(surface = 'screen') {\n const { glw, quadBuffer } = this;\n const arr = new Float32Array(quadBuffer, 0, this.curBufferIdx);\n const buffer = this.quadBufferCollection.getBuffer('a_position') ?? null;\n glw.arrayBufferData(buffer, arr, glw.STATIC_DRAW);\n const doLog = false; // idx++ % 100 === 0;\n if (doLog) {\n console.log('renderOps', this.renderOps.length);\n }\n this.renderOps.forEach((renderOp, i) => {\n if (doLog) {\n console.log('Quads per operation', renderOp.numQuads);\n }\n renderOp.draw();\n });\n }\n renderToTexture(node) {\n for (let i = 0; i < this.rttNodes.length; i++) {\n if (this.rttNodes[i] === node) {\n return;\n }\n }\n // @todo: Better bottom up rendering order\n this.rttNodes.unshift(node);\n }\n renderRTTNodes() {\n const { glw } = this;\n const { txManager } = this.stage;\n // Render all associated RTT nodes to their textures\n for (let i = 0; i < this.rttNodes.length; i++) {\n const node = this.rttNodes[i];\n // Skip nodes that don't have RTT updates\n if (!node || !node.hasRTTupdates) {\n continue;\n }\n // Set the active RTT node to the current node\n // So we can prevent rendering children of nested RTT nodes\n this.activeRttNode = node;\n assertTruthy(node.texture, 'RTT node missing texture');\n const ctxTexture = txManager.getCtxTexture(node.texture);\n assertTruthy(ctxTexture instanceof WebGlCoreCtxRenderTexture);\n this.renderToTextureActive = true;\n // Bind the the texture's framebuffer\n glw.bindFramebuffer(ctxTexture.framebuffer);\n glw.viewport(0, 0, ctxTexture.w, ctxTexture.h);\n glw.clear();\n // Render all associated quads to the texture\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (!child) {\n continue;\n }\n child.update(this.stage.deltaTime, {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n });\n this.stage.addQuads(child);\n child.hasRTTupdates = false;\n }\n // Render all associated quads to the texture\n this.render();\n // Reset render operations\n this.renderOps.length = 0;\n node.hasRTTupdates = false;\n }\n // Bind the default framebuffer\n glw.bindFramebuffer(null);\n glw.viewport(0, 0, this.glw.canvas.width, this.glw.canvas.height);\n this.renderToTextureActive = false;\n }\n}\n//# sourceMappingURL=WebGlCoreRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const SpecialCodepoints = {\n LINE_FEED: 0x0a,\n CARRIAGE_RETURN: 0x0d,\n SPACE: 0x20,\n TAB: 0x09,\n ZERO_WIDTH_SPACE: 0x200b,\n ZERO_WIDTH_NON_JOINER: 0x200c,\n ZERO_WIDTH_JOINER: 0x200d,\n LEFT_TO_RIGHT_MARK: 0x200e,\n RIGHT_TO_LEFT_MARK: 0x200f,\n LEFT_TO_RIGHT_EMBEDDING: 0x202a,\n RIGHT_TO_LEFT_EMBEDDING: 0x202b,\n POP_DIRECTIONAL_FORMATTING: 0x202c,\n LEFT_TO_RIGHT_OVERRIDE: 0x202d,\n RIGHT_TO_LEFT_OVERRIDE: 0x202e,\n LINE_SEPARATOR: 0x2028,\n PARAGRAPH_SEPARATOR: 0x2029,\n OBJECT_REPLACEMENT_CHARACTER: 0xfffc,\n REPLACEMENT_CHARACTER: 0xfffd,\n ZERO_WIDTH_NO_BREAK_SPACE: 0xfeff,\n LEFT_TO_RIGHT_ISOLATE: 0x2066,\n RIGHT_TO_LEFT_ISOLATE: 0x2067,\n FIRST_STRONG_ISOLATE: 0x2068,\n POP_DIRECTIONAL_ISOLATE: 0x2069,\n INHIBIT_SYMMETRIC_SWAPPING: 0x206a,\n ACTIVATE_SYMMETRIC_SWAPPING: 0x206b,\n INHIBIT_ARABIC_FORM_SHAPING: 0x206c,\n ACTIVATE_ARABIC_FORM_SHAPING: 0x206d,\n NATIONAL_DIGIT_SHAPES: 0x206e,\n NOMINAL_DIGIT_SHAPES: 0x206f,\n LEFT_TO_RIGHT_BOUNDARY: 0x200e,\n RIGHT_TO_LEFT_BOUNDARY: 0x200f,\n};\n//# sourceMappingURL=SpecialCodepoints.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class FontShaper {\n}\n//# sourceMappingURL=FontShaper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { SpecialCodepoints } from '../../../renderers/SdfTextRenderer/internal/SpecialCodepoints.js';\nimport { FontShaper, } from './FontShaper.js';\nexport class SdfFontShaper extends FontShaper {\n data;\n glyphMap;\n kernings;\n constructor(data, glyphMap) {\n super();\n this.data = data;\n this.glyphMap = glyphMap;\n const kernings = (this.kernings = {});\n data.kernings.forEach((kerning) => {\n const second = kerning.second;\n const firsts = (kernings[second] = kernings[second] || {});\n firsts[kerning.first] = kerning.amount;\n });\n this.kernings = kernings;\n }\n *shapeText(props, codepoints) {\n let codepointResult;\n let lastGlyphId = undefined;\n while ((codepointResult = codepoints.peek()) && !codepointResult.done) {\n const codepoint = codepointResult.value;\n const glyph = this.glyphMap.get(codepoint);\n codepoints.next();\n if (glyph !== undefined) {\n // We found a glyph for this codepoint\n // Yield the mapped glyph info\n /**\n * Kerning includes any possible additional letter spacing\n */\n const kerning = lastGlyphId !== undefined\n ? (this.kernings[glyph.id]?.[lastGlyphId] || 0) +\n props.letterSpacing\n : 0;\n lastGlyphId = glyph.id;\n yield {\n mapped: true,\n glyphId: glyph.id,\n codepoint,\n cluster: codepoints.lastIndex,\n xAdvance: glyph.xadvance + kerning,\n yAdvance: 0,\n xOffset: glyph.xoffset + kerning,\n yOffset: glyph.yoffset,\n xBearing: 0,\n yBearing: 0,\n width: glyph.width,\n height: glyph.height,\n };\n }\n else {\n // We didn't find a glyph for this codepoint\n // Yield the unmapped codepoint info\n // If this codepoint is a linebreak, we should reset the last glyph id\n // so that the next glyph will not be kerned with the last glyph of the\n // previous line.\n if (codepoint === SpecialCodepoints.LINE_FEED) {\n lastGlyphId = undefined;\n }\n yield {\n mapped: false,\n codepoint,\n cluster: codepoints.lastIndex,\n };\n }\n }\n }\n}\n//# sourceMappingURL=SdfFontShaper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// import type { Renderer } from '../../../Renderer';\nimport { assertTruthy } from '../../../../utils.js';\nimport { WebGlCoreRenderer } from '../../../renderers/webgl/WebGlCoreRenderer.js';\nimport { ImageTexture } from '../../../textures/ImageTexture.js';\nimport { TrFontFace } from '../TrFontFace.js';\nimport { SdfFontShaper } from './internal/SdfFontShaper.js';\nexport class SdfTrFontFace extends TrFontFace {\n type;\n texture;\n /**\n * Height of the tallest character in the font including the whitespace above it\n */\n maxCharHeight = 0;\n data;\n shaper;\n glyphMap = new Map();\n constructor(fontFamily, descriptors, type, stage, atlasUrl, atlasDataUrl) {\n super(fontFamily, descriptors);\n this.type = type;\n const renderer = stage.renderer;\n assertTruthy(renderer instanceof WebGlCoreRenderer, 'SDF Font Faces can only be used with the WebGL Renderer');\n this.texture = stage.txManager.loadTexture('ImageTexture', {\n src: atlasUrl,\n // IMPORTANT: The SDF shader requires the alpha channel to NOT be\n // premultiplied on the atlas texture. If it is premultiplied, the\n // rendering of SDF glyphs (especially single-channel SDF fonts) will\n // be very jagged.\n premultiplyAlpha: false,\n }, {\n preload: true,\n });\n this.texture.on('loaded', () => {\n this.checkLoaded();\n });\n // Set this.data to the fetched data from dataUrl\n fetch(atlasDataUrl)\n .then(async (response) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.data = await response.json();\n // Add all the glyphs to the glyph map\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let maxCharHeight = 0;\n this.data.chars.forEach((glyph) => {\n this.glyphMap.set(glyph.id, glyph);\n const charHeight = glyph.yoffset + glyph.height;\n if (charHeight > maxCharHeight) {\n maxCharHeight = charHeight;\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.maxCharHeight = maxCharHeight;\n // We know `data` is defined here, because we just set it\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.shaper = new SdfFontShaper(this.data, this.glyphMap);\n this.checkLoaded();\n })\n .catch(console.error);\n }\n getAtlasEntry(glyphId) {\n const glyph = this.glyphMap.get(glyphId);\n if (glyph === undefined) {\n throw new Error(`Glyph ${glyphId} not found in font ${this.fontFamily}`);\n }\n return {\n x: glyph.x,\n y: glyph.y,\n width: glyph.width,\n height: glyph.height,\n };\n }\n checkLoaded() {\n if (this.loaded)\n return;\n if (this.texture.state === 'loaded' && this.data) {\n this.loaded = true;\n this.emit('loaded');\n }\n }\n}\n//# sourceMappingURL=SdfTrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Base class for Core extensions.\n *\n * @remarks\n * Core extensions are used to extend the Core Renderer with custom code such as\n * custom fonts, custom shaders, custom textures, custom animation functions,\n * and more.\n */\nexport class CoreExtension {\n}\n//# sourceMappingURL=CoreExtension.js.map"],"names":["assertTruthy","condition","message","hasOwn","obj","prop","Object","prototype","hasOwnProperty","call","isProductionEnvironment","BASE_URL","MODE","DEV","PROD","SSR","LEGACY","a","b","out","intersection","createBound","Math","max","x1","y1","min","x2","y2","x","y","width","height","rgba","color","r","floor","g","toFixed","bound","alpha","flipEndianess","newAlpha","trunc","rgba1","rgba2","p","r1","g1","b1","a1","r2","g2","b2","a2","round","bound1","bound2","EventEmitter","constructor","_defineProperty","this","on","event","listener","listeners","eventListeners","push","off","index","indexOf","splice","once","onceListener","target","data","emit","forEach","removeAllListeners","exports","CoreShader","makeCacheKey","props","resolveDefaults","createShader","glw","type","source","shader","Error","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","console","log","getShaderInfoLog","deleteShader","WebGlCoreShader","options","super","renderer","supportsIndexedTextures","webGl2","isWebGl2","requiredExtensions","webgl2Extensions","webgl1Extensions","glVersion","extensionName","getExtension","name","shaderSources","fragment","vertex","textureUnits","system","parameters","MAX_VERTEX_TEXTURE_IMAGE_UNITS","vertexSource","Function","fragmentSource","vertexShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","deleteProgram","vao","createVertexArray","bindVertexArray","attributeLocations","attributeBuffers","attributeNames","attributes","attributeName","location","getAttribLocation","buffer","createBuffer","uniformLocations","uniformTypes","uniforms","uniform","getUniformLocation","warn","bindBufferAttribute","attribute","enableVertexAttribArray","vertexAttribPointer","size","normalized","stride","offset","disableAttribute","disableVertexAttribArray","disableAttributes","loc","boundBufferCollection","canBatchShaderProps","propsA","propsB","bindRenderOp","renderOp","bindBufferCollection","buffers","textures","length","bindTextures","parentHasRenderTexture","renderToTexture","_ref","framebufferDimensions","setUniform","Float32Array","pixelRatio","canvas","dimensions","$dimensions","$alpha","bindProps","value","resolvedBuffer","getBuffer","resolvedInfo","getAttributeInfo","attach","useProgram","detach","Texture","txManager","Set","setRenderableOwner","owner","renderable","renderableOwners","add","delete","setState","state","args","loadedArgs","failedArgs","error","getNormalizedRgbaComponents","TrFontFace","fontFamily","descriptors","_objectSpread","style","weight","stretch","convertToCssFontFaceDescriptors","unicodeRange","variant","featureSettings","display","CoreContextTexture","memManager","textureSource","CoreRenderer","stage","CoreRenderOp","WebGlCoreRenderOp","shaderProps","clippingRect","bufferIdx","zIndex","maxTextures","getParameter","addTexture","texture","existingIdx","findIndex","t","newIdx","draw","shManager","useShader","quadIdx","valid","_this$clippingRect","canvasHeight","clipX","clipWidth","clipHeight","clipY","setScissorTest","scissor","drawElements","TRIANGLES","numQuads","UNSIGNED_SHORT","getWebGlParameters","params","MAX_RENDERBUFFER_SIZE","MAX_TEXTURE_SIZE","MAX_VIEWPORT_DIMS","MAX_TEXTURE_IMAGE_UNITS","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_VERTEX_ATTRIBS","MAX_VARYING_VECTORS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","keys","key","getWebGlExtensions","extensions","ANGLE_instanced_arrays","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBKIT_WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc_srgb","OES_vertex_array_object","memize","fn","head","tail","memoized","i","node","len","arguments","searchCache","next","prev","val","Array","apply","maxSize","clear","isPowerOfTwo","getTimingBezier","c","d","xc","xb","xa","yc","yb","ya","time","cbxd","dx","it","minT","maxT","memo","str","s","parts","substr","split","parseFloat","isNaN","hypot","sqrt","TRANSPARENT_TEXTURE_DATA","Uint8Array","WebGlCoreCtxTexture","ctxTexture","_state","load","_nativeCtxTexture","w","_w","h","_h","createNativeCtxTexture","onLoadRequest","then","catch","err","_this","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_this$textureSource","textureData","_mipmaps$","_textureData$data","mipmaps","_textureData$data$wid","_width","_textureData$data$hei","_height","glInternalFormat","view","wrap","_callee$","_context","texImage2D","RGBA","UNSIGNED_BYTE","setTextureMemUse","byteLength","getTextureData","sent","abrupt","activeTexture","ImageBitmap","ImageData","bindTexture","pixelStorei","UNPACK_PREMULTIPLY_ALPHA_WEBGL","premultiplyAlpha","generateMipmap","DataView","ArrayBuffer","compressedTexImage2D","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","stop","free","deleteTexture","nativeTexture","createTexture","ColorTexture","_this2","_callee2","pixelData32","pixelData8","_context2","Uint32Array","Uint8ClampedArray","SubTexture","parentTexture","loadTexture","txType","queueMicrotask","parentTx","onParentTxLoaded","onParentTxFailed","_this3","_callee3","_context3","WebGlCoreCtxSubTexture","_this4","_callee4","_props$data","_props$data2","_context4","BufferCollection","config","_this$config$find","find","item","_this$config$find2","WebGlContextWrapper","gl","WeakMap","activeTextureUnit","ACTIVE_TEXTURE","TEXTURE0","maxTextureUnits","texture2dUnits","fill","undefined","map","_","TEXTURE_BINDING_2D","scissorEnabled","isEnabled","SCISSOR_TEST","scissorBox","SCISSOR_BOX","scissorX","scissorY","scissorWidth","scissorHeight","blendEnabled","BLEND","blendSrcRgb","BLEND_SRC_RGB","blendDstRgb","BLEND_DST_RGB","blendSrcAlpha","BLEND_SRC_ALPHA","blendDstAlpha","BLEND_DST_ALPHA","boundArrayBuffer","ARRAY_BUFFER_BINDING","boundElementArrayBuffer","ELEMENT_ARRAY_BUFFER_BINDING","curProgram","CURRENT_PROGRAM","UNPACK_FLIP_Y_WEBGL","FLOAT","ONE","ONE_MINUS_SRC_ALPHA","STATIC_DRAW","DYNAMIC_DRAW","COLOR_ATTACHMENT0","self","WebGL2RenderingContext","textureUnit","TEXTURE_2D","_getActiveTexture","pname","param","texture2dParams","textureParams","get","set","level","internalFormat","widthOrFormat","heightOrType","borderOrSource","format","pixels","internalformat","border","viewport","clearColor","red","green","blue","enable","disable","setBlend","blend","blendFunc","src","dst","createFramebuffer","bindFramebuffer","framebuffer","FRAMEBUFFER","framebufferTexture2D","attachment","COLOR_BUFFER_BIT","arrayBufferData","usage","bindBuffer","ARRAY_BUFFER","bufferData","elementArrayBufferData","ELEMENT_ARRAY_BUFFER","programUniforms","Map","uniformArgs","every","v","isArray","compareArrays","mode","count","vertexArray","RenderTexture","_callee5","_context5","WebGlCoreCtxRenderTexture","_this5","_callee6","_this5$textureSource","_callee6$","_context6","WebGlCoreRenderer","quadBuffer","bufferMemory","txMemManager","defaultTexture","requestRender","contextSpy","antialias","depth","stencil","desynchronized","powerPreference","premultipliedAlpha","preserveDrawingBuffer","getContext","Proxy","increment","String","bind","createWebGLContext","maxQuads","indices","Uint16Array","j","createIndexBuffer","defaultShader","loadShader","BYTES_PER_ELEMENT","quadBufferCollection","a_position","a_textureCoordinate","a_color","a_textureIndex","reset","curBufferIdx","curRenderOp","renderOps","getShaderManager","createCtxTexture","addQuad","_texture","_textureOptions$flipX","_textureOptions$flipY","fQuadBuffer","uiQuadBuffer","colorTl","colorTr","colorBl","colorBr","textureOptions","tx","ty","ta","tb","tc","td","rtt","targetDims","targetShader","reuseRenderOp","newRenderOp","flipX","flipY","texCoordX1","texCoordY1","texCoordX2","texCoordY2","_texture$props","tw","th","_ref2","_ref2$width","parentW","_ref2$height","parentH","_ref3","_ref4","getCtxTexture","textureIdx","rightCornerX","rightCornerY","recursive","_this$curRenderOp","addRenderOp","render","surface","_this$quadBufferColle","arr","rttNodes","unshift","renderRTTNodes","hasRTTupdates","activeRttNode","renderToTextureActive","children","child","update","deltaTime","addQuads","SpecialCodepoints","FontShaper","SdfFontShaper","glyphMap","kernings","kerning","second","first","amount","shapeText","codepoints","_this6","_callee7","codepointResult","lastGlyphId","codepoint","glyph","_this6$kernings$glyph","_context7","peek","done","id","letterSpacing","mapped","glyphId","cluster","lastIndex","xAdvance","xadvance","yAdvance","xOffset","xoffset","yOffset","yoffset","xBearing","yBearing","atlasUrl","atlasDataUrl","_this7","preload","checkLoaded","fetch","_ref5","_callee8","response","maxCharHeight","_context8","json","chars","charHeight","shaper","_x","getAtlasEntry","loaded"],"mappings":"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","x_google_ignoreList":[13]} \ No newline at end of file diff --git a/assets/CoreExtension-legacy-BzZDDgL-.js b/assets/CoreExtension-legacy-BzZDDgL-.js new file mode 100644 index 0000000..d54b783 --- /dev/null +++ b/assets/CoreExtension-legacy-BzZDDgL-.js @@ -0,0 +1,3699 @@ +; +(function () { + function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(typeof e + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } + function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } + function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } + function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + System.register([], function (exports, module) { + 'use strict'; + + return { + execute: function execute() { + exports({ + a: assertTruthy, + c: createBound, + d: intersectBound, + e: intersectRect, + f: getNormalizedAlphaComponent, + g: getRgbaString, + h: memize, + i: isProductionEnvironment, + k: isBoundPositive, + l: boundsOverlap, + m: mergeColorAlphaPremultiplied, + n: convertBoundToRect, + o: copyRect, + q: mergeColorAlpha, + s: mergeColorProgress, + t: boundInsideBound + }); + function createWebGLContext(canvas, contextSpy) { + var config = { + alpha: true, + antialias: false, + depth: false, + stencil: true, + desynchronized: false, + // Disabled because it prevents Visual Regression Tests from working + // failIfMajorPerformanceCaveat: true, + powerPreference: "high-performance", + premultipliedAlpha: true, + preserveDrawingBuffer: false + }; + var gl = + // TODO: Remove this assertion once this issue is fixed in TypeScript + // https://github.com/microsoft/TypeScript/issues/53614 + canvas.getContext("webgl", config) || canvas.getContext("experimental-webgl", config); + if (!gl) { + throw new Error("Unable to create WebGL context"); + } + if (contextSpy) { + return new Proxy(gl, { + get(target, prop) { + var value = target[prop]; + if (typeof value === "function") { + contextSpy.increment(String(prop)); + return value.bind(target); + } + return value; + } + }); + } + return gl; + } + function assertTruthy(condition, message) { + if (isProductionEnvironment()) return; + if (!condition) { + throw new Error(message || "Assertion failed"); + } + } + function mergeColorProgress(rgba1, rgba2, p) { + var r1 = Math.trunc(rgba1 >>> 24); + var g1 = Math.trunc(rgba1 >>> 16 & 255); + var b1 = Math.trunc(rgba1 >>> 8 & 255); + var a1 = Math.trunc(rgba1 & 255); + var r2 = Math.trunc(rgba2 >>> 24); + var g2 = Math.trunc(rgba2 >>> 16 & 255); + var b2 = Math.trunc(rgba2 >>> 8 & 255); + var a2 = Math.trunc(rgba2 & 255); + var r = Math.round(r2 * p + r1 * (1 - p)); + var g = Math.round(g2 * p + g1 * (1 - p)); + var b = Math.round(b2 * p + b1 * (1 - p)); + var a = Math.round(a2 * p + a1 * (1 - p)); + return (r << 24 | g << 16 | b << 8 | a) >>> 0; + } + function mergeColorAlpha(rgba, alpha) { + var r = rgba >>> 24; + var g = rgba >>> 16 & 255; + var b = rgba >>> 8 & 255; + var a = Math.trunc((rgba & 255) * alpha); + return (r << 24 | g << 16 | b << 8 | a) >>> 0; + } + function mergeColorAlphaPremultiplied(rgba, alpha, flipEndianess = false) { + var newAlpha = (rgba & 255) / 255 * alpha; + var r = Math.trunc((rgba >>> 24) * newAlpha); + var g = Math.trunc((rgba >>> 16 & 255) * newAlpha); + var b = Math.trunc((rgba >>> 8 & 255) * newAlpha); + var a = Math.trunc(newAlpha * 255); + if (flipEndianess) { + return (a << 24 | b << 16 | g << 8 | r) >>> 0; + } + return (r << 24 | g << 16 | b << 8 | a) >>> 0; + } + function hasOwn(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } + function isProductionEnvironment() { + return { + "BASE_URL": "/solid-demo-app/", + "MODE": "production", + "DEV": false, + "PROD": true, + "SSR": false, + "LEGACY": true + } && true; + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * EventEmitter base class + */ + class EventEmitter { + constructor() { + _defineProperty(this, "eventListeners", {}); + } + on(event, listener) { + var listeners = this.eventListeners[event]; + if (!listeners) { + listeners = []; + } + listeners.push(listener); + this.eventListeners[event] = listeners; + } + off(event, listener) { + var listeners = this.eventListeners[event]; + if (!listeners) { + return; + } + if (!listener) { + delete this.eventListeners[event]; + return; + } + var index = listeners.indexOf(listener); + if (index >= 0) { + listeners.splice(index, 1); + } + } + once(event, listener) { + var onceListener = (target, data) => { + this.off(event, onceListener); + listener(target, data); + }; + this.on(event, onceListener); + } + emit(event, data) { + var listeners = this.eventListeners[event]; + if (!listeners) { + return; + } + [...listeners].forEach(listener => { + listener(this, data); + }); + } + removeAllListeners() { + this.eventListeners = {}; + } + } + exports("E", EventEmitter); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class CoreShader { + // abstract draw(): void; + static makeCacheKey(props) { + return false; + } + static resolveDefaults(props) { + return {}; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + //#endregion Types + function createShader(glw, type, source) { + var shader = glw.createShader(type); + if (!shader) { + throw new Error(); + } + glw.shaderSource(shader, source); + glw.compileShader(shader); + var success = glw.getShaderParameter(shader, glw.COMPILE_STATUS); + if (success) { + return shader; + } + console.log(glw.getShaderInfoLog(shader)); + glw.deleteShader(shader); + } + function createProgram(glw, vertexShader, fragmentShader) { + var program = glw.createProgram(); + if (!program) { + throw new Error(); + } + glw.attachShader(program, vertexShader); + glw.attachShader(program, fragmentShader); + glw.linkProgram(program); + var success = glw.getProgramParameter(program, glw.LINK_STATUS); + if (success) { + return program; + } + console.log(glw.getProgramInfoLog(program)); + glw.deleteProgram(program); + return undefined; + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Generic WebGL Utility Functions + * + * @remarks + * Nothing here should be coupled to Renderer logic / types. + * + * @param gl + * @returns + */ + function isWebGl2(gl) { + return self.WebGL2RenderingContext && gl instanceof self.WebGL2RenderingContext; + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class WebGlCoreShader extends CoreShader { + constructor(options) { + super(); + _defineProperty(this, "boundBufferCollection", null); + _defineProperty(this, "buffersBound", false); + _defineProperty(this, "program", void 0); + /** + * Vertex Array Object + * + * @remarks + * Used by WebGL2 Only + */ + _defineProperty(this, "vao", void 0); + _defineProperty(this, "renderer", void 0); + _defineProperty(this, "glw", void 0); + _defineProperty(this, "attributeBuffers", void 0); + _defineProperty(this, "attributeLocations", void 0); + _defineProperty(this, "attributeNames", void 0); + _defineProperty(this, "uniformLocations", void 0); + _defineProperty(this, "uniformTypes", void 0); + _defineProperty(this, "supportsIndexedTextures", void 0); + var renderer = this.renderer = options.renderer; + var glw = this.glw = this.renderer.glw; + this.supportsIndexedTextures = options.supportsIndexedTextures || false; + // Check that extensions are supported + var webGl2 = glw.isWebGl2(); + var requiredExtensions = webGl2 && options.webgl2Extensions || !webGl2 && options.webgl1Extensions || []; + var glVersion = webGl2 ? '2.0' : '1.0'; + requiredExtensions.forEach(extensionName => { + if (!glw.getExtension(extensionName)) { + throw new Error(`Shader "${this.constructor.name}" requires extension "${extensionName}" for WebGL ${glVersion} but wasn't found`); + } + }); + // Gather shader sources + // - If WebGL 2 and special WebGL 2 sources are provided, we copy those sources and delete + // the extra copy of them to save memory. + // TODO: This could be further made optimal by just caching the compiled shaders and completely deleting + // the source code + var shaderSources = options.shaderSources || this.constructor.shaderSources; + if (!shaderSources) { + throw new Error(`Shader "${this.constructor.name}" is missing shaderSources.`); + } else if (webGl2 && shaderSources !== null && shaderSources !== void 0 && shaderSources.webGl2) { + shaderSources.fragment = shaderSources.webGl2.fragment; + shaderSources.vertex = shaderSources.webGl2.vertex; + delete shaderSources.webGl2; + } + var textureUnits = renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS; + var vertexSource = shaderSources.vertex instanceof Function ? shaderSources.vertex(textureUnits) : shaderSources.vertex; + var fragmentSource = shaderSources.fragment instanceof Function ? shaderSources.fragment(textureUnits) : shaderSources.fragment; + var vertexShader = createShader(glw, glw.VERTEX_SHADER, vertexSource); + var fragmentShader = createShader(glw, glw.FRAGMENT_SHADER, fragmentSource); + if (!vertexShader || !fragmentShader) { + throw new Error(); + } + var program = createProgram(glw, vertexShader, fragmentShader); + if (!program) { + throw new Error(); + } + this.program = program; + if (webGl2) { + var vao = glw.createVertexArray(); + if (!vao) { + throw new Error(); + } + this.vao = vao; + glw.bindVertexArray(this.vao); + } + this.attributeLocations = {}; + this.attributeBuffers = {}; + this.attributeNames = []; + [...options.attributes].forEach(attributeName => { + var location = glw.getAttribLocation(this.program, attributeName); + if (location < 0) { + throw new Error(`${this.constructor.name}: Vertex shader must have an attribute "${attributeName}"!`); + } + var buffer = glw.createBuffer(); + if (!buffer) { + throw new Error(`${this.constructor.name}: Could not create buffer for attribute "${attributeName}"`); + } + this.attributeLocations[attributeName] = location; + this.attributeBuffers[attributeName] = buffer; + this.attributeNames.push(attributeName); + }); + this.uniformLocations = {}; + this.uniformTypes = {}; + options.uniforms.forEach(uniform => { + var location = glw.getUniformLocation(this.program, uniform.name); + this.uniformTypes[uniform.name] = uniform.uniform; + if (!location) { + console.warn(`Shader "${this.constructor.name}" could not get uniform location for "${uniform.name}"`); + return; + } + this.uniformLocations[uniform.name] = location; + }); + } + bindBufferAttribute(location, buffer, attribute) { + var glw = this.glw; + glw.enableVertexAttribArray(location); + glw.vertexAttribPointer(buffer, location, attribute.size, attribute.type, attribute.normalized, attribute.stride, attribute.offset); + } + disableAttribute(location) { + this.glw.disableVertexAttribArray(location); + } + disableAttributes() { + for (var loc in this.attributeLocations) { + this.disableAttribute(this.attributeLocations[loc]); + } + this.boundBufferCollection = null; + } + /** + * Given two sets of Shader props destined for this Shader, determine if they can be batched together + * to reduce the number of draw calls. + * + * @remarks + * This is used by the {@link WebGlCoreRenderer} to determine if it can batch multiple consecutive draw + * calls into a single draw call. + * + * By default, this returns false (meaning no batching is allowed), but can be + * overridden by child classes to provide more efficient batching. + * + * @param propsA + * @param propsB + * @returns + */ + canBatchShaderProps(propsA, propsB) { + return false; + } + bindRenderOp(renderOp, props) { + this.bindBufferCollection(renderOp.buffers); + if (renderOp.textures.length > 0) { + this.bindTextures(renderOp.textures); + } + var glw = renderOp.glw, + parentHasRenderTexture = renderOp.parentHasRenderTexture, + renderToTexture = renderOp.renderToTexture; + // Skip if the parent and current operation both have render textures + if (renderToTexture && parentHasRenderTexture) { + return; + } + // Bind render texture framebuffer dimensions as resolution + // if the parent has a render texture + if (parentHasRenderTexture) { + var _ref = renderOp.framebufferDimensions || {}, + width = _ref.width, + height = _ref.height; + // Force pixel ratio to 1.0 for render textures since they are always 1:1 + // the final render texture will be rendered to the screen with the correct pixel ratio + this.setUniform('u_pixelRatio', 1.0); + // Set resolution to the framebuffer dimensions + this.setUniform('u_resolution', new Float32Array([width !== null && width !== void 0 ? width : 0, height !== null && height !== void 0 ? height : 0])); + } else { + this.setUniform('u_pixelRatio', renderOp.options.pixelRatio); + this.setUniform('u_resolution', new Float32Array([glw.canvas.width, glw.canvas.height])); + } + if (props) { + // Bind optional automatic uniforms + // These are only bound if their keys are present in the props. + if (hasOwn(props, '$dimensions')) { + var dimensions = props.$dimensions; + if (!dimensions) { + dimensions = renderOp.dimensions; + } + this.setUniform('u_dimensions', [dimensions.width, dimensions.height]); + } + if (hasOwn(props, '$alpha')) { + var alpha = props.$alpha; + if (!alpha) { + alpha = renderOp.alpha; + } + this.setUniform('u_alpha', alpha); + } + this.bindProps(props); + } + } + setUniform(name, ...value) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-unsafe-argument + this.glw.setUniform(this.uniformTypes[name], this.uniformLocations[name], ...value); + } + bindBufferCollection(buffer) { + if (this.boundBufferCollection === buffer) { + return; + } + for (var attributeName in this.attributeLocations) { + var resolvedBuffer = buffer.getBuffer(attributeName); + var resolvedInfo = buffer.getAttributeInfo(attributeName); + assertTruthy(resolvedBuffer, `Buffer for "${attributeName}" not found`); + assertTruthy(resolvedInfo); + this.bindBufferAttribute(this.attributeLocations[attributeName], resolvedBuffer, resolvedInfo); + } + this.boundBufferCollection = buffer; + } + bindProps(props) { + // Implement in child class + } + bindTextures(textures) { + // no defaults + } + attach() { + this.glw.useProgram(this.program); + this.glw.useProgram(this.program); + if (this.glw.isWebGl2() && this.vao) { + this.glw.bindVertexArray(this.vao); + } + } + detach() { + this.disableAttributes(); + } + } + _defineProperty(WebGlCoreShader, "shaderSources", void 0); + exports("W", WebGlCoreShader); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Represents a source of texture data for a CoreContextTexture. + * + * @remarks + * Texture sources are used to populate a CoreContextTexture when that texture + * is loaded. Texture data retrieved by the CoreContextTexture by the + * `getTextureData` method. It's the responsibility of the concerete `Texture` + * subclass to implement this method appropriately. + */ + class Texture extends EventEmitter { + constructor(txManager) { + super(); + _defineProperty(this, "txManager", void 0); + /** + * The dimensions of the texture + * + * @remarks + * Until the texture data is loaded for the first time the value will be + * `null`. + */ + _defineProperty(this, "dimensions", null); + _defineProperty(this, "error", null); + _defineProperty(this, "state", 'freed'); + _defineProperty(this, "renderableOwners", new Set()); + this.txManager = txManager; + } + /** + * Add/remove an owner to/from the Texture based on its renderability. + * + * @remarks + * Any object can own a texture, be it a CoreNode or even the state object + * from a Text Renderer. + * + * When the reference to the texture that an owner object holds is replaced + * or cleared it must call this with `renderable=false` to release the owner + * association. + * + * @param owner + * @param renderable + */ + setRenderableOwner(owner, renderable) { + if (renderable) { + this.renderableOwners.add(owner); + } else { + this.renderableOwners.delete(owner); + } + } + /** + * Returns true if the texture is assigned to any Nodes that are renderable. + */ + get renderable() { + return this.renderableOwners.size > 0; + } + /** + * Set the state of the texture + * + * @remark + * Intended for internal-use only but declared public so that it can be set + * by it's associated {@link CoreContextTexture} + * + * @param state + * @param args + */ + setState(state, ...args) { + if (this.state !== state) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + this.state = state; + if (state === 'loaded') { + var loadedArgs = args; + this.dimensions = loadedArgs[0]; + } else if (state === 'failed') { + var failedArgs = args; + this.error = failedArgs[0]; + } + this.emit(state, ...args); + } + } + /** + * Make a cache key for this texture. + * + * @remarks + * Each concrete `Texture` subclass must implement this method to provide an + * appropriate cache key for the texture type including the texture's + * properties that uniquely identify a copy of the texture. If the texture + * type does not support caching, then this method should return `false`. + * + * @param props + * @returns + * A cache key for this texture or `false` if the texture type does not + * support caching. + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + static makeCacheKey(props) { + return false; + } + /** + * Resolve the default values for the texture's properties. + * + * @remarks + * Each concrete `Texture` subclass must implement this method to provide + * default values for the texture's optional properties. + * + * @param props + * @returns + * The default values for the texture's properties. + */ + static resolveDefaults( + // eslint-disable-next-line @typescript-eslint/no-unused-vars + props) { + return {}; + } + } + exports("j", Texture); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + var getNormalizedRgbaComponents = exports("b", rgba => { + var r = rgba >>> 24; + var g = rgba >>> 16 & 0xff; + var b = rgba >>> 8 & 0xff; + var a = rgba & 0xff; + return [r / 255, g / 255, b / 255, a / 255]; + }); + function getNormalizedAlphaComponent(rgba) { + return (rgba & 0xff) / 255.0; + } + /** + * Get a CSS color string from a RGBA color + * + * @param color + * @returns + */ + function getRgbaString(color) { + var r = Math.floor(color[0] * 255.0); + var g = Math.floor(color[1] * 255.0); + var b = Math.floor(color[2] * 255.0); + var a = Math.floor(color[3] * 255.0); + return `rgba(${r},${g},${b},${a.toFixed(4)})`; + } + function createBound(x1, y1, x2, y2, out) { + if (out) { + out.x1 = x1; + out.y1 = y1; + out.x2 = x2; + out.y2 = y2; + return out; + } + return { + x1, + y1, + x2, + y2 + }; + } + function intersectBound(a, b, out) { + var intersection = createBound(Math.max(a.x1, b.x1), Math.max(a.y1, b.y1), Math.min(a.x2, b.x2), Math.min(a.y2, b.y2), out); + if (intersection.x1 < intersection.x2 && intersection.y1 < intersection.y2) { + return intersection; + } + return createBound(0, 0, 0, 0, intersection); + } + function boundsOverlap(a, b) { + return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1; + } + function convertBoundToRect(bound, out) { + if (out) { + out.x = bound.x1; + out.y = bound.y1; + out.width = bound.x2 - bound.x1; + out.height = bound.y2 - bound.y1; + return out; + } + return { + x: bound.x1, + y: bound.y1, + width: bound.x2 - bound.x1, + height: bound.y2 - bound.y1 + }; + } + function intersectRect(a, b, out) { + var x = Math.max(a.x, b.x); + var y = Math.max(a.y, b.y); + var width = Math.min(a.x + a.width, b.x + b.width) - x; + var height = Math.min(a.y + a.height, b.y + b.height) - y; + if (width > 0 && height > 0) { + if (out) { + out.x = x; + out.y = y; + out.width = width; + out.height = height; + return out; + } + return { + x, + y, + width, + height + }; + } + if (out) { + out.x = 0; + out.y = 0; + out.width = 0; + out.height = 0; + return out; + } + return { + x: 0, + y: 0, + width: 0, + height: 0 + }; + } + function copyRect(a, out) { + if (out) { + out.x = a.x; + out.y = a.y; + out.width = a.width; + out.height = a.height; + return out; + } + return { + x: a.x, + y: a.y, + width: a.width, + height: a.height + }; + } + function compareRect(a, b) { + if (a === b) { + return true; + } + if (a === null || b === null) { + return false; + } + return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; + } + function boundInsideBound(bound1, bound2) { + return bound1.x1 <= bound2.x2 && bound1.y1 <= bound2.y2 && bound1.x2 >= bound2.x1 && bound1.y2 >= bound2.y1; + } + function isBoundPositive(bound) { + return bound.x1 < bound.x2 && bound.y1 < bound.y2; + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class TrFontFace extends EventEmitter { + constructor(fontFamily, descriptors) { + super(); + _defineProperty(this, "fontFamily", void 0); + _defineProperty(this, "descriptors", void 0); + _defineProperty(this, "loaded", false); + this.fontFamily = fontFamily; + this.descriptors = _objectSpread({ + style: 'normal', + weight: 'normal', + stretch: 'normal' + }, descriptors); + } + /** + * Convert a TrFontFaceDescriptors to a FontFaceDescriptors which differ slightly + * + * @param descriptors + * @returns + */ + static convertToCssFontFaceDescriptors(descriptors) { + return { + style: descriptors.style, + weight: typeof descriptors.weight === 'number' ? `${descriptors.weight}` : descriptors.weight, + stretch: descriptors.stretch, + unicodeRange: descriptors.unicodeRange, + variant: descriptors.variant, + featureSettings: descriptors.featureSettings, + display: descriptors.display + }; + } + } + exports("T", TrFontFace); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class CoreContextTexture { + constructor(memManager, textureSource) { + _defineProperty(this, "memManager", void 0); + _defineProperty(this, "textureSource", void 0); + this.memManager = memManager; + this.textureSource = textureSource; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class CoreRenderer { + constructor(stage) { + _defineProperty(this, "stage", void 0); + this.stage = stage; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class CoreRenderOp {} + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Can render multiple quads with multiple textures (up to vertex shader texture limit) + * + */ + class WebGlCoreRenderOp extends CoreRenderOp { + constructor(glw, options, buffers, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, zIndex, renderToTexture, parentHasRenderTexture, framebufferDimensions) { + super(); + _defineProperty(this, "glw", void 0); + _defineProperty(this, "options", void 0); + _defineProperty(this, "buffers", void 0); + _defineProperty(this, "shader", void 0); + _defineProperty(this, "shaderProps", void 0); + _defineProperty(this, "alpha", void 0); + _defineProperty(this, "clippingRect", void 0); + _defineProperty(this, "dimensions", void 0); + _defineProperty(this, "bufferIdx", void 0); + _defineProperty(this, "zIndex", void 0); + _defineProperty(this, "renderToTexture", void 0); + _defineProperty(this, "parentHasRenderTexture", void 0); + _defineProperty(this, "framebufferDimensions", void 0); + _defineProperty(this, "length", 0); + _defineProperty(this, "numQuads", 0); + _defineProperty(this, "textures", []); + _defineProperty(this, "maxTextures", void 0); + this.glw = glw; + this.options = options; + this.buffers = buffers; + this.shader = shader; + this.shaderProps = shaderProps; + this.alpha = alpha; + this.clippingRect = clippingRect; + this.dimensions = dimensions; + this.bufferIdx = bufferIdx; + this.zIndex = zIndex; + this.renderToTexture = renderToTexture; + this.parentHasRenderTexture = parentHasRenderTexture; + this.framebufferDimensions = framebufferDimensions; + this.maxTextures = shader.supportsIndexedTextures ? glw.getParameter(glw.MAX_VERTEX_TEXTURE_IMAGE_UNITS) : 1; + } + addTexture(texture) { + var textures = this.textures, + maxTextures = this.maxTextures; + var existingIdx = textures.findIndex(t => t === texture); + if (existingIdx !== -1) { + return existingIdx; + } + var newIdx = textures.length; + if (newIdx >= maxTextures) { + return 0xffffffff; + } + this.textures.push(texture); + return newIdx; + } + draw() { + var glw = this.glw, + shader = this.shader, + shaderProps = this.shaderProps, + options = this.options; + var shManager = options.shManager; + shManager.useShader(shader); + shader.bindRenderOp(this, shaderProps); + // TODO: Reduce calculations required + var quadIdx = this.bufferIdx / 24 * 6 * 2; + // Clipping + if (this.clippingRect.valid) { + var _this$clippingRect = this.clippingRect, + x = _this$clippingRect.x, + y = _this$clippingRect.y, + width = _this$clippingRect.width, + height = _this$clippingRect.height; + var pixelRatio = options.pixelRatio; + var canvasHeight = options.canvas.height; + var clipX = Math.round(x * pixelRatio); + var clipWidth = Math.round(width * pixelRatio); + var clipHeight = Math.round(height * pixelRatio); + var clipY = Math.round(canvasHeight - clipHeight - y * pixelRatio); + glw.setScissorTest(true); + glw.scissor(clipX, clipY, clipWidth, clipHeight); + } else { + glw.setScissorTest(false); + } + glw.drawElements(glw.TRIANGLES, 6 * this.numQuads, glw.UNSIGNED_SHORT, quadIdx); + } + } + exports("p", WebGlCoreRenderOp); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Get device specific webgl parameters + * @param glw + */ + function getWebGlParameters(glw) { + var params = { + MAX_RENDERBUFFER_SIZE: 0, + MAX_TEXTURE_SIZE: 0, + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any + MAX_VIEWPORT_DIMS: 0, + MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0, + MAX_TEXTURE_IMAGE_UNITS: 0, + MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0, + MAX_VERTEX_ATTRIBS: 0, + MAX_VARYING_VECTORS: 0, + MAX_VERTEX_UNIFORM_VECTORS: 0, + MAX_FRAGMENT_UNIFORM_VECTORS: 0 + }; + // Map over all parameters and get them + var keys = Object.keys(params); + keys.forEach(key => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + params[key] = glw.getParameter(glw[key]); + }); + return params; + } + /** + * Get device webgl extensions + * @param glw + */ + function getWebGlExtensions(glw) { + var extensions = { + ANGLE_instanced_arrays: null, + WEBGL_compressed_texture_s3tc: null, + WEBGL_compressed_texture_astc: null, + WEBGL_compressed_texture_etc: null, + WEBGL_compressed_texture_etc1: null, + WEBGL_compressed_texture_pvrtc: null, + WEBKIT_WEBGL_compressed_texture_pvrtc: null, + WEBGL_compressed_texture_s3tc_srgb: null, + OES_vertex_array_object: null + }; + // Map over all extensions and get them + var keys = Object.keys(extensions); + keys.forEach(key => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + extensions[key] = glw.getExtension(key); + }); + return extensions; + } + /** + * Allocate big memory chunk that we + * can re-use to draw quads + * + * @param glw + * @param size + */ + function createIndexBuffer(glw, size) { + var maxQuads = ~~(size / 80); + var indices = new Uint16Array(maxQuads * 6); + for (var i = 0, j = 0; i < maxQuads; i += 6, j += 4) { + indices[i] = j; + indices[i + 1] = j + 1; + indices[i + 2] = j + 2; + indices[i + 3] = j + 2; + indices[i + 4] = j + 1; + indices[i + 5] = j + 3; + } + var buffer = glw.createBuffer(); + glw.elementArrayBufferData(buffer, indices, glw.STATIC_DRAW); + } + /** + * Checks if an object is of type HTMLImageElement. + * This is used because we cant check for HTMLImageElement directly when the + * renderer is running in a seperate web worker context. + * + * @param obj + * @returns + */ + function isHTMLImageElement(obj) { + return obj !== null && typeof obj === 'object' && obj.constructor && obj.constructor.name === 'HTMLImageElement'; + } + + /** + * Memize options object. + * + * @typedef MemizeOptions + * + * @property {number} [maxSize] Maximum size of the cache. + */ + + /** + * Internal cache entry. + * + * @typedef MemizeCacheNode + * + * @property {?MemizeCacheNode|undefined} [prev] Previous node. + * @property {?MemizeCacheNode|undefined} [next] Next node. + * @property {Array<*>} args Function arguments for cache + * entry. + * @property {*} val Function result. + */ + + /** + * Properties of the enhanced function for controlling cache. + * + * @typedef MemizeMemoizedFunction + * + * @property {()=>void} clear Clear the cache. + */ + + /** + * Accepts a function to be memoized, and returns a new memoized function, with + * optional options. + * + * @template {(...args: any[]) => any} F + * + * @param {F} fn Function to memoize. + * @param {MemizeOptions} [options] Options object. + * + * @return {((...args: Parameters) => ReturnType) & MemizeMemoizedFunction} Memoized function. + */ + function memize(fn, options) { + var size = 0; + + /** @type {?MemizeCacheNode|undefined} */ + var head; + + /** @type {?MemizeCacheNode|undefined} */ + var tail; + options = options || {}; + function memoized( /* ...args */ + ) { + var node = head, + len = arguments.length, + args, + i; + searchCache: while (node) { + // Perform a shallow equality test to confirm that whether the node + // under test is a candidate for the arguments passed. Two arrays + // are shallowly equal if their length matches and each entry is + // strictly equal between the two sets. Avoid abstracting to a + // function which could incur an arguments leaking deoptimization. + + // Check whether node arguments match arguments length + if (node.args.length !== arguments.length) { + node = node.next; + continue; + } + + // Check whether node arguments match arguments values + for (i = 0; i < len; i++) { + if (node.args[i] !== arguments[i]) { + node = node.next; + continue searchCache; + } + } + + // At this point we can assume we've found a match + + // Surface matched node to head if not already + if (node !== head) { + // As tail, shift to previous. Must only shift if not also + // head, since if both head and tail, there is no previous. + if (node === tail) { + tail = node.prev; + } + + // Adjust siblings to point to each other. If node was tail, + // this also handles new tail's empty `next` assignment. + /** @type {MemizeCacheNode} */ + node.prev.next = node.next; + if (node.next) { + node.next.prev = node.prev; + } + node.next = head; + node.prev = null; + /** @type {MemizeCacheNode} */ + head.prev = node; + head = node; + } + + // Return immediately + return node.val; + } + + // No cached value found. Continue to insertion phase: + + // Create a copy of arguments (avoid leaking deoptimization) + args = new Array(len); + for (i = 0; i < len; i++) { + args[i] = arguments[i]; + } + node = { + args: args, + // Generate the result from original function + val: fn.apply(null, args) + }; + + // Don't need to check whether node is already head, since it would + // have been returned above already if it was + + // Shift existing head down list + if (head) { + head.prev = node; + node.next = head; + } else { + // If no head, follows that there's no tail (at initial or reset) + tail = node; + } + + // Trim tail if we're reached max size and are pending cache insertion + if (size === /** @type {MemizeOptions} */options.maxSize) { + tail = /** @type {MemizeCacheNode} */tail.prev; + /** @type {MemizeCacheNode} */ + tail.next = null; + } else { + size++; + } + head = node; + return node.val; + } + memoized.clear = function () { + head = null; + tail = null; + size = 0; + }; + + // Ignore reason: There's not a clear solution to create an intersection of + // the function with additional properties, where the goal is to retain the + // function signature of the incoming argument and add control properties + // on the return value. + + // @ts-ignore + return memoized; + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Core Utility Functions + * + * @module + */ + var isPowerOfTwo = value => { + return value && !(value & value - 1); + }; + var getTimingBezier = (a, b, c, d) => { + var xc = 3.0 * a; + var xb = 3.0 * (c - a) - xc; + var xa = 1.0 - xc - xb; + var yc = 3.0 * b; + var yb = 3.0 * (d - b) - yc; + var ya = 1.0 - yc - yb; + return function (time) { + if (time >= 1.0) { + return 1; + } + if (time <= 0) { + return 0; + } + var t = 0.5, + cbx, + cbxd, + dx; + for (var it = 0; it < 20; it++) { + cbx = t * (t * (t * xa + xb) + xc); + dx = time - cbx; + if (dx > -1e-8 && dx < 1e-8) { + return t * (t * (t * ya + yb) + yc); + } + // Cubic bezier derivative. + cbxd = t * (t * (3 * xa) + 2 * xb) + xc; + if (cbxd > 1e-10 && cbxd < 1e-10) { + // Problematic. Fall back to binary search method. + break; + } + t += dx / cbxd; + } + // Fallback: binary search method. This is more reliable when there are near-0 slopes. + var minT = 0; + var maxT = 1; + for (var _it = 0; _it < 20; _it++) { + t = 0.5 * (minT + maxT); + cbx = t * (t * (t * xa + xb) + xc); + dx = time - cbx; + if (dx > -1e-8 && dx < 1e-8) { + // Solution found! + return t * (t * (t * ya + yb) + yc); + } + if (dx < 0) { + maxT = t; + } else { + minT = t; + } + } + }; + }; + var getTimingFunction = exports("r", memize(str => { + switch (str) { + case 'linear': + return function (time) { + return time; + }; + case 'ease': + return getTimingBezier(0.25, 0.1, 0.25, 1.0); + case 'ease-in': + return getTimingBezier(0.42, 0, 1.0, 1.0); + case 'ease-out': + return getTimingBezier(0, 0, 0.58, 1.0); + case 'ease-in-out': + return getTimingBezier(0.42, 0, 0.58, 1.0); + case 'ease-in-sine': + return getTimingBezier(0.12, 0, 0.39, 0); + case 'ease-out-sine': + return getTimingBezier(0.12, 0, 0.39, 0); + case 'ease-in-out-sine': + return getTimingBezier(0.37, 0, 0.63, 1); + case 'ease-in-cubic': + return getTimingBezier(0.32, 0, 0.67, 0); + case 'ease-out-cubic': + return getTimingBezier(0.33, 1, 0.68, 1); + case 'ease-in-out-cubic': + return getTimingBezier(0.65, 0, 0.35, 1); + case 'ease-in-circ': + return getTimingBezier(0.55, 0, 1, 0.45); + case 'ease-out-circ': + return getTimingBezier(0, 0.55, 0.45, 1); + case 'ease-in-out-circ': + return getTimingBezier(0.85, 0, 0.15, 1); + case 'ease-in-back': + return getTimingBezier(0.36, 0, 0.66, -0.56); + case 'ease-out-back': + return getTimingBezier(0.34, 1.56, 0.64, 1); + case 'ease-in-out-back': + return getTimingBezier(0.68, -0.6, 0.32, 1.6); + case 'step-start': + return function () { + return 1; + }; + case 'step-end': + return function (time) { + return time === 1 ? 1 : 0; + }; + default: + // eslint-disable-next-line no-case-declarations + var s = 'cubic-bezier('; + if (str && str.indexOf(s) === 0) { + var parts = str.substr(s.length, str.length - s.length - 1).split(','); + if (parts.length !== 4) { + console.warn('Unknown timing function: ' + str); + // Fallback: use linear. + return function (time) { + return time; + }; + } + var a = parseFloat(parts[0] || '0.42'); + var b = parseFloat(parts[1] || '0'); + var c = parseFloat(parts[2] || '1'); + var d = parseFloat(parts[3] || '1'); + if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d)) { + console.warn(' Unknown timing function: ' + str); + // Fallback: use linear. + return function (time) { + return time; + }; + } + return getTimingBezier(a, b, c, d); + } else { + console.warn('Unknown timing function: ' + str); + // Fallback: use linear. + return function (time) { + return time; + }; + } + } + })); + if (!Math.hypot) Math.hypot = (...args) => { + var y = 0, + i = args.length; + while (i--) { + y += args[i] * args[i]; + } + return Math.sqrt(y); + }; + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + var TRANSPARENT_TEXTURE_DATA = new Uint8Array([0, 0, 0, 0]); + /** + * A wrapper around a WebGLTexture that handles loading the texture data + * from a Texture source and uploading it to the GPU as well as freeing + * the uploaded texture. + * + * @remarks + * When accessing the ctxTexture property, the texture will be loaded if + * it hasn't been already. ctxTexture will always return a valid WebGLTexture + * and trigger the loading/uploading of the texture's data if it hasn't been + * loaded yet. + */ + class WebGlCoreCtxTexture extends CoreContextTexture { + constructor(glw, memManager, textureSource) { + super(memManager, textureSource); + _defineProperty(this, "glw", void 0); + _defineProperty(this, "_nativeCtxTexture", null); + _defineProperty(this, "_state", 'freed'); + _defineProperty(this, "_w", 0); + _defineProperty(this, "_h", 0); + this.glw = glw; + } + get ctxTexture() { + if (this._state === 'freed') { + this.load(); + } + assertTruthy(this._nativeCtxTexture); + return this._nativeCtxTexture; + } + get renderable() { + return this.textureSource.renderable; + } + get w() { + return this._w; + } + get h() { + return this._h; + } + /** + * Load the texture data from the Texture source and upload it to the GPU + * + * @remarks + * This method is called automatically when accessing the ctxTexture property + * if the texture hasn't been loaded yet. But it can also be called manually + * to force the texture to be pre-loaded prior to accessing the ctxTexture + * property. + */ + load() { + // If the texture is already loading or loaded, don't load it again. + if (this._state === 'loading' || this._state === 'loaded') { + return; + } + this._state = 'loading'; + this.textureSource.setState('loading'); + this._nativeCtxTexture = this.createNativeCtxTexture(); + this.onLoadRequest().then(({ + width, + height + }) => { + if (this._state === 'freed') { + return; + } + this._state = 'loaded'; + this._w = width; + this._h = height; + // Update the texture source's width and height so that it can be used + // for rendering. + this.textureSource.setState('loaded', { + width, + height + }); + }).catch(err => { + this._state = 'failed'; + this.textureSource.setState('failed', err); + console.error(err); + }); + } + /** + * Called when the texture data needs to be loaded and uploaded to a texture + */ + onLoadRequest() { + var _this = this; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var _this$textureSource; + var glw, memManager, textureData, width, height, data, _mipmaps$, _textureData$data, mipmaps, _textureData$data$wid, _width, _textureData$data$hei, _height, type, glInternalFormat, view; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + glw = _this.glw, memManager = _this.memManager; // Set to a 1x1 transparent texture + glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, null); + memManager.setTextureMemUse(_this, TRANSPARENT_TEXTURE_DATA.byteLength); + _context.next = 5; + return (_this$textureSource = _this.textureSource) === null || _this$textureSource === void 0 ? void 0 : _this$textureSource.getTextureData(); + case 5: + textureData = _context.sent; + if (_this._nativeCtxTexture) { + _context.next = 9; + break; + } + assertTruthy(_this._state === 'freed'); + return _context.abrupt("return", { + width: 0, + height: 0 + }); + case 9: + width = 0; + height = 0; + assertTruthy(_this._nativeCtxTexture); + glw.activeTexture(0); + // If textureData is null, the texture is empty (0, 0) and we don't need to + // upload any data to the GPU. + if (textureData.data instanceof ImageBitmap || textureData.data instanceof ImageData || + // not using typeof HTMLImageElement due to web worker + isHTMLImageElement(textureData.data)) { + data = textureData.data; + width = data.width; + height = data.height; + glw.bindTexture(_this._nativeCtxTexture); + glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha); + glw.texImage2D(0, glw.RGBA, glw.RGBA, glw.UNSIGNED_BYTE, data); + memManager.setTextureMemUse(_this, width * height * 4); + // generate mipmaps for power-of-2 textures or in WebGL2RenderingContext + if (glw.isWebGl2() || isPowerOfTwo(width) && isPowerOfTwo(height)) { + glw.generateMipmap(); + } + } else if (textureData.data === null) { + width = 0; + height = 0; + // Reset to a 1x1 transparent texture + glw.bindTexture(_this._nativeCtxTexture); + glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, TRANSPARENT_TEXTURE_DATA); + memManager.setTextureMemUse(_this, TRANSPARENT_TEXTURE_DATA.byteLength); + } else if ('mipmaps' in textureData.data && textureData.data.mipmaps) { + _textureData$data = textureData.data, mipmaps = _textureData$data.mipmaps, _textureData$data$wid = _textureData$data.width, _width = _textureData$data$wid === void 0 ? 0 : _textureData$data$wid, _textureData$data$hei = _textureData$data.height, _height = _textureData$data$hei === void 0 ? 0 : _textureData$data$hei, type = _textureData$data.type, glInternalFormat = _textureData$data.glInternalFormat; + view = type === 'ktx' ? new DataView((_mipmaps$ = mipmaps[0]) !== null && _mipmaps$ !== void 0 ? _mipmaps$ : new ArrayBuffer(0)) : mipmaps[0]; + glw.bindTexture(_this._nativeCtxTexture); + glw.compressedTexImage2D(0, glInternalFormat, _width, _height, 0, view); + glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE); + glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE); + glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR); + glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR); + memManager.setTextureMemUse(_this, view.byteLength); + } else { + console.error(`WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned`, textureData); + } + return _context.abrupt("return", { + width, + height + }); + case 15: + case "end": + return _context.stop(); + } + }, _callee); + }))(); + } + /** + * Free the WebGLTexture from the GPU + * + * @returns + */ + free() { + if (this._state === 'freed') { + return; + } + this._state = 'freed'; + this.textureSource.setState('freed'); + this._w = 0; + this._h = 0; + if (!this._nativeCtxTexture) { + return; + } + var glw = this.glw, + memManager = this.memManager; + glw.deleteTexture(this._nativeCtxTexture); + memManager.setTextureMemUse(this, 0); + this._nativeCtxTexture = null; + } + /** + * Create native context texture + * + * @remarks + * When this method returns the returned texture will be bound to the GL context state. + * + * @param width + * @param height + * @returns + */ + createNativeCtxTexture() { + var glw = this.glw; + var nativeTexture = glw.createTexture(); + if (!nativeTexture) { + throw new Error('Could not create WebGL Texture'); + } + // On initial load request, create a 1x1 transparent texture to use until + // the texture data is finally loaded. + glw.activeTexture(0); + glw.bindTexture(nativeTexture); + // linear texture filtering + glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR); + glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR); + // texture wrapping method + glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE); + glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE); + return nativeTexture; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Texture consisting of only a 1x1 color pixel + * + * @remarks + * The pixel color is set with the {@link ColorTextureProps.color} prop. + * + * This is the default texture used for a Node if it's + * {@link INodeWritableProps.texture} prop is set to `null` (the default) + * + * Generally the 1x1 color pixel is stretched to whatever the set dimensions of + * a Node are. + */ + class ColorTexture extends Texture { + constructor(txManager, props) { + super(txManager); + _defineProperty(this, "props", void 0); + this.props = ColorTexture.resolveDefaults(props || {}); + } + get color() { + return this.props.color; + } + set color(color) { + this.props.color = color; + } + getTextureData() { + var _this2 = this; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + var pixelData32, pixelData8; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + pixelData32 = new Uint32Array([_this2.color]); + pixelData8 = new Uint8ClampedArray(pixelData32.buffer); + return _context2.abrupt("return", { + data: new ImageData(pixelData8, 1, 1), + premultiplyAlpha: true + }); + case 3: + case "end": + return _context2.stop(); + } + }, _callee2); + }))(); + } + static makeCacheKey(props) { + var resolvedProps = ColorTexture.resolveDefaults(props); + return `ColorTexture,${resolvedProps.color}`; + } + static resolveDefaults(props) { + return { + color: props.color || 0xffffffff + }; + } + } + _defineProperty(ColorTexture, "z$__type__Props", void 0); + exports("u", ColorTexture); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * A Texture that is a sub-region of another Texture. + * + * @remarks + * The parent texture can be a Sprite Sheet/Texture Atlas and set using the + * {@link SubTextureProps.texture} prop. The sub-region relative to the parent + * texture is defined with the {@link SubTextureProps.x}, + * {@link SubTextureProps.y}, {@link SubTextureProps.width}, and + * {@link SubTextureProps.height} pixel values. + */ + class SubTexture extends Texture { + constructor(txManager, props) { + super(txManager); + _defineProperty(this, "props", void 0); + _defineProperty(this, "parentTexture", void 0); + _defineProperty(this, "onParentTxLoaded", () => { + // We ignore the parent's passed dimensions, and simply use the SubTexture's + // configured dimensions (because that's all that matters here) + this.setState('loaded', { + width: this.props.width, + height: this.props.height + }); + }); + _defineProperty(this, "onParentTxFailed", (target, error) => { + this.setState('failed', error); + }); + this.parentTexture = this.txManager.loadTexture(props.texture.txType, props.texture.props, props.texture.options); + this.props = SubTexture.resolveDefaults(props || {}); + // If parent texture is already loaded / failed, trigger loaded event manually + // so that users get a consistent event experience. + // We do this in a microtask to allow listeners to be attached in the same + // synchronous task after calling loadTexture() + queueMicrotask(() => { + var parentTx = this.parentTexture; + if (parentTx.state === 'loaded') { + this.onParentTxLoaded(parentTx, parentTx.dimensions); + } else if (parentTx.state === 'failed') { + this.onParentTxFailed(parentTx, parentTx.error); + } + parentTx.on('loaded', this.onParentTxLoaded); + parentTx.on('failed', this.onParentTxFailed); + }); + } + getTextureData() { + var _this3 = this; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + return _context3.abrupt("return", { + data: _this3.props + }); + case 1: + case "end": + return _context3.stop(); + } + }, _callee3); + }))(); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + static makeCacheKey(props) { + return false; + } + static resolveDefaults(props) { + return { + texture: props.texture, + x: props.x || 0, + y: props.y || 0, + width: props.width || 0, + height: props.height || 0 + }; + } + } + _defineProperty(SubTexture, "z$__type__Props", void 0); + exports("v", SubTexture); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class WebGlCoreCtxSubTexture extends WebGlCoreCtxTexture { + constructor(glw, memManager, textureSource) { + super(glw, memManager, textureSource); + } + onLoadRequest() { + var _this4 = this; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() { + var _props$data, _props$data2; + var props; + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return _this4.textureSource.getTextureData(); + case 2: + props = _context4.sent; + return _context4.abrupt("return", { + width: ((_props$data = props.data) === null || _props$data === void 0 ? void 0 : _props$data.width) || 0, + height: ((_props$data2 = props.data) === null || _props$data2 === void 0 ? void 0 : _props$data2.height) || 0 + }); + case 4: + case "end": + return _context4.stop(); + } + }, _callee4); + }))(); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Represents a collection of WebGL Buffers along with their associated + * vertex attribute formats. + */ + class BufferCollection { + constructor(config) { + _defineProperty(this, "config", void 0); + this.config = config; + } + /** + * Get the WebGLBuffer associated with the given attribute name if it exists. + * + * @param attributeName + * @returns + */ + getBuffer(attributeName) { + var _this$config$find; + return (_this$config$find = this.config.find(item => item.attributes[attributeName])) === null || _this$config$find === void 0 ? void 0 : _this$config$find.buffer; + } + /** + * Get the AttributeInfo associated with the given attribute name if it exists. + * + * @param attributeName + * @returns + */ + getAttributeInfo(attributeName) { + var _this$config$find2; + return (_this$config$find2 = this.config.find(item => item.attributes[attributeName])) === null || _this$config$find2 === void 0 ? void 0 : _this$config$find2.attributes[attributeName]; + } + } + exports("B", BufferCollection); + + /* eslint-disable @typescript-eslint/no-unsafe-return */ + /* eslint-disable @typescript-eslint/no-explicit-any */ + /* eslint-disable @typescript-eslint/no-unsafe-argument */ + /** + * Optimized WebGL Context Wrapper + * + * @remarks + * This class contains the subset of the WebGLRenderingContext & WebGL2RenderingContext + * API that is used by the renderer. Select high volume WebGL methods include + * caching optimizations to avoid making WebGL calls if the state is already set + * to the desired value. + * + * While most methods contained are direct passthroughs to the WebGL context, + * some methods combine multiple WebGL calls into one for convenience, modify + * arguments to be more convenient, or are replaced by more specific methods. + * + * Not all methods are optimized. Only methods that are called frequently + * and/or have a high cost are optimized. + * + * A subset of GLenum constants are also exposed as properties on this class + * for convenience. + */ + class WebGlContextWrapper { + //#endregion WebGL Enums + constructor(gl) { + _defineProperty(this, "gl", void 0); + //#region Cached WebGL State + _defineProperty(this, "activeTextureUnit", 0); + _defineProperty(this, "texture2dUnits", void 0); + _defineProperty(this, "texture2dParams", new WeakMap()); + _defineProperty(this, "scissorEnabled", void 0); + _defineProperty(this, "scissorX", void 0); + _defineProperty(this, "scissorY", void 0); + _defineProperty(this, "scissorWidth", void 0); + _defineProperty(this, "scissorHeight", void 0); + _defineProperty(this, "blendEnabled", void 0); + _defineProperty(this, "blendSrcRgb", void 0); + _defineProperty(this, "blendDstRgb", void 0); + _defineProperty(this, "blendSrcAlpha", void 0); + _defineProperty(this, "blendDstAlpha", void 0); + _defineProperty(this, "boundArrayBuffer", void 0); + _defineProperty(this, "boundElementArrayBuffer", void 0); + _defineProperty(this, "curProgram", void 0); + _defineProperty(this, "programUniforms", new WeakMap()); + //#endregion Cached WebGL State + //#region Canvas + _defineProperty(this, "canvas", void 0); + //#endregion Canvas + //#region WebGL Enums + _defineProperty(this, "MAX_RENDERBUFFER_SIZE", void 0); + _defineProperty(this, "MAX_TEXTURE_SIZE", void 0); + _defineProperty(this, "MAX_VIEWPORT_DIMS", void 0); + _defineProperty(this, "MAX_VERTEX_TEXTURE_IMAGE_UNITS", void 0); + _defineProperty(this, "MAX_TEXTURE_IMAGE_UNITS", void 0); + _defineProperty(this, "MAX_COMBINED_TEXTURE_IMAGE_UNITS", void 0); + _defineProperty(this, "MAX_VERTEX_ATTRIBS", void 0); + _defineProperty(this, "MAX_VARYING_VECTORS", void 0); + _defineProperty(this, "MAX_VERTEX_UNIFORM_VECTORS", void 0); + _defineProperty(this, "MAX_FRAGMENT_UNIFORM_VECTORS", void 0); + _defineProperty(this, "TEXTURE_MAG_FILTER", void 0); + _defineProperty(this, "TEXTURE_MIN_FILTER", void 0); + _defineProperty(this, "TEXTURE_WRAP_S", void 0); + _defineProperty(this, "TEXTURE_WRAP_T", void 0); + _defineProperty(this, "LINEAR", void 0); + _defineProperty(this, "CLAMP_TO_EDGE", void 0); + _defineProperty(this, "RGBA", void 0); + _defineProperty(this, "UNSIGNED_BYTE", void 0); + _defineProperty(this, "UNPACK_PREMULTIPLY_ALPHA_WEBGL", void 0); + _defineProperty(this, "UNPACK_FLIP_Y_WEBGL", void 0); + _defineProperty(this, "FLOAT", void 0); + _defineProperty(this, "TRIANGLES", void 0); + _defineProperty(this, "UNSIGNED_SHORT", void 0); + _defineProperty(this, "ONE", void 0); + _defineProperty(this, "ONE_MINUS_SRC_ALPHA", void 0); + _defineProperty(this, "VERTEX_SHADER", void 0); + _defineProperty(this, "FRAGMENT_SHADER", void 0); + _defineProperty(this, "STATIC_DRAW", void 0); + _defineProperty(this, "COMPILE_STATUS", void 0); + _defineProperty(this, "LINK_STATUS", void 0); + _defineProperty(this, "DYNAMIC_DRAW", void 0); + _defineProperty(this, "COLOR_ATTACHMENT0", void 0); + this.gl = gl; + // The following code extracts the current state of the WebGL context + // to our local JavaScript cached version of it. This is so we can + // avoid making WebGL calls if we don't need to. + // We could assume that the WebGL context is in a default state, but + // in the future we may want to support restoring a broken WebGL context + // and this will help with that. + this.activeTextureUnit = gl.getParameter(gl.ACTIVE_TEXTURE) - gl.TEXTURE0; + var maxTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + // save current texture units + this.texture2dUnits = new Array(maxTextureUnits).fill(undefined).map((_, i) => { + this.activeTexture(i); + return gl.getParameter(gl.TEXTURE_BINDING_2D); + }); + // restore active texture unit + this.activeTexture(this.activeTextureUnit); + this.scissorEnabled = gl.isEnabled(gl.SCISSOR_TEST); + var scissorBox = gl.getParameter(gl.SCISSOR_BOX); + this.scissorX = scissorBox[0]; + this.scissorY = scissorBox[1]; + this.scissorWidth = scissorBox[2]; + this.scissorHeight = scissorBox[3]; + this.blendEnabled = gl.isEnabled(gl.BLEND); + this.blendSrcRgb = gl.getParameter(gl.BLEND_SRC_RGB); + this.blendDstRgb = gl.getParameter(gl.BLEND_DST_RGB); + this.blendSrcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA); + this.blendDstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA); + this.boundArrayBuffer = gl.getParameter(gl.ARRAY_BUFFER_BINDING); + this.boundElementArrayBuffer = gl.getParameter(gl.ELEMENT_ARRAY_BUFFER_BINDING); + this.curProgram = gl.getParameter(gl.CURRENT_PROGRAM); + this.canvas = gl.canvas; + // Extract GLenums + this.MAX_RENDERBUFFER_SIZE = gl.MAX_RENDERBUFFER_SIZE; + this.MAX_TEXTURE_SIZE = gl.MAX_TEXTURE_SIZE; + this.MAX_VIEWPORT_DIMS = gl.MAX_VIEWPORT_DIMS; + this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS; + this.MAX_TEXTURE_IMAGE_UNITS = gl.MAX_TEXTURE_IMAGE_UNITS; + this.MAX_COMBINED_TEXTURE_IMAGE_UNITS = gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS; + this.MAX_VERTEX_ATTRIBS = gl.MAX_VERTEX_ATTRIBS; + this.MAX_VARYING_VECTORS = gl.MAX_VARYING_VECTORS; + this.MAX_VERTEX_UNIFORM_VECTORS = gl.MAX_VERTEX_UNIFORM_VECTORS; + this.MAX_FRAGMENT_UNIFORM_VECTORS = gl.MAX_FRAGMENT_UNIFORM_VECTORS; + this.TEXTURE_MAG_FILTER = gl.TEXTURE_MAG_FILTER; + this.TEXTURE_MIN_FILTER = gl.TEXTURE_MIN_FILTER; + this.TEXTURE_WRAP_S = gl.TEXTURE_WRAP_S; + this.TEXTURE_WRAP_T = gl.TEXTURE_WRAP_T; + this.LINEAR = gl.LINEAR; + this.CLAMP_TO_EDGE = gl.CLAMP_TO_EDGE; + this.RGBA = gl.RGBA; + this.UNSIGNED_BYTE = gl.UNSIGNED_BYTE; + this.UNPACK_PREMULTIPLY_ALPHA_WEBGL = gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL; + this.UNPACK_FLIP_Y_WEBGL = gl.UNPACK_FLIP_Y_WEBGL; + this.FLOAT = gl.FLOAT; + this.TRIANGLES = gl.TRIANGLES; + this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT; + this.ONE = gl.ONE; + this.ONE_MINUS_SRC_ALPHA = gl.ONE_MINUS_SRC_ALPHA; + this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS; + this.TRIANGLES = gl.TRIANGLES; + this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT; + this.VERTEX_SHADER = gl.VERTEX_SHADER; + this.FRAGMENT_SHADER = gl.FRAGMENT_SHADER; + this.STATIC_DRAW = gl.STATIC_DRAW; + this.COMPILE_STATUS = gl.COMPILE_STATUS; + this.LINK_STATUS = gl.LINK_STATUS; + this.DYNAMIC_DRAW = gl.DYNAMIC_DRAW; + this.COLOR_ATTACHMENT0 = gl.COLOR_ATTACHMENT0; + } + /** + * Returns true if the WebGL context is WebGL2 + * + * @returns + */ + isWebGl2() { + return isWebGl2(this.gl); + } + /** + * ``` + * gl.activeTexture(textureUnit + gl.TEXTURE0); + * ``` + * + * @remarks + * **WebGL Difference**: `textureUnit` is based from 0, not `gl.TEXTURE0`. + * + * @param textureUnit + */ + activeTexture(textureUnit) { + var gl = this.gl; + if (this.activeTextureUnit !== textureUnit) { + gl.activeTexture(textureUnit + gl.TEXTURE0); + this.activeTextureUnit = textureUnit; + } + } + /** + * ``` + * gl.bindTexture(gl.TEXTURE_2D, texture); + * ``` + * @remarks + * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D` + * + * @param texture + */ + bindTexture(texture) { + var gl = this.gl, + activeTextureUnit = this.activeTextureUnit, + texture2dUnits = this.texture2dUnits; + if (texture2dUnits[activeTextureUnit] === texture) { + return; + } + texture2dUnits[activeTextureUnit] = texture; + gl.bindTexture(this.gl.TEXTURE_2D, texture); + } + _getActiveTexture() { + var activeTextureUnit = this.activeTextureUnit, + texture2dUnits = this.texture2dUnits; + return texture2dUnits[activeTextureUnit]; + } + /** + * ``` + * gl.texParameteri(gl.TEXTURE_2D, pname, param); + * ``` + * @remarks + * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D` + * + * @param pname + * @param param + * @returns + */ + texParameteri(pname, param) { + var gl = this.gl, + texture2dParams = this.texture2dParams; + var activeTexture = this._getActiveTexture(); + if (!activeTexture) { + throw new Error('No active texture'); + } + var textureParams = texture2dParams.get(activeTexture); + if (!textureParams) { + textureParams = {}; + texture2dParams.set(activeTexture, textureParams); + } + if (textureParams[pname] === param) { + return; + } + textureParams[pname] = param; + gl.texParameteri(gl.TEXTURE_2D, pname, param); + } + texImage2D(level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels) { + var gl = this.gl; + if (format) { + gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels); + } else { + gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource); + } + } + /** + * ``` + * gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, data); + * ``` + * + * @remarks + * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D` + */ + compressedTexImage2D(level, internalformat, width, height, border, data) { + var gl = this.gl; + gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalformat, width, height, border, data); + } + /** + * ``` + * gl.pixelStorei(pname, param); + * ``` + * + * @param pname + * @param param + */ + pixelStorei(pname, param) { + var gl = this.gl; + gl.pixelStorei(pname, param); + } + /** + * ``` + * gl.generateMipmap(gl.TEXTURE_2D); + * ``` + * + * @remarks + * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D` + */ + generateMipmap() { + var gl = this.gl; + gl.generateMipmap(gl.TEXTURE_2D); + } + /** + * ``` + * gl.createTexture(); + * ``` + * + * @returns + */ + createTexture() { + var gl = this.gl; + return gl.createTexture(); + } + /** + * ``` + * gl.deleteTexture(texture); + * ``` + * + * @param texture + */ + deleteTexture(texture) { + var gl = this.gl; + if (texture) { + this.texture2dParams.delete(texture); + } + gl.deleteTexture(texture); + } + /** + * ``` + * gl.viewport(x, y, width, height); + * ``` + */ + viewport(x, y, width, height) { + var gl = this.gl; + gl.viewport(x, y, width, height); + } + /** + * ``` + * gl.clearColor(red, green, blue, alpha); + * ``` + * + * @param red + * @param green + * @param blue + * @param alpha + */ + clearColor(red, green, blue, alpha) { + var gl = this.gl; + gl.clearColor(red, green, blue, alpha); + } + /** + * ``` + * gl["enable"|"disable"](gl.SCISSOR_TEST); + * ``` + * @param enable + */ + setScissorTest(enable) { + var gl = this.gl, + scissorEnabled = this.scissorEnabled; + if (enable === scissorEnabled) { + return; + } + if (enable) { + gl.enable(gl.SCISSOR_TEST); + } else { + gl.disable(gl.SCISSOR_TEST); + } + this.scissorEnabled = enable; + } + /** + * ``` + * gl.scissor(x, y, width, height); + * ``` + * + * @param x + * @param y + * @param width + * @param height + */ + scissor(x, y, width, height) { + var gl = this.gl, + scissorX = this.scissorX, + scissorY = this.scissorY, + scissorWidth = this.scissorWidth, + scissorHeight = this.scissorHeight; + if (x !== scissorX || y !== scissorY || width !== scissorWidth || height !== scissorHeight) { + gl.scissor(x, y, width, height); + this.scissorX = x; + this.scissorY = y; + this.scissorWidth = width; + this.scissorHeight = height; + } + } + /** + * ``` + * gl["enable"|"disable"](gl.BLEND); + * ``` + * + * @param blend + * @returns + */ + setBlend(blend) { + var gl = this.gl, + blendEnabled = this.blendEnabled; + if (blend === blendEnabled) { + return; + } + if (blend) { + gl.enable(gl.BLEND); + } else { + gl.disable(gl.BLEND); + } + this.blendEnabled = blend; + } + /** + * ``` + * gl.blendFunc(src, dst); + * ``` + * + * @param src + * @param dst + */ + blendFunc(src, dst) { + var gl = this.gl, + blendSrcRgb = this.blendSrcRgb, + blendDstRgb = this.blendDstRgb, + blendSrcAlpha = this.blendSrcAlpha, + blendDstAlpha = this.blendDstAlpha; + if (src !== blendSrcRgb || dst !== blendDstRgb || src !== blendSrcAlpha || dst !== blendDstAlpha) { + gl.blendFunc(src, dst); + this.blendSrcRgb = src; + this.blendDstRgb = dst; + this.blendSrcAlpha = src; + this.blendDstAlpha = dst; + } + } + /** + * ``` + * gl.createBuffer(); + * ``` + * + * @returns + */ + createBuffer() { + var gl = this.gl; + return gl.createBuffer(); + } + /** + * ``` + * gl.createFramebuffer(); + * ``` + * @returns + */ + createFramebuffer() { + var gl = this.gl; + return gl.createFramebuffer(); + } + /** + * ``` + * gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + * ``` + * + * @param framebuffer + */ + bindFramebuffer(framebuffer) { + var gl = this.gl; + gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + } + /** + * ``` + * gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); + * ``` + * @remarks + * **WebGL Difference**: Bind target is always `gl.FRAMEBUFFER` and textarget is always `gl.TEXTURE_2D` + */ + framebufferTexture2D(attachment, texture, level) { + var gl = this.gl; + gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, texture, level); + } + /** + * ``` + * gl.clear(gl.COLOR_BUFFER_BIT); + * ``` + * + * @remarks + * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT` + */ + clear() { + var gl = this.gl; + gl.clear(gl.COLOR_BUFFER_BIT); + } + /** + * ``` + * gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + * gl.bufferData(gl.ARRAY_BUFFER, data, usage); + * ``` + * + * @remarks + * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function. + * + * @param buffer + * @param data + * @param usage + */ + arrayBufferData(buffer, data, usage) { + var gl = this.gl, + boundArrayBuffer = this.boundArrayBuffer; + if (boundArrayBuffer !== buffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + this.boundArrayBuffer = buffer; + } + gl.bufferData(gl.ARRAY_BUFFER, data, usage); + } + /** + * ``` + * gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer); + * gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage); + * ``` + * @remarks + * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function. + * + * @param buffer + * @param data + * @param usage + */ + elementArrayBufferData(buffer, data, usage) { + var gl = this.gl, + boundElementArrayBuffer = this.boundElementArrayBuffer; + if (boundElementArrayBuffer !== buffer) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer); + this.boundElementArrayBuffer = buffer; + } + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage); + } + /** + * ``` + * gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + * gl.vertexAttribPointer(index, size, type, normalized, stride, offset); + * ``` + * + * @remarks + * **WebGL Combo**: `gl.bindBuffer` and `gl.vertexAttribPointer` are combined into one function. + * + * @param buffer + * @param index + * @param size + * @param type + * @param normalized + * @param stride + * @param offset + */ + vertexAttribPointer(buffer, index, size, type, normalized, stride, offset) { + var gl = this.gl, + boundArrayBuffer = this.boundArrayBuffer; + if (boundArrayBuffer !== buffer) { + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + this.boundArrayBuffer = buffer; + } + gl.vertexAttribPointer(index, size, type, normalized, stride, offset); + } + /** + * ``` + * gl.useProgram(program); + * ``` + * + * @param program + * @returns + */ + useProgram(program) { + var gl = this.gl, + curProgram = this.curProgram; + if (curProgram === program) { + return; + } + gl.useProgram(program); + this.curProgram = program; + } + setUniform(type, location, ...args) { + var gl = this.gl, + programUniforms = this.programUniforms; + var uniforms = programUniforms.get(this.curProgram); + if (!uniforms) { + uniforms = new Map(); + programUniforms.set(this.curProgram, uniforms); + } + var uniformArgs = uniforms.get(location); + if (!uniformArgs || !compareArrays(uniformArgs, args)) { + uniforms.set(location, args); + gl[type](location, ...args); + } + } + /** + * ``` + * gl.getParameter(pname); + * ``` + * + * @param pname + * @returns + */ + getParameter(pname) { + var gl = this.gl; + return gl.getParameter(pname); + } + /** + * ``` + * gl.drawElements(mode, count, type, offset); + * ``` + * + * @param mode + * @param count + * @param type + * @param offset + */ + drawElements(mode, count, type, offset) { + var gl = this.gl; + gl.drawElements(mode, count, type, offset); + } + /** + * ``` + * gl.drawArrays(mode, first, count); + * ``` + * + * @param name + * @returns + */ + getExtension(name) { + var gl = this.gl; + return gl.getExtension(name); + } + /** + * ``` + * gl.createVertexArray(); + * ``` + * + * @returns + */ + createVertexArray() { + var gl = this.gl; + assertTruthy(gl instanceof WebGL2RenderingContext); + return gl.createVertexArray(); + } + /** + * ``` + * gl.bindVertexArray(vertexArray); + * ``` + * + * @param vertexArray + */ + bindVertexArray(vertexArray) { + var gl = this.gl; + assertTruthy(gl instanceof WebGL2RenderingContext); + gl.bindVertexArray(vertexArray); + } + /** + * ``` + * gl.getAttribLocation(program, name); + * ``` + * + * @param program + * @param name + * @returns + */ + getAttribLocation(program, name) { + var gl = this.gl; + return gl.getAttribLocation(program, name); + } + /** + * ``` + * gl.getUniformLocation(program, name); + * ``` + * + * @param program + * @param name + * @returns + */ + getUniformLocation(program, name) { + var gl = this.gl; + return gl.getUniformLocation(program, name); + } + /** + * ``` + * gl.enableVertexAttribArray(index); + * ``` + * + * @param index + */ + enableVertexAttribArray(index) { + var gl = this.gl; + gl.enableVertexAttribArray(index); + } + /** + * ``` + * gl.disableVertexAttribArray(index); + * ``` + * + * @param index + */ + disableVertexAttribArray(index) { + var gl = this.gl; + gl.disableVertexAttribArray(index); + } + /** + * ``` + * gl.createShader(type); + * ``` + * + * @param type + * @returns + */ + createShader(type) { + var gl = this.gl; + return gl.createShader(type); + } + /** + * ``` + * gl.compileShader(shader); + * ``` + * + * @param shader + * @returns + */ + compileShader(shader) { + var gl = this.gl; + gl.compileShader(shader); + } + /** + * ``` + * gl.attachShader(program, shader); + * ``` + * + * @param program + * @param shader + */ + attachShader(program, shader) { + var gl = this.gl; + gl.attachShader(program, shader); + } + /** + * ``` + * gl.linkProgram(program); + * ``` + * + * @param program + */ + linkProgram(program) { + var gl = this.gl; + gl.linkProgram(program); + } + /** + * ``` + * gl.deleteProgram(shader); + * ``` + * + * @param shader + */ + deleteProgram(shader) { + var gl = this.gl; + gl.deleteProgram(shader); + } + /** + * ``` + * gl.getShaderParameter(shader, pname); + * ``` + * + * @param shader + * @param pname + */ + getShaderParameter(shader, pname) { + var gl = this.gl; + return gl.getShaderParameter(shader, pname); + } + /** + * ``` + * gl.getShaderInfoLog(shader); + * ``` + * + * @param shader + */ + getShaderInfoLog(shader) { + var gl = this.gl; + return gl.getShaderInfoLog(shader); + } + /** + * ``` + * gl.createProgram(); + * ``` + * + * @returns + */ + createProgram() { + var gl = this.gl; + return gl.createProgram(); + } + /** + * ``` + * gl.getProgramParameter(program, pname); + * ``` + * + * @param program + * @param pname + * @returns + */ + getProgramParameter(program, pname) { + var gl = this.gl; + return gl.getProgramParameter(program, pname); + } + /** + * ``` + * gl.getProgramInfoLog(program); + * ``` + * + * @param program + * @returns + */ + getProgramInfoLog(program) { + var gl = this.gl; + return gl.getProgramInfoLog(program); + } + /** + * ``` + * gl.shaderSource(shader, source); + * ``` + * + * @param shader + * @param source + */ + shaderSource(shader, source) { + var gl = this.gl; + gl.shaderSource(shader, source); + } + /** + * ``` + * gl.deleteShader(shader); + * ``` + * + * @param shader + */ + deleteShader(shader) { + var gl = this.gl; + gl.deleteShader(shader); + } + } + /** + * Compare two arrays for equality. + * + * @remarks + * This function will not try to compare nested arrays or Float32Arrays and + * instead will always return false when they are encountered. + * + * @param a + * @param b + * @returns + */ + function compareArrays(a, b) { + if (a.length !== b.length) { + return false; + } + return a.every((v, i) => { + // Don't bother to compare nested arrays or Float32Arrays + if (Array.isArray(v) || v instanceof Float32Array) { + return false; + } else { + return v === b[i]; + } + }); + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class RenderTexture extends Texture { + constructor(txManager, props) { + super(txManager); + _defineProperty(this, "props", void 0); + this.props = RenderTexture.resolveDefaults(props || {}); + } + get width() { + return this.props.width; + } + set width(value) { + this.props.width = value; + } + get height() { + return this.props.height; + } + set height(value) { + this.props.height = value; + } + getTextureData() { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() { + return _regeneratorRuntime().wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + return _context5.abrupt("return", { + data: null, + premultiplyAlpha: null + }); + case 1: + case "end": + return _context5.stop(); + } + }, _callee5); + }))(); + } + static resolveDefaults(props) { + return { + width: props.width || 256, + height: props.height || 256 + }; + } + } + _defineProperty(RenderTexture, "z$__type__Props", void 0); + exports("R", RenderTexture); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2024 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class WebGlCoreCtxRenderTexture extends WebGlCoreCtxTexture { + constructor(glw, memManager, textureSource) { + super(glw, memManager, textureSource); + // Create Framebuffer object + _defineProperty(this, "framebuffer", void 0); + var framebuffer = glw.createFramebuffer(); + assertTruthy(framebuffer, 'Unable to create framebuffer'); + this.framebuffer = framebuffer; + } + onLoadRequest() { + var _this5 = this; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() { + var glw, memManager, nativeTexture, _this5$textureSource, width, height; + return _regeneratorRuntime().wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + glw = _this5.glw, memManager = _this5.memManager; + nativeTexture = _this5._nativeCtxTexture = _this5.createNativeCtxTexture(); + _this5$textureSource = _this5.textureSource, width = _this5$textureSource.width, height = _this5$textureSource.height; // Set the dimensions of the render texture + glw.texImage2D(0, glw.RGBA, width, height, 0, glw.RGBA, glw.UNSIGNED_BYTE, null); + // Update the texture memory manager + memManager.setTextureMemUse(_this5, width * height * 4); + // Bind the framebuffer + glw.bindFramebuffer(_this5.framebuffer); + // Attach the texture to the framebuffer + glw.framebufferTexture2D(glw.COLOR_ATTACHMENT0, nativeTexture, 0); + // Unbind the framebuffer + glw.bindFramebuffer(null); + return _context6.abrupt("return", { + width, + height + }); + case 9: + case "end": + return _context6.stop(); + } + }, _callee6); + }))(); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + var WORDS_PER_QUAD = 24; + class WebGlCoreRenderer extends CoreRenderer { + constructor(options) { + super(options.stage); + //// WebGL Native Context and Data + _defineProperty(this, "glw", void 0); + _defineProperty(this, "system", void 0); + //// Core Managers + _defineProperty(this, "txManager", void 0); + _defineProperty(this, "txMemManager", void 0); + _defineProperty(this, "shManager", void 0); + //// Options + _defineProperty(this, "options", void 0); + //// Persistent data + _defineProperty(this, "quadBuffer", new ArrayBuffer(1024 * 1024 * 4)); + _defineProperty(this, "fQuadBuffer", new Float32Array(this.quadBuffer)); + _defineProperty(this, "uiQuadBuffer", new Uint32Array(this.quadBuffer)); + _defineProperty(this, "renderOps", []); + //// Render Op / Buffer Filling State + _defineProperty(this, "curBufferIdx", 0); + _defineProperty(this, "curRenderOp", null); + _defineProperty(this, "rttNodes", []); + _defineProperty(this, "activeRttNode", null); + //// Default Shader + _defineProperty(this, "defaultShader", void 0); + _defineProperty(this, "quadBufferCollection", void 0); + /** + * White pixel texture used by default when no texture is specified. + */ + _defineProperty(this, "defaultTexture", void 0); + /** + * Whether the renderer is currently rendering to a texture. + */ + _defineProperty(this, "renderToTextureActive", false); + var canvas = options.canvas, + clearColor = options.clearColor, + bufferMemory = options.bufferMemory; + this.options = options; + this.txManager = options.txManager; + this.txMemManager = options.txMemManager; + this.shManager = options.shManager; + this.defaultTexture = new ColorTexture(this.txManager); + // When the default texture is loaded, request a render in case the + // RAF is paused. Fixes: https://github.com/lightning-js/renderer/issues/123 + this.defaultTexture.once('loaded', () => { + this.stage.requestRender(); + }); + var gl = createWebGLContext(canvas, options.contextSpy); + var glw = this.glw = new WebGlContextWrapper(gl); + var color = getNormalizedRgbaComponents(clearColor); + glw.viewport(0, 0, canvas.width, canvas.height); + glw.clearColor(color[0], color[1], color[2], color[3]); + glw.setBlend(true); + glw.blendFunc(glw.ONE, glw.ONE_MINUS_SRC_ALPHA); + createIndexBuffer(glw, bufferMemory); + this.system = { + parameters: getWebGlParameters(this.glw), + extensions: getWebGlExtensions(this.glw) + }; + this.shManager.renderer = this; + this.defaultShader = this.shManager.loadShader('DefaultShader').shader; + var quadBuffer = glw.createBuffer(); + assertTruthy(quadBuffer); + var stride = 6 * Float32Array.BYTES_PER_ELEMENT; + this.quadBufferCollection = new BufferCollection([{ + buffer: quadBuffer, + attributes: { + a_position: { + name: 'a_position', + size: 2, + type: glw.FLOAT, + normalized: false, + stride, + offset: 0 // start at the beginning of the buffer + }, + a_textureCoordinate: { + name: 'a_textureCoordinate', + size: 2, + type: glw.FLOAT, + normalized: false, + stride, + offset: 2 * Float32Array.BYTES_PER_ELEMENT + }, + a_color: { + name: 'a_color', + size: 4, + type: glw.UNSIGNED_BYTE, + normalized: true, + stride, + offset: 4 * Float32Array.BYTES_PER_ELEMENT + }, + a_textureIndex: { + name: 'a_textureIndex', + size: 1, + type: glw.FLOAT, + normalized: false, + stride, + offset: 5 * Float32Array.BYTES_PER_ELEMENT + } + } + }]); + } + reset() { + var glw = this.glw; + this.curBufferIdx = 0; + this.curRenderOp = null; + this.renderOps.length = 0; + glw.setScissorTest(false); + glw.clear(); + } + getShaderManager() { + return this.shManager; + } + createCtxTexture(textureSource) { + if (textureSource instanceof SubTexture) { + return new WebGlCoreCtxSubTexture(this.glw, this.txMemManager, textureSource); + } else if (textureSource instanceof RenderTexture) { + return new WebGlCoreCtxRenderTexture(this.glw, this.txMemManager, textureSource); + } + return new WebGlCoreCtxTexture(this.glw, this.txMemManager, textureSource); + } + /** + * This function adds a quad (a rectangle composed of two triangles) to the WebGL rendering pipeline. + * + * It takes a set of options that define the quad's properties, such as its dimensions, colors, texture, shader, and transformation matrix. + * The function first updates the shader properties with the current dimensions if necessary, then sets the default texture if none is provided. + * It then checks if a new render operation is needed, based on the current shader and clipping rectangle. + * If a new render operation is needed, it creates one and updates the current render operation. + * The function then adjusts the texture coordinates based on the texture options and adds the texture to the texture manager. + * + * Finally, it calculates the vertices for the quad, taking into account any transformations, and adds them to the quad buffer. + * The function updates the length and number of quads in the current render operation, and updates the current buffer index. + */ + addQuad(params) { + var _texture, _textureOptions$flipX, _textureOptions$flipY; + var fQuadBuffer = this.fQuadBuffer, + uiQuadBuffer = this.uiQuadBuffer; + var width = params.width, + height = params.height, + colorTl = params.colorTl, + colorTr = params.colorTr, + colorBl = params.colorBl, + colorBr = params.colorBr, + textureOptions = params.textureOptions, + shader = params.shader, + shaderProps = params.shaderProps, + alpha = params.alpha, + clippingRect = params.clippingRect, + tx = params.tx, + ty = params.ty, + ta = params.ta, + tb = params.tb, + tc = params.tc, + td = params.td, + renderToTexture = params.rtt, + parentHasRenderTexture = params.parentHasRenderTexture, + framebufferDimensions = params.framebufferDimensions; + var texture = params.texture; + /** + * If the shader props contain any automatic properties, update it with the + * current dimensions that will be used to render the quad. + */ + if (shaderProps && hasOwn(shaderProps, '$dimensions')) { + var dimensions = shaderProps.$dimensions; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + dimensions.width = width; + dimensions.height = height; + } + texture = (_texture = texture) !== null && _texture !== void 0 ? _texture : this.defaultTexture; + assertTruthy(texture instanceof Texture, 'Invalid texture type'); + var bufferIdx = this.curBufferIdx, + curRenderOp = this.curRenderOp; + var targetDims = { + width, + height + }; + var targetShader = shader || this.defaultShader; + assertTruthy(targetShader instanceof WebGlCoreShader); + if (!this.reuseRenderOp(params)) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + this.newRenderOp(targetShader, shaderProps, alpha, targetDims, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions); + curRenderOp = this.curRenderOp; + assertTruthy(curRenderOp); + } + var flipX = (_textureOptions$flipX = textureOptions === null || textureOptions === void 0 ? void 0 : textureOptions.flipX) !== null && _textureOptions$flipX !== void 0 ? _textureOptions$flipX : false; + var flipY = (_textureOptions$flipY = textureOptions === null || textureOptions === void 0 ? void 0 : textureOptions.flipY) !== null && _textureOptions$flipY !== void 0 ? _textureOptions$flipY : false; + var texCoordX1 = 0; + var texCoordY1 = 0; + var texCoordX2 = 1; + var texCoordY2 = 1; + if (texture instanceof SubTexture) { + var _texture$props = texture.props, + _tx = _texture$props.x, + _ty = _texture$props.y, + tw = _texture$props.width, + th = _texture$props.height; + var _ref2 = texture.parentTexture.dimensions || { + width: 0, + height: 0 + }, + _ref2$width = _ref2.width, + parentW = _ref2$width === void 0 ? 0 : _ref2$width, + _ref2$height = _ref2.height, + parentH = _ref2$height === void 0 ? 0 : _ref2$height; + texCoordX1 = _tx / parentW; + texCoordX2 = texCoordX1 + tw / parentW; + texCoordY1 = _ty / parentH; + texCoordY2 = texCoordY1 + th / parentH; + texture = texture.parentTexture; + } + // Flip texture coordinates if dictated by texture options + if (flipX) { + var _ref3 = [texCoordX2, texCoordX1]; + texCoordX1 = _ref3[0]; + texCoordX2 = _ref3[1]; + } + if (flipY) { + var _ref4 = [texCoordY2, texCoordY1]; + texCoordY1 = _ref4[0]; + texCoordY2 = _ref4[1]; + } + var txManager = this.stage.txManager; + var ctxTexture = txManager.getCtxTexture(texture); + assertTruthy(ctxTexture instanceof WebGlCoreCtxTexture); + var textureIdx = this.addTexture(ctxTexture, bufferIdx); + curRenderOp = this.curRenderOp; + assertTruthy(curRenderOp); + // render quad advanced + if (tb !== 0 || tc !== 0) { + // Upper-Left + fQuadBuffer[bufferIdx++] = tx; // vertexX + fQuadBuffer[bufferIdx++] = ty; // vertexY + fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX + fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY + uiQuadBuffer[bufferIdx++] = colorTl; // color + fQuadBuffer[bufferIdx++] = textureIdx; // texIndex + // Upper-Right + fQuadBuffer[bufferIdx++] = tx + width * ta; + fQuadBuffer[bufferIdx++] = ty + width * tc; + fQuadBuffer[bufferIdx++] = texCoordX2; + fQuadBuffer[bufferIdx++] = texCoordY1; + uiQuadBuffer[bufferIdx++] = colorTr; + fQuadBuffer[bufferIdx++] = textureIdx; + // Lower-Left + fQuadBuffer[bufferIdx++] = tx + height * tb; + fQuadBuffer[bufferIdx++] = ty + height * td; + fQuadBuffer[bufferIdx++] = texCoordX1; + fQuadBuffer[bufferIdx++] = texCoordY2; + uiQuadBuffer[bufferIdx++] = colorBl; + fQuadBuffer[bufferIdx++] = textureIdx; + // Lower-Right + fQuadBuffer[bufferIdx++] = tx + width * ta + height * tb; + fQuadBuffer[bufferIdx++] = ty + width * tc + height * td; + fQuadBuffer[bufferIdx++] = texCoordX2; + fQuadBuffer[bufferIdx++] = texCoordY2; + uiQuadBuffer[bufferIdx++] = colorBr; + fQuadBuffer[bufferIdx++] = textureIdx; + } else { + // Calculate the right corner of the quad + // multiplied by the scale + var rightCornerX = tx + width * ta; + var rightCornerY = ty + height * td; + // Upper-Left + fQuadBuffer[bufferIdx++] = tx; // vertexX + fQuadBuffer[bufferIdx++] = ty; // vertexY + fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX + fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY + uiQuadBuffer[bufferIdx++] = colorTl; // color + fQuadBuffer[bufferIdx++] = textureIdx; // texIndex + // Upper-Right + fQuadBuffer[bufferIdx++] = rightCornerX; + fQuadBuffer[bufferIdx++] = ty; + fQuadBuffer[bufferIdx++] = texCoordX2; + fQuadBuffer[bufferIdx++] = texCoordY1; + uiQuadBuffer[bufferIdx++] = colorTr; + fQuadBuffer[bufferIdx++] = textureIdx; + // Lower-Left + fQuadBuffer[bufferIdx++] = tx; + fQuadBuffer[bufferIdx++] = rightCornerY; + fQuadBuffer[bufferIdx++] = texCoordX1; + fQuadBuffer[bufferIdx++] = texCoordY2; + uiQuadBuffer[bufferIdx++] = colorBl; + fQuadBuffer[bufferIdx++] = textureIdx; + // Lower-Right + fQuadBuffer[bufferIdx++] = rightCornerX; + fQuadBuffer[bufferIdx++] = rightCornerY; + fQuadBuffer[bufferIdx++] = texCoordX2; + fQuadBuffer[bufferIdx++] = texCoordY2; + uiQuadBuffer[bufferIdx++] = colorBr; + fQuadBuffer[bufferIdx++] = textureIdx; + } + // Update the length of the current render op + curRenderOp.length += WORDS_PER_QUAD; + curRenderOp.numQuads++; + this.curBufferIdx = bufferIdx; + } + /** + * Replace the existing RenderOp with a new one that uses the specified Shader + * and starts at the specified buffer index. + * + * @param shader + * @param bufferIdx + */ + newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions) { + var curRenderOp = new WebGlCoreRenderOp(this.glw, this.options, this.quadBufferCollection, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, 0, + // Z-Index is only used for explictly added Render Ops + renderToTexture, parentHasRenderTexture, framebufferDimensions); + this.curRenderOp = curRenderOp; + this.renderOps.push(curRenderOp); + } + /** + * Add a texture to the current RenderOp. If the texture cannot be added to the + * current RenderOp, a new RenderOp will be created and the texture will be added + * to that one. + * + * If the texture cannot be added to the new RenderOp, an error will be thrown. + * + * @param texture + * @param bufferIdx + * @param recursive + * @returns Assigned Texture Index of the texture in the render op + */ + addTexture(texture, bufferIdx, recursive) { + var curRenderOp = this.curRenderOp; + assertTruthy(curRenderOp); + var textureIdx = curRenderOp.addTexture(texture); + // TODO: Refactor to be more DRY + if (textureIdx === 0xffffffff) { + if (recursive) { + throw new Error('Unable to add texture to render op'); + } + var shader = curRenderOp.shader, + shaderProps = curRenderOp.shaderProps, + dimensions = curRenderOp.dimensions, + clippingRect = curRenderOp.clippingRect, + alpha = curRenderOp.alpha; + this.newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx); + return this.addTexture(texture, bufferIdx, true); + } + return textureIdx; + } + /** + * Test if the current Render operation can be reused for the specified parameters. + * @param params + * @returns + */ + reuseRenderOp(params) { + var _this$curRenderOp; + var shader = params.shader, + shaderProps = params.shaderProps, + parentHasRenderTexture = params.parentHasRenderTexture, + rtt = params.rtt, + clippingRect = params.clippingRect; + var targetShader = shader || this.defaultShader; + // Switching shader program will require a new render operation + if (((_this$curRenderOp = this.curRenderOp) === null || _this$curRenderOp === void 0 ? void 0 : _this$curRenderOp.shader) !== targetShader) { + return false; + } + // Switching clipping rect will require a new render operation + if (!compareRect(this.curRenderOp.clippingRect, clippingRect)) { + return false; + } + // Force new render operation if rendering to texture + // @todo: This needs to be improved, render operations could also be reused + // for rendering to texture + if (parentHasRenderTexture || rtt) { + return false; + } + // Check if the shader can batch the shader properties + if (this.curRenderOp.shader !== this.defaultShader && (!shaderProps || !this.curRenderOp.shader.canBatchShaderProps(this.curRenderOp.shaderProps, shaderProps))) { + return false; + } + // Render operation can be reused + return true; + } + /** + * add RenderOp to the render pipeline + */ + addRenderOp(renderable) { + this.renderOps.push(renderable); + this.curRenderOp = null; + } + /** + * Render the current set of RenderOps to render to the specified surface. + * + * TODO: 'screen' is the only supported surface at the moment. + * + * @param surface + */ + render(surface = 'screen') { + var _this$quadBufferColle; + var glw = this.glw, + quadBuffer = this.quadBuffer; + var arr = new Float32Array(quadBuffer, 0, this.curBufferIdx); + var buffer = (_this$quadBufferColle = this.quadBufferCollection.getBuffer('a_position')) !== null && _this$quadBufferColle !== void 0 ? _this$quadBufferColle : null; + glw.arrayBufferData(buffer, arr, glw.STATIC_DRAW); + this.renderOps.forEach((renderOp, i) => { + renderOp.draw(); + }); + } + renderToTexture(node) { + for (var i = 0; i < this.rttNodes.length; i++) { + if (this.rttNodes[i] === node) { + return; + } + } + // @todo: Better bottom up rendering order + this.rttNodes.unshift(node); + } + renderRTTNodes() { + var glw = this.glw; + var txManager = this.stage.txManager; + // Render all associated RTT nodes to their textures + for (var i = 0; i < this.rttNodes.length; i++) { + var node = this.rttNodes[i]; + // Skip nodes that don't have RTT updates + if (!node || !node.hasRTTupdates) { + continue; + } + // Set the active RTT node to the current node + // So we can prevent rendering children of nested RTT nodes + this.activeRttNode = node; + assertTruthy(node.texture, 'RTT node missing texture'); + var ctxTexture = txManager.getCtxTexture(node.texture); + assertTruthy(ctxTexture instanceof WebGlCoreCtxRenderTexture); + this.renderToTextureActive = true; + // Bind the the texture's framebuffer + glw.bindFramebuffer(ctxTexture.framebuffer); + glw.viewport(0, 0, ctxTexture.w, ctxTexture.h); + glw.clear(); + // Render all associated quads to the texture + for (var _i = 0; _i < node.children.length; _i++) { + var child = node.children[_i]; + if (!child) { + continue; + } + child.update(this.stage.deltaTime, { + x: 0, + y: 0, + width: 0, + height: 0, + valid: false + }); + this.stage.addQuads(child); + child.hasRTTupdates = false; + } + // Render all associated quads to the texture + this.render(); + // Reset render operations + this.renderOps.length = 0; + node.hasRTTupdates = false; + } + // Bind the default framebuffer + glw.bindFramebuffer(null); + glw.viewport(0, 0, this.glw.canvas.width, this.glw.canvas.height); + this.renderToTextureActive = false; + } + } + exports("w", WebGlCoreRenderer); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + var SpecialCodepoints = { + LINE_FEED: 0x0a, + CARRIAGE_RETURN: 0x0d, + SPACE: 0x20, + TAB: 0x09, + ZERO_WIDTH_SPACE: 0x200b, + ZERO_WIDTH_NON_JOINER: 0x200c, + ZERO_WIDTH_JOINER: 0x200d, + LEFT_TO_RIGHT_MARK: 0x200e, + RIGHT_TO_LEFT_MARK: 0x200f, + LEFT_TO_RIGHT_EMBEDDING: 0x202a, + RIGHT_TO_LEFT_EMBEDDING: 0x202b, + POP_DIRECTIONAL_FORMATTING: 0x202c, + LEFT_TO_RIGHT_OVERRIDE: 0x202d, + RIGHT_TO_LEFT_OVERRIDE: 0x202e, + LINE_SEPARATOR: 0x2028, + PARAGRAPH_SEPARATOR: 0x2029, + OBJECT_REPLACEMENT_CHARACTER: 0xfffc, + REPLACEMENT_CHARACTER: 0xfffd, + ZERO_WIDTH_NO_BREAK_SPACE: 0xfeff, + LEFT_TO_RIGHT_ISOLATE: 0x2066, + RIGHT_TO_LEFT_ISOLATE: 0x2067, + FIRST_STRONG_ISOLATE: 0x2068, + POP_DIRECTIONAL_ISOLATE: 0x2069, + INHIBIT_SYMMETRIC_SWAPPING: 0x206a, + ACTIVATE_SYMMETRIC_SWAPPING: 0x206b, + INHIBIT_ARABIC_FORM_SHAPING: 0x206c, + ACTIVATE_ARABIC_FORM_SHAPING: 0x206d, + NATIONAL_DIGIT_SHAPES: 0x206e, + NOMINAL_DIGIT_SHAPES: 0x206f, + LEFT_TO_RIGHT_BOUNDARY: 0x200e, + RIGHT_TO_LEFT_BOUNDARY: 0x200f + }; + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class FontShaper {} + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class SdfFontShaper extends FontShaper { + constructor(data, glyphMap) { + super(); + _defineProperty(this, "data", void 0); + _defineProperty(this, "glyphMap", void 0); + _defineProperty(this, "kernings", void 0); + this.data = data; + this.glyphMap = glyphMap; + var kernings = this.kernings = {}; + data.kernings.forEach(kerning => { + var second = kerning.second; + var firsts = kernings[second] = kernings[second] || {}; + firsts[kerning.first] = kerning.amount; + }); + this.kernings = kernings; + } + shapeText(props, codepoints) { + var _this6 = this; + return /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() { + var codepointResult, lastGlyphId, codepoint, glyph, _this6$kernings$glyph, kerning; + return _regeneratorRuntime().wrap(function _callee7$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + lastGlyphId = undefined; + case 1: + if (!((codepointResult = codepoints.peek()) && !codepointResult.done)) { + _context7.next = 17; + break; + } + codepoint = codepointResult.value; + glyph = _this6.glyphMap.get(codepoint); + codepoints.next(); + if (!(glyph !== undefined)) { + _context7.next = 12; + break; + } + // We found a glyph for this codepoint + // Yield the mapped glyph info + /** + * Kerning includes any possible additional letter spacing + */ + kerning = lastGlyphId !== undefined ? (((_this6$kernings$glyph = _this6.kernings[glyph.id]) === null || _this6$kernings$glyph === void 0 ? void 0 : _this6$kernings$glyph[lastGlyphId]) || 0) + props.letterSpacing : 0; + lastGlyphId = glyph.id; + _context7.next = 10; + return { + mapped: true, + glyphId: glyph.id, + codepoint, + cluster: codepoints.lastIndex, + xAdvance: glyph.xadvance + kerning, + yAdvance: 0, + xOffset: glyph.xoffset + kerning, + yOffset: glyph.yoffset, + xBearing: 0, + yBearing: 0, + width: glyph.width, + height: glyph.height + }; + case 10: + _context7.next = 15; + break; + case 12: + // We didn't find a glyph for this codepoint + // Yield the unmapped codepoint info + // If this codepoint is a linebreak, we should reset the last glyph id + // so that the next glyph will not be kerned with the last glyph of the + // previous line. + if (codepoint === SpecialCodepoints.LINE_FEED) { + lastGlyphId = undefined; + } + _context7.next = 15; + return { + mapped: false, + codepoint, + cluster: codepoints.lastIndex + }; + case 15: + _context7.next = 1; + break; + case 17: + case "end": + return _context7.stop(); + } + }, _callee7); + })(); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + // import type { Renderer } from '../../../Renderer'; + class SdfTrFontFace extends TrFontFace { + constructor(fontFamily, descriptors, type, stage, atlasUrl, atlasDataUrl) { + var _this7; + super(fontFamily, descriptors); + _this7 = this; + _defineProperty(this, "type", void 0); + _defineProperty(this, "texture", void 0); + /** + * Height of the tallest character in the font including the whitespace above it + */ + _defineProperty(this, "maxCharHeight", 0); + _defineProperty(this, "data", void 0); + _defineProperty(this, "shaper", void 0); + _defineProperty(this, "glyphMap", new Map()); + this.type = type; + var renderer = stage.renderer; + assertTruthy(renderer instanceof WebGlCoreRenderer, 'SDF Font Faces can only be used with the WebGL Renderer'); + this.texture = stage.txManager.loadTexture('ImageTexture', { + src: atlasUrl, + // IMPORTANT: The SDF shader requires the alpha channel to NOT be + // premultiplied on the atlas texture. If it is premultiplied, the + // rendering of SDF glyphs (especially single-channel SDF fonts) will + // be very jagged. + premultiplyAlpha: false + }, { + preload: true + }); + this.texture.on('loaded', () => { + this.checkLoaded(); + }); + // Set this.data to the fetched data from dataUrl + fetch(atlasDataUrl).then( /*#__PURE__*/function () { + var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(response) { + var maxCharHeight; + return _regeneratorRuntime().wrap(function _callee8$(_context8) { + while (1) switch (_context8.prev = _context8.next) { + case 0: + _context8.next = 2; + return response.json(); + case 2: + _this7.data = _context8.sent; + // Add all the glyphs to the glyph map + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + maxCharHeight = 0; + _this7.data.chars.forEach(glyph => { + _this7.glyphMap.set(glyph.id, glyph); + var charHeight = glyph.yoffset + glyph.height; + if (charHeight > maxCharHeight) { + maxCharHeight = charHeight; + } + }); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + _this7.maxCharHeight = maxCharHeight; + // We know `data` is defined here, because we just set it + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + _this7.shaper = new SdfFontShaper(_this7.data, _this7.glyphMap); + _this7.checkLoaded(); + case 8: + case "end": + return _context8.stop(); + } + }, _callee8); + })); + return function (_x) { + return _ref5.apply(this, arguments); + }; + }()).catch(console.error); + } + getAtlasEntry(glyphId) { + var glyph = this.glyphMap.get(glyphId); + if (glyph === undefined) { + throw new Error(`Glyph ${glyphId} not found in font ${this.fontFamily}`); + } + return { + x: glyph.x, + y: glyph.y, + width: glyph.width, + height: glyph.height + }; + } + checkLoaded() { + if (this.loaded) return; + if (this.texture.state === 'loaded' && this.data) { + this.loaded = true; + this.emit('loaded'); + } + } + } + exports("S", SdfTrFontFace); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Base class for Core extensions. + * + * @remarks + * Core extensions are used to extend the Core Renderer with custom code such as + * custom fonts, custom shaders, custom textures, custom animation functions, + * and more. + */ + class CoreExtension {} + exports("C", CoreExtension); + } + }; + }); +})(); +//# sourceMappingURL=CoreExtension-legacy-BzZDDgL-.js.map diff --git a/assets/CoreExtension-legacy-BzZDDgL-.js.map b/assets/CoreExtension-legacy-BzZDDgL-.js.map new file mode 100644 index 0000000..c549240 --- /dev/null +++ b/assets/CoreExtension-legacy-BzZDDgL-.js.map @@ -0,0 +1 @@ +{"version":3,"file":"CoreExtension-legacy-BzZDDgL-.js","sources":["../../../../../renderer/dist/src/utils.js","../../../../../renderer/dist/src/common/EventEmitter.js","../../../../../renderer/dist/src/core/renderers/CoreShader.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/ShaderUtils.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/WebGlUtils.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreShader.js","../../../../../renderer/dist/src/core/textures/Texture.js","../../../../../renderer/dist/src/core/lib/utils.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/TrFontFace.js","../../../../../renderer/dist/src/core/renderers/CoreContextTexture.js","../../../../../renderer/dist/src/core/renderers/CoreRenderer.js","../../../../../renderer/dist/src/core/renderers/CoreRenderOp.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/RendererUtils.js","../../../../../renderer/node_modules/.pnpm/memize@2.1.0/node_modules/memize/dist/index.js","../../../../../renderer/dist/src/core/utils.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js","../../../../../renderer/dist/src/core/textures/ColorTexture.js","../../../../../renderer/dist/src/core/textures/SubTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/internal/BufferCollection.js","../../../../../renderer/dist/src/core/lib/WebGlContextWrapper.js","../../../../../renderer/dist/src/core/textures/RenderTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js","../../../../../renderer/dist/src/core/renderers/webgl/WebGlCoreRenderer.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js","../../../../../renderer/dist/src/core/CoreExtension.js"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function createWebGLContext(canvas, contextSpy) {\n const config = {\n alpha: true,\n antialias: false,\n depth: false,\n stencil: true,\n desynchronized: false,\n // Disabled because it prevents Visual Regression Tests from working\n // failIfMajorPerformanceCaveat: true,\n powerPreference: 'high-performance',\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n };\n const gl = \n // TODO: Remove this assertion once this issue is fixed in TypeScript\n // https://github.com/microsoft/TypeScript/issues/53614\n (canvas.getContext('webgl', config) ||\n canvas.getContext('experimental-webgl', config));\n if (!gl) {\n throw new Error('Unable to create WebGL context');\n }\n if (contextSpy) {\n // Proxy the GL context to log all GL calls\n return new Proxy(gl, {\n get(target, prop) {\n const value = target[prop];\n if (typeof value === 'function') {\n contextSpy.increment(String(prop));\n return value.bind(target);\n }\n return value;\n },\n });\n }\n return gl;\n}\n/**\n * Asserts a condition is truthy, otherwise throws an error\n *\n * @remarks\n * Useful at the top of functions to ensure certain conditions, arguments and\n * properties are set/met before continuing. When using this function,\n * TypeScript will narrow away falsy types from the condition.\n *\n * @param condition\n * @param message\n * @returns\n */\nexport function assertTruthy(condition, message) {\n if (isProductionEnvironment())\n return;\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n/**\n * Merges two colors based on a given progress value.\n *\n * This function takes two colors (c1 and c2) represented as 32-bit integers\n * in RGBA format and blends them based on the provided progress value (p).\n * The result is a new color that is a weighted combination of the input colors,\n * where the weight is determined by the progress value.\n *\n * @param {number} c1 - The first color in RGBA format (32-bit integer).\n * @param {number} c2 - The second color in RGBA format (32-bit integer).\n * @param {number} p - The progress value between 0 and 1.\n * @returns {number} The merged color as a 32-bit integer in RGBA format.\n */\nexport function mergeColorProgress(rgba1, rgba2, p) {\n const r1 = Math.trunc(rgba1 >>> 24);\n const g1 = Math.trunc((rgba1 >>> 16) & 0xff);\n const b1 = Math.trunc((rgba1 >>> 8) & 0xff);\n const a1 = Math.trunc(rgba1 & 0xff);\n const r2 = Math.trunc(rgba2 >>> 24);\n const g2 = Math.trunc((rgba2 >>> 16) & 0xff);\n const b2 = Math.trunc((rgba2 >>> 8) & 0xff);\n const a2 = Math.trunc(rgba2 & 0xff);\n const r = Math.round(r2 * p + r1 * (1 - p));\n const g = Math.round(g2 * p + g1 * (1 - p));\n const b = Math.round(b2 * p + b1 * (1 - p));\n const a = Math.round(a2 * p + a1 * (1 - p));\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Given an RGBA encoded number, returns back the RGBA number with it's alpha\n * component multiplied by the passed `alpha` parameter.\n *\n * @internalRemarks\n * This method does NOT premultiply the alpha into the color channels. If that\n * is required (for internal use only) use {@link mergeColorAlphaPremultiplied}\n * instead.\n *\n * @param rgba RGBA encoded number\n * @param alpha Normalized alpha value (Range: 0.0 - 1.0)\n * @returns\n */\nexport function mergeColorAlpha(rgba, alpha) {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = Math.trunc((rgba & 0xff) * alpha);\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Given an RGBA encoded number, returns back the RGBA number with it's alpha\n * component multiplied by the passed `alpha` parameter. Before returning, the\n * final alpha value is multiplied into the color channels.\n *\n * @remarks\n * If `flipEndianess` is set to true, the function will returned an ABGR encoded number\n * which is useful when the color value needs to be passed into a shader attribute.\n *\n * NOTE: This method returns a PREMULTIPLIED alpha color which is generally only useful\n * in the context of the internal rendering process. Use {@link mergeColorAlpha} if you\n * need to blend an alpha value into a color in the context of the Renderer's\n * main API.\n *\n * @internalRemarks\n * Do not expose this method in the main API because Renderer users should instead use\n * {@link mergeColorAlpha} to manipulate the alpha value of a color.\n *\n * @internal\n * @param rgba RGBA encoded number\n * @param alpha Normalized alpha value (Range: 0.0 - 1.0)\n * @param flipEndianess Flip the endianess. RGBA becomes encoded as ABGR (for inserting colors into shader attributes)\n * @returns\n */\nexport function mergeColorAlphaPremultiplied(rgba, alpha, flipEndianess = false) {\n const newAlpha = ((rgba & 0xff) / 255) * alpha;\n const r = Math.trunc((rgba >>> 24) * newAlpha);\n const g = Math.trunc(((rgba >>> 16) & 0xff) * newAlpha);\n const b = Math.trunc(((rgba >>> 8) & 0xff) * newAlpha);\n const a = Math.trunc(newAlpha * 255);\n if (flipEndianess) {\n return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0;\n }\n return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;\n}\n/**\n * Returns true if the given object has the given \"own\" property.\n *\n * @param obj\n * @param prop\n * @returns\n */\nexport function hasOwn(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n/**\n * Converts degrees to radians\n *\n * @param degrees\n * @returns\n */\nexport function deg2Rad(degrees) {\n return (degrees * Math.PI) / 180;\n}\n/**\n * Returns image aspect ratio\n *\n * @param width\n * @param height\n * @returns\n */\nexport function getImageAspectRatio(width, height) {\n return width / height;\n}\n/**\n * Checks import.meta if env is production\n *\n * @returns\n */\nexport function isProductionEnvironment() {\n return import.meta.env && import.meta.env.PROD;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * EventEmitter base class\n */\nexport class EventEmitter {\n eventListeners = {};\n on(event, listener) {\n let listeners = this.eventListeners[event];\n if (!listeners) {\n listeners = [];\n }\n listeners.push(listener);\n this.eventListeners[event] = listeners;\n }\n off(event, listener) {\n const listeners = this.eventListeners[event];\n if (!listeners) {\n return;\n }\n if (!listener) {\n delete this.eventListeners[event];\n return;\n }\n const index = listeners.indexOf(listener);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n }\n once(event, listener) {\n const onceListener = (target, data) => {\n this.off(event, onceListener);\n listener(target, data);\n };\n this.on(event, onceListener);\n }\n emit(event, data) {\n const listeners = this.eventListeners[event];\n if (!listeners) {\n return;\n }\n [...listeners].forEach((listener) => {\n listener(this, data);\n });\n }\n removeAllListeners() {\n this.eventListeners = {};\n }\n}\n//# sourceMappingURL=EventEmitter.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreShader {\n // abstract draw(): void;\n static makeCacheKey(props) {\n return false;\n }\n static resolveDefaults(props) {\n return {};\n }\n}\n//# sourceMappingURL=CoreShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion Types\nexport function createShader(glw, type, source) {\n const shader = glw.createShader(type);\n if (!shader) {\n throw new Error();\n }\n glw.shaderSource(shader, source);\n glw.compileShader(shader);\n const success = glw.getShaderParameter(shader, glw.COMPILE_STATUS);\n if (success) {\n return shader;\n }\n console.log(glw.getShaderInfoLog(shader));\n glw.deleteShader(shader);\n}\nexport function createProgram(glw, vertexShader, fragmentShader) {\n const program = glw.createProgram();\n if (!program) {\n throw new Error();\n }\n glw.attachShader(program, vertexShader);\n glw.attachShader(program, fragmentShader);\n glw.linkProgram(program);\n const success = glw.getProgramParameter(program, glw.LINK_STATUS);\n if (success) {\n return program;\n }\n console.log(glw.getProgramInfoLog(program));\n glw.deleteProgram(program);\n return undefined;\n}\n//# sourceMappingURL=ShaderUtils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Generic WebGL Utility Functions\n *\n * @remarks\n * Nothing here should be coupled to Renderer logic / types.\n *\n * @param gl\n * @returns\n */\nexport function isWebGl2(gl) {\n return (self.WebGL2RenderingContext && gl instanceof self.WebGL2RenderingContext);\n}\n//# sourceMappingURL=WebGlUtils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, hasOwn } from '../../../utils.js';\nimport { CoreShader } from '../CoreShader.js';\nimport { createProgram, createShader, } from './internal/ShaderUtils.js';\nimport { isWebGl2 } from './internal/WebGlUtils.js';\nexport class WebGlCoreShader extends CoreShader {\n boundBufferCollection = null;\n buffersBound = false;\n program;\n /**\n * Vertex Array Object\n *\n * @remarks\n * Used by WebGL2 Only\n */\n vao;\n renderer;\n glw;\n attributeBuffers;\n attributeLocations;\n attributeNames;\n uniformLocations;\n uniformTypes;\n supportsIndexedTextures;\n constructor(options) {\n super();\n const renderer = (this.renderer = options.renderer);\n const glw = (this.glw = this.renderer.glw);\n this.supportsIndexedTextures = options.supportsIndexedTextures || false;\n // Check that extensions are supported\n const webGl2 = glw.isWebGl2();\n const requiredExtensions = (webGl2 && options.webgl2Extensions) ||\n (!webGl2 && options.webgl1Extensions) ||\n [];\n const glVersion = webGl2 ? '2.0' : '1.0';\n requiredExtensions.forEach((extensionName) => {\n if (!glw.getExtension(extensionName)) {\n throw new Error(`Shader \"${this.constructor.name}\" requires extension \"${extensionName}\" for WebGL ${glVersion} but wasn't found`);\n }\n });\n // Gather shader sources\n // - If WebGL 2 and special WebGL 2 sources are provided, we copy those sources and delete\n // the extra copy of them to save memory.\n // TODO: This could be further made optimal by just caching the compiled shaders and completely deleting\n // the source code\n const shaderSources = options.shaderSources ||\n this.constructor.shaderSources;\n if (!shaderSources) {\n throw new Error(`Shader \"${this.constructor.name}\" is missing shaderSources.`);\n }\n else if (webGl2 && shaderSources?.webGl2) {\n shaderSources.fragment = shaderSources.webGl2.fragment;\n shaderSources.vertex = shaderSources.webGl2.vertex;\n delete shaderSources.webGl2;\n }\n const textureUnits = renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n const vertexSource = shaderSources.vertex instanceof Function\n ? shaderSources.vertex(textureUnits)\n : shaderSources.vertex;\n const fragmentSource = shaderSources.fragment instanceof Function\n ? shaderSources.fragment(textureUnits)\n : shaderSources.fragment;\n const vertexShader = createShader(glw, glw.VERTEX_SHADER, vertexSource);\n const fragmentShader = createShader(glw, glw.FRAGMENT_SHADER, fragmentSource);\n if (!vertexShader || !fragmentShader) {\n throw new Error();\n }\n const program = createProgram(glw, vertexShader, fragmentShader);\n if (!program) {\n throw new Error();\n }\n this.program = program;\n if (webGl2) {\n const vao = glw.createVertexArray();\n if (!vao) {\n throw new Error();\n }\n this.vao = vao;\n glw.bindVertexArray(this.vao);\n }\n this.attributeLocations = {};\n this.attributeBuffers = {};\n this.attributeNames = [];\n [...options.attributes].forEach((attributeName) => {\n const location = glw.getAttribLocation(this.program, attributeName);\n if (location < 0) {\n throw new Error(`${this.constructor.name}: Vertex shader must have an attribute \"${attributeName}\"!`);\n }\n const buffer = glw.createBuffer();\n if (!buffer) {\n throw new Error(`${this.constructor.name}: Could not create buffer for attribute \"${attributeName}\"`);\n }\n this.attributeLocations[attributeName] = location;\n this.attributeBuffers[attributeName] = buffer;\n this.attributeNames.push(attributeName);\n });\n this.uniformLocations = {};\n this.uniformTypes = {};\n options.uniforms.forEach((uniform) => {\n const location = glw.getUniformLocation(this.program, uniform.name);\n this.uniformTypes[uniform.name] = uniform.uniform;\n if (!location) {\n console.warn(`Shader \"${this.constructor.name}\" could not get uniform location for \"${uniform.name}\"`);\n return;\n }\n this.uniformLocations[uniform.name] = location;\n });\n }\n bindBufferAttribute(location, buffer, attribute) {\n const { glw } = this;\n glw.enableVertexAttribArray(location);\n glw.vertexAttribPointer(buffer, location, attribute.size, attribute.type, attribute.normalized, attribute.stride, attribute.offset);\n }\n disableAttribute(location) {\n this.glw.disableVertexAttribArray(location);\n }\n disableAttributes() {\n for (const loc in this.attributeLocations) {\n this.disableAttribute(this.attributeLocations[loc]);\n }\n this.boundBufferCollection = null;\n }\n /**\n * Given two sets of Shader props destined for this Shader, determine if they can be batched together\n * to reduce the number of draw calls.\n *\n * @remarks\n * This is used by the {@link WebGlCoreRenderer} to determine if it can batch multiple consecutive draw\n * calls into a single draw call.\n *\n * By default, this returns false (meaning no batching is allowed), but can be\n * overridden by child classes to provide more efficient batching.\n *\n * @param propsA\n * @param propsB\n * @returns\n */\n canBatchShaderProps(propsA, propsB) {\n return false;\n }\n bindRenderOp(renderOp, props) {\n this.bindBufferCollection(renderOp.buffers);\n if (renderOp.textures.length > 0) {\n this.bindTextures(renderOp.textures);\n }\n const { glw, parentHasRenderTexture, renderToTexture } = renderOp;\n // Skip if the parent and current operation both have render textures\n if (renderToTexture && parentHasRenderTexture) {\n return;\n }\n // Bind render texture framebuffer dimensions as resolution\n // if the parent has a render texture\n if (parentHasRenderTexture) {\n const { width, height } = renderOp.framebufferDimensions || {};\n // Force pixel ratio to 1.0 for render textures since they are always 1:1\n // the final render texture will be rendered to the screen with the correct pixel ratio\n this.setUniform('u_pixelRatio', 1.0);\n // Set resolution to the framebuffer dimensions\n this.setUniform('u_resolution', new Float32Array([width ?? 0, height ?? 0]));\n }\n else {\n this.setUniform('u_pixelRatio', renderOp.options.pixelRatio);\n this.setUniform('u_resolution', new Float32Array([glw.canvas.width, glw.canvas.height]));\n }\n if (props) {\n // Bind optional automatic uniforms\n // These are only bound if their keys are present in the props.\n if (hasOwn(props, '$dimensions')) {\n let dimensions = props.$dimensions;\n if (!dimensions) {\n dimensions = renderOp.dimensions;\n }\n this.setUniform('u_dimensions', [dimensions.width, dimensions.height]);\n }\n if (hasOwn(props, '$alpha')) {\n let alpha = props.$alpha;\n if (!alpha) {\n alpha = renderOp.alpha;\n }\n this.setUniform('u_alpha', alpha);\n }\n this.bindProps(props);\n }\n }\n setUniform(name, ...value) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-unsafe-argument\n this.glw.setUniform(this.uniformTypes[name], this.uniformLocations[name], ...value);\n }\n bindBufferCollection(buffer) {\n if (this.boundBufferCollection === buffer) {\n return;\n }\n for (const attributeName in this.attributeLocations) {\n const resolvedBuffer = buffer.getBuffer(attributeName);\n const resolvedInfo = buffer.getAttributeInfo(attributeName);\n assertTruthy(resolvedBuffer, `Buffer for \"${attributeName}\" not found`);\n assertTruthy(resolvedInfo);\n this.bindBufferAttribute(this.attributeLocations[attributeName], resolvedBuffer, resolvedInfo);\n }\n this.boundBufferCollection = buffer;\n }\n bindProps(props) {\n // Implement in child class\n }\n bindTextures(textures) {\n // no defaults\n }\n attach() {\n this.glw.useProgram(this.program);\n this.glw.useProgram(this.program);\n if (this.glw.isWebGl2() && this.vao) {\n this.glw.bindVertexArray(this.vao);\n }\n }\n detach() {\n this.disableAttributes();\n }\n static shaderSources;\n}\n//# sourceMappingURL=WebGlCoreShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../common/EventEmitter.js';\n/**\n * Represents a source of texture data for a CoreContextTexture.\n *\n * @remarks\n * Texture sources are used to populate a CoreContextTexture when that texture\n * is loaded. Texture data retrieved by the CoreContextTexture by the\n * `getTextureData` method. It's the responsibility of the concerete `Texture`\n * subclass to implement this method appropriately.\n */\nexport class Texture extends EventEmitter {\n txManager;\n /**\n * The dimensions of the texture\n *\n * @remarks\n * Until the texture data is loaded for the first time the value will be\n * `null`.\n */\n dimensions = null;\n error = null;\n state = 'freed';\n renderableOwners = new Set();\n constructor(txManager) {\n super();\n this.txManager = txManager;\n }\n /**\n * Add/remove an owner to/from the Texture based on its renderability.\n *\n * @remarks\n * Any object can own a texture, be it a CoreNode or even the state object\n * from a Text Renderer.\n *\n * When the reference to the texture that an owner object holds is replaced\n * or cleared it must call this with `renderable=false` to release the owner\n * association.\n *\n * @param owner\n * @param renderable\n */\n setRenderableOwner(owner, renderable) {\n if (renderable) {\n this.renderableOwners.add(owner);\n }\n else {\n this.renderableOwners.delete(owner);\n }\n }\n /**\n * Returns true if the texture is assigned to any Nodes that are renderable.\n */\n get renderable() {\n return this.renderableOwners.size > 0;\n }\n /**\n * Set the state of the texture\n *\n * @remark\n * Intended for internal-use only but declared public so that it can be set\n * by it's associated {@link CoreContextTexture}\n *\n * @param state\n * @param args\n */\n setState(state, ...args) {\n if (this.state !== state) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.state = state;\n if (state === 'loaded') {\n const loadedArgs = args;\n this.dimensions = loadedArgs[0];\n }\n else if (state === 'failed') {\n const failedArgs = args;\n this.error = failedArgs[0];\n }\n this.emit(state, ...args);\n }\n }\n /**\n * Make a cache key for this texture.\n *\n * @remarks\n * Each concrete `Texture` subclass must implement this method to provide an\n * appropriate cache key for the texture type including the texture's\n * properties that uniquely identify a copy of the texture. If the texture\n * type does not support caching, then this method should return `false`.\n *\n * @param props\n * @returns\n * A cache key for this texture or `false` if the texture type does not\n * support caching.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static makeCacheKey(props) {\n return false;\n }\n /**\n * Resolve the default values for the texture's properties.\n *\n * @remarks\n * Each concrete `Texture` subclass must implement this method to provide\n * default values for the texture's optional properties.\n *\n * @param props\n * @returns\n * The default values for the texture's properties.\n */\n static resolveDefaults(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n props) {\n return {};\n }\n}\n//# sourceMappingURL=Texture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const getNormalizedRgbaComponents = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n return [r / 255, g / 255, b / 255, a / 255];\n};\nexport const getRgbaComponents = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n return [r, g, b, a];\n};\nexport const norm = (rgba) => {\n const r = rgba >>> 24;\n const g = (rgba >>> 16) & 0xff;\n const b = (rgba >>> 8) & 0xff;\n const a = rgba & 0xff;\n const rgbaArr = [r / 255, g / 255, b / 255, a / 255];\n rgbaArr[0] = Math.max(0, Math.min(255, rgbaArr[0]));\n rgbaArr[1] = Math.max(0, Math.min(255, rgbaArr[1]));\n rgbaArr[2] = Math.max(0, Math.min(255, rgbaArr[2]));\n rgbaArr[3] = Math.max(0, Math.min(255, rgbaArr[3]));\n let v = ((rgbaArr[3] | 0) << 24) +\n ((rgbaArr[0] | 0) << 16) +\n ((rgbaArr[1] | 0) << 8) +\n (rgbaArr[2] | 0);\n if (v < 0) {\n v = 0xffffffff + v + 1;\n }\n return v;\n};\nexport function getNormalizedAlphaComponent(rgba) {\n return (rgba & 0xff) / 255.0;\n}\n/**\n * Get a CSS color string from a RGBA color\n *\n * @param color\n * @returns\n */\nexport function getRgbaString(color) {\n const r = Math.floor(color[0] * 255.0);\n const g = Math.floor(color[1] * 255.0);\n const b = Math.floor(color[2] * 255.0);\n const a = Math.floor(color[3] * 255.0);\n return `rgba(${r},${g},${b},${a.toFixed(4)})`;\n}\nexport function createBound(x1, y1, x2, y2, out) {\n if (out) {\n out.x1 = x1;\n out.y1 = y1;\n out.x2 = x2;\n out.y2 = y2;\n return out;\n }\n return {\n x1,\n y1,\n x2,\n y2,\n };\n}\nexport function intersectBound(a, b, out) {\n const intersection = createBound(Math.max(a.x1, b.x1), Math.max(a.y1, b.y1), Math.min(a.x2, b.x2), Math.min(a.y2, b.y2), out);\n if (intersection.x1 < intersection.x2 && intersection.y1 < intersection.y2) {\n return intersection;\n }\n return createBound(0, 0, 0, 0, intersection);\n}\nexport function boundsOverlap(a, b) {\n return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1;\n}\nexport function convertBoundToRect(bound, out) {\n if (out) {\n out.x = bound.x1;\n out.y = bound.y1;\n out.width = bound.x2 - bound.x1;\n out.height = bound.y2 - bound.y1;\n return out;\n }\n return {\n x: bound.x1,\n y: bound.y1,\n width: bound.x2 - bound.x1,\n height: bound.y2 - bound.y1,\n };\n}\nexport function intersectRect(a, b, out) {\n const x = Math.max(a.x, b.x);\n const y = Math.max(a.y, b.y);\n const width = Math.min(a.x + a.width, b.x + b.width) - x;\n const height = Math.min(a.y + a.height, b.y + b.height) - y;\n if (width > 0 && height > 0) {\n if (out) {\n out.x = x;\n out.y = y;\n out.width = width;\n out.height = height;\n return out;\n }\n return {\n x,\n y,\n width,\n height,\n };\n }\n if (out) {\n out.x = 0;\n out.y = 0;\n out.width = 0;\n out.height = 0;\n return out;\n }\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n}\nexport function copyRect(a, out) {\n if (out) {\n out.x = a.x;\n out.y = a.y;\n out.width = a.width;\n out.height = a.height;\n return out;\n }\n return {\n x: a.x,\n y: a.y,\n width: a.width,\n height: a.height,\n };\n}\nexport function compareRect(a, b) {\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return false;\n }\n return (a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height);\n}\nexport function boundInsideBound(bound1, bound2) {\n return (bound1.x1 <= bound2.x2 &&\n bound1.y1 <= bound2.y2 &&\n bound1.x2 >= bound2.x1 &&\n bound1.y2 >= bound2.y1);\n}\nexport function isBoundPositive(bound) {\n return bound.x1 < bound.x2 && bound.y1 < bound.y2;\n}\nexport function isRectPositive(rect) {\n return rect.width > 0 && rect.height > 0;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../../common/EventEmitter.js';\nexport class TrFontFace extends EventEmitter {\n fontFamily;\n descriptors;\n loaded = false;\n constructor(fontFamily, descriptors) {\n super();\n this.fontFamily = fontFamily;\n this.descriptors = {\n style: 'normal',\n weight: 'normal',\n stretch: 'normal',\n ...descriptors,\n };\n }\n /**\n * Convert a TrFontFaceDescriptors to a FontFaceDescriptors which differ slightly\n *\n * @param descriptors\n * @returns\n */\n static convertToCssFontFaceDescriptors(descriptors) {\n return {\n style: descriptors.style,\n weight: typeof descriptors.weight === 'number'\n ? `${descriptors.weight}`\n : descriptors.weight,\n stretch: descriptors.stretch,\n unicodeRange: descriptors.unicodeRange,\n variant: descriptors.variant,\n featureSettings: descriptors.featureSettings,\n display: descriptors.display,\n };\n }\n}\n//# sourceMappingURL=TrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreContextTexture {\n memManager;\n textureSource;\n constructor(memManager, textureSource) {\n this.memManager = memManager;\n this.textureSource = textureSource;\n }\n}\n//# sourceMappingURL=CoreContextTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreContextTexture } from './CoreContextTexture.js';\nexport class CoreRenderer {\n stage;\n constructor(stage) {\n this.stage = stage;\n }\n}\n//# sourceMappingURL=CoreRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class CoreRenderOp {\n}\n//# sourceMappingURL=CoreRenderOp.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreRenderOp } from '../CoreRenderOp.js';\nimport { WebGlCoreShader } from './WebGlCoreShader.js';\nconst MAX_TEXTURES = 8; // TODO: get from gl\n/**\n * Can render multiple quads with multiple textures (up to vertex shader texture limit)\n *\n */\nexport class WebGlCoreRenderOp extends CoreRenderOp {\n glw;\n options;\n buffers;\n shader;\n shaderProps;\n alpha;\n clippingRect;\n dimensions;\n bufferIdx;\n zIndex;\n renderToTexture;\n parentHasRenderTexture;\n framebufferDimensions;\n length = 0;\n numQuads = 0;\n textures = [];\n maxTextures;\n constructor(glw, options, buffers, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, zIndex, renderToTexture, parentHasRenderTexture, framebufferDimensions) {\n super();\n this.glw = glw;\n this.options = options;\n this.buffers = buffers;\n this.shader = shader;\n this.shaderProps = shaderProps;\n this.alpha = alpha;\n this.clippingRect = clippingRect;\n this.dimensions = dimensions;\n this.bufferIdx = bufferIdx;\n this.zIndex = zIndex;\n this.renderToTexture = renderToTexture;\n this.parentHasRenderTexture = parentHasRenderTexture;\n this.framebufferDimensions = framebufferDimensions;\n this.maxTextures = shader.supportsIndexedTextures\n ? glw.getParameter(glw.MAX_VERTEX_TEXTURE_IMAGE_UNITS)\n : 1;\n }\n addTexture(texture) {\n const { textures, maxTextures } = this;\n const existingIdx = textures.findIndex((t) => t === texture);\n if (existingIdx !== -1) {\n return existingIdx;\n }\n const newIdx = textures.length;\n if (newIdx >= maxTextures) {\n return 0xffffffff;\n }\n this.textures.push(texture);\n return newIdx;\n }\n draw() {\n const { glw, shader, shaderProps, options } = this;\n const { shManager } = options;\n shManager.useShader(shader);\n shader.bindRenderOp(this, shaderProps);\n // TODO: Reduce calculations required\n const quadIdx = (this.bufferIdx / 24) * 6 * 2;\n // Clipping\n if (this.clippingRect.valid) {\n const { x, y, width, height } = this.clippingRect;\n const pixelRatio = options.pixelRatio;\n const canvasHeight = options.canvas.height;\n const clipX = Math.round(x * pixelRatio);\n const clipWidth = Math.round(width * pixelRatio);\n const clipHeight = Math.round(height * pixelRatio);\n const clipY = Math.round(canvasHeight - clipHeight - y * pixelRatio);\n glw.setScissorTest(true);\n glw.scissor(clipX, clipY, clipWidth, clipHeight);\n }\n else {\n glw.setScissorTest(false);\n }\n glw.drawElements(glw.TRIANGLES, 6 * this.numQuads, glw.UNSIGNED_SHORT, quadIdx);\n }\n}\n//# sourceMappingURL=WebGlCoreRenderOp.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Get device specific webgl parameters\n * @param glw\n */\nexport function getWebGlParameters(glw) {\n const params = {\n MAX_RENDERBUFFER_SIZE: 0,\n MAX_TEXTURE_SIZE: 0,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n MAX_VIEWPORT_DIMS: 0,\n MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0,\n MAX_TEXTURE_IMAGE_UNITS: 0,\n MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0,\n MAX_VERTEX_ATTRIBS: 0,\n MAX_VARYING_VECTORS: 0,\n MAX_VERTEX_UNIFORM_VECTORS: 0,\n MAX_FRAGMENT_UNIFORM_VECTORS: 0,\n };\n // Map over all parameters and get them\n const keys = Object.keys(params);\n keys.forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params[key] = glw.getParameter(glw[key]);\n });\n return params;\n}\n/**\n * Get device webgl extensions\n * @param glw\n */\nexport function getWebGlExtensions(glw) {\n const extensions = {\n ANGLE_instanced_arrays: null,\n WEBGL_compressed_texture_s3tc: null,\n WEBGL_compressed_texture_astc: null,\n WEBGL_compressed_texture_etc: null,\n WEBGL_compressed_texture_etc1: null,\n WEBGL_compressed_texture_pvrtc: null,\n WEBKIT_WEBGL_compressed_texture_pvrtc: null,\n WEBGL_compressed_texture_s3tc_srgb: null,\n OES_vertex_array_object: null,\n };\n // Map over all extensions and get them\n const keys = Object.keys(extensions);\n keys.forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n extensions[key] = glw.getExtension(key);\n });\n return extensions;\n}\n/**\n * Allocate big memory chunk that we\n * can re-use to draw quads\n *\n * @param glw\n * @param size\n */\nexport function createIndexBuffer(glw, size) {\n const maxQuads = ~~(size / 80);\n const indices = new Uint16Array(maxQuads * 6);\n for (let i = 0, j = 0; i < maxQuads; i += 6, j += 4) {\n indices[i] = j;\n indices[i + 1] = j + 1;\n indices[i + 2] = j + 2;\n indices[i + 3] = j + 2;\n indices[i + 4] = j + 1;\n indices[i + 5] = j + 3;\n }\n const buffer = glw.createBuffer();\n glw.elementArrayBufferData(buffer, indices, glw.STATIC_DRAW);\n}\n/**\n * Checks if an object is of type HTMLImageElement.\n * This is used because we cant check for HTMLImageElement directly when the\n * renderer is running in a seperate web worker context.\n *\n * @param obj\n * @returns\n */\nexport function isHTMLImageElement(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n obj.constructor &&\n obj.constructor.name === 'HTMLImageElement');\n}\n//# sourceMappingURL=RendererUtils.js.map","/**\n * Memize options object.\n *\n * @typedef MemizeOptions\n *\n * @property {number} [maxSize] Maximum size of the cache.\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef MemizeCacheNode\n *\n * @property {?MemizeCacheNode|undefined} [prev] Previous node.\n * @property {?MemizeCacheNode|undefined} [next] Next node.\n * @property {Array<*>} args Function arguments for cache\n * entry.\n * @property {*} val Function result.\n */\n\n/**\n * Properties of the enhanced function for controlling cache.\n *\n * @typedef MemizeMemoizedFunction\n *\n * @property {()=>void} clear Clear the cache.\n */\n\n/**\n * Accepts a function to be memoized, and returns a new memoized function, with\n * optional options.\n *\n * @template {(...args: any[]) => any} F\n *\n * @param {F} fn Function to memoize.\n * @param {MemizeOptions} [options] Options object.\n *\n * @return {((...args: Parameters) => ReturnType) & MemizeMemoizedFunction} Memoized function.\n */\nfunction memize(fn, options) {\n\tvar size = 0;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar head;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar tail;\n\n\toptions = options || {};\n\n\tfunction memoized(/* ...args */) {\n\t\tvar node = head,\n\t\t\tlen = arguments.length,\n\t\t\targs,\n\t\t\ti;\n\n\t\tsearchCache: while (node) {\n\t\t\t// Perform a shallow equality test to confirm that whether the node\n\t\t\t// under test is a candidate for the arguments passed. Two arrays\n\t\t\t// are shallowly equal if their length matches and each entry is\n\t\t\t// strictly equal between the two sets. Avoid abstracting to a\n\t\t\t// function which could incur an arguments leaking deoptimization.\n\n\t\t\t// Check whether node arguments match arguments length\n\t\t\tif (node.args.length !== arguments.length) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check whether node arguments match arguments values\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tif (node.args[i] !== arguments[i]) {\n\t\t\t\t\tnode = node.next;\n\t\t\t\t\tcontinue searchCache;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif (node !== head) {\n\t\t\t\t// As tail, shift to previous. Must only shift if not also\n\t\t\t\t// head, since if both head and tail, there is no previous.\n\t\t\t\tif (node === tail) {\n\t\t\t\t\ttail = node.prev;\n\t\t\t\t}\n\n\t\t\t\t// Adjust siblings to point to each other. If node was tail,\n\t\t\t\t// this also handles new tail's empty `next` assignment.\n\t\t\t\t/** @type {MemizeCacheNode} */ (node.prev).next = node.next;\n\t\t\t\tif (node.next) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {MemizeCacheNode} */ (head).prev = node;\n\t\t\t\thead = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\t// Create a copy of arguments (avoid leaking deoptimization)\n\t\targs = new Array(len);\n\t\tfor (i = 0; i < len; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\tnode = {\n\t\t\targs: args,\n\n\t\t\t// Generate the result from original function\n\t\t\tval: fn.apply(null, args),\n\t\t};\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif (head) {\n\t\t\thead.prev = node;\n\t\t\tnode.next = head;\n\t\t} else {\n\t\t\t// If no head, follows that there's no tail (at initial or reset)\n\t\t\ttail = node;\n\t\t}\n\n\t\t// Trim tail if we're reached max size and are pending cache insertion\n\t\tif (size === /** @type {MemizeOptions} */ (options).maxSize) {\n\t\t\ttail = /** @type {MemizeCacheNode} */ (tail).prev;\n\t\t\t/** @type {MemizeCacheNode} */ (tail).next = null;\n\t\t} else {\n\t\t\tsize++;\n\t\t}\n\n\t\thead = node;\n\n\t\treturn node.val;\n\t}\n\n\tmemoized.clear = function () {\n\t\thead = null;\n\t\ttail = null;\n\t\tsize = 0;\n\t};\n\n\t// Ignore reason: There's not a clear solution to create an intersection of\n\t// the function with additional properties, where the goal is to retain the\n\t// function signature of the incoming argument and add control properties\n\t// on the return value.\n\n\t// @ts-ignore\n\treturn memoized;\n}\n\nexport { memize as default };\n","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Core Utility Functions\n *\n * @module\n */\nimport memo from 'memize';\nexport const EPSILON = 0.000001;\nexport let ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport const RANDOM = Math.random;\nexport const ANGLE_ORDER = 'zyx';\nconst degree = Math.PI / 180;\nexport const setMatrixArrayType = (type) => {\n ARRAY_TYPE = type;\n};\nexport const toRadian = (a) => {\n return a * degree;\n};\nexport const equals = (a, b) => {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n};\nexport const rand = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1) + min);\n};\nexport const isPowerOfTwo = (value) => {\n return value && !(value & (value - 1));\n};\nconst getTimingBezier = (a, b, c, d) => {\n const xc = 3.0 * a;\n const xb = 3.0 * (c - a) - xc;\n const xa = 1.0 - xc - xb;\n const yc = 3.0 * b;\n const yb = 3.0 * (d - b) - yc;\n const ya = 1.0 - yc - yb;\n return function (time) {\n if (time >= 1.0) {\n return 1;\n }\n if (time <= 0) {\n return 0;\n }\n let t = 0.5, cbx, cbxd, dx;\n for (let it = 0; it < 20; it++) {\n cbx = t * (t * (t * xa + xb) + xc);\n dx = time - cbx;\n if (dx > -1e-8 && dx < 1e-8) {\n return t * (t * (t * ya + yb) + yc);\n }\n // Cubic bezier derivative.\n cbxd = t * (t * (3 * xa) + 2 * xb) + xc;\n if (cbxd > 1e-10 && cbxd < 1e-10) {\n // Problematic. Fall back to binary search method.\n break;\n }\n t += dx / cbxd;\n }\n // Fallback: binary search method. This is more reliable when there are near-0 slopes.\n let minT = 0;\n let maxT = 1;\n for (let it = 0; it < 20; it++) {\n t = 0.5 * (minT + maxT);\n cbx = t * (t * (t * xa + xb) + xc);\n dx = time - cbx;\n if (dx > -1e-8 && dx < 1e-8) {\n // Solution found!\n return t * (t * (t * ya + yb) + yc);\n }\n if (dx < 0) {\n maxT = t;\n }\n else {\n minT = t;\n }\n }\n };\n};\nexport const getTimingFunction = memo((str) => {\n switch (str) {\n case 'linear':\n return function (time) {\n return time;\n };\n case 'ease':\n return getTimingBezier(0.25, 0.1, 0.25, 1.0);\n case 'ease-in':\n return getTimingBezier(0.42, 0, 1.0, 1.0);\n case 'ease-out':\n return getTimingBezier(0, 0, 0.58, 1.0);\n case 'ease-in-out':\n return getTimingBezier(0.42, 0, 0.58, 1.0);\n case 'ease-in-sine':\n return getTimingBezier(0.12, 0, 0.39, 0);\n case 'ease-out-sine':\n return getTimingBezier(0.12, 0, 0.39, 0);\n case 'ease-in-out-sine':\n return getTimingBezier(0.37, 0, 0.63, 1);\n case 'ease-in-cubic':\n return getTimingBezier(0.32, 0, 0.67, 0);\n case 'ease-out-cubic':\n return getTimingBezier(0.33, 1, 0.68, 1);\n case 'ease-in-out-cubic':\n return getTimingBezier(0.65, 0, 0.35, 1);\n case 'ease-in-circ':\n return getTimingBezier(0.55, 0, 1, 0.45);\n case 'ease-out-circ':\n return getTimingBezier(0, 0.55, 0.45, 1);\n case 'ease-in-out-circ':\n return getTimingBezier(0.85, 0, 0.15, 1);\n case 'ease-in-back':\n return getTimingBezier(0.36, 0, 0.66, -0.56);\n case 'ease-out-back':\n return getTimingBezier(0.34, 1.56, 0.64, 1);\n case 'ease-in-out-back':\n return getTimingBezier(0.68, -0.6, 0.32, 1.6);\n case 'step-start':\n return function () {\n return 1;\n };\n case 'step-end':\n return function (time) {\n return time === 1 ? 1 : 0;\n };\n default:\n // eslint-disable-next-line no-case-declarations\n const s = 'cubic-bezier(';\n if (str && str.indexOf(s) === 0) {\n const parts = str\n .substr(s.length, str.length - s.length - 1)\n .split(',');\n if (parts.length !== 4) {\n console.warn('Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n const a = parseFloat(parts[0] || '0.42');\n const b = parseFloat(parts[1] || '0');\n const c = parseFloat(parts[2] || '1');\n const d = parseFloat(parts[3] || '1');\n if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d)) {\n console.warn(' Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n return getTimingBezier(a, b, c, d);\n }\n else {\n console.warn('Unknown timing function: ' + str);\n // Fallback: use linear.\n return function (time) {\n return time;\n };\n }\n }\n});\nif (!Math.hypot)\n Math.hypot = (...args) => {\n let y = 0, i = args.length;\n while (i--) {\n y += args[i] * args[i];\n }\n return Math.sqrt(y);\n };\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../utils.js';\nimport { isPowerOfTwo } from '../../utils.js';\nimport { CoreContextTexture } from '../CoreContextTexture.js';\nimport { isHTMLImageElement } from './internal/RendererUtils.js';\nconst TRANSPARENT_TEXTURE_DATA = new Uint8Array([0, 0, 0, 0]);\n/**\n * A wrapper around a WebGLTexture that handles loading the texture data\n * from a Texture source and uploading it to the GPU as well as freeing\n * the uploaded texture.\n *\n * @remarks\n * When accessing the ctxTexture property, the texture will be loaded if\n * it hasn't been already. ctxTexture will always return a valid WebGLTexture\n * and trigger the loading/uploading of the texture's data if it hasn't been\n * loaded yet.\n */\nexport class WebGlCoreCtxTexture extends CoreContextTexture {\n glw;\n _nativeCtxTexture = null;\n _state = 'freed';\n _w = 0;\n _h = 0;\n constructor(glw, memManager, textureSource) {\n super(memManager, textureSource);\n this.glw = glw;\n }\n get ctxTexture() {\n if (this._state === 'freed') {\n this.load();\n }\n assertTruthy(this._nativeCtxTexture);\n return this._nativeCtxTexture;\n }\n get renderable() {\n return this.textureSource.renderable;\n }\n get w() {\n return this._w;\n }\n get h() {\n return this._h;\n }\n /**\n * Load the texture data from the Texture source and upload it to the GPU\n *\n * @remarks\n * This method is called automatically when accessing the ctxTexture property\n * if the texture hasn't been loaded yet. But it can also be called manually\n * to force the texture to be pre-loaded prior to accessing the ctxTexture\n * property.\n */\n load() {\n // If the texture is already loading or loaded, don't load it again.\n if (this._state === 'loading' || this._state === 'loaded') {\n return;\n }\n this._state = 'loading';\n this.textureSource.setState('loading');\n this._nativeCtxTexture = this.createNativeCtxTexture();\n this.onLoadRequest()\n .then(({ width, height }) => {\n if (this._state === 'freed') {\n return;\n }\n this._state = 'loaded';\n this._w = width;\n this._h = height;\n // Update the texture source's width and height so that it can be used\n // for rendering.\n this.textureSource.setState('loaded', { width, height });\n })\n .catch((err) => {\n this._state = 'failed';\n this.textureSource.setState('failed', err);\n console.error(err);\n });\n }\n /**\n * Called when the texture data needs to be loaded and uploaded to a texture\n */\n async onLoadRequest() {\n const { glw, memManager } = this;\n // Set to a 1x1 transparent texture\n glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);\n memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength);\n const textureData = await this.textureSource?.getTextureData();\n // If the texture has been freed while loading, return early.\n if (!this._nativeCtxTexture) {\n assertTruthy(this._state === 'freed');\n return { width: 0, height: 0 };\n }\n let width = 0;\n let height = 0;\n assertTruthy(this._nativeCtxTexture);\n glw.activeTexture(0);\n // If textureData is null, the texture is empty (0, 0) and we don't need to\n // upload any data to the GPU.\n if (textureData.data instanceof ImageBitmap ||\n textureData.data instanceof ImageData ||\n // not using typeof HTMLImageElement due to web worker\n isHTMLImageElement(textureData.data)) {\n const data = textureData.data;\n width = data.width;\n height = data.height;\n glw.bindTexture(this._nativeCtxTexture);\n glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha);\n glw.texImage2D(0, glw.RGBA, glw.RGBA, glw.UNSIGNED_BYTE, data);\n memManager.setTextureMemUse(this, width * height * 4);\n // generate mipmaps for power-of-2 textures or in WebGL2RenderingContext\n if (glw.isWebGl2() || (isPowerOfTwo(width) && isPowerOfTwo(height))) {\n glw.generateMipmap();\n }\n }\n else if (textureData.data === null) {\n width = 0;\n height = 0;\n // Reset to a 1x1 transparent texture\n glw.bindTexture(this._nativeCtxTexture);\n glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, TRANSPARENT_TEXTURE_DATA);\n memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength);\n }\n else if ('mipmaps' in textureData.data && textureData.data.mipmaps) {\n const { mipmaps, width = 0, height = 0, type, glInternalFormat, } = textureData.data;\n const view = type === 'ktx'\n ? new DataView(mipmaps[0] ?? new ArrayBuffer(0))\n : mipmaps[0];\n glw.bindTexture(this._nativeCtxTexture);\n glw.compressedTexImage2D(0, glInternalFormat, width, height, 0, view);\n glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);\n glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);\n memManager.setTextureMemUse(this, view.byteLength);\n }\n else {\n console.error(`WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned`, textureData);\n }\n return {\n width,\n height,\n };\n }\n /**\n * Free the WebGLTexture from the GPU\n *\n * @returns\n */\n free() {\n if (this._state === 'freed') {\n return;\n }\n this._state = 'freed';\n this.textureSource.setState('freed');\n this._w = 0;\n this._h = 0;\n if (!this._nativeCtxTexture) {\n return;\n }\n const { glw, memManager } = this;\n glw.deleteTexture(this._nativeCtxTexture);\n memManager.setTextureMemUse(this, 0);\n this._nativeCtxTexture = null;\n }\n /**\n * Create native context texture\n *\n * @remarks\n * When this method returns the returned texture will be bound to the GL context state.\n *\n * @param width\n * @param height\n * @returns\n */\n createNativeCtxTexture() {\n const { glw } = this;\n const nativeTexture = glw.createTexture();\n if (!nativeTexture) {\n throw new Error('Could not create WebGL Texture');\n }\n // On initial load request, create a 1x1 transparent texture to use until\n // the texture data is finally loaded.\n glw.activeTexture(0);\n glw.bindTexture(nativeTexture);\n // linear texture filtering\n glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);\n glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);\n // texture wrapping method\n glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);\n glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);\n return nativeTexture;\n }\n}\n//# sourceMappingURL=WebGlCoreCtxTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\n/**\n * Texture consisting of only a 1x1 color pixel\n *\n * @remarks\n * The pixel color is set with the {@link ColorTextureProps.color} prop.\n *\n * This is the default texture used for a Node if it's\n * {@link INodeWritableProps.texture} prop is set to `null` (the default)\n *\n * Generally the 1x1 color pixel is stretched to whatever the set dimensions of\n * a Node are.\n */\nexport class ColorTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = ColorTexture.resolveDefaults(props || {});\n }\n get color() {\n return this.props.color;\n }\n set color(color) {\n this.props.color = color;\n }\n async getTextureData() {\n const pixelData32 = new Uint32Array([this.color]);\n const pixelData8 = new Uint8ClampedArray(pixelData32.buffer);\n return {\n data: new ImageData(pixelData8, 1, 1),\n premultiplyAlpha: true,\n };\n }\n static makeCacheKey(props) {\n const resolvedProps = ColorTexture.resolveDefaults(props);\n return `ColorTexture,${resolvedProps.color}`;\n }\n static resolveDefaults(props) {\n return {\n color: props.color || 0xffffffff,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=ColorTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture, } from './Texture.js';\n/**\n * A Texture that is a sub-region of another Texture.\n *\n * @remarks\n * The parent texture can be a Sprite Sheet/Texture Atlas and set using the\n * {@link SubTextureProps.texture} prop. The sub-region relative to the parent\n * texture is defined with the {@link SubTextureProps.x},\n * {@link SubTextureProps.y}, {@link SubTextureProps.width}, and\n * {@link SubTextureProps.height} pixel values.\n */\nexport class SubTexture extends Texture {\n props;\n parentTexture;\n constructor(txManager, props) {\n super(txManager);\n this.parentTexture = this.txManager.loadTexture(props.texture.txType, props.texture.props, props.texture.options);\n this.props = SubTexture.resolveDefaults(props || {});\n // If parent texture is already loaded / failed, trigger loaded event manually\n // so that users get a consistent event experience.\n // We do this in a microtask to allow listeners to be attached in the same\n // synchronous task after calling loadTexture()\n queueMicrotask(() => {\n const parentTx = this.parentTexture;\n if (parentTx.state === 'loaded') {\n this.onParentTxLoaded(parentTx, parentTx.dimensions);\n }\n else if (parentTx.state === 'failed') {\n this.onParentTxFailed(parentTx, parentTx.error);\n }\n parentTx.on('loaded', this.onParentTxLoaded);\n parentTx.on('failed', this.onParentTxFailed);\n });\n }\n onParentTxLoaded = () => {\n // We ignore the parent's passed dimensions, and simply use the SubTexture's\n // configured dimensions (because that's all that matters here)\n this.setState('loaded', {\n width: this.props.width,\n height: this.props.height,\n });\n };\n onParentTxFailed = (target, error) => {\n this.setState('failed', error);\n };\n async getTextureData() {\n return {\n data: this.props,\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static makeCacheKey(props) {\n return false;\n }\n static resolveDefaults(props) {\n return {\n texture: props.texture,\n x: props.x || 0,\n y: props.y || 0,\n width: props.width || 0,\n height: props.height || 0,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=SubTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nexport class WebGlCoreCtxSubTexture extends WebGlCoreCtxTexture {\n constructor(glw, memManager, textureSource) {\n super(glw, memManager, textureSource);\n }\n async onLoadRequest() {\n const props = await this.textureSource.getTextureData();\n return {\n width: props.data?.width || 0,\n height: props.data?.height || 0,\n };\n }\n}\n//# sourceMappingURL=WebGlCoreCtxSubTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents a collection of WebGL Buffers along with their associated\n * vertex attribute formats.\n */\nexport class BufferCollection {\n config;\n constructor(config) {\n this.config = config;\n }\n /**\n * Get the WebGLBuffer associated with the given attribute name if it exists.\n *\n * @param attributeName\n * @returns\n */\n getBuffer(attributeName) {\n return this.config.find((item) => item.attributes[attributeName])?.buffer;\n }\n /**\n * Get the AttributeInfo associated with the given attribute name if it exists.\n *\n * @param attributeName\n * @returns\n */\n getAttributeInfo(attributeName) {\n return this.config.find((item) => item.attributes[attributeName])\n ?.attributes[attributeName];\n }\n}\n//# sourceMappingURL=BufferCollection.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\nimport { assertTruthy } from '../../utils.js';\nimport { isWebGl2 } from '../renderers/webgl/internal/WebGlUtils.js';\n/**\n * Optimized WebGL Context Wrapper\n *\n * @remarks\n * This class contains the subset of the WebGLRenderingContext & WebGL2RenderingContext\n * API that is used by the renderer. Select high volume WebGL methods include\n * caching optimizations to avoid making WebGL calls if the state is already set\n * to the desired value.\n *\n * While most methods contained are direct passthroughs to the WebGL context,\n * some methods combine multiple WebGL calls into one for convenience, modify\n * arguments to be more convenient, or are replaced by more specific methods.\n *\n * Not all methods are optimized. Only methods that are called frequently\n * and/or have a high cost are optimized.\n *\n * A subset of GLenum constants are also exposed as properties on this class\n * for convenience.\n */\nexport class WebGlContextWrapper {\n gl;\n //#region Cached WebGL State\n activeTextureUnit = 0;\n texture2dUnits;\n texture2dParams = new WeakMap();\n scissorEnabled;\n scissorX;\n scissorY;\n scissorWidth;\n scissorHeight;\n blendEnabled;\n blendSrcRgb;\n blendDstRgb;\n blendSrcAlpha;\n blendDstAlpha;\n boundArrayBuffer;\n boundElementArrayBuffer;\n curProgram;\n programUniforms = new WeakMap();\n //#endregion Cached WebGL State\n //#region Canvas\n canvas;\n //#endregion Canvas\n //#region WebGL Enums\n MAX_RENDERBUFFER_SIZE;\n MAX_TEXTURE_SIZE;\n MAX_VIEWPORT_DIMS;\n MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n MAX_TEXTURE_IMAGE_UNITS;\n MAX_COMBINED_TEXTURE_IMAGE_UNITS;\n MAX_VERTEX_ATTRIBS;\n MAX_VARYING_VECTORS;\n MAX_VERTEX_UNIFORM_VECTORS;\n MAX_FRAGMENT_UNIFORM_VECTORS;\n TEXTURE_MAG_FILTER;\n TEXTURE_MIN_FILTER;\n TEXTURE_WRAP_S;\n TEXTURE_WRAP_T;\n LINEAR;\n CLAMP_TO_EDGE;\n RGBA;\n UNSIGNED_BYTE;\n UNPACK_PREMULTIPLY_ALPHA_WEBGL;\n UNPACK_FLIP_Y_WEBGL;\n FLOAT;\n TRIANGLES;\n UNSIGNED_SHORT;\n ONE;\n ONE_MINUS_SRC_ALPHA;\n VERTEX_SHADER;\n FRAGMENT_SHADER;\n STATIC_DRAW;\n COMPILE_STATUS;\n LINK_STATUS;\n DYNAMIC_DRAW;\n COLOR_ATTACHMENT0;\n //#endregion WebGL Enums\n constructor(gl) {\n this.gl = gl;\n // The following code extracts the current state of the WebGL context\n // to our local JavaScript cached version of it. This is so we can\n // avoid making WebGL calls if we don't need to.\n // We could assume that the WebGL context is in a default state, but\n // in the future we may want to support restoring a broken WebGL context\n // and this will help with that.\n this.activeTextureUnit =\n gl.getParameter(gl.ACTIVE_TEXTURE) - gl.TEXTURE0;\n const maxTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n // save current texture units\n this.texture2dUnits = new Array(maxTextureUnits)\n .fill(undefined)\n .map((_, i) => {\n this.activeTexture(i);\n return gl.getParameter(gl.TEXTURE_BINDING_2D);\n });\n // restore active texture unit\n this.activeTexture(this.activeTextureUnit);\n this.scissorEnabled = gl.isEnabled(gl.SCISSOR_TEST);\n const scissorBox = gl.getParameter(gl.SCISSOR_BOX);\n this.scissorX = scissorBox[0];\n this.scissorY = scissorBox[1];\n this.scissorWidth = scissorBox[2];\n this.scissorHeight = scissorBox[3];\n this.blendEnabled = gl.isEnabled(gl.BLEND);\n this.blendSrcRgb = gl.getParameter(gl.BLEND_SRC_RGB);\n this.blendDstRgb = gl.getParameter(gl.BLEND_DST_RGB);\n this.blendSrcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA);\n this.blendDstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA);\n this.boundArrayBuffer = gl.getParameter(gl.ARRAY_BUFFER_BINDING);\n this.boundElementArrayBuffer = gl.getParameter(gl.ELEMENT_ARRAY_BUFFER_BINDING);\n this.curProgram = gl.getParameter(gl.CURRENT_PROGRAM);\n this.canvas = gl.canvas;\n // Extract GLenums\n this.MAX_RENDERBUFFER_SIZE = gl.MAX_RENDERBUFFER_SIZE;\n this.MAX_TEXTURE_SIZE = gl.MAX_TEXTURE_SIZE;\n this.MAX_VIEWPORT_DIMS = gl.MAX_VIEWPORT_DIMS;\n this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n this.MAX_TEXTURE_IMAGE_UNITS = gl.MAX_TEXTURE_IMAGE_UNITS;\n this.MAX_COMBINED_TEXTURE_IMAGE_UNITS = gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS;\n this.MAX_VERTEX_ATTRIBS = gl.MAX_VERTEX_ATTRIBS;\n this.MAX_VARYING_VECTORS = gl.MAX_VARYING_VECTORS;\n this.MAX_VERTEX_UNIFORM_VECTORS = gl.MAX_VERTEX_UNIFORM_VECTORS;\n this.MAX_FRAGMENT_UNIFORM_VECTORS = gl.MAX_FRAGMENT_UNIFORM_VECTORS;\n this.TEXTURE_MAG_FILTER = gl.TEXTURE_MAG_FILTER;\n this.TEXTURE_MIN_FILTER = gl.TEXTURE_MIN_FILTER;\n this.TEXTURE_WRAP_S = gl.TEXTURE_WRAP_S;\n this.TEXTURE_WRAP_T = gl.TEXTURE_WRAP_T;\n this.LINEAR = gl.LINEAR;\n this.CLAMP_TO_EDGE = gl.CLAMP_TO_EDGE;\n this.RGBA = gl.RGBA;\n this.UNSIGNED_BYTE = gl.UNSIGNED_BYTE;\n this.UNPACK_PREMULTIPLY_ALPHA_WEBGL = gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL;\n this.UNPACK_FLIP_Y_WEBGL = gl.UNPACK_FLIP_Y_WEBGL;\n this.FLOAT = gl.FLOAT;\n this.TRIANGLES = gl.TRIANGLES;\n this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT;\n this.ONE = gl.ONE;\n this.ONE_MINUS_SRC_ALPHA = gl.ONE_MINUS_SRC_ALPHA;\n this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS;\n this.TRIANGLES = gl.TRIANGLES;\n this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT;\n this.VERTEX_SHADER = gl.VERTEX_SHADER;\n this.FRAGMENT_SHADER = gl.FRAGMENT_SHADER;\n this.STATIC_DRAW = gl.STATIC_DRAW;\n this.COMPILE_STATUS = gl.COMPILE_STATUS;\n this.LINK_STATUS = gl.LINK_STATUS;\n this.DYNAMIC_DRAW = gl.DYNAMIC_DRAW;\n this.COLOR_ATTACHMENT0 = gl.COLOR_ATTACHMENT0;\n }\n /**\n * Returns true if the WebGL context is WebGL2\n *\n * @returns\n */\n isWebGl2() {\n return isWebGl2(this.gl);\n }\n /**\n * ```\n * gl.activeTexture(textureUnit + gl.TEXTURE0);\n * ```\n *\n * @remarks\n * **WebGL Difference**: `textureUnit` is based from 0, not `gl.TEXTURE0`.\n *\n * @param textureUnit\n */\n activeTexture(textureUnit) {\n const { gl } = this;\n if (this.activeTextureUnit !== textureUnit) {\n gl.activeTexture(textureUnit + gl.TEXTURE0);\n this.activeTextureUnit = textureUnit;\n }\n }\n /**\n * ```\n * gl.bindTexture(gl.TEXTURE_2D, texture);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n *\n * @param texture\n */\n bindTexture(texture) {\n const { gl, activeTextureUnit, texture2dUnits } = this;\n if (texture2dUnits[activeTextureUnit] === texture) {\n return;\n }\n texture2dUnits[activeTextureUnit] = texture;\n gl.bindTexture(this.gl.TEXTURE_2D, texture);\n }\n _getActiveTexture() {\n const { activeTextureUnit, texture2dUnits } = this;\n return texture2dUnits[activeTextureUnit];\n }\n /**\n * ```\n * gl.texParameteri(gl.TEXTURE_2D, pname, param);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n *\n * @param pname\n * @param param\n * @returns\n */\n texParameteri(pname, param) {\n const { gl, texture2dParams } = this;\n const activeTexture = this._getActiveTexture();\n if (!activeTexture) {\n throw new Error('No active texture');\n }\n let textureParams = texture2dParams.get(activeTexture);\n if (!textureParams) {\n textureParams = {};\n texture2dParams.set(activeTexture, textureParams);\n }\n if (textureParams[pname] === param) {\n return;\n }\n textureParams[pname] = param;\n gl.texParameteri(gl.TEXTURE_2D, pname, param);\n }\n texImage2D(level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels) {\n const { gl } = this;\n if (format) {\n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels);\n }\n else {\n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource);\n }\n }\n /**\n * ```\n * gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, data);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n */\n compressedTexImage2D(level, internalformat, width, height, border, data) {\n const { gl } = this;\n gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalformat, width, height, border, data);\n }\n /**\n * ```\n * gl.pixelStorei(pname, param);\n * ```\n *\n * @param pname\n * @param param\n */\n pixelStorei(pname, param) {\n const { gl } = this;\n gl.pixelStorei(pname, param);\n }\n /**\n * ```\n * gl.generateMipmap(gl.TEXTURE_2D);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`\n */\n generateMipmap() {\n const { gl } = this;\n gl.generateMipmap(gl.TEXTURE_2D);\n }\n /**\n * ```\n * gl.createTexture();\n * ```\n *\n * @returns\n */\n createTexture() {\n const { gl } = this;\n return gl.createTexture();\n }\n /**\n * ```\n * gl.deleteTexture(texture);\n * ```\n *\n * @param texture\n */\n deleteTexture(texture) {\n const { gl } = this;\n if (texture) {\n this.texture2dParams.delete(texture);\n }\n gl.deleteTexture(texture);\n }\n /**\n * ```\n * gl.viewport(x, y, width, height);\n * ```\n */\n viewport(x, y, width, height) {\n const { gl } = this;\n gl.viewport(x, y, width, height);\n }\n /**\n * ```\n * gl.clearColor(red, green, blue, alpha);\n * ```\n *\n * @param red\n * @param green\n * @param blue\n * @param alpha\n */\n clearColor(red, green, blue, alpha) {\n const { gl } = this;\n gl.clearColor(red, green, blue, alpha);\n }\n /**\n * ```\n * gl[\"enable\"|\"disable\"](gl.SCISSOR_TEST);\n * ```\n * @param enable\n */\n setScissorTest(enable) {\n const { gl, scissorEnabled } = this;\n if (enable === scissorEnabled) {\n return;\n }\n if (enable) {\n gl.enable(gl.SCISSOR_TEST);\n }\n else {\n gl.disable(gl.SCISSOR_TEST);\n }\n this.scissorEnabled = enable;\n }\n /**\n * ```\n * gl.scissor(x, y, width, height);\n * ```\n *\n * @param x\n * @param y\n * @param width\n * @param height\n */\n scissor(x, y, width, height) {\n const { gl, scissorX, scissorY, scissorWidth, scissorHeight } = this;\n if (x !== scissorX ||\n y !== scissorY ||\n width !== scissorWidth ||\n height !== scissorHeight) {\n gl.scissor(x, y, width, height);\n this.scissorX = x;\n this.scissorY = y;\n this.scissorWidth = width;\n this.scissorHeight = height;\n }\n }\n /**\n * ```\n * gl[\"enable\"|\"disable\"](gl.BLEND);\n * ```\n *\n * @param blend\n * @returns\n */\n setBlend(blend) {\n const { gl, blendEnabled } = this;\n if (blend === blendEnabled) {\n return;\n }\n if (blend) {\n gl.enable(gl.BLEND);\n }\n else {\n gl.disable(gl.BLEND);\n }\n this.blendEnabled = blend;\n }\n /**\n * ```\n * gl.blendFunc(src, dst);\n * ```\n *\n * @param src\n * @param dst\n */\n blendFunc(src, dst) {\n const { gl, blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha } = this;\n if (src !== blendSrcRgb ||\n dst !== blendDstRgb ||\n src !== blendSrcAlpha ||\n dst !== blendDstAlpha) {\n gl.blendFunc(src, dst);\n this.blendSrcRgb = src;\n this.blendDstRgb = dst;\n this.blendSrcAlpha = src;\n this.blendDstAlpha = dst;\n }\n }\n /**\n * ```\n * gl.createBuffer();\n * ```\n *\n * @returns\n */\n createBuffer() {\n const { gl } = this;\n return gl.createBuffer();\n }\n /**\n * ```\n * gl.createFramebuffer();\n * ```\n * @returns\n */\n createFramebuffer() {\n const { gl } = this;\n return gl.createFramebuffer();\n }\n /**\n * ```\n * gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n * ```\n *\n * @param framebuffer\n */\n bindFramebuffer(framebuffer) {\n const { gl } = this;\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n }\n /**\n * ```\n * gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n * ```\n * @remarks\n * **WebGL Difference**: Bind target is always `gl.FRAMEBUFFER` and textarget is always `gl.TEXTURE_2D`\n */\n framebufferTexture2D(attachment, texture, level) {\n const { gl } = this;\n gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, texture, level);\n }\n /**\n * ```\n * gl.clear(gl.COLOR_BUFFER_BIT);\n * ```\n *\n * @remarks\n * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT`\n */\n clear() {\n const { gl } = this;\n gl.clear(gl.COLOR_BUFFER_BIT);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n * gl.bufferData(gl.ARRAY_BUFFER, data, usage);\n * ```\n *\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.\n *\n * @param buffer\n * @param data\n * @param usage\n */\n arrayBufferData(buffer, data, usage) {\n const { gl, boundArrayBuffer } = this;\n if (boundArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n this.boundArrayBuffer = buffer;\n }\n gl.bufferData(gl.ARRAY_BUFFER, data, usage);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);\n * gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);\n * ```\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.\n *\n * @param buffer\n * @param data\n * @param usage\n */\n elementArrayBufferData(buffer, data, usage) {\n const { gl, boundElementArrayBuffer } = this;\n if (boundElementArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);\n this.boundElementArrayBuffer = buffer;\n }\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);\n }\n /**\n * ```\n * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n * gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n * ```\n *\n * @remarks\n * **WebGL Combo**: `gl.bindBuffer` and `gl.vertexAttribPointer` are combined into one function.\n *\n * @param buffer\n * @param index\n * @param size\n * @param type\n * @param normalized\n * @param stride\n * @param offset\n */\n vertexAttribPointer(buffer, index, size, type, normalized, stride, offset) {\n const { gl, boundArrayBuffer } = this;\n if (boundArrayBuffer !== buffer) {\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n this.boundArrayBuffer = buffer;\n }\n gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n }\n /**\n * ```\n * gl.useProgram(program);\n * ```\n *\n * @param program\n * @returns\n */\n useProgram(program) {\n const { gl, curProgram } = this;\n if (curProgram === program) {\n return;\n }\n gl.useProgram(program);\n this.curProgram = program;\n }\n setUniform(type, location, ...args) {\n const { gl, programUniforms } = this;\n let uniforms = programUniforms.get(this.curProgram);\n if (!uniforms) {\n uniforms = new Map();\n programUniforms.set(this.curProgram, uniforms);\n }\n const uniformArgs = uniforms.get(location);\n if (!uniformArgs || !compareArrays(uniformArgs, args)) {\n uniforms.set(location, args);\n gl[type](location, ...args);\n }\n }\n /**\n * ```\n * gl.getParameter(pname);\n * ```\n *\n * @param pname\n * @returns\n */\n getParameter(pname) {\n const { gl } = this;\n return gl.getParameter(pname);\n }\n /**\n * ```\n * gl.drawElements(mode, count, type, offset);\n * ```\n *\n * @param mode\n * @param count\n * @param type\n * @param offset\n */\n drawElements(mode, count, type, offset) {\n const { gl } = this;\n gl.drawElements(mode, count, type, offset);\n }\n /**\n * ```\n * gl.drawArrays(mode, first, count);\n * ```\n *\n * @param name\n * @returns\n */\n getExtension(name) {\n const { gl } = this;\n return gl.getExtension(name);\n }\n /**\n * ```\n * gl.createVertexArray();\n * ```\n *\n * @returns\n */\n createVertexArray() {\n const { gl } = this;\n assertTruthy(gl instanceof WebGL2RenderingContext);\n return gl.createVertexArray();\n }\n /**\n * ```\n * gl.bindVertexArray(vertexArray);\n * ```\n *\n * @param vertexArray\n */\n bindVertexArray(vertexArray) {\n const { gl } = this;\n assertTruthy(gl instanceof WebGL2RenderingContext);\n gl.bindVertexArray(vertexArray);\n }\n /**\n * ```\n * gl.getAttribLocation(program, name);\n * ```\n *\n * @param program\n * @param name\n * @returns\n */\n getAttribLocation(program, name) {\n const { gl } = this;\n return gl.getAttribLocation(program, name);\n }\n /**\n * ```\n * gl.getUniformLocation(program, name);\n * ```\n *\n * @param program\n * @param name\n * @returns\n */\n getUniformLocation(program, name) {\n const { gl } = this;\n return gl.getUniformLocation(program, name);\n }\n /**\n * ```\n * gl.enableVertexAttribArray(index);\n * ```\n *\n * @param index\n */\n enableVertexAttribArray(index) {\n const { gl } = this;\n gl.enableVertexAttribArray(index);\n }\n /**\n * ```\n * gl.disableVertexAttribArray(index);\n * ```\n *\n * @param index\n */\n disableVertexAttribArray(index) {\n const { gl } = this;\n gl.disableVertexAttribArray(index);\n }\n /**\n * ```\n * gl.createShader(type);\n * ```\n *\n * @param type\n * @returns\n */\n createShader(type) {\n const { gl } = this;\n return gl.createShader(type);\n }\n /**\n * ```\n * gl.compileShader(shader);\n * ```\n *\n * @param shader\n * @returns\n */\n compileShader(shader) {\n const { gl } = this;\n gl.compileShader(shader);\n }\n /**\n * ```\n * gl.attachShader(program, shader);\n * ```\n *\n * @param program\n * @param shader\n */\n attachShader(program, shader) {\n const { gl } = this;\n gl.attachShader(program, shader);\n }\n /**\n * ```\n * gl.linkProgram(program);\n * ```\n *\n * @param program\n */\n linkProgram(program) {\n const { gl } = this;\n gl.linkProgram(program);\n }\n /**\n * ```\n * gl.deleteProgram(shader);\n * ```\n *\n * @param shader\n */\n deleteProgram(shader) {\n const { gl } = this;\n gl.deleteProgram(shader);\n }\n /**\n * ```\n * gl.getShaderParameter(shader, pname);\n * ```\n *\n * @param shader\n * @param pname\n */\n getShaderParameter(shader, pname) {\n const { gl } = this;\n return gl.getShaderParameter(shader, pname);\n }\n /**\n * ```\n * gl.getShaderInfoLog(shader);\n * ```\n *\n * @param shader\n */\n getShaderInfoLog(shader) {\n const { gl } = this;\n return gl.getShaderInfoLog(shader);\n }\n /**\n * ```\n * gl.createProgram();\n * ```\n *\n * @returns\n */\n createProgram() {\n const { gl } = this;\n return gl.createProgram();\n }\n /**\n * ```\n * gl.getProgramParameter(program, pname);\n * ```\n *\n * @param program\n * @param pname\n * @returns\n */\n getProgramParameter(program, pname) {\n const { gl } = this;\n return gl.getProgramParameter(program, pname);\n }\n /**\n * ```\n * gl.getProgramInfoLog(program);\n * ```\n *\n * @param program\n * @returns\n */\n getProgramInfoLog(program) {\n const { gl } = this;\n return gl.getProgramInfoLog(program);\n }\n /**\n * ```\n * gl.shaderSource(shader, source);\n * ```\n *\n * @param shader\n * @param source\n */\n shaderSource(shader, source) {\n const { gl } = this;\n gl.shaderSource(shader, source);\n }\n /**\n * ```\n * gl.deleteShader(shader);\n * ```\n *\n * @param shader\n */\n deleteShader(shader) {\n const { gl } = this;\n gl.deleteShader(shader);\n }\n}\n/**\n * Compare two arrays for equality.\n *\n * @remarks\n * This function will not try to compare nested arrays or Float32Arrays and\n * instead will always return false when they are encountered.\n *\n * @param a\n * @param b\n * @returns\n */\nexport function compareArrays(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n return a.every((v, i) => {\n // Don't bother to compare nested arrays or Float32Arrays\n if (Array.isArray(v) || v instanceof Float32Array) {\n return false;\n }\n else {\n return v === b[i];\n }\n });\n}\n//# sourceMappingURL=WebGlContextWrapper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\nexport class RenderTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = RenderTexture.resolveDefaults(props || {});\n }\n get width() {\n return this.props.width;\n }\n set width(value) {\n this.props.width = value;\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n this.props.height = value;\n }\n async getTextureData() {\n return {\n data: null,\n premultiplyAlpha: null,\n };\n }\n static resolveDefaults(props) {\n return {\n width: props.width || 256,\n height: props.height || 256,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=RenderTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2024 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../utils.js';\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nexport class WebGlCoreCtxRenderTexture extends WebGlCoreCtxTexture {\n framebuffer;\n constructor(glw, memManager, textureSource) {\n super(glw, memManager, textureSource);\n // Create Framebuffer object\n const framebuffer = glw.createFramebuffer();\n assertTruthy(framebuffer, 'Unable to create framebuffer');\n this.framebuffer = framebuffer;\n }\n async onLoadRequest() {\n const { glw, memManager } = this;\n const nativeTexture = (this._nativeCtxTexture =\n this.createNativeCtxTexture());\n const { width, height } = this.textureSource;\n // Set the dimensions of the render texture\n glw.texImage2D(0, glw.RGBA, width, height, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);\n // Update the texture memory manager\n memManager.setTextureMemUse(this, width * height * 4);\n // Bind the framebuffer\n glw.bindFramebuffer(this.framebuffer);\n // Attach the texture to the framebuffer\n glw.framebufferTexture2D(glw.COLOR_ATTACHMENT0, nativeTexture, 0);\n // Unbind the framebuffer\n glw.bindFramebuffer(null);\n return {\n width,\n height,\n };\n }\n}\n//# sourceMappingURL=WebGlCoreCtxRenderTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, createWebGLContext, hasOwn, mergeColorAlphaPremultiplied, } from '../../../utils.js';\nimport { CoreRenderer } from '../CoreRenderer.js';\nimport { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';\nimport { createIndexBuffer, getWebGlParameters, getWebGlExtensions, } from './internal/RendererUtils.js';\nimport { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';\nimport { Texture } from '../../textures/Texture.js';\nimport { ColorTexture } from '../../textures/ColorTexture.js';\nimport { SubTexture } from '../../textures/SubTexture.js';\nimport { WebGlCoreCtxSubTexture } from './WebGlCoreCtxSubTexture.js';\nimport { CoreShaderManager } from '../../CoreShaderManager.js';\nimport { BufferCollection } from './internal/BufferCollection.js';\nimport { compareRect, getNormalizedRgbaComponents, } from '../../lib/utils.js';\nimport { WebGlCoreShader } from './WebGlCoreShader.js';\nimport { RoundedRectangle } from './shaders/RoundedRectangle.js';\nimport { ContextSpy } from '../../lib/ContextSpy.js';\nimport { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';\nimport { RenderTexture } from '../../textures/RenderTexture.js';\nimport { WebGlCoreCtxRenderTexture } from './WebGlCoreCtxRenderTexture.js';\nconst WORDS_PER_QUAD = 24;\nconst BYTES_PER_QUAD = WORDS_PER_QUAD * 4;\nexport class WebGlCoreRenderer extends CoreRenderer {\n //// WebGL Native Context and Data\n glw;\n system;\n //// Core Managers\n txManager;\n txMemManager;\n shManager;\n //// Options\n options;\n //// Persistent data\n quadBuffer = new ArrayBuffer(1024 * 1024 * 4);\n fQuadBuffer = new Float32Array(this.quadBuffer);\n uiQuadBuffer = new Uint32Array(this.quadBuffer);\n renderOps = [];\n //// Render Op / Buffer Filling State\n curBufferIdx = 0;\n curRenderOp = null;\n rttNodes = [];\n activeRttNode = null;\n //// Default Shader\n defaultShader;\n quadBufferCollection;\n /**\n * White pixel texture used by default when no texture is specified.\n */\n defaultTexture;\n /**\n * Whether the renderer is currently rendering to a texture.\n */\n renderToTextureActive = false;\n constructor(options) {\n super(options.stage);\n const { canvas, clearColor, bufferMemory } = options;\n this.options = options;\n this.txManager = options.txManager;\n this.txMemManager = options.txMemManager;\n this.shManager = options.shManager;\n this.defaultTexture = new ColorTexture(this.txManager);\n // When the default texture is loaded, request a render in case the\n // RAF is paused. Fixes: https://github.com/lightning-js/renderer/issues/123\n this.defaultTexture.once('loaded', () => {\n this.stage.requestRender();\n });\n const gl = createWebGLContext(canvas, options.contextSpy);\n const glw = (this.glw = new WebGlContextWrapper(gl));\n const color = getNormalizedRgbaComponents(clearColor);\n glw.viewport(0, 0, canvas.width, canvas.height);\n glw.clearColor(color[0], color[1], color[2], color[3]);\n glw.setBlend(true);\n glw.blendFunc(glw.ONE, glw.ONE_MINUS_SRC_ALPHA);\n createIndexBuffer(glw, bufferMemory);\n this.system = {\n parameters: getWebGlParameters(this.glw),\n extensions: getWebGlExtensions(this.glw),\n };\n this.shManager.renderer = this;\n this.defaultShader = this.shManager.loadShader('DefaultShader').shader;\n const quadBuffer = glw.createBuffer();\n assertTruthy(quadBuffer);\n const stride = 6 * Float32Array.BYTES_PER_ELEMENT;\n this.quadBufferCollection = new BufferCollection([\n {\n buffer: quadBuffer,\n attributes: {\n a_position: {\n name: 'a_position',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 0, // start at the beginning of the buffer\n },\n a_textureCoordinate: {\n name: 'a_textureCoordinate',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 2 * Float32Array.BYTES_PER_ELEMENT,\n },\n a_color: {\n name: 'a_color',\n size: 4,\n type: glw.UNSIGNED_BYTE,\n normalized: true,\n stride,\n offset: 4 * Float32Array.BYTES_PER_ELEMENT,\n },\n a_textureIndex: {\n name: 'a_textureIndex',\n size: 1,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 5 * Float32Array.BYTES_PER_ELEMENT,\n },\n },\n },\n ]);\n }\n reset() {\n const { glw } = this;\n this.curBufferIdx = 0;\n this.curRenderOp = null;\n this.renderOps.length = 0;\n glw.setScissorTest(false);\n glw.clear();\n }\n getShaderManager() {\n return this.shManager;\n }\n createCtxTexture(textureSource) {\n if (textureSource instanceof SubTexture) {\n return new WebGlCoreCtxSubTexture(this.glw, this.txMemManager, textureSource);\n }\n else if (textureSource instanceof RenderTexture) {\n return new WebGlCoreCtxRenderTexture(this.glw, this.txMemManager, textureSource);\n }\n return new WebGlCoreCtxTexture(this.glw, this.txMemManager, textureSource);\n }\n /**\n * This function adds a quad (a rectangle composed of two triangles) to the WebGL rendering pipeline.\n *\n * It takes a set of options that define the quad's properties, such as its dimensions, colors, texture, shader, and transformation matrix.\n * The function first updates the shader properties with the current dimensions if necessary, then sets the default texture if none is provided.\n * It then checks if a new render operation is needed, based on the current shader and clipping rectangle.\n * If a new render operation is needed, it creates one and updates the current render operation.\n * The function then adjusts the texture coordinates based on the texture options and adds the texture to the texture manager.\n *\n * Finally, it calculates the vertices for the quad, taking into account any transformations, and adds them to the quad buffer.\n * The function updates the length and number of quads in the current render operation, and updates the current buffer index.\n */\n addQuad(params) {\n const { fQuadBuffer, uiQuadBuffer } = this;\n const { width, height, colorTl, colorTr, colorBl, colorBr, textureOptions, shader, shaderProps, alpha, clippingRect, tx, ty, ta, tb, tc, td, rtt: renderToTexture, parentHasRenderTexture, framebufferDimensions, } = params;\n let { texture } = params;\n /**\n * If the shader props contain any automatic properties, update it with the\n * current dimensions that will be used to render the quad.\n */\n if (shaderProps && hasOwn(shaderProps, '$dimensions')) {\n const dimensions = shaderProps.$dimensions;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n dimensions.width = width;\n dimensions.height = height;\n }\n texture = texture ?? this.defaultTexture;\n assertTruthy(texture instanceof Texture, 'Invalid texture type');\n let { curBufferIdx: bufferIdx, curRenderOp } = this;\n const targetDims = {\n width,\n height,\n };\n const targetShader = shader || this.defaultShader;\n assertTruthy(targetShader instanceof WebGlCoreShader);\n if (!this.reuseRenderOp(params)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.newRenderOp(targetShader, shaderProps, alpha, targetDims, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions);\n curRenderOp = this.curRenderOp;\n assertTruthy(curRenderOp);\n }\n const flipX = textureOptions?.flipX ?? false;\n const flipY = textureOptions?.flipY ?? false;\n let texCoordX1 = 0;\n let texCoordY1 = 0;\n let texCoordX2 = 1;\n let texCoordY2 = 1;\n if (texture instanceof SubTexture) {\n const { x: tx, y: ty, width: tw, height: th } = texture.props;\n const { width: parentW = 0, height: parentH = 0 } = texture.parentTexture\n .dimensions || { width: 0, height: 0 };\n texCoordX1 = tx / parentW;\n texCoordX2 = texCoordX1 + tw / parentW;\n texCoordY1 = ty / parentH;\n texCoordY2 = texCoordY1 + th / parentH;\n texture = texture.parentTexture;\n }\n // Flip texture coordinates if dictated by texture options\n if (flipX) {\n [texCoordX1, texCoordX2] = [texCoordX2, texCoordX1];\n }\n if (flipY) {\n [texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];\n }\n const { txManager } = this.stage;\n const ctxTexture = txManager.getCtxTexture(texture);\n assertTruthy(ctxTexture instanceof WebGlCoreCtxTexture);\n const textureIdx = this.addTexture(ctxTexture, bufferIdx);\n curRenderOp = this.curRenderOp;\n assertTruthy(curRenderOp);\n // render quad advanced\n if (tb !== 0 || tc !== 0) {\n // Upper-Left\n fQuadBuffer[bufferIdx++] = tx; // vertexX\n fQuadBuffer[bufferIdx++] = ty; // vertexY\n fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX\n fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY\n uiQuadBuffer[bufferIdx++] = colorTl; // color\n fQuadBuffer[bufferIdx++] = textureIdx; // texIndex\n // Upper-Right\n fQuadBuffer[bufferIdx++] = tx + width * ta;\n fQuadBuffer[bufferIdx++] = ty + width * tc;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY1;\n uiQuadBuffer[bufferIdx++] = colorTr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Left\n fQuadBuffer[bufferIdx++] = tx + height * tb;\n fQuadBuffer[bufferIdx++] = ty + height * td;\n fQuadBuffer[bufferIdx++] = texCoordX1;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBl;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Right\n fQuadBuffer[bufferIdx++] = tx + width * ta + height * tb;\n fQuadBuffer[bufferIdx++] = ty + width * tc + height * td;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n }\n else {\n // Calculate the right corner of the quad\n // multiplied by the scale\n const rightCornerX = tx + width * ta;\n const rightCornerY = ty + height * td;\n // Upper-Left\n fQuadBuffer[bufferIdx++] = tx; // vertexX\n fQuadBuffer[bufferIdx++] = ty; // vertexY\n fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX\n fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY\n uiQuadBuffer[bufferIdx++] = colorTl; // color\n fQuadBuffer[bufferIdx++] = textureIdx; // texIndex\n // Upper-Right\n fQuadBuffer[bufferIdx++] = rightCornerX;\n fQuadBuffer[bufferIdx++] = ty;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY1;\n uiQuadBuffer[bufferIdx++] = colorTr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Left\n fQuadBuffer[bufferIdx++] = tx;\n fQuadBuffer[bufferIdx++] = rightCornerY;\n fQuadBuffer[bufferIdx++] = texCoordX1;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBl;\n fQuadBuffer[bufferIdx++] = textureIdx;\n // Lower-Right\n fQuadBuffer[bufferIdx++] = rightCornerX;\n fQuadBuffer[bufferIdx++] = rightCornerY;\n fQuadBuffer[bufferIdx++] = texCoordX2;\n fQuadBuffer[bufferIdx++] = texCoordY2;\n uiQuadBuffer[bufferIdx++] = colorBr;\n fQuadBuffer[bufferIdx++] = textureIdx;\n }\n // Update the length of the current render op\n curRenderOp.length += WORDS_PER_QUAD;\n curRenderOp.numQuads++;\n this.curBufferIdx = bufferIdx;\n }\n /**\n * Replace the existing RenderOp with a new one that uses the specified Shader\n * and starts at the specified buffer index.\n *\n * @param shader\n * @param bufferIdx\n */\n newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions) {\n const curRenderOp = new WebGlCoreRenderOp(this.glw, this.options, this.quadBufferCollection, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, 0, // Z-Index is only used for explictly added Render Ops\n renderToTexture, parentHasRenderTexture, framebufferDimensions);\n this.curRenderOp = curRenderOp;\n this.renderOps.push(curRenderOp);\n }\n /**\n * Add a texture to the current RenderOp. If the texture cannot be added to the\n * current RenderOp, a new RenderOp will be created and the texture will be added\n * to that one.\n *\n * If the texture cannot be added to the new RenderOp, an error will be thrown.\n *\n * @param texture\n * @param bufferIdx\n * @param recursive\n * @returns Assigned Texture Index of the texture in the render op\n */\n addTexture(texture, bufferIdx, recursive) {\n const { curRenderOp } = this;\n assertTruthy(curRenderOp);\n const textureIdx = curRenderOp.addTexture(texture);\n // TODO: Refactor to be more DRY\n if (textureIdx === 0xffffffff) {\n if (recursive) {\n throw new Error('Unable to add texture to render op');\n }\n const { shader, shaderProps, dimensions, clippingRect, alpha } = curRenderOp;\n this.newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx);\n return this.addTexture(texture, bufferIdx, true);\n }\n return textureIdx;\n }\n /**\n * Test if the current Render operation can be reused for the specified parameters.\n * @param params\n * @returns\n */\n reuseRenderOp(params) {\n const { shader, shaderProps, parentHasRenderTexture, rtt, clippingRect } = params;\n const targetShader = shader || this.defaultShader;\n // Switching shader program will require a new render operation\n if (this.curRenderOp?.shader !== targetShader) {\n return false;\n }\n // Switching clipping rect will require a new render operation\n if (!compareRect(this.curRenderOp.clippingRect, clippingRect)) {\n return false;\n }\n // Force new render operation if rendering to texture\n // @todo: This needs to be improved, render operations could also be reused\n // for rendering to texture\n if (parentHasRenderTexture || rtt) {\n return false;\n }\n // Check if the shader can batch the shader properties\n if (this.curRenderOp.shader !== this.defaultShader &&\n (!shaderProps ||\n !this.curRenderOp.shader.canBatchShaderProps(this.curRenderOp.shaderProps, shaderProps))) {\n return false;\n }\n // Render operation can be reused\n return true;\n }\n /**\n * add RenderOp to the render pipeline\n */\n addRenderOp(renderable) {\n this.renderOps.push(renderable);\n this.curRenderOp = null;\n }\n /**\n * Render the current set of RenderOps to render to the specified surface.\n *\n * TODO: 'screen' is the only supported surface at the moment.\n *\n * @param surface\n */\n render(surface = 'screen') {\n const { glw, quadBuffer } = this;\n const arr = new Float32Array(quadBuffer, 0, this.curBufferIdx);\n const buffer = this.quadBufferCollection.getBuffer('a_position') ?? null;\n glw.arrayBufferData(buffer, arr, glw.STATIC_DRAW);\n const doLog = false; // idx++ % 100 === 0;\n if (doLog) {\n console.log('renderOps', this.renderOps.length);\n }\n this.renderOps.forEach((renderOp, i) => {\n if (doLog) {\n console.log('Quads per operation', renderOp.numQuads);\n }\n renderOp.draw();\n });\n }\n renderToTexture(node) {\n for (let i = 0; i < this.rttNodes.length; i++) {\n if (this.rttNodes[i] === node) {\n return;\n }\n }\n // @todo: Better bottom up rendering order\n this.rttNodes.unshift(node);\n }\n renderRTTNodes() {\n const { glw } = this;\n const { txManager } = this.stage;\n // Render all associated RTT nodes to their textures\n for (let i = 0; i < this.rttNodes.length; i++) {\n const node = this.rttNodes[i];\n // Skip nodes that don't have RTT updates\n if (!node || !node.hasRTTupdates) {\n continue;\n }\n // Set the active RTT node to the current node\n // So we can prevent rendering children of nested RTT nodes\n this.activeRttNode = node;\n assertTruthy(node.texture, 'RTT node missing texture');\n const ctxTexture = txManager.getCtxTexture(node.texture);\n assertTruthy(ctxTexture instanceof WebGlCoreCtxRenderTexture);\n this.renderToTextureActive = true;\n // Bind the the texture's framebuffer\n glw.bindFramebuffer(ctxTexture.framebuffer);\n glw.viewport(0, 0, ctxTexture.w, ctxTexture.h);\n glw.clear();\n // Render all associated quads to the texture\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (!child) {\n continue;\n }\n child.update(this.stage.deltaTime, {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n });\n this.stage.addQuads(child);\n child.hasRTTupdates = false;\n }\n // Render all associated quads to the texture\n this.render();\n // Reset render operations\n this.renderOps.length = 0;\n node.hasRTTupdates = false;\n }\n // Bind the default framebuffer\n glw.bindFramebuffer(null);\n glw.viewport(0, 0, this.glw.canvas.width, this.glw.canvas.height);\n this.renderToTextureActive = false;\n }\n}\n//# sourceMappingURL=WebGlCoreRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const SpecialCodepoints = {\n LINE_FEED: 0x0a,\n CARRIAGE_RETURN: 0x0d,\n SPACE: 0x20,\n TAB: 0x09,\n ZERO_WIDTH_SPACE: 0x200b,\n ZERO_WIDTH_NON_JOINER: 0x200c,\n ZERO_WIDTH_JOINER: 0x200d,\n LEFT_TO_RIGHT_MARK: 0x200e,\n RIGHT_TO_LEFT_MARK: 0x200f,\n LEFT_TO_RIGHT_EMBEDDING: 0x202a,\n RIGHT_TO_LEFT_EMBEDDING: 0x202b,\n POP_DIRECTIONAL_FORMATTING: 0x202c,\n LEFT_TO_RIGHT_OVERRIDE: 0x202d,\n RIGHT_TO_LEFT_OVERRIDE: 0x202e,\n LINE_SEPARATOR: 0x2028,\n PARAGRAPH_SEPARATOR: 0x2029,\n OBJECT_REPLACEMENT_CHARACTER: 0xfffc,\n REPLACEMENT_CHARACTER: 0xfffd,\n ZERO_WIDTH_NO_BREAK_SPACE: 0xfeff,\n LEFT_TO_RIGHT_ISOLATE: 0x2066,\n RIGHT_TO_LEFT_ISOLATE: 0x2067,\n FIRST_STRONG_ISOLATE: 0x2068,\n POP_DIRECTIONAL_ISOLATE: 0x2069,\n INHIBIT_SYMMETRIC_SWAPPING: 0x206a,\n ACTIVATE_SYMMETRIC_SWAPPING: 0x206b,\n INHIBIT_ARABIC_FORM_SHAPING: 0x206c,\n ACTIVATE_ARABIC_FORM_SHAPING: 0x206d,\n NATIONAL_DIGIT_SHAPES: 0x206e,\n NOMINAL_DIGIT_SHAPES: 0x206f,\n LEFT_TO_RIGHT_BOUNDARY: 0x200e,\n RIGHT_TO_LEFT_BOUNDARY: 0x200f,\n};\n//# sourceMappingURL=SpecialCodepoints.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class FontShaper {\n}\n//# sourceMappingURL=FontShaper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { SpecialCodepoints } from '../../../renderers/SdfTextRenderer/internal/SpecialCodepoints.js';\nimport { FontShaper, } from './FontShaper.js';\nexport class SdfFontShaper extends FontShaper {\n data;\n glyphMap;\n kernings;\n constructor(data, glyphMap) {\n super();\n this.data = data;\n this.glyphMap = glyphMap;\n const kernings = (this.kernings = {});\n data.kernings.forEach((kerning) => {\n const second = kerning.second;\n const firsts = (kernings[second] = kernings[second] || {});\n firsts[kerning.first] = kerning.amount;\n });\n this.kernings = kernings;\n }\n *shapeText(props, codepoints) {\n let codepointResult;\n let lastGlyphId = undefined;\n while ((codepointResult = codepoints.peek()) && !codepointResult.done) {\n const codepoint = codepointResult.value;\n const glyph = this.glyphMap.get(codepoint);\n codepoints.next();\n if (glyph !== undefined) {\n // We found a glyph for this codepoint\n // Yield the mapped glyph info\n /**\n * Kerning includes any possible additional letter spacing\n */\n const kerning = lastGlyphId !== undefined\n ? (this.kernings[glyph.id]?.[lastGlyphId] || 0) +\n props.letterSpacing\n : 0;\n lastGlyphId = glyph.id;\n yield {\n mapped: true,\n glyphId: glyph.id,\n codepoint,\n cluster: codepoints.lastIndex,\n xAdvance: glyph.xadvance + kerning,\n yAdvance: 0,\n xOffset: glyph.xoffset + kerning,\n yOffset: glyph.yoffset,\n xBearing: 0,\n yBearing: 0,\n width: glyph.width,\n height: glyph.height,\n };\n }\n else {\n // We didn't find a glyph for this codepoint\n // Yield the unmapped codepoint info\n // If this codepoint is a linebreak, we should reset the last glyph id\n // so that the next glyph will not be kerned with the last glyph of the\n // previous line.\n if (codepoint === SpecialCodepoints.LINE_FEED) {\n lastGlyphId = undefined;\n }\n yield {\n mapped: false,\n codepoint,\n cluster: codepoints.lastIndex,\n };\n }\n }\n }\n}\n//# sourceMappingURL=SdfFontShaper.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// import type { Renderer } from '../../../Renderer';\nimport { assertTruthy } from '../../../../utils.js';\nimport { WebGlCoreRenderer } from '../../../renderers/webgl/WebGlCoreRenderer.js';\nimport { ImageTexture } from '../../../textures/ImageTexture.js';\nimport { TrFontFace } from '../TrFontFace.js';\nimport { SdfFontShaper } from './internal/SdfFontShaper.js';\nexport class SdfTrFontFace extends TrFontFace {\n type;\n texture;\n /**\n * Height of the tallest character in the font including the whitespace above it\n */\n maxCharHeight = 0;\n data;\n shaper;\n glyphMap = new Map();\n constructor(fontFamily, descriptors, type, stage, atlasUrl, atlasDataUrl) {\n super(fontFamily, descriptors);\n this.type = type;\n const renderer = stage.renderer;\n assertTruthy(renderer instanceof WebGlCoreRenderer, 'SDF Font Faces can only be used with the WebGL Renderer');\n this.texture = stage.txManager.loadTexture('ImageTexture', {\n src: atlasUrl,\n // IMPORTANT: The SDF shader requires the alpha channel to NOT be\n // premultiplied on the atlas texture. If it is premultiplied, the\n // rendering of SDF glyphs (especially single-channel SDF fonts) will\n // be very jagged.\n premultiplyAlpha: false,\n }, {\n preload: true,\n });\n this.texture.on('loaded', () => {\n this.checkLoaded();\n });\n // Set this.data to the fetched data from dataUrl\n fetch(atlasDataUrl)\n .then(async (response) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.data = await response.json();\n // Add all the glyphs to the glyph map\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let maxCharHeight = 0;\n this.data.chars.forEach((glyph) => {\n this.glyphMap.set(glyph.id, glyph);\n const charHeight = glyph.yoffset + glyph.height;\n if (charHeight > maxCharHeight) {\n maxCharHeight = charHeight;\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.maxCharHeight = maxCharHeight;\n // We know `data` is defined here, because we just set it\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.shaper = new SdfFontShaper(this.data, this.glyphMap);\n this.checkLoaded();\n })\n .catch(console.error);\n }\n getAtlasEntry(glyphId) {\n const glyph = this.glyphMap.get(glyphId);\n if (glyph === undefined) {\n throw new Error(`Glyph ${glyphId} not found in font ${this.fontFamily}`);\n }\n return {\n x: glyph.x,\n y: glyph.y,\n width: glyph.width,\n height: glyph.height,\n };\n }\n checkLoaded() {\n if (this.loaded)\n return;\n if (this.texture.state === 'loaded' && this.data) {\n this.loaded = true;\n this.emit('loaded');\n }\n }\n}\n//# sourceMappingURL=SdfTrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Base class for Core extensions.\n *\n * @remarks\n * Core extensions are used to extend the Core Renderer with custom code such as\n * custom fonts, custom shaders, custom textures, custom animation functions,\n * and more.\n */\nexport class CoreExtension {\n}\n//# sourceMappingURL=CoreExtension.js.map"],"names":["createWebGLContext","canvas","contextSpy","config","alpha","antialias","depth","stencil","desynchronized","powerPreference","premultipliedAlpha","preserveDrawingBuffer","gl","getContext","Error","Proxy","get","target","prop","value","increment","String","bind","assertTruthy","condition","message","isProductionEnvironment","mergeColorProgress","rgba1","rgba2","p","r1","Math","trunc","g1","b1","a1","r2","g2","b2","a2","r","round","g","b","a","mergeColorAlpha","rgba","mergeColorAlphaPremultiplied","flipEndianess","newAlpha","hasOwn","obj","Object","prototype","hasOwnProperty","call","EventEmitter","constructor","_defineProperty","on","event","listener","listeners","eventListeners","push","off","index","indexOf","splice","once","onceListener","data","emit","forEach","removeAllListeners","exports","CoreShader","makeCacheKey","props","resolveDefaults","createShader","glw","type","source","shader","shaderSource","compileShader","success","getShaderParameter","COMPILE_STATUS","console","log","getShaderInfoLog","deleteShader","createProgram","vertexShader","fragmentShader","program","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","deleteProgram","undefined","isWebGl2","self","WebGL2RenderingContext","WebGlCoreShader","options","renderer","supportsIndexedTextures","webGl2","requiredExtensions","webgl2Extensions","webgl1Extensions","glVersion","extensionName","getExtension","name","shaderSources","fragment","vertex","textureUnits","system","parameters","MAX_VERTEX_TEXTURE_IMAGE_UNITS","vertexSource","Function","fragmentSource","VERTEX_SHADER","FRAGMENT_SHADER","vao","createVertexArray","bindVertexArray","attributeLocations","attributeBuffers","attributeNames","attributes","attributeName","location","getAttribLocation","buffer","createBuffer","uniformLocations","uniformTypes","uniforms","uniform","getUniformLocation","warn","bindBufferAttribute","attribute","enableVertexAttribArray","vertexAttribPointer","size","normalized","stride","offset","disableAttribute","disableVertexAttribArray","disableAttributes","loc","boundBufferCollection","canBatchShaderProps","propsA","propsB","bindRenderOp","renderOp","bindBufferCollection","buffers","textures","length","bindTextures","parentHasRenderTexture","renderToTexture","_ref","framebufferDimensions","width","height","setUniform","Float32Array","pixelRatio","dimensions","$dimensions","$alpha","bindProps","resolvedBuffer","getBuffer","resolvedInfo","getAttributeInfo","attach","useProgram","detach","Texture","txManager","Set","setRenderableOwner","owner","renderable","renderableOwners","add","delete","setState","state","args","loadedArgs","failedArgs","error","getNormalizedRgbaComponents","getNormalizedAlphaComponent","getRgbaString","color","floor","toFixed","createBound","x1","y1","x2","y2","out","intersectBound","intersection","max","min","boundsOverlap","convertBoundToRect","bound","x","y","intersectRect","copyRect","compareRect","boundInsideBound","bound1","bound2","isBoundPositive","TrFontFace","fontFamily","descriptors","_objectSpread","style","weight","stretch","convertToCssFontFaceDescriptors","unicodeRange","variant","featureSettings","display","CoreContextTexture","memManager","textureSource","CoreRenderer","stage","CoreRenderOp","WebGlCoreRenderOp","shaderProps","clippingRect","bufferIdx","zIndex","maxTextures","getParameter","addTexture","texture","existingIdx","findIndex","t","newIdx","draw","shManager","useShader","quadIdx","valid","_this$clippingRect","canvasHeight","clipX","clipWidth","clipHeight","clipY","setScissorTest","scissor","drawElements","TRIANGLES","numQuads","UNSIGNED_SHORT","getWebGlParameters","params","MAX_RENDERBUFFER_SIZE","MAX_TEXTURE_SIZE","MAX_VIEWPORT_DIMS","MAX_TEXTURE_IMAGE_UNITS","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_VERTEX_ATTRIBS","MAX_VARYING_VECTORS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","keys","key","getWebGlExtensions","extensions","ANGLE_instanced_arrays","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBKIT_WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc_srgb","OES_vertex_array_object","createIndexBuffer","maxQuads","indices","Uint16Array","i","j","elementArrayBufferData","STATIC_DRAW","isHTMLImageElement","memize","fn","head","tail","memoized","node","len","arguments","searchCache","next","prev","val","Array","apply","maxSize","clear","isPowerOfTwo","getTimingBezier","c","d","xc","xb","xa","yc","yb","ya","time","cbx","cbxd","dx","it","minT","maxT","getTimingFunction","memo","str","s","parts","substr","split","parseFloat","isNaN","hypot","sqrt","TRANSPARENT_TEXTURE_DATA","Uint8Array","WebGlCoreCtxTexture","ctxTexture","_state","load","_nativeCtxTexture","w","_w","h","_h","createNativeCtxTexture","onLoadRequest","then","catch","err","_this","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_this$textureSource","textureData","_mipmaps$","_textureData$data","mipmaps","_textureData$data$wid","_width","_textureData$data$hei","_height","glInternalFormat","view","wrap","_callee$","_context","texImage2D","RGBA","UNSIGNED_BYTE","setTextureMemUse","byteLength","getTextureData","sent","abrupt","activeTexture","ImageBitmap","ImageData","bindTexture","pixelStorei","UNPACK_PREMULTIPLY_ALPHA_WEBGL","premultiplyAlpha","generateMipmap","DataView","ArrayBuffer","compressedTexImage2D","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","stop","free","deleteTexture","nativeTexture","createTexture","ColorTexture","_this2","_callee2","pixelData32","pixelData8","_callee2$","_context2","Uint32Array","Uint8ClampedArray","resolvedProps","SubTexture","parentTexture","loadTexture","txType","queueMicrotask","parentTx","onParentTxLoaded","onParentTxFailed","_this3","_callee3","_callee3$","_context3","WebGlCoreCtxSubTexture","_this4","_callee4","_props$data","_props$data2","_callee4$","_context4","BufferCollection","_this$config$find","find","item","_this$config$find2","WebGlContextWrapper","WeakMap","activeTextureUnit","ACTIVE_TEXTURE","TEXTURE0","maxTextureUnits","texture2dUnits","fill","map","_","TEXTURE_BINDING_2D","scissorEnabled","isEnabled","SCISSOR_TEST","scissorBox","SCISSOR_BOX","scissorX","scissorY","scissorWidth","scissorHeight","blendEnabled","BLEND","blendSrcRgb","BLEND_SRC_RGB","blendDstRgb","BLEND_DST_RGB","blendSrcAlpha","BLEND_SRC_ALPHA","blendDstAlpha","BLEND_DST_ALPHA","boundArrayBuffer","ARRAY_BUFFER_BINDING","boundElementArrayBuffer","ELEMENT_ARRAY_BUFFER_BINDING","curProgram","CURRENT_PROGRAM","UNPACK_FLIP_Y_WEBGL","FLOAT","ONE","ONE_MINUS_SRC_ALPHA","DYNAMIC_DRAW","COLOR_ATTACHMENT0","textureUnit","TEXTURE_2D","_getActiveTexture","pname","param","texture2dParams","textureParams","set","level","internalFormat","widthOrFormat","heightOrType","borderOrSource","format","pixels","internalformat","border","viewport","clearColor","red","green","blue","enable","disable","setBlend","blend","blendFunc","src","dst","createFramebuffer","bindFramebuffer","framebuffer","FRAMEBUFFER","framebufferTexture2D","attachment","COLOR_BUFFER_BIT","arrayBufferData","usage","bindBuffer","ARRAY_BUFFER","bufferData","ELEMENT_ARRAY_BUFFER","programUniforms","Map","uniformArgs","compareArrays","mode","count","vertexArray","every","v","isArray","RenderTexture","_callee5","_callee5$","_context5","WebGlCoreCtxRenderTexture","_this5","_callee6","_this5$textureSource","_callee6$","_context6","WORDS_PER_QUAD","WebGlCoreRenderer","quadBuffer","bufferMemory","txMemManager","defaultTexture","requestRender","defaultShader","loadShader","BYTES_PER_ELEMENT","quadBufferCollection","a_position","a_textureCoordinate","a_color","a_textureIndex","reset","curBufferIdx","curRenderOp","renderOps","getShaderManager","createCtxTexture","addQuad","_texture","_textureOptions$flipX","_textureOptions$flipY","fQuadBuffer","uiQuadBuffer","colorTl","colorTr","colorBl","colorBr","textureOptions","tx","ty","ta","tb","tc","td","rtt","targetDims","targetShader","reuseRenderOp","newRenderOp","flipX","flipY","texCoordX1","texCoordY1","texCoordX2","texCoordY2","_texture$props","tw","th","_ref2","_ref2$width","parentW","_ref2$height","parentH","_ref3","_ref4","getCtxTexture","textureIdx","rightCornerX","rightCornerY","recursive","_this$curRenderOp","addRenderOp","render","surface","_this$quadBufferColle","arr","rttNodes","unshift","renderRTTNodes","hasRTTupdates","activeRttNode","renderToTextureActive","children","child","update","deltaTime","addQuads","SpecialCodepoints","LINE_FEED","CARRIAGE_RETURN","SPACE","TAB","ZERO_WIDTH_SPACE","ZERO_WIDTH_NON_JOINER","ZERO_WIDTH_JOINER","LEFT_TO_RIGHT_MARK","RIGHT_TO_LEFT_MARK","LEFT_TO_RIGHT_EMBEDDING","RIGHT_TO_LEFT_EMBEDDING","POP_DIRECTIONAL_FORMATTING","LEFT_TO_RIGHT_OVERRIDE","RIGHT_TO_LEFT_OVERRIDE","LINE_SEPARATOR","PARAGRAPH_SEPARATOR","OBJECT_REPLACEMENT_CHARACTER","REPLACEMENT_CHARACTER","ZERO_WIDTH_NO_BREAK_SPACE","LEFT_TO_RIGHT_ISOLATE","RIGHT_TO_LEFT_ISOLATE","FIRST_STRONG_ISOLATE","POP_DIRECTIONAL_ISOLATE","INHIBIT_SYMMETRIC_SWAPPING","ACTIVATE_SYMMETRIC_SWAPPING","INHIBIT_ARABIC_FORM_SHAPING","ACTIVATE_ARABIC_FORM_SHAPING","NATIONAL_DIGIT_SHAPES","NOMINAL_DIGIT_SHAPES","LEFT_TO_RIGHT_BOUNDARY","RIGHT_TO_LEFT_BOUNDARY","FontShaper","SdfFontShaper","glyphMap","kernings","kerning","second","firsts","first","amount","shapeText","codepoints","_this6","_callee7","codepointResult","lastGlyphId","codepoint","glyph","_this6$kernings$glyph","_callee7$","_context7","peek","done","id","letterSpacing","mapped","glyphId","cluster","lastIndex","xAdvance","xadvance","yAdvance","xOffset","xoffset","yOffset","yoffset","xBearing","yBearing","SdfTrFontFace","atlasUrl","atlasDataUrl","_this7","this","preload","checkLoaded","fetch","_ref5","_callee8","response","maxCharHeight","_callee8$","_context8","json","chars","charHeight","shaper","_x","getAtlasEntry","loaded","CoreExtension"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkBgB,SAAAA,kBAAAA,CAAmBC,QAAQC,UAAY,EAAA;UACnD,IAAMC,MAAS,GAAA;YACXC,KAAO,EAAA,IAAA;YACPC,SAAW,EAAA,KAAA;YACXC,KAAO,EAAA,KAAA;YACPC,OAAS,EAAA,IAAA;YACTC,cAAgB,EAAA,KAAA;YAAA;YAAA;YAGhBC,eAAiB,EAAA,kBAAA;YACjBC,kBAAoB,EAAA,IAAA;YACpBC,qBAAuB,EAAA;UAAA,CAC3B;UACM,IAAAC,EAAA;UAAA;UAAA;UAGLX,MAAA,CAAOY,WAAW,OAAS,EAAAV,MAAM,KAC9BF,MAAO,CAAAY,UAAA,CAAW,sBAAsBV,MAAM,CAAA;UAClD,IAAI,CAACS,EAAI,EAAA;YACC,MAAA,IAAIE,MAAM,gCAAgC,CAAA;UACpD;UACA,IAAIZ,UAAY,EAAA;YAEL,OAAA,IAAIa,MAAMH,EAAI,EAAA;cACjBI,GAAAA,CAAIC,QAAQC,IAAM,EAAA;gBACR,IAAAC,KAAA,GAAQF,OAAOC,IAAI,CAAA;gBACrB,IAAA,OAAOC,UAAU,UAAY,EAAA;kBAClBjB,UAAA,CAAAkB,SAAA,CAAUC,MAAO,CAAAH,IAAI,CAAC,CAAA;kBAC1B,OAAAC,KAAA,CAAMG,KAAKL,MAAM,CAAA;gBAC5B;gBACO,OAAAE,KAAA;cACX;YAAA,CACH,CAAA;UACL;UACO,OAAAP,EAAA;QACX;QAagB,SAAAW,YAAAA,CAAaC,WAAWC,OAAS,EAAA;UAC7C,IAAIC,uBAAwB,CAAA,CAAA,EACxB;UACJ,IAAI,CAACF,SAAW,EAAA;YACN,MAAA,IAAIV,KAAM,CAAAW,OAAA,IAAW,kBAAkB,CAAA;UACjD;QACJ;QAcgB,SAAAE,kBAAAA,CAAmBC,KAAO,EAAAC,KAAA,EAAOC,CAAG,EAAA;UAChD,IAAMC,EAAK,GAAAC,IAAA,CAAKC,KAAM,CAAAL,KAAA,KAAU,EAAE,CAAA;UAClC,IAAMM,EAAK,GAAAF,IAAA,CAAKC,KAAO,CAAAL,KAAA,KAAU,KAAM,GAAI,CAAA;UAC3C,IAAMO,EAAK,GAAAH,IAAA,CAAKC,KAAO,CAAAL,KAAA,KAAU,IAAK,GAAI,CAAA;UAC1C,IAAMQ,EAAK,GAAAJ,IAAA,CAAKC,KAAM,CAAAL,KAAA,GAAQ,GAAI,CAAA;UAClC,IAAMS,EAAK,GAAAL,IAAA,CAAKC,KAAM,CAAAJ,KAAA,KAAU,EAAE,CAAA;UAClC,IAAMS,EAAK,GAAAN,IAAA,CAAKC,KAAO,CAAAJ,KAAA,KAAU,KAAM,GAAI,CAAA;UAC3C,IAAMU,EAAK,GAAAP,IAAA,CAAKC,KAAO,CAAAJ,KAAA,KAAU,IAAK,GAAI,CAAA;UAC1C,IAAMW,EAAK,GAAAR,IAAA,CAAKC,KAAM,CAAAJ,KAAA,GAAQ,GAAI,CAAA;UAClC,IAAMY,IAAIT,IAAK,CAAAU,KAAA,CAAML,KAAKP,CAAI,GAAAC,EAAA,IAAM,IAAID,CAAE,CAAA,CAAA;UAC1C,IAAMa,IAAIX,IAAK,CAAAU,KAAA,CAAMJ,KAAKR,CAAI,GAAAI,EAAA,IAAM,IAAIJ,CAAE,CAAA,CAAA;UAC1C,IAAMc,IAAIZ,IAAK,CAAAU,KAAA,CAAMH,KAAKT,CAAI,GAAAK,EAAA,IAAM,IAAIL,CAAE,CAAA,CAAA;UAC1C,IAAMe,IAAIb,IAAK,CAAAU,KAAA,CAAMF,KAAKV,CAAI,GAAAM,EAAA,IAAM,IAAIN,CAAE,CAAA,CAAA;UAC1C,OAAA,CAASW,KAAK,EAAO,GAAAE,CAAA,IAAK,EAAO,GAAAC,CAAA,IAAK,IAAKC,CAAO,MAAA,CAAA;QACtD;QAcgB,SAAAC,eAAAA,CAAgBC,MAAM3C,KAAO,EAAA;UACzC,IAAMqC,IAAIM,IAAS,KAAA,EAAA;UACb,IAAAJ,CAAA,GAAKI,SAAS,EAAM,GAAA,GAAA;UACpB,IAAAH,CAAA,GAAKG,SAAS,CAAK,GAAA,GAAA;UACzB,IAAMF,CAAI,GAAAb,IAAA,CAAKC,KAAO,CAAA,CAAAc,IAAA,GAAO,OAAQ3C,KAAK,CAAA;UAC1C,OAAA,CAASqC,KAAK,EAAO,GAAAE,CAAA,IAAK,EAAO,GAAAC,CAAA,IAAK,IAAKC,CAAO,MAAA,CAAA;QACtD;QAyBO,SAASG,4BAA6BA,CAAAD,IAAA,EAAM3C,KAAO,EAAA6C,aAAA,GAAgB,KAAO,EAAA;UACvE,IAAAC,QAAA,GAAA,CAAaH,IAAO,GAAA,GAAA,IAAQ,GAAO,GAAA3C,KAAA;UACzC,IAAMqC,CAAI,GAAAT,IAAA,CAAKC,KAAO,CAAA,CAAAc,IAAA,KAAS,MAAMG,QAAQ,CAAA;UAC7C,IAAMP,IAAIX,IAAK,CAAAC,KAAA,CAAA,CAAQc,IAAS,KAAA,EAAA,GAAM,OAAQG,QAAQ,CAAA;UACtD,IAAMN,IAAIZ,IAAK,CAAAC,KAAA,CAAA,CAAQc,IAAS,KAAA,CAAA,GAAK,OAAQG,QAAQ,CAAA;UACrD,IAAML,CAAI,GAAAb,IAAA,CAAKC,KAAM,CAAAiB,QAAA,GAAW,GAAG,CAAA;UACnC,IAAID,aAAe,EAAA;YACf,OAAA,CAASJ,KAAK,EAAO,GAAAD,CAAA,IAAK,EAAO,GAAAD,CAAA,IAAK,IAAKF,CAAO,MAAA,CAAA;UACtD;UACA,OAAA,CAASA,KAAK,EAAO,GAAAE,CAAA,IAAK,EAAO,GAAAC,CAAA,IAAK,IAAKC,CAAO,MAAA,CAAA;QACtD;QAQgB,SAAAM,MAAAA,CAAOC,KAAKlC,IAAM,EAAA;UAC9B,OAAOmC,MAAO,CAAAC,SAAA,CAAUC,cAAe,CAAAC,IAAA,CAAKJ,KAAKlC,IAAI,CAAA;QACzD;QAyBO,SAASQ,uBAA0BA,CAAA,EAAA;UACtC,OAAO;YAAmB,UAAA,EAAA,kBAAA;YAAA,MAAA,EAAA,YAAA;YAAA,KAAA,EAAA,KAAA;YAAA,MAAA,EAAA,IAAA;YAAA,KAAA,EAAA,KAAA;YAAA,QAAA;UAAA,CAAA,IAAA,IAAA;QAC9B;;QChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACA;AACA;AACA;QACO,MAAM+B,YAAY,CAAC;UAAAC,YAAA;YAAAC,eAAA,yBACL,CAAA,CAAE;UAAA;UACnBC,EAAEA,CAACC,KAAK,EAAEC,QAAQ,EAAE;YAChB,IAAIC,SAAS,GAAG,IAAI,CAACC,cAAc,CAACH,KAAK,CAAC;YAC1C,IAAI,CAACE,SAAS,EAAE;cACZA,SAAS,GAAG,EAAE;YACjB;YACDA,SAAS,CAACE,IAAI,CAACH,QAAQ,CAAC;YACxB,IAAI,CAACE,cAAc,CAACH,KAAK,CAAC,GAAGE,SAAS;UACzC;UACDG,GAAGA,CAACL,KAAK,EAAEC,QAAQ,EAAE;YACjB,IAAMC,SAAS,GAAG,IAAI,CAACC,cAAc,CAACH,KAAK,CAAC;YAC5C,IAAI,CAACE,SAAS,EAAE;cACZ;YACH;YACD,IAAI,CAACD,QAAQ,EAAE;cACX,OAAO,IAAI,CAACE,cAAc,CAACH,KAAK,CAAC;cACjC;YACH;YACD,IAAMM,KAAK,GAAGJ,SAAS,CAACK,OAAO,CAACN,QAAQ,CAAC;YACzC,IAAIK,KAAK,IAAI,CAAC,EAAE;cACZJ,SAAS,CAACM,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;YAC7B;UACJ;UACDG,IAAIA,CAACT,KAAK,EAAEC,QAAQ,EAAE;YAClB,IAAMS,YAAY,GAAGA,CAACtD,MAAM,EAAEuD,IAAI,KAAK;cACnC,IAAI,CAACN,GAAG,CAACL,KAAK,EAAEU,YAAY,CAAC;cAC7BT,QAAQ,CAAC7C,MAAM,EAAEuD,IAAI,CAAC;YAClC,CAAS;YACD,IAAI,CAACZ,EAAE,CAACC,KAAK,EAAEU,YAAY,CAAC;UAC/B;UACDE,IAAIA,CAACZ,KAAK,EAAEW,IAAI,EAAE;YACd,IAAMT,SAAS,GAAG,IAAI,CAACC,cAAc,CAACH,KAAK,CAAC;YAC5C,IAAI,CAACE,SAAS,EAAE;cACZ;YACH;YACD,CAAC,GAAGA,SAAS,CAAC,CAACW,OAAO,CAAEZ,QAAQ,IAAK;cACjCA,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;YAChC,CAAS,CAAC;UACL;UACDG,kBAAkBA,CAAA,EAAG;YACjB,IAAI,CAACX,cAAc,GAAG,EAAE;UAC3B;QACL;QAAAY,OAAA,CAAA,GAAA,EAAAnB,YAAA,CAAA;;QChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,MAAMoB,UAAU,CAAC;UACxB;UACI,OAAOC,YAAYA,CAACC,KAAK,EAAE;YACvB,OAAO,KAAK;UACf;UACD,OAAOC,eAAeA,CAACD,KAAK,EAAE;YAC1B,OAAO,EAAE;UACZ;QACL;;QC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACA;QACO,SAASE,YAAYA,CAACC,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAE;UAC5C,IAAMC,MAAM,GAAGH,GAAG,CAACD,YAAY,CAACE,IAAI,CAAC;UACrC,IAAI,CAACE,MAAM,EAAE;YACT,MAAM,IAAIvE,KAAK,CAAA,CAAE;UACpB;UACDoE,GAAG,CAACI,YAAY,CAACD,MAAM,EAAED,MAAM,CAAC;UAChCF,GAAG,CAACK,aAAa,CAACF,MAAM,CAAC;UACzB,IAAMG,OAAO,GAAGN,GAAG,CAACO,kBAAkB,CAACJ,MAAM,EAAEH,GAAG,CAACQ,cAAc,CAAC;UAClE,IAAIF,OAAO,EAAE;YACT,OAAOH,MAAM;UAChB;UACDM,OAAO,CAACC,GAAG,CAACV,GAAG,CAACW,gBAAgB,CAACR,MAAM,CAAC,CAAC;UACzCH,GAAG,CAACY,YAAY,CAACT,MAAM,CAAC;QAC5B;QACO,SAASU,aAAaA,CAACb,GAAG,EAAEc,YAAY,EAAEC,cAAc,EAAE;UAC7D,IAAMC,OAAO,GAAGhB,GAAG,CAACa,aAAa,EAAE;UACnC,IAAI,CAACG,OAAO,EAAE;YACV,MAAM,IAAIpF,KAAK,CAAA,CAAE;UACpB;UACDoE,GAAG,CAACiB,YAAY,CAACD,OAAO,EAAEF,YAAY,CAAC;UACvCd,GAAG,CAACiB,YAAY,CAACD,OAAO,EAAED,cAAc,CAAC;UACzCf,GAAG,CAACkB,WAAW,CAACF,OAAO,CAAC;UACxB,IAAMV,OAAO,GAAGN,GAAG,CAACmB,mBAAmB,CAACH,OAAO,EAAEhB,GAAG,CAACoB,WAAW,CAAC;UACjE,IAAId,OAAO,EAAE;YACT,OAAOU,OAAO;UACjB;UACDP,OAAO,CAACC,GAAG,CAACV,GAAG,CAACqB,iBAAiB,CAACL,OAAO,CAAC,CAAC;UAC3ChB,GAAG,CAACsB,aAAa,CAACN,OAAO,CAAC;UAC1B,OAAOO,SAAS;QACpB;;QChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,SAASC,QAAQA,CAAC9F,EAAE,EAAE;UACzB,OAAQ+F,IAAI,CAACC,sBAAsB,IAAIhG,EAAE,YAAY+F,IAAI,CAACC,sBAAsB;QACpF;;QC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAKO,MAAMC,eAAe,SAAShC,UAAU,CAAC;UAmB5CnB,WAAWA,CAACoD,OAAO,EAAE;YACjB,KAAK,EAAE;YAACnD,eAAA,gCAnBY,IAAI;YAAAA,eAAA,uBACb,KAAK;YAAAA,eAAA;YAExB;AACA;AACA;AACA;AACA;AACA;YALAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAiBQ,IAAMoD,QAAQ,GAAI,IAAI,CAACA,QAAQ,GAAGD,OAAO,CAACC,QAAS;YACnD,IAAM7B,GAAG,GAAI,IAAI,CAACA,GAAG,GAAG,IAAI,CAAC6B,QAAQ,CAAC7B,GAAI;YAC1C,IAAI,CAAC8B,uBAAuB,GAAGF,OAAO,CAACE,uBAAuB,IAAI,KAAK;YAC/E;YACQ,IAAMC,MAAM,GAAG/B,GAAG,CAACwB,QAAQ,EAAE;YAC7B,IAAMQ,kBAAkB,GAAID,MAAM,IAAIH,OAAO,CAACK,gBAAgB,IACzD,CAACF,MAAM,IAAIH,OAAO,CAACM,gBAAiB,IACrC,EAAE;YACN,IAAMC,SAAS,GAAGJ,MAAM,GAAG,KAAK,GAAG,KAAK;YACxCC,kBAAkB,CAACxC,OAAO,CAAE4C,aAAa,IAAK;cAC1C,IAAI,CAACpC,GAAG,CAACqC,YAAY,CAACD,aAAa,CAAC,EAAE;gBAClC,MAAM,IAAIxG,KAAK,CAAE,WAAU,IAAI,CAAC4C,WAAW,CAAC8D,IAAK,yBAAwBF,aAAc,eAAcD,SAAU,mBAAkB,CAAC;cACrI;YACb,CAAS,CAAC;YACV;YACA;YACA;YACA;YACA;YACQ,IAAMI,aAAa,GAAGX,OAAO,CAACW,aAAa,IACvC,IAAI,CAAC/D,WAAW,CAAC+D,aAAa;YAClC,IAAI,CAACA,aAAa,EAAE;cAChB,MAAM,IAAI3G,KAAK,CAAE,WAAU,IAAI,CAAC4C,WAAW,CAAC8D,IAAK,6BAA4B,CAAC;YACjF,CAAA,MACI,IAAIP,MAAM,IAAIQ,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAER,MAAM,EAAE;cACtCQ,aAAa,CAACC,QAAQ,GAAGD,aAAa,CAACR,MAAM,CAACS,QAAQ;cACtDD,aAAa,CAACE,MAAM,GAAGF,aAAa,CAACR,MAAM,CAACU,MAAM;cAClD,OAAOF,aAAa,CAACR,MAAM;YAC9B;YACD,IAAMW,YAAY,GAAGb,QAAQ,CAACc,MAAM,CAACC,UAAU,CAACC,8BAA8B;YAC9E,IAAMC,YAAY,GAAGP,aAAa,CAACE,MAAM,YAAYM,QAAQ,GACvDR,aAAa,CAACE,MAAM,CAACC,YAAY,CAAC,GAClCH,aAAa,CAACE,MAAM;YAC1B,IAAMO,cAAc,GAAGT,aAAa,CAACC,QAAQ,YAAYO,QAAQ,GAC3DR,aAAa,CAACC,QAAQ,CAACE,YAAY,CAAC,GACpCH,aAAa,CAACC,QAAQ;YAC5B,IAAM1B,YAAY,GAAGf,YAAY,CAACC,GAAG,EAAEA,GAAG,CAACiD,aAAa,EAAEH,YAAY,CAAC;YACvE,IAAM/B,cAAc,GAAGhB,YAAY,CAACC,GAAG,EAAEA,GAAG,CAACkD,eAAe,EAAEF,cAAc,CAAC;YAC7E,IAAI,CAAClC,YAAY,IAAI,CAACC,cAAc,EAAE;cAClC,MAAM,IAAInF,KAAK,CAAA,CAAE;YACpB;YACD,IAAMoF,OAAO,GAAGH,aAAa,CAACb,GAAG,EAAEc,YAAY,EAAEC,cAAc,CAAC;YAChE,IAAI,CAACC,OAAO,EAAE;cACV,MAAM,IAAIpF,KAAK,CAAA,CAAE;YACpB;YACD,IAAI,CAACoF,OAAO,GAAGA,OAAO;YACtB,IAAIe,MAAM,EAAE;cACR,IAAMoB,GAAG,GAAGnD,GAAG,CAACoD,iBAAiB,EAAE;cACnC,IAAI,CAACD,GAAG,EAAE;gBACN,MAAM,IAAIvH,KAAK,CAAA,CAAE;cACpB;cACD,IAAI,CAACuH,GAAG,GAAGA,GAAG;cACdnD,GAAG,CAACqD,eAAe,CAAC,IAAI,CAACF,GAAG,CAAC;YAChC;YACD,IAAI,CAACG,kBAAkB,GAAG,EAAE;YAC5B,IAAI,CAACC,gBAAgB,GAAG,EAAE;YAC1B,IAAI,CAACC,cAAc,GAAG,EAAE;YACxB,CAAC,GAAG5B,OAAO,CAAC6B,UAAU,CAAC,CAACjE,OAAO,CAAEkE,aAAa,IAAK;cAC/C,IAAMC,QAAQ,GAAG3D,GAAG,CAAC4D,iBAAiB,CAAC,IAAI,CAAC5C,OAAO,EAAE0C,aAAa,CAAC;cACnE,IAAIC,QAAQ,GAAG,CAAC,EAAE;gBACd,MAAM,IAAI/H,KAAK,CAAE,GAAE,IAAI,CAAC4C,WAAW,CAAC8D,IAAK,2CAA0CoB,aAAc,IAAG,CAAC;cACxG;cACD,IAAMG,MAAM,GAAG7D,GAAG,CAAC8D,YAAY,EAAE;cACjC,IAAI,CAACD,MAAM,EAAE;gBACT,MAAM,IAAIjI,KAAK,CAAE,GAAE,IAAI,CAAC4C,WAAW,CAAC8D,IAAK,4CAA2CoB,aAAc,GAAE,CAAC;cACxG;cACD,IAAI,CAACJ,kBAAkB,CAACI,aAAa,CAAC,GAAGC,QAAQ;cACjD,IAAI,CAACJ,gBAAgB,CAACG,aAAa,CAAC,GAAGG,MAAM;cAC7C,IAAI,CAACL,cAAc,CAACzE,IAAI,CAAC2E,aAAa,CAAC;YACnD,CAAS,CAAC;YACF,IAAI,CAACK,gBAAgB,GAAG,EAAE;YAC1B,IAAI,CAACC,YAAY,GAAG,EAAE;YACtBpC,OAAO,CAACqC,QAAQ,CAACzE,OAAO,CAAE0E,OAAO,IAAK;cAClC,IAAMP,QAAQ,GAAG3D,GAAG,CAACmE,kBAAkB,CAAC,IAAI,CAACnD,OAAO,EAAEkD,OAAO,CAAC5B,IAAI,CAAC;cACnE,IAAI,CAAC0B,YAAY,CAACE,OAAO,CAAC5B,IAAI,CAAC,GAAG4B,OAAO,CAACA,OAAO;cACjD,IAAI,CAACP,QAAQ,EAAE;gBACXlD,OAAO,CAAC2D,IAAI,CAAE,WAAU,IAAI,CAAC5F,WAAW,CAAC8D,IAAK,yCAAwC4B,OAAO,CAAC5B,IAAK,GAAE,CAAC;gBACtG;cACH;cACD,IAAI,CAACyB,gBAAgB,CAACG,OAAO,CAAC5B,IAAI,CAAC,GAAGqB,QAAQ;YAC1D,CAAS,CAAC;UACL;UACDU,mBAAmBA,CAACV,QAAQ,EAAEE,MAAM,EAAES,SAAS,EAAE;YAC7C,IAAQtE,GAAG,GAAK,IAAI,CAAZA,GAAG;YACXA,GAAG,CAACuE,uBAAuB,CAACZ,QAAQ,CAAC;YACrC3D,GAAG,CAACwE,mBAAmB,CAACX,MAAM,EAAEF,QAAQ,EAAEW,SAAS,CAACG,IAAI,EAAEH,SAAS,CAACrE,IAAI,EAAEqE,SAAS,CAACI,UAAU,EAAEJ,SAAS,CAACK,MAAM,EAAEL,SAAS,CAACM,MAAM,CAAC;UACtI;UACDC,gBAAgBA,CAAClB,QAAQ,EAAE;YACvB,IAAI,CAAC3D,GAAG,CAAC8E,wBAAwB,CAACnB,QAAQ,CAAC;UAC9C;UACDoB,iBAAiBA,CAAA,EAAG;YAChB,KAAK,IAAMC,GAAG,IAAI,IAAI,CAAC1B,kBAAkB,EAAE;cACvC,IAAI,CAACuB,gBAAgB,CAAC,IAAI,CAACvB,kBAAkB,CAAC0B,GAAG,CAAC,CAAC;YACtD;YACD,IAAI,CAACC,qBAAqB,GAAG,IAAI;UACpC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIC,mBAAmBA,CAACC,MAAM,EAAEC,MAAM,EAAE;YAChC,OAAO,KAAK;UACf;UACDC,YAAYA,CAACC,QAAQ,EAAEzF,KAAK,EAAE;YAC1B,IAAI,CAAC0F,oBAAoB,CAACD,QAAQ,CAACE,OAAO,CAAC;YAC3C,IAAIF,QAAQ,CAACG,QAAQ,CAACC,MAAM,GAAG,CAAC,EAAE;cAC9B,IAAI,CAACC,YAAY,CAACL,QAAQ,CAACG,QAAQ,CAAC;YACvC;YACD,IAAQzF,GAAG,GAA8CsF,QAAQ,CAAzDtF,GAAG;cAAE4F,sBAAsB,GAAsBN,QAAQ,CAApDM,sBAAsB;cAAEC,eAAe,GAAKP,QAAQ,CAA5BO,eAAe;YAC5D;YACQ,IAAIA,eAAe,IAAID,sBAAsB,EAAE;cAC3C;YACH;YACT;YACA;YACQ,IAAIA,sBAAsB,EAAE;cACxB,IAAAE,IAAA,GAA0BR,QAAQ,CAACS,qBAAqB,IAAI,CAAA,CAAE;gBAAtDC,KAAK,GAAAF,IAAA,CAALE,KAAK;gBAAEC,MAAM,GAAAH,IAAA,CAANG,MAAM;cACjC;cACA;cACY,IAAI,CAACC,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC;cAChD;cACY,IAAI,CAACA,UAAU,CAAC,cAAc,EAAE,IAAIC,YAAY,CAAC,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,EAAEC,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,CAAC,CAAC,CAAC,CAAC;YAC/E,CAAA,MACI;cACD,IAAI,CAACC,UAAU,CAAC,cAAc,EAAEZ,QAAQ,CAAC1D,OAAO,CAACwE,UAAU,CAAC;cAC5D,IAAI,CAACF,UAAU,CAAC,cAAc,EAAE,IAAIC,YAAY,CAAC,CAACnG,GAAG,CAACjF,MAAM,CAACiL,KAAK,EAAEhG,GAAG,CAACjF,MAAM,CAACkL,MAAM,CAAC,CAAC,CAAC;YAC3F;YACD,IAAIpG,KAAK,EAAE;cACnB;cACA;cACY,IAAI5B,MAAM,CAAC4B,KAAK,EAAE,aAAa,CAAC,EAAE;gBAC9B,IAAIwG,UAAU,GAAGxG,KAAK,CAACyG,WAAW;gBAClC,IAAI,CAACD,UAAU,EAAE;kBACbA,UAAU,GAAGf,QAAQ,CAACe,UAAU;gBACnC;gBACD,IAAI,CAACH,UAAU,CAAC,cAAc,EAAE,CAACG,UAAU,CAACL,KAAK,EAAEK,UAAU,CAACJ,MAAM,CAAC,CAAC;cACzE;cACD,IAAIhI,MAAM,CAAC4B,KAAK,EAAE,QAAQ,CAAC,EAAE;gBACzB,IAAI3E,KAAK,GAAG2E,KAAK,CAAC0G,MAAM;gBACxB,IAAI,CAACrL,KAAK,EAAE;kBACRA,KAAK,GAAGoK,QAAQ,CAACpK,KAAK;gBACzB;gBACD,IAAI,CAACgL,UAAU,CAAC,SAAS,EAAEhL,KAAK,CAAC;cACpC;cACD,IAAI,CAACsL,SAAS,CAAC3G,KAAK,CAAC;YACxB;UACJ;UACDqG,UAAUA,CAAC5D,IAAI,EAAE,GAAGrG,KAAK,EAAE;YAC/B;YACQ,IAAI,CAAC+D,GAAG,CAACkG,UAAU,CAAC,IAAI,CAAClC,YAAY,CAAC1B,IAAI,CAAC,EAAE,IAAI,CAACyB,gBAAgB,CAACzB,IAAI,CAAC,EAAE,GAAGrG,KAAK,CAAC;UACtF;UACDsJ,oBAAoBA,CAAC1B,MAAM,EAAE;YACzB,IAAI,IAAI,CAACoB,qBAAqB,KAAKpB,MAAM,EAAE;cACvC;YACH;YACD,KAAK,IAAMH,aAAa,IAAI,IAAI,CAACJ,kBAAkB,EAAE;cACjD,IAAMmD,cAAc,GAAG5C,MAAM,CAAC6C,SAAS,CAAChD,aAAa,CAAC;cACtD,IAAMiD,YAAY,GAAG9C,MAAM,CAAC+C,gBAAgB,CAAClD,aAAa,CAAC;cAC3DrH,YAAY,CAACoK,cAAc,EAAG,eAAc/C,aAAc,aAAY,CAAC;cACvErH,YAAY,CAACsK,YAAY,CAAC;cAC1B,IAAI,CAACtC,mBAAmB,CAAC,IAAI,CAACf,kBAAkB,CAACI,aAAa,CAAC,EAAE+C,cAAc,EAAEE,YAAY,CAAC;YACjG;YACD,IAAI,CAAC1B,qBAAqB,GAAGpB,MAAM;UACtC;UACD2C,SAASA,CAAC3G,KAAK,EAAE;YACrB;UAAA;UAEI8F,YAAYA,CAACF,QAAQ,EAAE;YAC3B;UAAA;UAEIoB,MAAMA,CAAA,EAAG;YACL,IAAI,CAAC7G,GAAG,CAAC8G,UAAU,CAAC,IAAI,CAAC9F,OAAO,CAAC;YACjC,IAAI,CAAChB,GAAG,CAAC8G,UAAU,CAAC,IAAI,CAAC9F,OAAO,CAAC;YACjC,IAAI,IAAI,CAAChB,GAAG,CAACwB,QAAQ,CAAA,CAAE,IAAI,IAAI,CAAC2B,GAAG,EAAE;cACjC,IAAI,CAACnD,GAAG,CAACqD,eAAe,CAAC,IAAI,CAACF,GAAG,CAAC;YACrC;UACJ;UACD4D,MAAMA,CAAA,EAAG;YACL,IAAI,CAAChC,iBAAiB,CAAA,CAAE;UAC3B;QAEL;QAAAtG,eAAA,CArNakD,eAAe;QAqN5BjC,OAAA,CAAA,GAAA,EAAAiC,eAAA,CAAA;;QC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,MAAMqF,OAAO,SAASzI,YAAY,CAAC;UAatCC,WAAWA,CAACyI,SAAS,EAAE;YACnB,KAAK,EAAE;YAACxI,eAAA;YAZhB;AACA;AACA;AACA;AACA;AACA;AACA;YANAA,eAAA,qBAOiB,IAAI;YAAAA,eAAA,gBACT,IAAI;YAAAA,eAAA,gBACJ,OAAO;YAAAA,eAAA,2BACI,IAAIyI,GAAG,EAAE;YAGxB,IAAI,CAACD,SAAS,GAAGA,SAAS;UAC7B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIE,kBAAkBA,CAACC,KAAK,EAAEC,UAAU,EAAE;YAClC,IAAIA,UAAU,EAAE;cACZ,IAAI,CAACC,gBAAgB,CAACC,GAAG,CAACH,KAAK,CAAC;YACnC,CAAA,MACI;cACD,IAAI,CAACE,gBAAgB,CAACE,MAAM,CAACJ,KAAK,CAAC;YACtC;UACJ;UACL;AACA;AACA;UACI,IAAIC,UAAUA,CAAA,EAAG;YACb,OAAO,IAAI,CAACC,gBAAgB,CAAC7C,IAAI,GAAG,CAAC;UACxC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIgD,QAAQA,CAACC,KAAK,EAAE,GAAGC,IAAI,EAAE;YACrB,IAAI,IAAI,CAACD,KAAK,KAAKA,KAAK,EAAE;cAClC;cACY,IAAI,CAACA,KAAK,GAAGA,KAAK;cAClB,IAAIA,KAAK,KAAK,QAAQ,EAAE;gBACpB,IAAME,UAAU,GAAGD,IAAI;gBACvB,IAAI,CAACtB,UAAU,GAAGuB,UAAU,CAAC,CAAC,CAAC;cAClC,CAAA,MACI,IAAIF,KAAK,KAAK,QAAQ,EAAE;gBACzB,IAAMG,UAAU,GAAGF,IAAI;gBACvB,IAAI,CAACG,KAAK,GAAGD,UAAU,CAAC,CAAC,CAAC;cAC7B;cACD,IAAI,CAACtI,IAAI,CAACmI,KAAK,EAAE,GAAGC,IAAI,CAAC;YAC5B;UACJ;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACA;UACI,OAAO/H,YAAYA,CAACC,KAAK,EAAE;YACvB,OAAO,KAAK;UACf;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACI,OAAOC,eAAeA;UAC1B;UACID,KAAK,EAAE;YACH,OAAO,EAAE;UACZ;QACL;QAAAH,OAAA,CAAA,GAAA,EAAAsH,OAAA,CAAA;;QCpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACY,IAACe,2BAA2B,GAAArI,OAAA,CAAA,GAAA,EAAI7B,IAAI,IAAK;UACjD,IAAMN,CAAC,GAAGM,IAAI,KAAK,EAAE;UACrB,IAAMJ,CAAC,GAAII,IAAI,KAAK,EAAE,GAAI,IAAI;UAC9B,IAAMH,CAAC,GAAIG,IAAI,KAAK,CAAC,GAAI,IAAI;UAC7B,IAAMF,CAAC,GAAGE,IAAI,GAAG,IAAI;UACrB,OAAO,CAACN,CAAC,GAAG,GAAG,EAAEE,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,CAAC;QAC/C,CAAE,CAAA;QA2BK,SAASqK,2BAA2BA,CAACnK,IAAI,EAAE;UAC9C,OAAO,CAACA,IAAI,GAAG,IAAI,IAAI,KAAK;QAChC;QACA;AACA;AACA;AACA;AACA;AACA;QACO,SAASoK,aAAaA,CAACC,KAAK,EAAE;UACjC,IAAM3K,CAAC,GAAGT,IAAI,CAACqL,KAAK,CAACD,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;UACtC,IAAMzK,CAAC,GAAGX,IAAI,CAACqL,KAAK,CAACD,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;UACtC,IAAMxK,CAAC,GAAGZ,IAAI,CAACqL,KAAK,CAACD,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;UACtC,IAAMvK,CAAC,GAAGb,IAAI,CAACqL,KAAK,CAACD,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;UACtC,OAAQ,QAAO3K,CAAE,IAAGE,CAAE,IAAGC,CAAE,IAAGC,CAAC,CAACyK,OAAO,CAAC,CAAC,CAAE,GAAE;QACjD;QACO,SAASC,WAAWA,CAACC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAG,EAAE;UAC7C,IAAIA,GAAG,EAAE;YACLA,GAAG,CAACJ,EAAE,GAAGA,EAAE;YACXI,GAAG,CAACH,EAAE,GAAGA,EAAE;YACXG,GAAG,CAACF,EAAE,GAAGA,EAAE;YACXE,GAAG,CAACD,EAAE,GAAGA,EAAE;YACX,OAAOC,GAAG;UACb;UACD,OAAO;YACHJ,EAAE;YACFC,EAAE;YACFC,EAAE;YACFC;UACR,CAAK;QACL;QACO,SAASE,cAAcA,CAAChL,CAAC,EAAED,CAAC,EAAEgL,GAAG,EAAE;UACtC,IAAME,YAAY,GAAGP,WAAW,CAACvL,IAAI,CAAC+L,GAAG,CAAClL,CAAC,CAAC2K,EAAE,EAAE5K,CAAC,CAAC4K,EAAE,CAAC,EAAExL,IAAI,CAAC+L,GAAG,CAAClL,CAAC,CAAC4K,EAAE,EAAE7K,CAAC,CAAC6K,EAAE,CAAC,EAAEzL,IAAI,CAACgM,GAAG,CAACnL,CAAC,CAAC6K,EAAE,EAAE9K,CAAC,CAAC8K,EAAE,CAAC,EAAE1L,IAAI,CAACgM,GAAG,CAACnL,CAAC,CAAC8K,EAAE,EAAE/K,CAAC,CAAC+K,EAAE,CAAC,EAAEC,GAAG,CAAC;UAC7H,IAAIE,YAAY,CAACN,EAAE,GAAGM,YAAY,CAACJ,EAAE,IAAII,YAAY,CAACL,EAAE,GAAGK,YAAY,CAACH,EAAE,EAAE;YACxE,OAAOG,YAAY;UACtB;UACD,OAAOP,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEO,YAAY,CAAC;QAChD;QACO,SAASG,aAAaA,CAACpL,CAAC,EAAED,CAAC,EAAE;UAChC,OAAOC,CAAC,CAAC2K,EAAE,GAAG5K,CAAC,CAAC8K,EAAE,IAAI7K,CAAC,CAAC6K,EAAE,GAAG9K,CAAC,CAAC4K,EAAE,IAAI3K,CAAC,CAAC4K,EAAE,GAAG7K,CAAC,CAAC+K,EAAE,IAAI9K,CAAC,CAAC8K,EAAE,GAAG/K,CAAC,CAAC6K,EAAE;QACnE;QACO,SAASS,kBAAkBA,CAACC,KAAK,EAAEP,GAAG,EAAE;UAC3C,IAAIA,GAAG,EAAE;YACLA,GAAG,CAACQ,CAAC,GAAGD,KAAK,CAACX,EAAE;YAChBI,GAAG,CAACS,CAAC,GAAGF,KAAK,CAACV,EAAE;YAChBG,GAAG,CAAC1C,KAAK,GAAGiD,KAAK,CAACT,EAAE,GAAGS,KAAK,CAACX,EAAE;YAC/BI,GAAG,CAACzC,MAAM,GAAGgD,KAAK,CAACR,EAAE,GAAGQ,KAAK,CAACV,EAAE;YAChC,OAAOG,GAAG;UACb;UACD,OAAO;YACHQ,CAAC,EAAED,KAAK,CAACX,EAAE;YACXa,CAAC,EAAEF,KAAK,CAACV,EAAE;YACXvC,KAAK,EAAEiD,KAAK,CAACT,EAAE,GAAGS,KAAK,CAACX,EAAE;YAC1BrC,MAAM,EAAEgD,KAAK,CAACR,EAAE,GAAGQ,KAAK,CAACV;UACjC,CAAK;QACL;QACO,SAASa,aAAaA,CAACzL,CAAC,EAAED,CAAC,EAAEgL,GAAG,EAAE;UACrC,IAAMQ,CAAC,GAAGpM,IAAI,CAAC+L,GAAG,CAAClL,CAAC,CAACuL,CAAC,EAAExL,CAAC,CAACwL,CAAC,CAAC;UAC5B,IAAMC,CAAC,GAAGrM,IAAI,CAAC+L,GAAG,CAAClL,CAAC,CAACwL,CAAC,EAAEzL,CAAC,CAACyL,CAAC,CAAC;UAC5B,IAAMnD,KAAK,GAAGlJ,IAAI,CAACgM,GAAG,CAACnL,CAAC,CAACuL,CAAC,GAAGvL,CAAC,CAACqI,KAAK,EAAEtI,CAAC,CAACwL,CAAC,GAAGxL,CAAC,CAACsI,KAAK,CAAC,GAAGkD,CAAC;UACxD,IAAMjD,MAAM,GAAGnJ,IAAI,CAACgM,GAAG,CAACnL,CAAC,CAACwL,CAAC,GAAGxL,CAAC,CAACsI,MAAM,EAAEvI,CAAC,CAACyL,CAAC,GAAGzL,CAAC,CAACuI,MAAM,CAAC,GAAGkD,CAAC;UAC3D,IAAInD,KAAK,GAAG,CAAC,IAAIC,MAAM,GAAG,CAAC,EAAE;YACzB,IAAIyC,GAAG,EAAE;cACLA,GAAG,CAACQ,CAAC,GAAGA,CAAC;cACTR,GAAG,CAACS,CAAC,GAAGA,CAAC;cACTT,GAAG,CAAC1C,KAAK,GAAGA,KAAK;cACjB0C,GAAG,CAACzC,MAAM,GAAGA,MAAM;cACnB,OAAOyC,GAAG;YACb;YACD,OAAO;cACHQ,CAAC;cACDC,CAAC;cACDnD,KAAK;cACLC;YACZ,CAAS;UACJ;UACD,IAAIyC,GAAG,EAAE;YACLA,GAAG,CAACQ,CAAC,GAAG,CAAC;YACTR,GAAG,CAACS,CAAC,GAAG,CAAC;YACTT,GAAG,CAAC1C,KAAK,GAAG,CAAC;YACb0C,GAAG,CAACzC,MAAM,GAAG,CAAC;YACd,OAAOyC,GAAG;UACb;UACD,OAAO;YACHQ,CAAC,EAAE,CAAC;YACJC,CAAC,EAAE,CAAC;YACJnD,KAAK,EAAE,CAAC;YACRC,MAAM,EAAE;UAChB,CAAK;QACL;QACO,SAASoD,QAAQA,CAAC1L,CAAC,EAAE+K,GAAG,EAAE;UAC7B,IAAIA,GAAG,EAAE;YACLA,GAAG,CAACQ,CAAC,GAAGvL,CAAC,CAACuL,CAAC;YACXR,GAAG,CAACS,CAAC,GAAGxL,CAAC,CAACwL,CAAC;YACXT,GAAG,CAAC1C,KAAK,GAAGrI,CAAC,CAACqI,KAAK;YACnB0C,GAAG,CAACzC,MAAM,GAAGtI,CAAC,CAACsI,MAAM;YACrB,OAAOyC,GAAG;UACb;UACD,OAAO;YACHQ,CAAC,EAAEvL,CAAC,CAACuL,CAAC;YACNC,CAAC,EAAExL,CAAC,CAACwL,CAAC;YACNnD,KAAK,EAAErI,CAAC,CAACqI,KAAK;YACdC,MAAM,EAAEtI,CAAC,CAACsI;UAClB,CAAK;QACL;QACO,SAASqD,WAAWA,CAAC3L,CAAC,EAAED,CAAC,EAAE;UAC9B,IAAIC,CAAC,KAAKD,CAAC,EAAE;YACT,OAAO,IAAI;UACd;UACD,IAAIC,CAAC,KAAK,IAAI,IAAID,CAAC,KAAK,IAAI,EAAE;YAC1B,OAAO,KAAK;UACf;UACD,OAAQC,CAAC,CAACuL,CAAC,KAAKxL,CAAC,CAACwL,CAAC,IAAIvL,CAAC,CAACwL,CAAC,KAAKzL,CAAC,CAACyL,CAAC,IAAIxL,CAAC,CAACqI,KAAK,KAAKtI,CAAC,CAACsI,KAAK,IAAIrI,CAAC,CAACsI,MAAM,KAAKvI,CAAC,CAACuI,MAAM;QACtF;QACO,SAASsD,gBAAgBA,CAACC,MAAM,EAAEC,MAAM,EAAE;UAC7C,OAAQD,MAAM,CAAClB,EAAE,IAAImB,MAAM,CAACjB,EAAE,IAC1BgB,MAAM,CAACjB,EAAE,IAAIkB,MAAM,CAAChB,EAAE,IACtBe,MAAM,CAAChB,EAAE,IAAIiB,MAAM,CAACnB,EAAE,IACtBkB,MAAM,CAACf,EAAE,IAAIgB,MAAM,CAAClB,EAAE;QAC9B;QACO,SAASmB,eAAeA,CAACT,KAAK,EAAE;UACnC,OAAOA,KAAK,CAACX,EAAE,GAAGW,KAAK,CAACT,EAAE,IAAIS,KAAK,CAACV,EAAE,GAAGU,KAAK,CAACR,EAAE;QACrD;;QC7KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAEO,MAAMkB,UAAU,SAASpL,YAAY,CAAC;UAIzCC,WAAWA,CAACoL,UAAU,EAAEC,WAAW,EAAE;YACjC,KAAK,EAAE;YAACpL,eAAA;YAAAA,eAAA;YAAAA,eAAA,iBAFH,KAAK;YAGV,IAAI,CAACmL,UAAU,GAAGA,UAAU;YAC5B,IAAI,CAACC,WAAW,GAAAC,aAAA;cACZC,KAAK,EAAE,QAAQ;cACfC,MAAM,EAAE,QAAQ;cAChBC,OAAO,EAAE;YAAQ,GACdJ,WAAW,CACjB;UACJ;UACL;AACA;AACA;AACA;AACA;AACA;UACI,OAAOK,+BAA+BA,CAACL,WAAW,EAAE;YAChD,OAAO;cACHE,KAAK,EAAEF,WAAW,CAACE,KAAK;cACxBC,MAAM,EAAE,OAAOH,WAAW,CAACG,MAAM,KAAK,QAAQ,GACvC,GAAEH,WAAW,CAACG,MAAO,EAAC,GACvBH,WAAW,CAACG,MAAM;cACxBC,OAAO,EAAEJ,WAAW,CAACI,OAAO;cAC5BE,YAAY,EAAEN,WAAW,CAACM,YAAY;cACtCC,OAAO,EAAEP,WAAW,CAACO,OAAO;cAC5BC,eAAe,EAAER,WAAW,CAACQ,eAAe;cAC5CC,OAAO,EAAET,WAAW,CAACS;YACjC,CAAS;UACJ;QACL;QAAA5K,OAAA,CAAA,GAAA,EAAAiK,UAAA,CAAA;;QCpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,MAAMY,kBAAkB,CAAC;UAG5B/L,WAAWA,CAACgM,UAAU,EAAEC,aAAa,EAAE;YAAAhM,eAAA;YAAAA,eAAA;YACnC,IAAI,CAAC+L,UAAU,GAAGA,UAAU;YAC5B,IAAI,CAACC,aAAa,GAAGA,aAAa;UACrC;QACL;;QCzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAEO,MAAMC,YAAY,CAAC;UAEtBlM,WAAWA,CAACmM,KAAK,EAAE;YAAAlM,eAAA;YACf,IAAI,CAACkM,KAAK,GAAGA,KAAK;UACrB;QACL;;QCxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,MAAMC,YAAY,CAAC;;QClB1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAIA;AACA;AACA;AACA;QACO,MAAMC,iBAAiB,SAASD,YAAY,CAAC;UAkBhDpM,WAAWA,CAACwB,GAAG,EAAE4B,OAAO,EAAE4D,OAAO,EAAErF,MAAM,EAAE2K,WAAW,EAAE5P,KAAK,EAAE6P,YAAY,EAAE1E,UAAU,EAAE2E,SAAS,EAAEC,MAAM,EAAEpF,eAAe,EAAED,sBAAsB,EAAEG,qBAAqB,EAAE;YACxK,KAAK,EAAE;YAACtH,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA,iBALH,CAAC;YAAAA,eAAA,mBACC,CAAC;YAAAA,eAAA,mBACD,EAAE;YAAAA,eAAA;YAIT,IAAI,CAACuB,GAAG,GAAGA,GAAG;YACd,IAAI,CAAC4B,OAAO,GAAGA,OAAO;YACtB,IAAI,CAAC4D,OAAO,GAAGA,OAAO;YACtB,IAAI,CAACrF,MAAM,GAAGA,MAAM;YACpB,IAAI,CAAC2K,WAAW,GAAGA,WAAW;YAC9B,IAAI,CAAC5P,KAAK,GAAGA,KAAK;YAClB,IAAI,CAAC6P,YAAY,GAAGA,YAAY;YAChC,IAAI,CAAC1E,UAAU,GAAGA,UAAU;YAC5B,IAAI,CAAC2E,SAAS,GAAGA,SAAS;YAC1B,IAAI,CAACC,MAAM,GAAGA,MAAM;YACpB,IAAI,CAACpF,eAAe,GAAGA,eAAe;YACtC,IAAI,CAACD,sBAAsB,GAAGA,sBAAsB;YACpD,IAAI,CAACG,qBAAqB,GAAGA,qBAAqB;YAClD,IAAI,CAACmF,WAAW,GAAG/K,MAAM,CAAC2B,uBAAuB,GAC3C9B,GAAG,CAACmL,YAAY,CAACnL,GAAG,CAAC6C,8BAA8B,CAAC,GACpD,CAAC;UACV;UACDuI,UAAUA,CAACC,OAAO,EAAE;YAChB,IAAQ5F,QAAQ,GAAkB,IAAI,CAA9BA,QAAQ;cAAEyF,WAAW,GAAK,IAAI,CAApBA,WAAW;YAC7B,IAAMI,WAAW,GAAG7F,QAAQ,CAAC8F,SAAS,CAAEC,CAAC,IAAKA,CAAC,KAAKH,OAAO,CAAC;YAC5D,IAAIC,WAAW,KAAK,CAAC,CAAC,EAAE;cACpB,OAAOA,WAAW;YACrB;YACD,IAAMG,MAAM,GAAGhG,QAAQ,CAACC,MAAM;YAC9B,IAAI+F,MAAM,IAAIP,WAAW,EAAE;cACvB,OAAO,UAAU;YACpB;YACD,IAAI,CAACzF,QAAQ,CAAC1G,IAAI,CAACsM,OAAO,CAAC;YAC3B,OAAOI,MAAM;UAChB;UACDC,IAAIA,CAAA,EAAG;YACH,IAAQ1L,GAAG,GAAmC,IAAI,CAA1CA,GAAG;cAAEG,MAAM,GAA2B,IAAI,CAArCA,MAAM;cAAE2K,WAAW,GAAc,IAAI,CAA7BA,WAAW;cAAElJ,OAAO,GAAK,IAAI,CAAhBA,OAAO;YACzC,IAAQ+J,SAAS,GAAK/J,OAAO,CAArB+J,SAAS;YACjBA,SAAS,CAACC,SAAS,CAACzL,MAAM,CAAC;YAC3BA,MAAM,CAACkF,YAAY,CAAC,IAAI,EAAEyF,WAAW,CAAC;YAC9C;YACQ,IAAMe,OAAO,GAAI,IAAI,CAACb,SAAS,GAAG,EAAE,GAAI,CAAC,GAAG,CAAC;YACrD;YACQ,IAAI,IAAI,CAACD,YAAY,CAACe,KAAK,EAAE;cACzB,IAAAC,kBAAA,GAAgC,IAAI,CAAChB,YAAY;gBAAzC7B,CAAC,GAAA6C,kBAAA,CAAD7C,CAAC;gBAAEC,CAAC,GAAA4C,kBAAA,CAAD5C,CAAC;gBAAEnD,KAAK,GAAA+F,kBAAA,CAAL/F,KAAK;gBAAEC,MAAM,GAAA8F,kBAAA,CAAN9F,MAAM;cAC3B,IAAMG,UAAU,GAAGxE,OAAO,CAACwE,UAAU;cACrC,IAAM4F,YAAY,GAAGpK,OAAO,CAAC7G,MAAM,CAACkL,MAAM;cAC1C,IAAMgG,KAAK,GAAGnP,IAAI,CAACU,KAAK,CAAC0L,CAAC,GAAG9C,UAAU,CAAC;cACxC,IAAM8F,SAAS,GAAGpP,IAAI,CAACU,KAAK,CAACwI,KAAK,GAAGI,UAAU,CAAC;cAChD,IAAM+F,UAAU,GAAGrP,IAAI,CAACU,KAAK,CAACyI,MAAM,GAAGG,UAAU,CAAC;cAClD,IAAMgG,KAAK,GAAGtP,IAAI,CAACU,KAAK,CAACwO,YAAY,GAAGG,UAAU,GAAGhD,CAAC,GAAG/C,UAAU,CAAC;cACpEpG,GAAG,CAACqM,cAAc,CAAC,IAAI,CAAC;cACxBrM,GAAG,CAACsM,OAAO,CAACL,KAAK,EAAEG,KAAK,EAAEF,SAAS,EAAEC,UAAU,CAAC;YACnD,CAAA,MACI;cACDnM,GAAG,CAACqM,cAAc,CAAC,KAAK,CAAC;YAC5B;YACDrM,GAAG,CAACuM,YAAY,CAACvM,GAAG,CAACwM,SAAS,EAAE,CAAC,GAAG,IAAI,CAACC,QAAQ,EAAEzM,GAAG,CAAC0M,cAAc,EAAEb,OAAO,CAAC;UAClF;QACL;QAAAnM,OAAA,CAAA,GAAA,EAAAmL,iBAAA,CAAA;;QCnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACA;AACA;AACA;AACA;QACO,SAAS8B,kBAAkBA,CAAC3M,GAAG,EAAE;UACpC,IAAM4M,MAAM,GAAG;YACXC,qBAAqB,EAAE,CAAC;YACxBC,gBAAgB,EAAE,CAAC;YAC3B;YACQC,iBAAiB,EAAE,CAAC;YACpBlK,8BAA8B,EAAE,CAAC;YACjCmK,uBAAuB,EAAE,CAAC;YAC1BC,gCAAgC,EAAE,CAAC;YACnCC,kBAAkB,EAAE,CAAC;YACrBC,mBAAmB,EAAE,CAAC;YACtBC,0BAA0B,EAAE,CAAC;YAC7BC,4BAA4B,EAAE;UACtC,CAAK;UACL;UACI,IAAMC,IAAI,GAAGnP,MAAM,CAACmP,IAAI,CAACV,MAAM,CAAC;UAChCU,IAAI,CAAC9N,OAAO,CAAE+N,GAAG,IAAK;YAC1B;YACQX,MAAM,CAACW,GAAG,CAAC,GAAGvN,GAAG,CAACmL,YAAY,CAACnL,GAAG,CAACuN,GAAG,CAAC,CAAC;UAChD,CAAK,CAAC;UACF,OAAOX,MAAM;QACjB;QACA;AACA;AACA;AACA;QACO,SAASY,kBAAkBA,CAACxN,GAAG,EAAE;UACpC,IAAMyN,UAAU,GAAG;YACfC,sBAAsB,EAAE,IAAI;YAC5BC,6BAA6B,EAAE,IAAI;YACnCC,6BAA6B,EAAE,IAAI;YACnCC,4BAA4B,EAAE,IAAI;YAClCC,6BAA6B,EAAE,IAAI;YACnCC,8BAA8B,EAAE,IAAI;YACpCC,qCAAqC,EAAE,IAAI;YAC3CC,kCAAkC,EAAE,IAAI;YACxCC,uBAAuB,EAAE;UACjC,CAAK;UACL;UACI,IAAMZ,IAAI,GAAGnP,MAAM,CAACmP,IAAI,CAACG,UAAU,CAAC;UACpCH,IAAI,CAAC9N,OAAO,CAAE+N,GAAG,IAAK;YAC1B;YACQE,UAAU,CAACF,GAAG,CAAC,GAAGvN,GAAG,CAACqC,YAAY,CAACkL,GAAG,CAAC;UAC/C,CAAK,CAAC;UACF,OAAOE,UAAU;QACrB;QACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,SAASU,iBAAiBA,CAACnO,GAAG,EAAEyE,IAAI,EAAE;UACzC,IAAM2J,QAAQ,GAAG,CAAC,EAAE3J,IAAI,GAAG,EAAE,CAAC;UAC9B,IAAM4J,OAAO,GAAG,IAAIC,WAAW,CAACF,QAAQ,GAAG,CAAC,CAAC;UAC7C,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAG,CAAC,EAAED,CAAC,GAAGH,QAAQ,EAAEG,CAAC,IAAI,CAAC,EAAEC,CAAC,IAAI,CAAC,EAAE;YACjDH,OAAO,CAACE,CAAC,CAAC,GAAGC,CAAC;YACdH,OAAO,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGC,CAAC,GAAG,CAAC;YACtBH,OAAO,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGC,CAAC,GAAG,CAAC;YACtBH,OAAO,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGC,CAAC,GAAG,CAAC;YACtBH,OAAO,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGC,CAAC,GAAG,CAAC;YACtBH,OAAO,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGC,CAAC,GAAG,CAAC;UACzB;UACD,IAAM3K,MAAM,GAAG7D,GAAG,CAAC8D,YAAY,EAAE;UACjC9D,GAAG,CAACyO,sBAAsB,CAAC5K,MAAM,EAAEwK,OAAO,EAAErO,GAAG,CAAC0O,WAAW,CAAC;QAChE;QACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,SAASC,kBAAkBA,CAACzQ,GAAG,EAAE;UACpC,OAAQA,GAAG,KAAK,IAAI,IAChB,OAAOA,GAAG,KAAK,QAAQ,IACvBA,GAAG,CAACM,WAAW,IACfN,GAAG,CAACM,WAAW,CAAC8D,IAAI,KAAK,kBAAkB;QACnD;;QCtGA;AACA;AACA;AACA;AACA;AACA;AACA;;QAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;QAEA;AACA;AACA;AACA;AACA;AACA;AACA;;QAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACA,SAASsM,MAAMA,CAACC,EAAE,EAAEjN,OAAO,EAAE;UAC5B,IAAI6C,IAAI,GAAG,CAAC;;UAEb;UACC,IAAIqK,IAAI;;UAET;UACC,IAAIC,IAAI;UAERnN,OAAO,GAAGA,OAAO,IAAI,EAAE;UAEvB,SAASoN,QAAQA,CAAA,CAAgB;UAAA,EAAA;YAChC,IAAIC,IAAI,GAAGH,IAAI;cACdI,GAAG,GAAGC,SAAS,CAACzJ,MAAM;cACtBiC,IAAI;cACJ4G,CAAC;YAEFa,WAAW,EAAE,OAAOH,IAAI,EAAE;cAC5B;cACA;cACA;cACA;cACA;;cAEA;cACG,IAAIA,IAAI,CAACtH,IAAI,CAACjC,MAAM,KAAKyJ,SAAS,CAACzJ,MAAM,EAAE;gBAC1CuJ,IAAI,GAAGA,IAAI,CAACI,IAAI;gBAChB;cACA;;cAEJ;cACG,KAAKd,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,GAAG,EAAEX,CAAC,EAAE,EAAE;gBACzB,IAAIU,IAAI,CAACtH,IAAI,CAAC4G,CAAC,CAAC,KAAKY,SAAS,CAACZ,CAAC,CAAC,EAAE;kBAClCU,IAAI,GAAGA,IAAI,CAACI,IAAI;kBAChB,SAASD,WAAW;gBACpB;cACD;;cAEJ;;cAEA;cACG,IAAIH,IAAI,KAAKH,IAAI,EAAE;gBACtB;gBACA;gBACI,IAAIG,IAAI,KAAKF,IAAI,EAAE;kBAClBA,IAAI,GAAGE,IAAI,CAACK,IAAI;gBAChB;;gBAEL;gBACA;gBACmC;gBAACL,IAAI,CAACK,IAAI,CAAED,IAAI,GAAGJ,IAAI,CAACI,IAAI;gBAC3D,IAAIJ,IAAI,CAACI,IAAI,EAAE;kBACdJ,IAAI,CAACI,IAAI,CAACC,IAAI,GAAGL,IAAI,CAACK,IAAI;gBAC1B;gBAEDL,IAAI,CAACI,IAAI,GAAGP,IAAI;gBAChBG,IAAI,CAACK,IAAI,GAAG,IAAI;gBACpB;gBAAoCR,IAAI,CAAEQ,IAAI,GAAGL,IAAI;gBACjDH,IAAI,GAAGG,IAAI;cACX;;cAEJ;cACG,OAAOA,IAAI,CAACM,GAAG;YACf;;YAEH;;YAEA;YACE5H,IAAI,GAAG,IAAI6H,KAAK,CAACN,GAAG,CAAC;YACrB,KAAKX,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,GAAG,EAAEX,CAAC,EAAE,EAAE;cACzB5G,IAAI,CAAC4G,CAAC,CAAC,GAAGY,SAAS,CAACZ,CAAC,CAAC;YACtB;YAEDU,IAAI,GAAG;cACNtH,IAAI,EAAEA,IAAI;cAEb;cACG4H,GAAG,EAAEV,EAAE,CAACY,KAAK,CAAC,IAAI,EAAE9H,IAAI;YAC3B,CAAG;;YAEH;YACA;;YAEA;YACE,IAAImH,IAAI,EAAE;cACTA,IAAI,CAACQ,IAAI,GAAGL,IAAI;cAChBA,IAAI,CAACI,IAAI,GAAGP,IAAI;YACnB,CAAG,MAAM;cACT;cACGC,IAAI,GAAGE,IAAI;YACX;;YAEH;YACE,IAAIxK,IAAI,KAAA,4BAAmC7C,OAAO,CAAE8N,OAAO,EAAE;cAC5DX,IAAI,GAAkC,8BAACA,IAAI,CAAEO,IAAI;cACpD;cAAmCP,IAAI,CAAEM,IAAI,GAAG,IAAI;YACpD,CAAG,MAAM;cACN5K,IAAI,EAAE;YACN;YAEDqK,IAAI,GAAGG,IAAI;YAEX,OAAOA,IAAI,CAACM,GAAG;UACf;UAEDP,QAAQ,CAACW,KAAK,GAAG,YAAY;YAC5Bb,IAAI,GAAG,IAAI;YACXC,IAAI,GAAG,IAAI;YACXtK,IAAI,GAAG,CAAC;UACV,CAAE;;UAEF;UACA;UACA;UACA;;UAEA;UACC,OAAOuK,QAAQ;QAChB;;QC7JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACA;AACA;AACA;AACA;AACA;QAmBO,IAAMY,YAAY,GAAI3T,KAAK,IAAK;UACnC,OAAOA,KAAK,IAAI,EAAEA,KAAK,GAAIA,KAAK,GAAG,CAAE,CAAC;QAC1C,CAAC;QACD,IAAM4T,eAAe,GAAGA,CAAClS,CAAC,EAAED,CAAC,EAAEoS,CAAC,EAAEC,CAAC,KAAK;UACpC,IAAMC,EAAE,GAAG,GAAG,GAAGrS,CAAC;UAClB,IAAMsS,EAAE,GAAG,GAAG,IAAIH,CAAC,GAAGnS,CAAC,CAAC,GAAGqS,EAAE;UAC7B,IAAME,EAAE,GAAG,GAAG,GAAGF,EAAE,GAAGC,EAAE;UACxB,IAAME,EAAE,GAAG,GAAG,GAAGzS,CAAC;UAClB,IAAM0S,EAAE,GAAG,GAAG,IAAIL,CAAC,GAAGrS,CAAC,CAAC,GAAGyS,EAAE;UAC7B,IAAME,EAAE,GAAG,GAAG,GAAGF,EAAE,GAAGC,EAAE;UACxB,OAAO,UAAUE,IAAI,EAAE;YACnB,IAAIA,IAAI,IAAI,GAAG,EAAE;cACb,OAAO,CAAC;YACX;YACD,IAAIA,IAAI,IAAI,CAAC,EAAE;cACX,OAAO,CAAC;YACX;YACD,IAAI9E,CAAC,GAAG,GAAG;cAAE+E,GAAG;cAAEC,IAAI;cAAEC,EAAE;YAC1B,KAAK,IAAIC,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAG,EAAE,EAAEA,EAAE,EAAE,EAAE;cAC5BH,GAAG,GAAG/E,CAAC,IAAIA,CAAC,IAAIA,CAAC,GAAG0E,EAAE,GAAGD,EAAE,CAAC,GAAGD,EAAE,CAAC;cAClCS,EAAE,GAAGH,IAAI,GAAGC,GAAG;cACf,IAAIE,EAAE,GAAG,CAAC,IAAI,IAAIA,EAAE,GAAG,IAAI,EAAE;gBACzB,OAAOjF,CAAC,IAAIA,CAAC,IAAIA,CAAC,GAAG6E,EAAE,GAAGD,EAAE,CAAC,GAAGD,EAAE,CAAC;cACtC;cACb;cACYK,IAAI,GAAGhF,CAAC,IAAIA,CAAC,IAAI,CAAC,GAAG0E,EAAE,CAAC,GAAG,CAAC,GAAGD,EAAE,CAAC,GAAGD,EAAE;cACvC,IAAIQ,IAAI,GAAG,KAAK,IAAIA,IAAI,GAAG,KAAK,EAAE;gBAC9C;gBACgB;cACH;cACDhF,CAAC,IAAIiF,EAAE,GAAGD,IAAI;YACjB;YACT;YACQ,IAAIG,IAAI,GAAG,CAAC;YACZ,IAAIC,IAAI,GAAG,CAAC;YACZ,KAAK,IAAIF,GAAE,GAAG,CAAC,EAAEA,GAAE,GAAG,EAAE,EAAEA,GAAE,EAAE,EAAE;cAC5BlF,CAAC,GAAG,GAAG,IAAImF,IAAI,GAAGC,IAAI,CAAC;cACvBL,GAAG,GAAG/E,CAAC,IAAIA,CAAC,IAAIA,CAAC,GAAG0E,EAAE,GAAGD,EAAE,CAAC,GAAGD,EAAE,CAAC;cAClCS,EAAE,GAAGH,IAAI,GAAGC,GAAG;cACf,IAAIE,EAAE,GAAG,CAAC,IAAI,IAAIA,EAAE,GAAG,IAAI,EAAE;gBACzC;gBACgB,OAAOjF,CAAC,IAAIA,CAAC,IAAIA,CAAC,GAAG6E,EAAE,GAAGD,EAAE,CAAC,GAAGD,EAAE,CAAC;cACtC;cACD,IAAIM,EAAE,GAAG,CAAC,EAAE;gBACRG,IAAI,GAAGpF,CAAC;cACX,CAAA,MACI;gBACDmF,IAAI,GAAGnF,CAAC;cACX;YACJ;UACT,CAAK;QACL,CAAC;QACW,IAACqF,iBAAiB,GAAGC,OAAAA,CAAAA,GAAAA,EAAAA,MAAI,CAAEC,GAAG,IAAK;UAC3C,QAAQA,GAAG;YACP,KAAK,QAAQ;cACT,OAAO,UAAUT,IAAI,EAAE;gBACnB,OAAOA,IAAI;cAC3B,CAAa;YACL,KAAK,MAAM;cACP,OAAOT,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;YAChD,KAAK,SAAS;cACV,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;YAC7C,KAAK,UAAU;cACX,OAAOA,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC;YAC3C,KAAK,aAAa;cACd,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC;YAC9C,KAAK,cAAc;cACf,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,KAAK,eAAe;cAChB,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,KAAK,kBAAkB;cACnB,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,KAAK,eAAe;cAChB,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,KAAK,gBAAgB;cACjB,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,KAAK,mBAAmB;cACpB,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,KAAK,cAAc;cACf,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;YAC5C,KAAK,eAAe;cAChB,OAAOA,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,KAAK,kBAAkB;cACnB,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,KAAK,cAAc;cACf,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC;YAChD,KAAK,eAAe;cAChB,OAAOA,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,KAAK,kBAAkB;cACnB,OAAOA,eAAe,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;YACjD,KAAK,YAAY;cACb,OAAO,YAAY;gBACf,OAAO,CAAC;cACxB,CAAa;YACL,KAAK,UAAU;cACX,OAAO,UAAUS,IAAI,EAAE;gBACnB,OAAOA,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;cACzC,CAAa;YACL;cACR;cACY,IAAMU,CAAC,GAAG,eAAe;cACzB,IAAID,GAAG,IAAIA,GAAG,CAAC7R,OAAO,CAAC8R,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC7B,IAAMC,KAAK,GAAGF,GAAG,CACZG,MAAM,CAACF,CAAC,CAACtL,MAAM,EAAEqL,GAAG,CAACrL,MAAM,GAAGsL,CAAC,CAACtL,MAAM,GAAG,CAAC,CAAC,CAC3CyL,KAAK,CAAC,GAAG,CAAC;gBACf,IAAIF,KAAK,CAACvL,MAAM,KAAK,CAAC,EAAE;kBACpBjF,OAAO,CAAC2D,IAAI,CAAC,2BAA2B,GAAG2M,GAAG,CAAC;kBACnE;kBACoB,OAAO,UAAUT,IAAI,EAAE;oBACnB,OAAOA,IAAI;kBACnC,CAAqB;gBACJ;gBACD,IAAM3S,CAAC,GAAGyT,UAAU,CAACH,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;gBACxC,IAAMvT,CAAC,GAAG0T,UAAU,CAACH,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACrC,IAAMnB,CAAC,GAAGsB,UAAU,CAACH,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACrC,IAAMlB,CAAC,GAAGqB,UAAU,CAACH,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACrC,IAAII,KAAK,CAAC1T,CAAC,CAAC,IAAI0T,KAAK,CAAC3T,CAAC,CAAC,IAAI2T,KAAK,CAACvB,CAAC,CAAC,IAAIuB,KAAK,CAACtB,CAAC,CAAC,EAAE;kBAC9CtP,OAAO,CAAC2D,IAAI,CAAC,4BAA4B,GAAG2M,GAAG,CAAC;kBACpE;kBACoB,OAAO,UAAUT,IAAI,EAAE;oBACnB,OAAOA,IAAI;kBACnC,CAAqB;gBACJ;gBACD,OAAOT,eAAe,CAAClS,CAAC,EAAED,CAAC,EAAEoS,CAAC,EAAEC,CAAC,CAAC;cACrC,CAAA,MACI;gBACDtP,OAAO,CAAC2D,IAAI,CAAC,2BAA2B,GAAG2M,GAAG,CAAC;gBAC/D;gBACgB,OAAO,UAAUT,IAAI,EAAE;kBACnB,OAAOA,IAAI;gBAC/B,CAAiB;cACJ;UACR;QACL,CAAC,CAAE,CAAA;QACH,IAAI,CAACxT,IAAI,CAACwU,KAAK,EACXxU,IAAI,CAACwU,KAAK,GAAG,CAAC,GAAG3J,IAAI,KAAK;UACtB,IAAIwB,CAAC,GAAG,CAAC;YAAEoF,CAAC,GAAG5G,IAAI,CAACjC,MAAM;UAC1B,OAAO6I,CAAC,EAAE,EAAE;YACRpF,CAAC,IAAIxB,IAAI,CAAC4G,CAAC,CAAC,GAAG5G,IAAI,CAAC4G,CAAC,CAAC;UACzB;UACD,OAAOzR,IAAI,CAACyU,IAAI,CAACpI,CAAC,CAAC;QACtB,CAAA;;QCtLL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAKA,IAAMqI,wBAAwB,GAAG,IAAIC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,MAAMC,mBAAmB,SAASnH,kBAAkB,CAAC;UAMxD/L,WAAWA,CAACwB,GAAG,EAAEwK,UAAU,EAAEC,aAAa,EAAE;YACxC,KAAK,CAACD,UAAU,EAAEC,aAAa,CAAC;YAAChM,eAAA;YAAAA,eAAA,4BALjB,IAAI;YAAAA,eAAA,iBACf,OAAO;YAAAA,eAAA,aACX,CAAC;YAAAA,eAAA,aACD,CAAC;YAGF,IAAI,CAACuB,GAAG,GAAGA,GAAG;UACjB;UACD,IAAI2R,UAAUA,CAAA,EAAG;YACb,IAAI,IAAI,CAACC,MAAM,KAAK,OAAO,EAAE;cACzB,IAAI,CAACC,IAAI,CAAA,CAAE;YACd;YACDxV,YAAY,CAAC,IAAI,CAACyV,iBAAiB,CAAC;YACpC,OAAO,IAAI,CAACA,iBAAiB;UAChC;UACD,IAAIzK,UAAUA,CAAA,EAAG;YACb,OAAO,IAAI,CAACoD,aAAa,CAACpD,UAAU;UACvC;UACD,IAAI0K,CAACA,CAAA,EAAG;YACJ,OAAO,IAAI,CAACC,EAAE;UACjB;UACD,IAAIC,CAACA,CAAA,EAAG;YACJ,OAAO,IAAI,CAACC,EAAE;UACjB;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIL,IAAIA,CAAA,EAAG;YACX;YACQ,IAAI,IAAI,CAACD,MAAM,KAAK,SAAS,IAAI,IAAI,CAACA,MAAM,KAAK,QAAQ,EAAE;cACvD;YACH;YACD,IAAI,CAACA,MAAM,GAAG,SAAS;YACvB,IAAI,CAACnH,aAAa,CAAChD,QAAQ,CAAC,SAAS,CAAC;YACtC,IAAI,CAACqK,iBAAiB,GAAG,IAAI,CAACK,sBAAsB,EAAE;YACtD,IAAI,CAACC,aAAa,CAAE,CAAA,CACfC,IAAI,CAAC,CAAC;cAAErM,KAAK;cAAEC;aAAQ,KAAK;cAC7B,IAAI,IAAI,CAAC2L,MAAM,KAAK,OAAO,EAAE;gBACzB;cACH;cACD,IAAI,CAACA,MAAM,GAAG,QAAQ;cACtB,IAAI,CAACI,EAAE,GAAGhM,KAAK;cACf,IAAI,CAACkM,EAAE,GAAGjM,MAAM;cAC5B;cACA;cACY,IAAI,CAACwE,aAAa,CAAChD,QAAQ,CAAC,QAAQ,EAAE;gBAAEzB,KAAK;gBAAEC;cAAM,CAAE,CAAC;YACpE,CAAS,CAAC,CACGqM,KAAK,CAAEC,GAAG,IAAK;cAChB,IAAI,CAACX,MAAM,GAAG,QAAQ;cACtB,IAAI,CAACnH,aAAa,CAAChD,QAAQ,CAAC,QAAQ,EAAE8K,GAAG,CAAC;cAC1C9R,OAAO,CAACqH,KAAK,CAACyK,GAAG,CAAC;YAC9B,CAAS,CAAC;UACL;UACL;AACA;AACA;UACUH,aAAaA,CAAA,EAAG;YAAA,IAAAI,KAAA;YAAA,OAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,UAAAC,QAAA;cAAA,IAAAC,mBAAA;cAAA,IAAA7S,GAAA,EAAAwK,UAAA,EAAAsI,WAAA,EAAA9M,KAAA,EAAAC,MAAA,EAAA3G,IAAA,EAAAyT,SAAA,EAAAC,iBAAA,EAAAC,OAAA,EAAAC,qBAAA,EAAAC,MAAA,EAAAC,qBAAA,EAAAC,OAAA,EAAApT,IAAA,EAAAqT,gBAAA,EAAAC,IAAA;cAAA,OAAAb,mBAAA,GAAAc,IAAA,UAAAC,SAAAC,QAAA;gBAAA,kBAAAA,QAAA,CAAApE,IAAA,GAAAoE,QAAA,CAAArE,IAAA;kBAAA;oBACVrP,GAAG,GAAiBwS,KAAI,CAAxBxS,GAAG,EAAEwK,UAAU,GAAKgI,KAAI,CAAnBhI,UAAU,EAC/B;oBACQxK,GAAG,CAAC2T,UAAU,CAAC,CAAC,EAAE3T,GAAG,CAAC4T,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE5T,GAAG,CAAC4T,IAAI,EAAE5T,GAAG,CAAC6T,aAAa,EAAE,IAAI,CAAC;oBACvErJ,UAAU,CAACsJ,gBAAgB,CAACtB,KAAI,EAAEhB,wBAAwB,CAACuC,UAAU,CAAC;oBAACL,QAAA,CAAArE,IAAA;oBAAA,QAAAwD,mBAAA,GAC7CL,KAAI,CAAC/H,aAAa,cAAAoI,mBAAA,uBAAlBA,mBAAA,CAAoBmB,cAAc,CAAA,CAAE;kBAAA;oBAAxDlB,WAAW,GAAAY,QAAA,CAAAO,IAAA;oBAAA,IAEZzB,KAAI,CAACV,iBAAiB;sBAAA4B,QAAA,CAAArE,IAAA;sBAAA;oBAAA;oBACvBhT,YAAY,CAACmW,KAAI,CAACZ,MAAM,KAAK,OAAO,CAAC;oBAAC,OAAA8B,QAAA,CAAAQ,MAAA,WAC/B;sBAAElO,KAAK,EAAE,CAAC;sBAAEC,MAAM,EAAE;oBAAC,CAAE;kBAAA;oBAE9BD,KAAK,GAAG,CAAC;oBACTC,MAAM,GAAG,CAAC;oBACd5J,YAAY,CAACmW,KAAI,CAACV,iBAAiB,CAAC;oBACpC9R,GAAG,CAACmU,aAAa,CAAC,CAAC,CAAC;oBAC5B;oBACA;oBACQ,IAAIrB,WAAW,CAACxT,IAAI,YAAY8U,WAAW,IACvCtB,WAAW,CAACxT,IAAI,YAAY+U,SAAS;oBACjD;oBACY1F,kBAAkB,CAACmE,WAAW,CAACxT,IAAI,CAAC,EAAE;sBAChCA,IAAI,GAAGwT,WAAW,CAACxT,IAAI;sBAC7B0G,KAAK,GAAG1G,IAAI,CAAC0G,KAAK;sBAClBC,MAAM,GAAG3G,IAAI,CAAC2G,MAAM;sBACpBjG,GAAG,CAACsU,WAAW,CAAC9B,KAAI,CAACV,iBAAiB,CAAC;sBACvC9R,GAAG,CAACuU,WAAW,CAACvU,GAAG,CAACwU,8BAA8B,EAAE,CAAC,CAAC1B,WAAW,CAAC2B,gBAAgB,CAAC;sBACnFzU,GAAG,CAAC2T,UAAU,CAAC,CAAC,EAAE3T,GAAG,CAAC4T,IAAI,EAAE5T,GAAG,CAAC4T,IAAI,EAAE5T,GAAG,CAAC6T,aAAa,EAAEvU,IAAI,CAAC;sBAC9DkL,UAAU,CAACsJ,gBAAgB,CAACtB,KAAI,EAAExM,KAAK,GAAGC,MAAM,GAAG,CAAC,CAAC;sBACjE;sBACY,IAAIjG,GAAG,CAACwB,QAAQ,CAAA,CAAE,IAAKoO,YAAY,CAAC5J,KAAK,CAAC,IAAI4J,YAAY,CAAC3J,MAAM,CAAE,EAAE;wBACjEjG,GAAG,CAAC0U,cAAc,CAAA,CAAE;sBACvB;oBACJ,CAAA,MACI,IAAI5B,WAAW,CAACxT,IAAI,KAAK,IAAI,EAAE;sBAChC0G,KAAK,GAAG,CAAC;sBACTC,MAAM,GAAG,CAAC;sBACtB;sBACYjG,GAAG,CAACsU,WAAW,CAAC9B,KAAI,CAACV,iBAAiB,CAAC;sBACvC9R,GAAG,CAAC2T,UAAU,CAAC,CAAC,EAAE3T,GAAG,CAAC4T,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE5T,GAAG,CAAC4T,IAAI,EAAE5T,GAAG,CAAC6T,aAAa,EAAErC,wBAAwB,CAAC;sBAC3FhH,UAAU,CAACsJ,gBAAgB,CAACtB,KAAI,EAAEhB,wBAAwB,CAACuC,UAAU,CAAC;oBACzE,CAAA,MACI,IAAI,SAAS,IAAIjB,WAAW,CAACxT,IAAI,IAAIwT,WAAW,CAACxT,IAAI,CAAC2T,OAAO,EAAE;sBAAAD,iBAAA,GACIF,WAAW,CAACxT,IAAI,EAA5E2T,OAAO,GAAAD,iBAAA,CAAPC,OAAO,EAAAC,qBAAA,GAAAF,iBAAA,CAAEhN,KAAK,EAALA,MAAK,GAAAkN,qBAAA,cAAG,CAAC,GAAAA,qBAAA,EAAAE,qBAAA,GAAAJ,iBAAA,CAAE/M,MAAM,EAANA,OAAM,GAAAmN,qBAAA,cAAG,CAAC,GAAAA,qBAAA,EAAEnT,IAAI,GAAA+S,iBAAA,CAAJ/S,IAAI,EAAEqT,gBAAgB,GAAAN,iBAAA,CAAhBM,gBAAgB;sBACxDC,IAAI,GAAGtT,IAAI,KAAK,KAAK,GACrB,IAAI0U,QAAQ,EAAA5B,SAAA,GAACE,OAAO,CAAC,CAAC,CAAC,cAAAF,SAAA,cAAAA,SAAA,GAAI,IAAI6B,WAAW,CAAC,CAAC,CAAC,CAAC,GAC9C3B,OAAO,CAAC,CAAC,CAAC;sBAChBjT,GAAG,CAACsU,WAAW,CAAC9B,KAAI,CAACV,iBAAiB,CAAC;sBACvC9R,GAAG,CAAC6U,oBAAoB,CAAC,CAAC,EAAEvB,gBAAgB,EAAEtN,MAAK,EAAEC,OAAM,EAAE,CAAC,EAAEsN,IAAI,CAAC;sBACrEvT,GAAG,CAAC8U,aAAa,CAAC9U,GAAG,CAAC+U,cAAc,EAAE/U,GAAG,CAACgV,aAAa,CAAC;sBACxDhV,GAAG,CAAC8U,aAAa,CAAC9U,GAAG,CAACiV,cAAc,EAAEjV,GAAG,CAACgV,aAAa,CAAC;sBACxDhV,GAAG,CAAC8U,aAAa,CAAC9U,GAAG,CAACkV,kBAAkB,EAAElV,GAAG,CAACmV,MAAM,CAAC;sBACrDnV,GAAG,CAAC8U,aAAa,CAAC9U,GAAG,CAACoV,kBAAkB,EAAEpV,GAAG,CAACmV,MAAM,CAAC;sBACrD3K,UAAU,CAACsJ,gBAAgB,CAACtB,KAAI,EAAEe,IAAI,CAACQ,UAAU,CAAC;oBACrD,CAAA,MACI;sBACDtT,OAAO,CAACqH,KAAK,CAAE,oEAAmE,EAAEgL,WAAW,CAAC;oBACnG;oBAAA,OAAAY,QAAA,CAAAQ,MAAA,WACM;sBACHlO,KAAK;sBACLC;oBACZ,CAAS;kBAAA;kBAAA;oBAAA,OAAAyN,QAAA,CAAA2B,IAAA;gBAAA;cAAA,GAAAzC,OAAA;YAAA;UACJ;UACL;AACA;AACA;AACA;AACA;UACI0C,IAAIA,CAAA,EAAG;YACH,IAAI,IAAI,CAAC1D,MAAM,KAAK,OAAO,EAAE;cACzB;YACH;YACD,IAAI,CAACA,MAAM,GAAG,OAAO;YACrB,IAAI,CAACnH,aAAa,CAAChD,QAAQ,CAAC,OAAO,CAAC;YACpC,IAAI,CAACuK,EAAE,GAAG,CAAC;YACX,IAAI,CAACE,EAAE,GAAG,CAAC;YACX,IAAI,CAAC,IAAI,CAACJ,iBAAiB,EAAE;cACzB;YACH;YACD,IAAQ9R,GAAG,GAAiB,IAAI,CAAxBA,GAAG;cAAEwK,UAAU,GAAK,IAAI,CAAnBA,UAAU;YACvBxK,GAAG,CAACuV,aAAa,CAAC,IAAI,CAACzD,iBAAiB,CAAC;YACzCtH,UAAU,CAACsJ,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,IAAI,CAAChC,iBAAiB,GAAG,IAAI;UAChC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIK,sBAAsBA,CAAA,EAAG;YACrB,IAAQnS,GAAG,GAAK,IAAI,CAAZA,GAAG;YACX,IAAMwV,aAAa,GAAGxV,GAAG,CAACyV,aAAa,EAAE;YACzC,IAAI,CAACD,aAAa,EAAE;cAChB,MAAM,IAAI5Z,KAAK,CAAC,gCAAgC,CAAC;YACpD;YACT;YACA;YACQoE,GAAG,CAACmU,aAAa,CAAC,CAAC,CAAC;YACpBnU,GAAG,CAACsU,WAAW,CAACkB,aAAa,CAAC;YACtC;YACQxV,GAAG,CAAC8U,aAAa,CAAC9U,GAAG,CAACkV,kBAAkB,EAAElV,GAAG,CAACmV,MAAM,CAAC;YACrDnV,GAAG,CAAC8U,aAAa,CAAC9U,GAAG,CAACoV,kBAAkB,EAAEpV,GAAG,CAACmV,MAAM,CAAC;YAC7D;YACQnV,GAAG,CAAC8U,aAAa,CAAC9U,GAAG,CAAC+U,cAAc,EAAE/U,GAAG,CAACgV,aAAa,CAAC;YACxDhV,GAAG,CAAC8U,aAAa,CAAC9U,GAAG,CAACiV,cAAc,EAAEjV,GAAG,CAACgV,aAAa,CAAC;YACxD,OAAOQ,aAAa;UACvB;QACL;;QCjNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,MAAME,YAAY,SAAS1O,OAAO,CAAC;UAEtCxI,WAAWA,CAACyI,SAAS,EAAEpH,KAAK,EAAE;YAC1B,KAAK,CAACoH,SAAS,CAAC;YAACxI,eAAA;YACjB,IAAI,CAACoB,KAAK,GAAG6V,YAAY,CAAC5V,eAAe,CAACD,KAAK,IAAI,CAAE,CAAA,CAAC;UACzD;UACD,IAAIqI,KAAKA,CAAA,EAAG;YACR,OAAO,IAAI,CAACrI,KAAK,CAACqI,KAAK;UAC1B;UACD,IAAIA,KAAKA,CAACA,KAAK,EAAE;YACb,IAAI,CAACrI,KAAK,CAACqI,KAAK,GAAGA,KAAK;UAC3B;UACK8L,cAAcA,CAAA,EAAG;YAAA,IAAA2B,MAAA;YAAA,OAAAlD,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,UAAAiD,SAAA;cAAA,IAAAC,WAAA,EAAAC,UAAA;cAAA,OAAApD,mBAAA,GAAAc,IAAA,UAAAuC,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAA1G,IAAA,GAAA0G,SAAA,CAAA3G,IAAA;kBAAA;oBACbwG,WAAW,GAAG,IAAII,WAAW,CAAC,CAACN,MAAI,CAACzN,KAAK,CAAC,CAAC;oBAC3C4N,UAAU,GAAG,IAAII,iBAAiB,CAACL,WAAW,CAAChS,MAAM,CAAC;oBAAA,OAAAmS,SAAA,CAAA9B,MAAA,WACrD;sBACH5U,IAAI,EAAE,IAAI+U,SAAS,CAACyB,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;sBACrCrB,gBAAgB,EAAE;oBAC9B,CAAS;kBAAA;kBAAA;oBAAA,OAAAuB,SAAA,CAAAX,IAAA;gBAAA;cAAA,GAAAO,QAAA;YAAA;UACJ;UACD,OAAOhW,YAAYA,CAACC,KAAK,EAAE;YACvB,IAAMsW,aAAa,GAAGT,YAAY,CAAC5V,eAAe,CAACD,KAAK,CAAC;YACzD,OAAQ,gBAAesW,aAAa,CAACjO,KAAM,EAAC;UAC/C;UACD,OAAOpI,eAAeA,CAACD,KAAK,EAAE;YAC1B,OAAO;cACHqI,KAAK,EAAErI,KAAK,CAACqI,KAAK,IAAI;YAClC,CAAS;UACJ;QAEL;QAAAzJ,eAAA,CA9BaiX,YAAY;QA8BzBhW,OAAA,CAAA,GAAA,EAAAgW,YAAA,CAAA;;QC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,MAAMU,UAAU,SAASpP,OAAO,CAAC;UAGpCxI,WAAWA,CAACyI,SAAS,EAAEpH,KAAK,EAAE;YAC1B,KAAK,CAACoH,SAAS,CAAC;YAACxI,eAAA;YAAAA,eAAA;YAAAA,eAAA,2BAmBF,MAAM;cAC7B;cACA;cACQ,IAAI,CAACgJ,QAAQ,CAAC,QAAQ,EAAE;gBACpBzB,KAAK,EAAE,IAAI,CAACnG,KAAK,CAACmG,KAAK;gBACvBC,MAAM,EAAE,IAAI,CAACpG,KAAK,CAACoG;cAC/B,CAAS,CAAC;YACV,CAAK;YAAAxH,eAAA,2BACkB,CAAC1C,MAAM,EAAE+L,KAAK,KAAK;cAClC,IAAI,CAACL,QAAQ,CAAC,QAAQ,EAAEK,KAAK,CAAC;YACtC,CAAK;YA5BG,IAAI,CAACuO,aAAa,GAAG,IAAI,CAACpP,SAAS,CAACqP,WAAW,CAACzW,KAAK,CAACwL,OAAO,CAACkL,MAAM,EAAE1W,KAAK,CAACwL,OAAO,CAACxL,KAAK,EAAEA,KAAK,CAACwL,OAAO,CAACzJ,OAAO,CAAC;YACjH,IAAI,CAAC/B,KAAK,GAAGuW,UAAU,CAACtW,eAAe,CAACD,KAAK,IAAI,CAAE,CAAA,CAAC;YAC5D;YACA;YACA;YACA;YACQ2W,cAAc,CAAC,MAAM;cACjB,IAAMC,QAAQ,GAAG,IAAI,CAACJ,aAAa;cACnC,IAAII,QAAQ,CAAC/O,KAAK,KAAK,QAAQ,EAAE;gBAC7B,IAAI,CAACgP,gBAAgB,CAACD,QAAQ,EAAEA,QAAQ,CAACpQ,UAAU,CAAC;cACvD,CAAA,MACI,IAAIoQ,QAAQ,CAAC/O,KAAK,KAAK,QAAQ,EAAE;gBAClC,IAAI,CAACiP,gBAAgB,CAACF,QAAQ,EAAEA,QAAQ,CAAC3O,KAAK,CAAC;cAClD;cACD2O,QAAQ,CAAC/X,EAAE,CAAC,QAAQ,EAAE,IAAI,CAACgY,gBAAgB,CAAC;cAC5CD,QAAQ,CAAC/X,EAAE,CAAC,QAAQ,EAAE,IAAI,CAACiY,gBAAgB,CAAC;YACxD,CAAS,CAAC;UACL;UAYK3C,cAAcA,CAAA,EAAG;YAAA,IAAA4C,MAAA;YAAA,OAAAnE,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,UAAAkE,SAAA;cAAA,OAAAnE,mBAAA,GAAAc,IAAA,UAAAsD,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAAzH,IAAA,GAAAyH,SAAA,CAAA1H,IAAA;kBAAA;oBAAA,OAAA0H,SAAA,CAAA7C,MAAA,WACZ;sBACH5U,IAAI,EAAEsX,MAAI,CAAC/W;oBACvB,CAAS;kBAAA;kBAAA;oBAAA,OAAAkX,SAAA,CAAA1B,IAAA;gBAAA;cAAA,GAAAwB,QAAA;YAAA;UACJ;UACL;UACI,OAAOjX,YAAYA,CAACC,KAAK,EAAE;YACvB,OAAO,KAAK;UACf;UACD,OAAOC,eAAeA,CAACD,KAAK,EAAE;YAC1B,OAAO;cACHwL,OAAO,EAAExL,KAAK,CAACwL,OAAO;cACtBnC,CAAC,EAAErJ,KAAK,CAACqJ,CAAC,IAAI,CAAC;cACfC,CAAC,EAAEtJ,KAAK,CAACsJ,CAAC,IAAI,CAAC;cACfnD,KAAK,EAAEnG,KAAK,CAACmG,KAAK,IAAI,CAAC;cACvBC,MAAM,EAAEpG,KAAK,CAACoG,MAAM,IAAI;YACpC,CAAS;UACJ;QAEL;QAAAxH,eAAA,CArDa2X,UAAU;QAqDvB1W,OAAA,CAAA,GAAA,EAAA0W,UAAA,CAAA;;QClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAEO,MAAMY,sBAAsB,SAAStF,mBAAmB,CAAC;UAC5DlT,WAAWA,CAACwB,GAAG,EAAEwK,UAAU,EAAEC,aAAa,EAAE;YACxC,KAAK,CAACzK,GAAG,EAAEwK,UAAU,EAAEC,aAAa,CAAC;UACxC;UACK2H,aAAaA,CAAA,EAAG;YAAA,IAAA6E,MAAA;YAAA,OAAAxE,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,UAAAuE,SAAA;cAAA,IAAAC,WAAA,EAAAC,YAAA;cAAA,IAAAvX,KAAA;cAAA,OAAA6S,mBAAA,GAAAc,IAAA,UAAA6D,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAAhI,IAAA,GAAAgI,SAAA,CAAAjI,IAAA;kBAAA;oBAAAiI,SAAA,CAAAjI,IAAA;oBAAA,OACE4H,MAAI,CAACxM,aAAa,CAACuJ,cAAc,CAAA,CAAE;kBAAA;oBAAjDnU,KAAK,GAAAyX,SAAA,CAAArD,IAAA;oBAAA,OAAAqD,SAAA,CAAApD,MAAA,WACJ;sBACHlO,KAAK,EAAE,EAAAmR,WAAA,GAAAtX,KAAK,CAACP,IAAI,cAAA6X,WAAA,uBAAVA,WAAA,CAAYnR,KAAK,KAAI,CAAC;sBAC7BC,MAAM,EAAE,EAAAmR,YAAA,GAAAvX,KAAK,CAACP,IAAI,cAAA8X,YAAA,uBAAVA,YAAA,CAAYnR,MAAM,KAAI;oBAC1C,CAAS;kBAAA;kBAAA;oBAAA,OAAAqR,SAAA,CAAAjC,IAAA;gBAAA;cAAA,GAAA6B,QAAA;YAAA;UACJ;QACL;;QC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACA;AACA;AACA;AACA;QACO,MAAMK,gBAAgB,CAAC;UAE1B/Y,WAAWA,CAACvD,MAAM,EAAE;YAAAwD,eAAA;YAChB,IAAI,CAACxD,MAAM,GAAGA,MAAM;UACvB;UACL;AACA;AACA;AACA;AACA;AACA;UACIyL,SAASA,CAAChD,aAAa,EAAE;YAAA,IAAA8T,iBAAA;YACrB,QAAAA,iBAAA,GAAO,IAAI,CAACvc,MAAM,CAACwc,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACjU,UAAU,CAACC,aAAa,CAAC,CAAC,cAAA8T,iBAAA,uBAA1DA,iBAAA,CAA4D3T,MAAM;UAC5E;UACL;AACA;AACA;AACA;AACA;AACA;UACI+C,gBAAgBA,CAAClD,aAAa,EAAE;YAAA,IAAAiU,kBAAA;YAC5B,QAAAA,kBAAA,GAAO,IAAI,CAAC1c,MAAM,CAACwc,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACjU,UAAU,CAACC,aAAa,CAAC,CAAC,cAAAiU,kBAAA,uBAA1DA,kBAAA,CACDlU,UAAU,CAACC,aAAa,CAAC;UAClC;QACL;QAAAhE,OAAA,CAAA,GAAA,EAAA6X,gBAAA,CAAA;;QC9CA;QACA;QACA;QAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,MAAMK,mBAAmB,CAAC;UAyDjC;UACIpZ,WAAWA,CAAC9C,EAAE,EAAE;YAAA+C,eAAA;YAxDpB;YAAAA,eAAA,4BACwB,CAAC;YAAAA,eAAA;YAAAA,eAAA,0BAEH,IAAIoZ,OAAO,EAAE;YAAApZ,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA,0BAcb,IAAIoZ,OAAO,EAAE;YACnC;YACA;YAAApZ,eAAA;YAEA;YACA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAmCQ,IAAI,CAAC/C,EAAE,GAAGA,EAAE;YACpB;YACA;YACA;YACA;YACA;YACA;YACQ,IAAI,CAACoc,iBAAiB,GAClBpc,EAAE,CAACyP,YAAY,CAACzP,EAAE,CAACqc,cAAc,CAAC,GAAGrc,EAAE,CAACsc,QAAQ;YACpD,IAAMC,eAAe,GAAGvc,EAAE,CAACyP,YAAY,CAACzP,EAAE,CAACsR,uBAAuB,CAAC;YAC3E;YACQ,IAAI,CAACkL,cAAc,GAAG,IAAI1I,KAAK,CAACyI,eAAe,CAAC,CAC3CE,IAAI,CAAC5W,SAAS,CAAC,CACf6W,GAAG,CAAC,CAACC,CAAC,EAAE9J,CAAC,KAAK;cACf,IAAI,CAAC4F,aAAa,CAAC5F,CAAC,CAAC;cACrB,OAAO7S,EAAE,CAACyP,YAAY,CAACzP,EAAE,CAAC4c,kBAAkB,CAAC;YACzD,CAAS,CAAC;YACV;YACQ,IAAI,CAACnE,aAAa,CAAC,IAAI,CAAC2D,iBAAiB,CAAC;YAC1C,IAAI,CAACS,cAAc,GAAG7c,EAAE,CAAC8c,SAAS,CAAC9c,EAAE,CAAC+c,YAAY,CAAC;YACnD,IAAMC,UAAU,GAAGhd,EAAE,CAACyP,YAAY,CAACzP,EAAE,CAACid,WAAW,CAAC;YAClD,IAAI,CAACC,QAAQ,GAAGF,UAAU,CAAC,CAAC,CAAC;YAC7B,IAAI,CAACG,QAAQ,GAAGH,UAAU,CAAC,CAAC,CAAC;YAC7B,IAAI,CAACI,YAAY,GAAGJ,UAAU,CAAC,CAAC,CAAC;YACjC,IAAI,CAACK,aAAa,GAAGL,UAAU,CAAC,CAAC,CAAC;YAClC,IAAI,CAACM,YAAY,GAAGtd,EAAE,CAAC8c,SAAS,CAAC9c,EAAE,CAACud,KAAK,CAAC;YAC1C,IAAI,CAACC,WAAW,GAAGxd,EAAE,CAACyP,YAAY,CAACzP,EAAE,CAACyd,aAAa,CAAC;YACpD,IAAI,CAACC,WAAW,GAAG1d,EAAE,CAACyP,YAAY,CAACzP,EAAE,CAAC2d,aAAa,CAAC;YACpD,IAAI,CAACC,aAAa,GAAG5d,EAAE,CAACyP,YAAY,CAACzP,EAAE,CAAC6d,eAAe,CAAC;YACxD,IAAI,CAACC,aAAa,GAAG9d,EAAE,CAACyP,YAAY,CAACzP,EAAE,CAAC+d,eAAe,CAAC;YACxD,IAAI,CAACC,gBAAgB,GAAGhe,EAAE,CAACyP,YAAY,CAACzP,EAAE,CAACie,oBAAoB,CAAC;YAChE,IAAI,CAACC,uBAAuB,GAAGle,EAAE,CAACyP,YAAY,CAACzP,EAAE,CAACme,4BAA4B,CAAC;YAC/E,IAAI,CAACC,UAAU,GAAGpe,EAAE,CAACyP,YAAY,CAACzP,EAAE,CAACqe,eAAe,CAAC;YACrD,IAAI,CAAChf,MAAM,GAAGW,EAAE,CAACX,MAAM;YAC/B;YACQ,IAAI,CAAC8R,qBAAqB,GAAGnR,EAAE,CAACmR,qBAAqB;YACrD,IAAI,CAACC,gBAAgB,GAAGpR,EAAE,CAACoR,gBAAgB;YAC3C,IAAI,CAACC,iBAAiB,GAAGrR,EAAE,CAACqR,iBAAiB;YAC7C,IAAI,CAAClK,8BAA8B,GAAGnH,EAAE,CAACmH,8BAA8B;YACvE,IAAI,CAACmK,uBAAuB,GAAGtR,EAAE,CAACsR,uBAAuB;YACzD,IAAI,CAACC,gCAAgC,GAAGvR,EAAE,CAACuR,gCAAgC;YAC3E,IAAI,CAACC,kBAAkB,GAAGxR,EAAE,CAACwR,kBAAkB;YAC/C,IAAI,CAACC,mBAAmB,GAAGzR,EAAE,CAACyR,mBAAmB;YACjD,IAAI,CAACC,0BAA0B,GAAG1R,EAAE,CAAC0R,0BAA0B;YAC/D,IAAI,CAACC,4BAA4B,GAAG3R,EAAE,CAAC2R,4BAA4B;YACnE,IAAI,CAAC6H,kBAAkB,GAAGxZ,EAAE,CAACwZ,kBAAkB;YAC/C,IAAI,CAACE,kBAAkB,GAAG1Z,EAAE,CAAC0Z,kBAAkB;YAC/C,IAAI,CAACL,cAAc,GAAGrZ,EAAE,CAACqZ,cAAc;YACvC,IAAI,CAACE,cAAc,GAAGvZ,EAAE,CAACuZ,cAAc;YACvC,IAAI,CAACE,MAAM,GAAGzZ,EAAE,CAACyZ,MAAM;YACvB,IAAI,CAACH,aAAa,GAAGtZ,EAAE,CAACsZ,aAAa;YACrC,IAAI,CAACpB,IAAI,GAAGlY,EAAE,CAACkY,IAAI;YACnB,IAAI,CAACC,aAAa,GAAGnY,EAAE,CAACmY,aAAa;YACrC,IAAI,CAACW,8BAA8B,GAAG9Y,EAAE,CAAC8Y,8BAA8B;YACvE,IAAI,CAACwF,mBAAmB,GAAGte,EAAE,CAACse,mBAAmB;YACjD,IAAI,CAACC,KAAK,GAAGve,EAAE,CAACue,KAAK;YACrB,IAAI,CAACzN,SAAS,GAAG9Q,EAAE,CAAC8Q,SAAS;YAC7B,IAAI,CAACE,cAAc,GAAGhR,EAAE,CAACgR,cAAc;YACvC,IAAI,CAACwN,GAAG,GAAGxe,EAAE,CAACwe,GAAG;YACjB,IAAI,CAACC,mBAAmB,GAAGze,EAAE,CAACye,mBAAmB;YACjD,IAAI,CAACtX,8BAA8B,GAAGnH,EAAE,CAACmH,8BAA8B;YACvE,IAAI,CAAC2J,SAAS,GAAG9Q,EAAE,CAAC8Q,SAAS;YAC7B,IAAI,CAACE,cAAc,GAAGhR,EAAE,CAACgR,cAAc;YACvC,IAAI,CAACzJ,aAAa,GAAGvH,EAAE,CAACuH,aAAa;YACrC,IAAI,CAACC,eAAe,GAAGxH,EAAE,CAACwH,eAAe;YACzC,IAAI,CAACwL,WAAW,GAAGhT,EAAE,CAACgT,WAAW;YACjC,IAAI,CAAClO,cAAc,GAAG9E,EAAE,CAAC8E,cAAc;YACvC,IAAI,CAACY,WAAW,GAAG1F,EAAE,CAAC0F,WAAW;YACjC,IAAI,CAACgZ,YAAY,GAAG1e,EAAE,CAAC0e,YAAY;YACnC,IAAI,CAACC,iBAAiB,GAAG3e,EAAE,CAAC2e,iBAAiB;UAChD;UACL;AACA;AACA;AACA;AACA;UACI7Y,QAAQA,CAAA,EAAG;YACP,OAAOA,QAAQ,CAAC,IAAI,CAAC9F,EAAE,CAAC;UAC3B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIyY,aAAaA,CAACmG,WAAW,EAAE;YACvB,IAAQ5e,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,IAAI,IAAI,CAACoc,iBAAiB,KAAKwC,WAAW,EAAE;cACxC5e,EAAE,CAACyY,aAAa,CAACmG,WAAW,GAAG5e,EAAE,CAACsc,QAAQ,CAAC;cAC3C,IAAI,CAACF,iBAAiB,GAAGwC,WAAW;YACvC;UACJ;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIhG,WAAWA,CAACjJ,OAAO,EAAE;YACjB,IAAQ3P,EAAE,GAAwC,IAAI,CAA9CA,EAAE;cAAEoc,iBAAiB,GAAqB,IAAI,CAA1CA,iBAAiB;cAAEI,cAAc,GAAK,IAAI,CAAvBA,cAAc;YAC7C,IAAIA,cAAc,CAACJ,iBAAiB,CAAC,KAAKzM,OAAO,EAAE;cAC/C;YACH;YACD6M,cAAc,CAACJ,iBAAiB,CAAC,GAAGzM,OAAO;YAC3C3P,EAAE,CAAC4Y,WAAW,CAAC,IAAI,CAAC5Y,EAAE,CAAC6e,UAAU,EAAElP,OAAO,CAAC;UAC9C;UACDmP,iBAAiBA,CAAA,EAAG;YAChB,IAAQ1C,iBAAiB,GAAqB,IAAI,CAA1CA,iBAAiB;cAAEI,cAAc,GAAK,IAAI,CAAvBA,cAAc;YACzC,OAAOA,cAAc,CAACJ,iBAAiB,CAAC;UAC3C;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIhD,aAAaA,CAAC2F,KAAK,EAAEC,KAAK,EAAE;YACxB,IAAQhf,EAAE,GAAsB,IAAI,CAA5BA,EAAE;cAAEif,eAAe,GAAK,IAAI,CAAxBA,eAAe;YAC3B,IAAMxG,aAAa,GAAG,IAAI,CAACqG,iBAAiB,EAAE;YAC9C,IAAI,CAACrG,aAAa,EAAE;cAChB,MAAM,IAAIvY,KAAK,CAAC,mBAAmB,CAAC;YACvC;YACD,IAAIgf,aAAa,GAAGD,eAAe,CAAC7e,GAAG,CAACqY,aAAa,CAAC;YACtD,IAAI,CAACyG,aAAa,EAAE;cAChBA,aAAa,GAAG,CAAA,CAAE;cAClBD,eAAe,CAACE,GAAG,CAAC1G,aAAa,EAAEyG,aAAa,CAAC;YACpD;YACD,IAAIA,aAAa,CAACH,KAAK,CAAC,KAAKC,KAAK,EAAE;cAChC;YACH;YACDE,aAAa,CAACH,KAAK,CAAC,GAAGC,KAAK;YAC5Bhf,EAAE,CAACoZ,aAAa,CAACpZ,EAAE,CAAC6e,UAAU,EAAEE,KAAK,EAAEC,KAAK,CAAC;UAChD;UACD/G,UAAUA,CAACmH,KAAK,EAAEC,cAAc,EAAEC,aAAa,EAAEC,YAAY,EAAEC,cAAc,EAAEC,MAAM,EAAElb,IAAI,EAAEmb,MAAM,EAAE;YACjG,IAAQ1f,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,IAAIyf,MAAM,EAAE;cACRzf,EAAE,CAACiY,UAAU,CAACjY,EAAE,CAAC6e,UAAU,EAAEO,KAAK,EAAEC,cAAc,EAAEC,aAAa,EAAEC,YAAY,EAAEC,cAAc,EAAEC,MAAM,EAAElb,IAAI,EAAEmb,MAAM,CAAC;YACzH,CAAA,MACI;cACD1f,EAAE,CAACiY,UAAU,CAACjY,EAAE,CAAC6e,UAAU,EAAEO,KAAK,EAAEC,cAAc,EAAEC,aAAa,EAAEC,YAAY,EAAEC,cAAc,CAAC;YACnG;UACJ;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIrG,oBAAoBA,CAACiG,KAAK,EAAEO,cAAc,EAAErV,KAAK,EAAEC,MAAM,EAAEqV,MAAM,EAAEhc,IAAI,EAAE;YACrE,IAAQ5D,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAACmZ,oBAAoB,CAACnZ,EAAE,CAAC6e,UAAU,EAAEO,KAAK,EAAEO,cAAc,EAAErV,KAAK,EAAEC,MAAM,EAAEqV,MAAM,EAAEhc,IAAI,CAAC;UAC7F;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIiV,WAAWA,CAACkG,KAAK,EAAEC,KAAK,EAAE;YACtB,IAAQhf,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAAC6Y,WAAW,CAACkG,KAAK,EAAEC,KAAK,CAAC;UAC/B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIhG,cAAcA,CAAA,EAAG;YACb,IAAQhZ,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAACgZ,cAAc,CAAChZ,EAAE,CAAC6e,UAAU,CAAC;UACnC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACI9E,aAAaA,CAAA,EAAG;YACZ,IAAQ/Z,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAAC+Z,aAAa,EAAE;UAC5B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIF,aAAaA,CAAClK,OAAO,EAAE;YACnB,IAAQ3P,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,IAAI2P,OAAO,EAAE;cACT,IAAI,CAACsP,eAAe,CAACnT,MAAM,CAAC6D,OAAO,CAAC;YACvC;YACD3P,EAAE,CAAC6Z,aAAa,CAAClK,OAAO,CAAC;UAC5B;UACL;AACA;AACA;AACA;AACA;UACIkQ,QAAQA,CAACrS,CAAC,EAAEC,CAAC,EAAEnD,KAAK,EAAEC,MAAM,EAAE;YAC1B,IAAQvK,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAAC6f,QAAQ,CAACrS,CAAC,EAAEC,CAAC,EAAEnD,KAAK,EAAEC,MAAM,CAAC;UACnC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIuV,UAAUA,CAACC,GAAG,EAAEC,KAAK,EAAEC,IAAI,EAAEzgB,KAAK,EAAE;YAChC,IAAQQ,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAAC8f,UAAU,CAACC,GAAG,EAAEC,KAAK,EAAEC,IAAI,EAAEzgB,KAAK,CAAC;UACzC;UACL;AACA;AACA;AACA;AACA;AACA;UACImR,cAAcA,CAACuP,MAAM,EAAE;YACnB,IAAQlgB,EAAE,GAAqB,IAAI,CAA3BA,EAAE;cAAE6c,cAAc,GAAK,IAAI,CAAvBA,cAAc;YAC1B,IAAIqD,MAAM,KAAKrD,cAAc,EAAE;cAC3B;YACH;YACD,IAAIqD,MAAM,EAAE;cACRlgB,EAAE,CAACkgB,MAAM,CAAClgB,EAAE,CAAC+c,YAAY,CAAC;YAC7B,CAAA,MACI;cACD/c,EAAE,CAACmgB,OAAO,CAACngB,EAAE,CAAC+c,YAAY,CAAC;YAC9B;YACD,IAAI,CAACF,cAAc,GAAGqD,MAAM;UAC/B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACItP,OAAOA,CAACpD,CAAC,EAAEC,CAAC,EAAEnD,KAAK,EAAEC,MAAM,EAAE;YACzB,IAAQvK,EAAE,GAAsD,IAAI,CAA5DA,EAAE;cAAEkd,QAAQ,GAA4C,IAAI,CAAxDA,QAAQ;cAAEC,QAAQ,GAAkC,IAAI,CAA9CA,QAAQ;cAAEC,YAAY,GAAoB,IAAI,CAApCA,YAAY;cAAEC,aAAa,GAAK,IAAI,CAAtBA,aAAa;YAC3D,IAAI7P,CAAC,KAAK0P,QAAQ,IACdzP,CAAC,KAAK0P,QAAQ,IACd7S,KAAK,KAAK8S,YAAY,IACtB7S,MAAM,KAAK8S,aAAa,EAAE;cAC1Brd,EAAE,CAAC4Q,OAAO,CAACpD,CAAC,EAAEC,CAAC,EAAEnD,KAAK,EAAEC,MAAM,CAAC;cAC/B,IAAI,CAAC2S,QAAQ,GAAG1P,CAAC;cACjB,IAAI,CAAC2P,QAAQ,GAAG1P,CAAC;cACjB,IAAI,CAAC2P,YAAY,GAAG9S,KAAK;cACzB,IAAI,CAAC+S,aAAa,GAAG9S,MAAM;YAC9B;UACJ;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACI6V,QAAQA,CAACC,KAAK,EAAE;YACZ,IAAQrgB,EAAE,GAAmB,IAAI,CAAzBA,EAAE;cAAEsd,YAAY,GAAK,IAAI,CAArBA,YAAY;YACxB,IAAI+C,KAAK,KAAK/C,YAAY,EAAE;cACxB;YACH;YACD,IAAI+C,KAAK,EAAE;cACPrgB,EAAE,CAACkgB,MAAM,CAAClgB,EAAE,CAACud,KAAK,CAAC;YACtB,CAAA,MACI;cACDvd,EAAE,CAACmgB,OAAO,CAACngB,EAAE,CAACud,KAAK,CAAC;YACvB;YACD,IAAI,CAACD,YAAY,GAAG+C,KAAK;UAC5B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIC,SAASA,CAACC,GAAG,EAAEC,GAAG,EAAE;YAChB,IAAQxgB,EAAE,GAA6D,IAAI,CAAnEA,EAAE;cAAEwd,WAAW,GAAgD,IAAI,CAA/DA,WAAW;cAAEE,WAAW,GAAmC,IAAI,CAAlDA,WAAW;cAAEE,aAAa,GAAoB,IAAI,CAArCA,aAAa;cAAEE,aAAa,GAAK,IAAI,CAAtBA,aAAa;YAClE,IAAIyC,GAAG,KAAK/C,WAAW,IACnBgD,GAAG,KAAK9C,WAAW,IACnB6C,GAAG,KAAK3C,aAAa,IACrB4C,GAAG,KAAK1C,aAAa,EAAE;cACvB9d,EAAE,CAACsgB,SAAS,CAACC,GAAG,EAAEC,GAAG,CAAC;cACtB,IAAI,CAAChD,WAAW,GAAG+C,GAAG;cACtB,IAAI,CAAC7C,WAAW,GAAG8C,GAAG;cACtB,IAAI,CAAC5C,aAAa,GAAG2C,GAAG;cACxB,IAAI,CAACzC,aAAa,GAAG0C,GAAG;YAC3B;UACJ;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIpY,YAAYA,CAAA,EAAG;YACX,IAAQpI,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAACoI,YAAY,EAAE;UAC3B;UACL;AACA;AACA;AACA;AACA;AACA;UACIqY,iBAAiBA,CAAA,EAAG;YAChB,IAAQzgB,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAACygB,iBAAiB,EAAE;UAChC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIC,eAAeA,CAACC,WAAW,EAAE;YACzB,IAAQ3gB,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAAC0gB,eAAe,CAAC1gB,EAAE,CAAC4gB,WAAW,EAAED,WAAW,CAAC;UAClD;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIE,oBAAoBA,CAACC,UAAU,EAAEnR,OAAO,EAAEyP,KAAK,EAAE;YAC7C,IAAQpf,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAAC6gB,oBAAoB,CAAC7gB,EAAE,CAAC4gB,WAAW,EAAEE,UAAU,EAAE9gB,EAAE,CAAC6e,UAAU,EAAElP,OAAO,EAAEyP,KAAK,CAAC;UACrF;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACInL,KAAKA,CAAA,EAAG;YACJ,IAAQjU,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAACiU,KAAK,CAACjU,EAAE,CAAC+gB,gBAAgB,CAAC;UAChC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIC,eAAeA,CAAC7Y,MAAM,EAAEvE,IAAI,EAAEqd,KAAK,EAAE;YACjC,IAAQjhB,EAAE,GAAuB,IAAI,CAA7BA,EAAE;cAAEge,gBAAgB,GAAK,IAAI,CAAzBA,gBAAgB;YAC5B,IAAIA,gBAAgB,KAAK7V,MAAM,EAAE;cAC7BnI,EAAE,CAACkhB,UAAU,CAAClhB,EAAE,CAACmhB,YAAY,EAAEhZ,MAAM,CAAC;cACtC,IAAI,CAAC6V,gBAAgB,GAAG7V,MAAM;YACjC;YACDnI,EAAE,CAACohB,UAAU,CAACphB,EAAE,CAACmhB,YAAY,EAAEvd,IAAI,EAAEqd,KAAK,CAAC;UAC9C;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIlO,sBAAsBA,CAAC5K,MAAM,EAAEvE,IAAI,EAAEqd,KAAK,EAAE;YACxC,IAAQjhB,EAAE,GAA8B,IAAI,CAApCA,EAAE;cAAEke,uBAAuB,GAAK,IAAI,CAAhCA,uBAAuB;YACnC,IAAIA,uBAAuB,KAAK/V,MAAM,EAAE;cACpCnI,EAAE,CAACkhB,UAAU,CAAClhB,EAAE,CAACqhB,oBAAoB,EAAElZ,MAAM,CAAC;cAC9C,IAAI,CAAC+V,uBAAuB,GAAG/V,MAAM;YACxC;YACDnI,EAAE,CAACohB,UAAU,CAACphB,EAAE,CAACqhB,oBAAoB,EAAEzd,IAAI,EAAEqd,KAAK,CAAC;UACtD;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACInY,mBAAmBA,CAACX,MAAM,EAAE5E,KAAK,EAAEwF,IAAI,EAAExE,IAAI,EAAEyE,UAAU,EAAEC,MAAM,EAAEC,MAAM,EAAE;YACvE,IAAQlJ,EAAE,GAAuB,IAAI,CAA7BA,EAAE;cAAEge,gBAAgB,GAAK,IAAI,CAAzBA,gBAAgB;YAC5B,IAAIA,gBAAgB,KAAK7V,MAAM,EAAE;cAC7BnI,EAAE,CAACkhB,UAAU,CAAClhB,EAAE,CAACmhB,YAAY,EAAEhZ,MAAM,CAAC;cACtC,IAAI,CAAC6V,gBAAgB,GAAG7V,MAAM;YACjC;YACDnI,EAAE,CAAC8I,mBAAmB,CAACvF,KAAK,EAAEwF,IAAI,EAAExE,IAAI,EAAEyE,UAAU,EAAEC,MAAM,EAAEC,MAAM,CAAC;UACxE;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIkC,UAAUA,CAAC9F,OAAO,EAAE;YAChB,IAAQtF,EAAE,GAAiB,IAAI,CAAvBA,EAAE;cAAEoe,UAAU,GAAK,IAAI,CAAnBA,UAAU;YACtB,IAAIA,UAAU,KAAK9Y,OAAO,EAAE;cACxB;YACH;YACDtF,EAAE,CAACoL,UAAU,CAAC9F,OAAO,CAAC;YACtB,IAAI,CAAC8Y,UAAU,GAAG9Y,OAAO;UAC5B;UACDkF,UAAUA,CAACjG,IAAI,EAAE0D,QAAQ,EAAE,GAAGgE,IAAI,EAAE;YAChC,IAAQjM,EAAE,GAAsB,IAAI,CAA5BA,EAAE;cAAEshB,eAAe,GAAK,IAAI,CAAxBA,eAAe;YAC3B,IAAI/Y,QAAQ,GAAG+Y,eAAe,CAAClhB,GAAG,CAAC,IAAI,CAACge,UAAU,CAAC;YACnD,IAAI,CAAC7V,QAAQ,EAAE;cACXA,QAAQ,GAAG,IAAIgZ,GAAG,EAAE;cACpBD,eAAe,CAACnC,GAAG,CAAC,IAAI,CAACf,UAAU,EAAE7V,QAAQ,CAAC;YACjD;YACD,IAAMiZ,WAAW,GAAGjZ,QAAQ,CAACnI,GAAG,CAAC6H,QAAQ,CAAC;YAC1C,IAAI,CAACuZ,WAAW,IAAI,CAACC,aAAa,CAACD,WAAW,EAAEvV,IAAI,CAAC,EAAE;cACnD1D,QAAQ,CAAC4W,GAAG,CAAClX,QAAQ,EAAEgE,IAAI,CAAC;cAC5BjM,EAAE,CAACuE,IAAI,CAAC,CAAC0D,QAAQ,EAAE,GAAGgE,IAAI,CAAC;YAC9B;UACJ;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIwD,YAAYA,CAACsP,KAAK,EAAE;YAChB,IAAQ/e,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAACyP,YAAY,CAACsP,KAAK,CAAC;UAChC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIlO,YAAYA,CAAC6Q,IAAI,EAAEC,KAAK,EAAEpd,IAAI,EAAE2E,MAAM,EAAE;YACpC,IAAQlJ,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAAC6Q,YAAY,CAAC6Q,IAAI,EAAEC,KAAK,EAAEpd,IAAI,EAAE2E,MAAM,CAAC;UAC7C;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIvC,YAAYA,CAACC,IAAI,EAAE;YACf,IAAQ5G,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAAC2G,YAAY,CAACC,IAAI,CAAC;UAC/B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIc,iBAAiBA,CAAA,EAAG;YAChB,IAAQ1H,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVW,YAAY,CAACX,EAAE,YAAYgG,sBAAsB,CAAC;YAClD,OAAOhG,EAAE,CAAC0H,iBAAiB,EAAE;UAChC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIC,eAAeA,CAACia,WAAW,EAAE;YACzB,IAAQ5hB,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVW,YAAY,CAACX,EAAE,YAAYgG,sBAAsB,CAAC;YAClDhG,EAAE,CAAC2H,eAAe,CAACia,WAAW,CAAC;UAClC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACI1Z,iBAAiBA,CAAC5C,OAAO,EAAEsB,IAAI,EAAE;YAC7B,IAAQ5G,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAACkI,iBAAiB,CAAC5C,OAAO,EAAEsB,IAAI,CAAC;UAC7C;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACI6B,kBAAkBA,CAACnD,OAAO,EAAEsB,IAAI,EAAE;YAC9B,IAAQ5G,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAACyI,kBAAkB,CAACnD,OAAO,EAAEsB,IAAI,CAAC;UAC9C;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIiC,uBAAuBA,CAACtF,KAAK,EAAE;YAC3B,IAAQvD,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAAC6I,uBAAuB,CAACtF,KAAK,CAAC;UACpC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACI6F,wBAAwBA,CAAC7F,KAAK,EAAE;YAC5B,IAAQvD,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAACoJ,wBAAwB,CAAC7F,KAAK,CAAC;UACrC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIc,YAAYA,CAACE,IAAI,EAAE;YACf,IAAQvE,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAACqE,YAAY,CAACE,IAAI,CAAC;UAC/B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACII,aAAaA,CAACF,MAAM,EAAE;YAClB,IAAQzE,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAAC2E,aAAa,CAACF,MAAM,CAAC;UAC3B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIc,YAAYA,CAACD,OAAO,EAAEb,MAAM,EAAE;YAC1B,IAAQzE,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAACuF,YAAY,CAACD,OAAO,EAAEb,MAAM,CAAC;UACnC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIe,WAAWA,CAACF,OAAO,EAAE;YACjB,IAAQtF,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAACwF,WAAW,CAACF,OAAO,CAAC;UAC1B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIM,aAAaA,CAACnB,MAAM,EAAE;YAClB,IAAQzE,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAAC4F,aAAa,CAACnB,MAAM,CAAC;UAC3B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACII,kBAAkBA,CAACJ,MAAM,EAAEsa,KAAK,EAAE;YAC9B,IAAQ/e,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAAC6E,kBAAkB,CAACJ,MAAM,EAAEsa,KAAK,CAAC;UAC9C;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACI9Z,gBAAgBA,CAACR,MAAM,EAAE;YACrB,IAAQzE,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAACiF,gBAAgB,CAACR,MAAM,CAAC;UACrC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIU,aAAaA,CAAA,EAAG;YACZ,IAAQnF,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAACmF,aAAa,EAAE;UAC5B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIM,mBAAmBA,CAACH,OAAO,EAAEyZ,KAAK,EAAE;YAChC,IAAQ/e,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAACyF,mBAAmB,CAACH,OAAO,EAAEyZ,KAAK,CAAC;UAChD;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIpZ,iBAAiBA,CAACL,OAAO,EAAE;YACvB,IAAQtF,EAAE,GAAK,IAAI,CAAXA,EAAE;YACV,OAAOA,EAAE,CAAC2F,iBAAiB,CAACL,OAAO,CAAC;UACvC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIZ,YAAYA,CAACD,MAAM,EAAED,MAAM,EAAE;YACzB,IAAQxE,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAAC0E,YAAY,CAACD,MAAM,EAAED,MAAM,CAAC;UAClC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIU,YAAYA,CAACT,MAAM,EAAE;YACjB,IAAQzE,EAAE,GAAK,IAAI,CAAXA,EAAE;YACVA,EAAE,CAACkF,YAAY,CAACT,MAAM,CAAC;UAC1B;QACL;QACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,SAASgd,aAAaA,CAACxf,CAAC,EAAED,CAAC,EAAE;UAChC,IAAIC,CAAC,CAAC+H,MAAM,KAAKhI,CAAC,CAACgI,MAAM,EAAE;YACvB,OAAO,KAAK;UACf;UACD,OAAO/H,CAAC,CAAC4f,KAAK,CAAC,CAACC,CAAC,EAAEjP,CAAC,KAAK;YAC7B;YACQ,IAAIiB,KAAK,CAACiO,OAAO,CAACD,CAAC,CAAC,IAAIA,CAAC,YAAYrX,YAAY,EAAE;cAC/C,OAAO,KAAK;YACf,CAAA,MACI;cACD,OAAOqX,CAAC,KAAK9f,CAAC,CAAC6Q,CAAC,CAAC;YACpB;UACT,CAAK,CAAC;QACN;;QC9zBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAEO,MAAMmP,aAAa,SAAS1W,OAAO,CAAC;UAEvCxI,WAAWA,CAACyI,SAAS,EAAEpH,KAAK,EAAE;YAC1B,KAAK,CAACoH,SAAS,CAAC;YAACxI,eAAA;YACjB,IAAI,CAACoB,KAAK,GAAG6d,aAAa,CAAC5d,eAAe,CAACD,KAAK,IAAI,CAAE,CAAA,CAAC;UAC1D;UACD,IAAImG,KAAKA,CAAA,EAAG;YACR,OAAO,IAAI,CAACnG,KAAK,CAACmG,KAAK;UAC1B;UACD,IAAIA,KAAKA,CAAC/J,KAAK,EAAE;YACb,IAAI,CAAC4D,KAAK,CAACmG,KAAK,GAAG/J,KAAK;UAC3B;UACD,IAAIgK,MAAMA,CAAA,EAAG;YACT,OAAO,IAAI,CAACpG,KAAK,CAACoG,MAAM;UAC3B;UACD,IAAIA,MAAMA,CAAChK,KAAK,EAAE;YACd,IAAI,CAAC4D,KAAK,CAACoG,MAAM,GAAGhK,KAAK;UAC5B;UACK+X,cAAcA,CAAA,EAAG;YAAA,OAAAvB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,UAAAgL,SAAA;cAAA,OAAAjL,mBAAA,GAAAc,IAAA,UAAAoK,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAAvO,IAAA,GAAAuO,SAAA,CAAAxO,IAAA;kBAAA;oBAAA,OAAAwO,SAAA,CAAA3J,MAAA,WACZ;sBACH5U,IAAI,EAAE,IAAI;sBACVmV,gBAAgB,EAAE;oBAC9B,CAAS;kBAAA;kBAAA;oBAAA,OAAAoJ,SAAA,CAAAxI,IAAA;gBAAA;cAAA,GAAAsI,QAAA;YAAA;UACJ;UACD,OAAO7d,eAAeA,CAACD,KAAK,EAAE;YAC1B,OAAO;cACHmG,KAAK,EAAEnG,KAAK,CAACmG,KAAK,IAAI,GAAG;cACzBC,MAAM,EAAEpG,KAAK,CAACoG,MAAM,IAAI;YACpC,CAAS;UACJ;QAEL;QAAAxH,eAAA,CA/Baif,aAAa;QA+B1Bhe,OAAA,CAAA,GAAA,EAAAge,aAAA,CAAA;;QClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAGO,MAAMI,yBAAyB,SAASpM,mBAAmB,CAAC;UAE/DlT,WAAWA,CAACwB,GAAG,EAAEwK,UAAU,EAAEC,aAAa,EAAE;YACxC,KAAK,CAACzK,GAAG,EAAEwK,UAAU,EAAEC,aAAa,CAAC;YAC7C;YAAAhM,eAAA;YACQ,IAAM4d,WAAW,GAAGrc,GAAG,CAACmc,iBAAiB,EAAE;YAC3C9f,YAAY,CAACggB,WAAW,EAAE,8BAA8B,CAAC;YACzD,IAAI,CAACA,WAAW,GAAGA,WAAW;UACjC;UACKjK,aAAaA,CAAA,EAAG;YAAA,IAAA2L,MAAA;YAAA,OAAAtL,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,UAAAqL,SAAA;cAAA,IAAAhe,GAAA,EAAAwK,UAAA,EAAAgL,aAAA,EAAAyI,oBAAA,EAAAjY,KAAA,EAAAC,MAAA;cAAA,OAAAyM,mBAAA,GAAAc,IAAA,UAAA0K,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAA7O,IAAA,GAAA6O,SAAA,CAAA9O,IAAA;kBAAA;oBACVrP,GAAG,GAAiB+d,MAAI,CAAxB/d,GAAG,EAAEwK,UAAU,GAAKuT,MAAI,CAAnBvT,UAAU;oBACjBgL,aAAa,GAAIuI,MAAI,CAACjM,iBAAiB,GACzCiM,MAAI,CAAC5L,sBAAsB,CAAA,CAAE;oBAAA8L,oBAAA,GACPF,MAAI,CAACtT,aAAa,EAApCzE,KAAK,GAAAiY,oBAAA,CAALjY,KAAK,EAAEC,MAAM,GAAAgY,oBAAA,CAANhY,MAAM,EAC7B;oBACQjG,GAAG,CAAC2T,UAAU,CAAC,CAAC,EAAE3T,GAAG,CAAC4T,IAAI,EAAE5N,KAAK,EAAEC,MAAM,EAAE,CAAC,EAAEjG,GAAG,CAAC4T,IAAI,EAAE5T,GAAG,CAAC6T,aAAa,EAAE,IAAI,CAAC;oBACxF;oBACQrJ,UAAU,CAACsJ,gBAAgB,CAACiK,MAAI,EAAE/X,KAAK,GAAGC,MAAM,GAAG,CAAC,CAAC;oBAC7D;oBACQjG,GAAG,CAACoc,eAAe,CAAC2B,MAAI,CAAC1B,WAAW,CAAC;oBAC7C;oBACQrc,GAAG,CAACuc,oBAAoB,CAACvc,GAAG,CAACqa,iBAAiB,EAAE7E,aAAa,EAAE,CAAC,CAAC;oBACzE;oBACQxV,GAAG,CAACoc,eAAe,CAAC,IAAI,CAAC;oBAAC,OAAA+B,SAAA,CAAAjK,MAAA,WACnB;sBACHlO,KAAK;sBACLC;oBACZ,CAAS;kBAAA;kBAAA;oBAAA,OAAAkY,SAAA,CAAA9I,IAAA;gBAAA;cAAA,GAAA2I,QAAA;YAAA;UACJ;QACL;;QCjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAmBA,IAAMI,cAAc,GAAG,EAAE;QAElB,MAAMC,iBAAiB,SAAS3T,YAAY,CAAC;UA+BhDlM,WAAWA,CAACoD,OAAO,EAAE;YACjB,KAAK,CAACA,OAAO,CAAC+I,KAAK,CAAC;YA/B5B;YAAAlM,eAAA;YAAAA,eAAA;YAGA;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA;YAIA;YAAAA,eAAA;YAEA;YAAAA,eAAA,qBACiB,IAAImW,WAAW,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;YAAAnW,eAAA,sBAC/B,IAAI0H,YAAY,CAAC,IAAI,CAACmY,UAAU,CAAC;YAAA7f,eAAA,uBAChC,IAAIwX,WAAW,CAAC,IAAI,CAACqI,UAAU,CAAC;YAAA7f,eAAA,oBACnC,EAAE;YAClB;YAAAA,eAAA,uBACmB,CAAC;YAAAA,eAAA,sBACF,IAAI;YAAAA,eAAA,mBACP,EAAE;YAAAA,eAAA,wBACG,IAAI;YACxB;YAAAA,eAAA;YAAAA,eAAA;YAGA;AACA;AACA;YAFAA,eAAA;YAIA;AACA;AACA;YAFAA,eAAA,gCAG4B,KAAK;YAGzB,IAAQ1D,MAAM,GAA+B6G,OAAO,CAA5C7G,MAAM;cAAEygB,UAAU,GAAmB5Z,OAAO,CAApC4Z,UAAU;cAAE+C,YAAY,GAAK3c,OAAO,CAAxB2c,YAAY;YACxC,IAAI,CAAC3c,OAAO,GAAGA,OAAO;YACtB,IAAI,CAACqF,SAAS,GAAGrF,OAAO,CAACqF,SAAS;YAClC,IAAI,CAACuX,YAAY,GAAG5c,OAAO,CAAC4c,YAAY;YACxC,IAAI,CAAC7S,SAAS,GAAG/J,OAAO,CAAC+J,SAAS;YAClC,IAAI,CAAC8S,cAAc,GAAG,IAAI/I,YAAY,CAAC,IAAI,CAACzO,SAAS,CAAC;YAC9D;YACA;YACQ,IAAI,CAACwX,cAAc,CAACrf,IAAI,CAAC,QAAQ,EAAE,MAAM;cACrC,IAAI,CAACuL,KAAK,CAAC+T,aAAa,EAAE;YACtC,CAAS,CAAC;YACF,IAAMhjB,EAAE,GAAGZ,kBAAkB,CAACC,MAAM,EAAE6G,OAAO,CAAC5G,UAAU,CAAC;YACzD,IAAMgF,GAAG,GAAI,IAAI,CAACA,GAAG,GAAG,IAAI4X,mBAAmB,CAAClc,EAAE,CAAE;YACpD,IAAMwM,KAAK,GAAGH,2BAA2B,CAACyT,UAAU,CAAC;YACrDxb,GAAG,CAACub,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAExgB,MAAM,CAACiL,KAAK,EAAEjL,MAAM,CAACkL,MAAM,CAAC;YAC/CjG,GAAG,CAACwb,UAAU,CAACtT,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC;YACtDlI,GAAG,CAAC8b,QAAQ,CAAC,IAAI,CAAC;YAClB9b,GAAG,CAACgc,SAAS,CAAChc,GAAG,CAACka,GAAG,EAAEla,GAAG,CAACma,mBAAmB,CAAC;YAC/ChM,iBAAiB,CAACnO,GAAG,EAAEue,YAAY,CAAC;YACpC,IAAI,CAAC5b,MAAM,GAAG;cACVC,UAAU,EAAE+J,kBAAkB,CAAC,IAAI,CAAC3M,GAAG,CAAC;cACxCyN,UAAU,EAAED,kBAAkB,CAAC,IAAI,CAACxN,GAAG;YACnD,CAAS;YACD,IAAI,CAAC2L,SAAS,CAAC9J,QAAQ,GAAG,IAAI;YAC9B,IAAI,CAAC8c,aAAa,GAAG,IAAI,CAAChT,SAAS,CAACiT,UAAU,CAAC,eAAe,CAAC,CAACze,MAAM;YACtE,IAAMme,UAAU,GAAGte,GAAG,CAAC8D,YAAY,EAAE;YACrCzH,YAAY,CAACiiB,UAAU,CAAC;YACxB,IAAM3Z,MAAM,GAAG,CAAC,GAAGwB,YAAY,CAAC0Y,iBAAiB;YACjD,IAAI,CAACC,oBAAoB,GAAG,IAAIvH,gBAAgB,CAAC,CAC7C;cACI1T,MAAM,EAAEya,UAAU;cAClB7a,UAAU,EAAE;gBACRsb,UAAU,EAAE;kBACRzc,IAAI,EAAE,YAAY;kBAClBmC,IAAI,EAAE,CAAC;kBACPxE,IAAI,EAAED,GAAG,CAACia,KAAK;kBACfvV,UAAU,EAAE,KAAK;kBACjBC,MAAM;kBACNC,MAAM,EAAE,CAAC,CAAA;gBACZ,CAAA;gBACDoa,mBAAmB,EAAE;kBACjB1c,IAAI,EAAE,qBAAqB;kBAC3BmC,IAAI,EAAE,CAAC;kBACPxE,IAAI,EAAED,GAAG,CAACia,KAAK;kBACfvV,UAAU,EAAE,KAAK;kBACjBC,MAAM;kBACNC,MAAM,EAAE,CAAC,GAAGuB,YAAY,CAAC0Y;gBAC5B,CAAA;gBACDI,OAAO,EAAE;kBACL3c,IAAI,EAAE,SAAS;kBACfmC,IAAI,EAAE,CAAC;kBACPxE,IAAI,EAAED,GAAG,CAAC6T,aAAa;kBACvBnP,UAAU,EAAE,IAAI;kBAChBC,MAAM;kBACNC,MAAM,EAAE,CAAC,GAAGuB,YAAY,CAAC0Y;gBAC5B,CAAA;gBACDK,cAAc,EAAE;kBACZ5c,IAAI,EAAE,gBAAgB;kBACtBmC,IAAI,EAAE,CAAC;kBACPxE,IAAI,EAAED,GAAG,CAACia,KAAK;kBACfvV,UAAU,EAAE,KAAK;kBACjBC,MAAM;kBACNC,MAAM,EAAE,CAAC,GAAGuB,YAAY,CAAC0Y;gBAC5B;cACJ;YACJ,CAAA,CACJ,CAAC;UACL;UACDM,KAAKA,CAAA,EAAG;YACJ,IAAQnf,GAAG,GAAK,IAAI,CAAZA,GAAG;YACX,IAAI,CAACof,YAAY,GAAG,CAAC;YACrB,IAAI,CAACC,WAAW,GAAG,IAAI;YACvB,IAAI,CAACC,SAAS,CAAC5Z,MAAM,GAAG,CAAC;YACzB1F,GAAG,CAACqM,cAAc,CAAC,KAAK,CAAC;YACzBrM,GAAG,CAAC2P,KAAK,CAAA,CAAE;UACd;UACD4P,gBAAgBA,CAAA,EAAG;YACf,OAAO,IAAI,CAAC5T,SAAS;UACxB;UACD6T,gBAAgBA,CAAC/U,aAAa,EAAE;YAC5B,IAAIA,aAAa,YAAY2L,UAAU,EAAE;cACrC,OAAO,IAAIY,sBAAsB,CAAC,IAAI,CAAChX,GAAG,EAAE,IAAI,CAACwe,YAAY,EAAE/T,aAAa,CAAC;YAChF,CAAA,MACI,IAAIA,aAAa,YAAYiT,aAAa,EAAE;cAC7C,OAAO,IAAII,yBAAyB,CAAC,IAAI,CAAC9d,GAAG,EAAE,IAAI,CAACwe,YAAY,EAAE/T,aAAa,CAAC;YACnF;YACD,OAAO,IAAIiH,mBAAmB,CAAC,IAAI,CAAC1R,GAAG,EAAE,IAAI,CAACwe,YAAY,EAAE/T,aAAa,CAAC;UAC7E;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIgV,OAAOA,CAAC7S,MAAM,EAAE;YAAA,IAAA8S,QAAA,EAAAC,qBAAA,EAAAC,qBAAA;YACZ,IAAQC,WAAW,GAAmB,IAAI,CAAlCA,WAAW;cAAEC,YAAY,GAAK,IAAI,CAArBA,YAAY;YACjC,IAAQ9Z,KAAK,GAAyM4G,MAAM,CAApN5G,KAAK;cAAEC,MAAM,GAAiM2G,MAAM,CAA7M3G,MAAM;cAAE8Z,OAAO,GAAwLnT,MAAM,CAArMmT,OAAO;cAAEC,OAAO,GAA+KpT,MAAM,CAA5LoT,OAAO;cAAEC,OAAO,GAAsKrT,MAAM,CAAnLqT,OAAO;cAAEC,OAAO,GAA6JtT,MAAM,CAA1KsT,OAAO;cAAEC,cAAc,GAA6IvT,MAAM,CAAjKuT,cAAc;cAAEhgB,MAAM,GAAqIyM,MAAM,CAAjJzM,MAAM;cAAE2K,WAAW,GAAwH8B,MAAM,CAAzI9B,WAAW;cAAE5P,KAAK,GAAiH0R,MAAM,CAA5H1R,KAAK;cAAE6P,YAAY,GAAmG6B,MAAM,CAArH7B,YAAY;cAAEqV,EAAE,GAA+FxT,MAAM,CAAvGwT,EAAE;cAAEC,EAAE,GAA2FzT,MAAM,CAAnGyT,EAAE;cAAEC,EAAE,GAAuF1T,MAAM,CAA/F0T,EAAE;cAAEC,EAAE,GAAmF3T,MAAM,CAA3F2T,EAAE;cAAEC,EAAE,GAA+E5T,MAAM,CAAvF4T,EAAE;cAAEC,EAAE,GAA2E7T,MAAM,CAAnF6T,EAAE;cAAO5a,eAAe,GAAqD+G,MAAM,CAA/E8T,GAAG;cAAmB9a,sBAAsB,GAA6BgH,MAAM,CAAzDhH,sBAAsB;cAAEG,qBAAqB,GAAM6G,MAAM,CAAjC7G,qBAAqB;YAChN,IAAMsF,OAAO,GAAKuB,MAAM,CAAlBvB,OAAO;YACrB;AACA;AACA;AACA;YACQ,IAAIP,WAAW,IAAI7M,MAAM,CAAC6M,WAAW,EAAE,aAAa,CAAC,EAAE;cACnD,IAAMzE,UAAU,GAAGyE,WAAW,CAACxE,WAAW;cACtD;cACYD,UAAU,CAACL,KAAK,GAAGA,KAAK;cACxBK,UAAU,CAACJ,MAAM,GAAGA,MAAM;YAC7B;YACDoF,OAAO,IAAAqU,QAAA,GAAGrU,OAAO,cAAAqU,QAAA,cAAAA,QAAA,GAAI,IAAI,CAACjB,cAAc;YACxCpiB,YAAY,CAACgP,OAAO,YAAYrE,OAAO,EAAE,sBAAsB,CAAC;YAChE,IAAoBgE,SAAS,GAAkB,IAAI,CAA7CoU,YAAY;cAAaC,WAAW,GAAK,IAAI,CAApBA,WAAW;YAC1C,IAAMsB,UAAU,GAAG;cACf3a,KAAK;cACLC;YACZ,CAAS;YACD,IAAM2a,YAAY,GAAGzgB,MAAM,IAAI,IAAI,CAACwe,aAAa;YACjDtiB,YAAY,CAACukB,YAAY,YAAYjf,eAAe,CAAC;YACrD,IAAI,CAAC,IAAI,CAACkf,aAAa,CAACjU,MAAM,CAAC,EAAE;cACzC;cACY,IAAI,CAACkU,WAAW,CAACF,YAAY,EAAE9V,WAAW,EAAE5P,KAAK,EAAEylB,UAAU,EAAE5V,YAAY,EAAEC,SAAS,EAAEnF,eAAe,EAAED,sBAAsB,EAAEG,qBAAqB,CAAC;cACvJsZ,WAAW,GAAG,IAAI,CAACA,WAAW;cAC9BhjB,YAAY,CAACgjB,WAAW,CAAC;YAC5B;YACD,IAAM0B,KAAK,IAAApB,qBAAA,GAAGQ,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEY,KAAK,cAAApB,qBAAA,cAAAA,qBAAA,GAAI,KAAK;YAC5C,IAAMqB,KAAK,IAAApB,qBAAA,GAAGO,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEa,KAAK,cAAApB,qBAAA,cAAAA,qBAAA,GAAI,KAAK;YAC5C,IAAIqB,UAAU,GAAG,CAAC;YAClB,IAAIC,UAAU,GAAG,CAAC;YAClB,IAAIC,UAAU,GAAG,CAAC;YAClB,IAAIC,UAAU,GAAG,CAAC;YAClB,IAAI/V,OAAO,YAAY+K,UAAU,EAAE;cAC/B,IAAAiL,cAAA,GAAgDhW,OAAO,CAACxL,KAAK;gBAAlDugB,GAAE,GAAAiB,cAAA,CAALnY,CAAC;gBAASmX,GAAE,GAAAgB,cAAA,CAALlY,CAAC;gBAAamY,EAAE,GAAAD,cAAA,CAATrb,KAAK;gBAAcub,EAAE,GAAAF,cAAA,CAAVpb,MAAM;cACvC,IAAAub,KAAA,GAAoDnW,OAAO,CAACgL,aAAa,CACpEhQ,UAAU,IAAI;kBAAEL,KAAK,EAAE,CAAC;kBAAEC,MAAM,EAAE;gBAAC,CAAE;gBAAAwb,WAAA,GAAAD,KAAA,CADlCxb,KAAK;gBAAE0b,OAAO,GAAAD,WAAA,cAAG,CAAC,GAAAA,WAAA;gBAAAE,YAAA,GAAAH,KAAA,CAAEvb,MAAM;gBAAE2b,OAAO,GAAAD,YAAA,cAAG,CAAC,GAAAA,YAAA;cAE/CV,UAAU,GAAGb,GAAE,GAAGsB,OAAO;cACzBP,UAAU,GAAGF,UAAU,GAAGK,EAAE,GAAGI,OAAO;cACtCR,UAAU,GAAGb,GAAE,GAAGuB,OAAO;cACzBR,UAAU,GAAGF,UAAU,GAAGK,EAAE,GAAGK,OAAO;cACtCvW,OAAO,GAAGA,OAAO,CAACgL,aAAa;YAClC;YACT;YACQ,IAAI0K,KAAK,EAAE;cAAA,IAAAc,KAAA,GACoB,CAACV,UAAU,EAAEF,UAAU,CAAC;cAAlDA,UAAU,GAAAY,KAAA;cAAEV,UAAU,GAAAU,KAAA;YAC1B;YACD,IAAIb,KAAK,EAAE;cAAA,IAAAc,KAAA,GACoB,CAACV,UAAU,EAAEF,UAAU,CAAC;cAAlDA,UAAU,GAAAY,KAAA;cAAEV,UAAU,GAAAU,KAAA;YAC1B;YACD,IAAQ7a,SAAS,GAAK,IAAI,CAAC0D,KAAK,CAAxB1D,SAAS;YACjB,IAAM0K,UAAU,GAAG1K,SAAS,CAAC8a,aAAa,CAAC1W,OAAO,CAAC;YACnDhP,YAAY,CAACsV,UAAU,YAAYD,mBAAmB,CAAC;YACvD,IAAMsQ,UAAU,GAAG,IAAI,CAAC5W,UAAU,CAACuG,UAAU,EAAE3G,SAAS,CAAC;YACzDqU,WAAW,GAAG,IAAI,CAACA,WAAW;YAC9BhjB,YAAY,CAACgjB,WAAW,CAAC;YACjC;YACQ,IAAIkB,EAAE,KAAK,CAAC,IAAIC,EAAE,KAAK,CAAC,EAAE;cAClC;cACYX,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGoV,EAAE,CAAC,CAAA;cAC9BP,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGqV,EAAE,CAAC,CAAA;cAC9BR,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGiW,UAAU,CAAC,CAAA;cACtCpB,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGkW,UAAU,CAAC,CAAA;cACtCpB,YAAY,CAAC9U,SAAS,EAAE,CAAC,GAAG+U,OAAO,CAAC,CAAA;cACpCF,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGgX,UAAU,CAAC,CAAA;cAClD;cACYnC,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGoV,EAAE,GAAGpa,KAAK,GAAGsa,EAAE;cAC1CT,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGqV,EAAE,GAAGra,KAAK,GAAGwa,EAAE;cAC1CX,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGmW,UAAU;cACrCtB,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGkW,UAAU;cACrCpB,YAAY,CAAC9U,SAAS,EAAE,CAAC,GAAGgV,OAAO;cACnCH,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGgX,UAAU;cACjD;cACYnC,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGoV,EAAE,GAAGna,MAAM,GAAGsa,EAAE;cAC3CV,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGqV,EAAE,GAAGpa,MAAM,GAAGwa,EAAE;cAC3CZ,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGiW,UAAU;cACrCpB,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGoW,UAAU;cACrCtB,YAAY,CAAC9U,SAAS,EAAE,CAAC,GAAGiV,OAAO;cACnCJ,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGgX,UAAU;cACjD;cACYnC,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGoV,EAAE,GAAGpa,KAAK,GAAGsa,EAAE,GAAGra,MAAM,GAAGsa,EAAE;cACxDV,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGqV,EAAE,GAAGra,KAAK,GAAGwa,EAAE,GAAGva,MAAM,GAAGwa,EAAE;cACxDZ,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGmW,UAAU;cACrCtB,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGoW,UAAU;cACrCtB,YAAY,CAAC9U,SAAS,EAAE,CAAC,GAAGkV,OAAO;cACnCL,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGgX,UAAU;YACxC,CAAA,MACI;cACb;cACA;cACY,IAAMC,YAAY,GAAG7B,EAAE,GAAGpa,KAAK,GAAGsa,EAAE;cACpC,IAAM4B,YAAY,GAAG7B,EAAE,GAAGpa,MAAM,GAAGwa,EAAE;cACjD;cACYZ,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGoV,EAAE,CAAC,CAAA;cAC9BP,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGqV,EAAE,CAAC,CAAA;cAC9BR,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGiW,UAAU,CAAC,CAAA;cACtCpB,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGkW,UAAU,CAAC,CAAA;cACtCpB,YAAY,CAAC9U,SAAS,EAAE,CAAC,GAAG+U,OAAO,CAAC,CAAA;cACpCF,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGgX,UAAU,CAAC,CAAA;cAClD;cACYnC,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGiX,YAAY;cACvCpC,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGqV,EAAE;cAC7BR,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGmW,UAAU;cACrCtB,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGkW,UAAU;cACrCpB,YAAY,CAAC9U,SAAS,EAAE,CAAC,GAAGgV,OAAO;cACnCH,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGgX,UAAU;cACjD;cACYnC,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGoV,EAAE;cAC7BP,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGkX,YAAY;cACvCrC,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGiW,UAAU;cACrCpB,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGoW,UAAU;cACrCtB,YAAY,CAAC9U,SAAS,EAAE,CAAC,GAAGiV,OAAO;cACnCJ,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGgX,UAAU;cACjD;cACYnC,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGiX,YAAY;cACvCpC,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGkX,YAAY;cACvCrC,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGmW,UAAU;cACrCtB,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGoW,UAAU;cACrCtB,YAAY,CAAC9U,SAAS,EAAE,CAAC,GAAGkV,OAAO;cACnCL,WAAW,CAAC7U,SAAS,EAAE,CAAC,GAAGgX,UAAU;YACxC;YACT;YACQ3C,WAAW,CAAC3Z,MAAM,IAAI0Y,cAAc;YACpCiB,WAAW,CAAC5S,QAAQ,EAAE;YACtB,IAAI,CAAC2S,YAAY,GAAGpU,SAAS;UAChC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACI8V,WAAWA,CAAC3gB,MAAM,EAAE2K,WAAW,EAAE5P,KAAK,EAAEmL,UAAU,EAAE0E,YAAY,EAAEC,SAAS,EAAEnF,eAAe,EAAED,sBAAsB,EAAEG,qBAAqB,EAAE;YACzI,IAAMsZ,WAAW,GAAG,IAAIxU,iBAAiB,CAAC,IAAI,CAAC7K,GAAG,EAAE,IAAI,CAAC4B,OAAO,EAAE,IAAI,CAACkd,oBAAoB,EAAE3e,MAAM,EAAE2K,WAAW,EAAE5P,KAAK,EAAE6P,YAAY,EAAE1E,UAAU,EAAE2E,SAAS,EAAE,CAAC;YAAA;YAC/JnF,eAAe,EAAED,sBAAsB,EAAEG,qBAAqB,CAAC;YAC/D,IAAI,CAACsZ,WAAW,GAAGA,WAAW;YAC9B,IAAI,CAACC,SAAS,CAACvgB,IAAI,CAACsgB,WAAW,CAAC;UACnC;UACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACIjU,UAAUA,CAACC,OAAO,EAAEL,SAAS,EAAEmX,SAAS,EAAE;YACtC,IAAQ9C,WAAW,GAAK,IAAI,CAApBA,WAAW;YACnBhjB,YAAY,CAACgjB,WAAW,CAAC;YACzB,IAAM2C,UAAU,GAAG3C,WAAW,CAACjU,UAAU,CAACC,OAAO,CAAC;YAC1D;YACQ,IAAI2W,UAAU,KAAK,UAAU,EAAE;cAC3B,IAAIG,SAAS,EAAE;gBACX,MAAM,IAAIvmB,KAAK,CAAC,oCAAoC,CAAC;cACxD;cACD,IAAQuE,MAAM,GAAmDkf,WAAW,CAApElf,MAAM;gBAAE2K,WAAW,GAAsCuU,WAAW,CAA5DvU,WAAW;gBAAEzE,UAAU,GAA0BgZ,WAAW,CAA/ChZ,UAAU;gBAAE0E,YAAY,GAAYsU,WAAW,CAAnCtU,YAAY;gBAAE7P,KAAK,GAAKmkB,WAAW,CAArBnkB,KAAK;cAC5D,IAAI,CAAC4lB,WAAW,CAAC3gB,MAAM,EAAE2K,WAAW,EAAE5P,KAAK,EAAEmL,UAAU,EAAE0E,YAAY,EAAEC,SAAS,CAAC;cACjF,OAAO,IAAI,CAACI,UAAU,CAACC,OAAO,EAAEL,SAAS,EAAE,IAAI,CAAC;YACnD;YACD,OAAOgX,UAAU;UACpB;UACL;AACA;AACA;AACA;AACA;UACInB,aAAaA,CAACjU,MAAM,EAAE;YAAA,IAAAwV,iBAAA;YAClB,IAAQjiB,MAAM,GAA6DyM,MAAM,CAAzEzM,MAAM;cAAE2K,WAAW,GAAgD8B,MAAM,CAAjE9B,WAAW;cAAElF,sBAAsB,GAAwBgH,MAAM,CAApDhH,sBAAsB;cAAE8a,GAAG,GAAmB9T,MAAM,CAA5B8T,GAAG;cAAE3V,YAAY,GAAK6B,MAAM,CAAvB7B,YAAY;YACtE,IAAM6V,YAAY,GAAGzgB,MAAM,IAAI,IAAI,CAACwe,aAAa;YACzD;YACQ,IAAI,EAAAyD,iBAAA,OAAI,CAAC/C,WAAW,cAAA+C,iBAAA,uBAAhBA,iBAAA,CAAkBjiB,MAAM,MAAKygB,YAAY,EAAE;cAC3C,OAAO,KAAK;YACf;YACT;YACQ,IAAI,CAACtX,WAAW,CAAC,IAAI,CAAC+V,WAAW,CAACtU,YAAY,EAAEA,YAAY,CAAC,EAAE;cAC3D,OAAO,KAAK;YACf;YACT;YACA;YACA;YACQ,IAAInF,sBAAsB,IAAI8a,GAAG,EAAE;cAC/B,OAAO,KAAK;YACf;YACT;YACQ,IAAI,IAAI,CAACrB,WAAW,CAAClf,MAAM,KAAK,IAAI,CAACwe,aAAa,KAC7C,CAAC7T,WAAW,IACT,CAAC,IAAI,CAACuU,WAAW,CAAClf,MAAM,CAAC+E,mBAAmB,CAAC,IAAI,CAACma,WAAW,CAACvU,WAAW,EAAEA,WAAW,CAAC,CAAC,EAAE;cAC9F,OAAO,KAAK;YACf;YACT;YACQ,OAAO,IAAI;UACd;UACL;AACA;AACA;UACIuX,WAAWA,CAAChb,UAAU,EAAE;YACpB,IAAI,CAACiY,SAAS,CAACvgB,IAAI,CAACsI,UAAU,CAAC;YAC/B,IAAI,CAACgY,WAAW,GAAG,IAAI;UAC1B;UACL;AACA;AACA;AACA;AACA;AACA;AACA;UACIiD,MAAMA,CAACC,OAAO,GAAG,QAAQ,EAAE;YAAA,IAAAC,qBAAA;YACvB,IAAQxiB,GAAG,GAAiB,IAAI,CAAxBA,GAAG;cAAEse,UAAU,GAAK,IAAI,CAAnBA,UAAU;YACvB,IAAMmE,GAAG,GAAG,IAAItc,YAAY,CAACmY,UAAU,EAAE,CAAC,EAAE,IAAI,CAACc,YAAY,CAAC;YAC9D,IAAMvb,MAAM,IAAA2e,qBAAA,GAAG,IAAI,CAAC1D,oBAAoB,CAACpY,SAAS,CAAC,YAAY,CAAC,cAAA8b,qBAAA,cAAAA,qBAAA,GAAI,IAAI;YACxExiB,GAAG,CAAC0c,eAAe,CAAC7Y,MAAM,EAAE4e,GAAG,EAAEziB,GAAG,CAAC0O,WAAW,CAAC;YAKjD,IAAI,CAAC4Q,SAAS,CAAC9f,OAAO,CAAC,CAAC8F,QAAQ,EAAEiJ,CAAC,KAAK;cAIpCjJ,QAAQ,CAACoG,IAAI,CAAA,CAAE;YAC3B,CAAS,CAAC;UACL;UACD7F,eAAeA,CAACoJ,IAAI,EAAE;YAClB,KAAK,IAAIV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACmU,QAAQ,CAAChd,MAAM,EAAE6I,CAAC,EAAE,EAAE;cAC3C,IAAI,IAAI,CAACmU,QAAQ,CAACnU,CAAC,CAAC,KAAKU,IAAI,EAAE;gBAC3B;cACH;YACJ;YACT;YACQ,IAAI,CAACyT,QAAQ,CAACC,OAAO,CAAC1T,IAAI,CAAC;UAC9B;UACD2T,cAAcA,CAAA,EAAG;YACb,IAAQ5iB,GAAG,GAAK,IAAI,CAAZA,GAAG;YACX,IAAQiH,SAAS,GAAK,IAAI,CAAC0D,KAAK,CAAxB1D,SAAS;YACzB;YACQ,KAAK,IAAIsH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACmU,QAAQ,CAAChd,MAAM,EAAE6I,CAAC,EAAE,EAAE;cAC3C,IAAMU,IAAI,GAAG,IAAI,CAACyT,QAAQ,CAACnU,CAAC,CAAC;cACzC;cACY,IAAI,CAACU,IAAI,IAAI,CAACA,IAAI,CAAC4T,aAAa,EAAE;gBAC9B;cACH;cACb;cACA;cACY,IAAI,CAACC,aAAa,GAAG7T,IAAI;cACzB5S,YAAY,CAAC4S,IAAI,CAAC5D,OAAO,EAAE,0BAA0B,CAAC;cACtD,IAAMsG,UAAU,GAAG1K,SAAS,CAAC8a,aAAa,CAAC9S,IAAI,CAAC5D,OAAO,CAAC;cACxDhP,YAAY,CAACsV,UAAU,YAAYmM,yBAAyB,CAAC;cAC7D,IAAI,CAACiF,qBAAqB,GAAG,IAAI;cAC7C;cACY/iB,GAAG,CAACoc,eAAe,CAACzK,UAAU,CAAC0K,WAAW,CAAC;cAC3Crc,GAAG,CAACub,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE5J,UAAU,CAACI,CAAC,EAAEJ,UAAU,CAACM,CAAC,CAAC;cAC9CjS,GAAG,CAAC2P,KAAK,CAAA,CAAE;cACvB;cACY,KAAK,IAAIpB,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAGU,IAAI,CAAC+T,QAAQ,CAACtd,MAAM,EAAE6I,EAAC,EAAE,EAAE;gBAC3C,IAAM0U,KAAK,GAAGhU,IAAI,CAAC+T,QAAQ,CAACzU,EAAC,CAAC;gBAC9B,IAAI,CAAC0U,KAAK,EAAE;kBACR;gBACH;gBACDA,KAAK,CAACC,MAAM,CAAC,IAAI,CAACvY,KAAK,CAACwY,SAAS,EAAE;kBAC/Bja,CAAC,EAAE,CAAC;kBACJC,CAAC,EAAE,CAAC;kBACJnD,KAAK,EAAE,CAAC;kBACRC,MAAM,EAAE,CAAC;kBACT6F,KAAK,EAAE;gBAC3B,CAAiB,CAAC;gBACF,IAAI,CAACnB,KAAK,CAACyY,QAAQ,CAACH,KAAK,CAAC;gBAC1BA,KAAK,CAACJ,aAAa,GAAG,KAAK;cAC9B;cACb;cACY,IAAI,CAACP,MAAM,CAAA,CAAE;cACzB;cACY,IAAI,CAAChD,SAAS,CAAC5Z,MAAM,GAAG,CAAC;cACzBuJ,IAAI,CAAC4T,aAAa,GAAG,KAAK;YAC7B;YACT;YACQ7iB,GAAG,CAACoc,eAAe,CAAC,IAAI,CAAC;YACzBpc,GAAG,CAACub,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAACvb,GAAG,CAACjF,MAAM,CAACiL,KAAK,EAAE,IAAI,CAAChG,GAAG,CAACjF,MAAM,CAACkL,MAAM,CAAC;YACjE,IAAI,CAAC8c,qBAAqB,GAAG,KAAK;UACrC;QACL;QAAArjB,OAAA,CAAA,GAAA,EAAA2e,iBAAA,CAAA;;QCzcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,IAAMgF,iBAAiB,GAAG;UAC7BC,SAAS,EAAE,IAAI;UACfC,eAAe,EAAE,IAAI;UACrBC,KAAK,EAAE,IAAI;UACXC,GAAG,EAAE,IAAI;UACTC,gBAAgB,EAAE,MAAM;UACxBC,qBAAqB,EAAE,MAAM;UAC7BC,iBAAiB,EAAE,MAAM;UACzBC,kBAAkB,EAAE,MAAM;UAC1BC,kBAAkB,EAAE,MAAM;UAC1BC,uBAAuB,EAAE,MAAM;UAC/BC,uBAAuB,EAAE,MAAM;UAC/BC,0BAA0B,EAAE,MAAM;UAClCC,sBAAsB,EAAE,MAAM;UAC9BC,sBAAsB,EAAE,MAAM;UAC9BC,cAAc,EAAE,MAAM;UACtBC,mBAAmB,EAAE,MAAM;UAC3BC,4BAA4B,EAAE,MAAM;UACpCC,qBAAqB,EAAE,MAAM;UAC7BC,yBAAyB,EAAE,MAAM;UACjCC,qBAAqB,EAAE,MAAM;UAC7BC,qBAAqB,EAAE,MAAM;UAC7BC,oBAAoB,EAAE,MAAM;UAC5BC,uBAAuB,EAAE,MAAM;UAC/BC,0BAA0B,EAAE,MAAM;UAClCC,2BAA2B,EAAE,MAAM;UACnCC,2BAA2B,EAAE,MAAM;UACnCC,4BAA4B,EAAE,MAAM;UACpCC,qBAAqB,EAAE,MAAM;UAC7BC,oBAAoB,EAAE,MAAM;UAC5BC,sBAAsB,EAAE,MAAM;UAC9BC,sBAAsB,EAAE;QAC5B,CAAC;;QClDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,MAAMC,UAAU,CAAC;;QClBxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QAGO,MAAMC,aAAa,SAASD,UAAU,CAAC;UAI1C7mB,WAAWA,CAACc,IAAI,EAAEimB,QAAQ,EAAE;YACxB,KAAK,EAAE;YAAC9mB,eAAA;YAAAA,eAAA;YAAAA,eAAA;YACR,IAAI,CAACa,IAAI,GAAGA,IAAI;YAChB,IAAI,CAACimB,QAAQ,GAAGA,QAAQ;YACxB,IAAMC,QAAQ,GAAI,IAAI,CAACA,QAAQ,GAAG,CAAE,CAAC;YACrClmB,IAAI,CAACkmB,QAAQ,CAAChmB,OAAO,CAAEimB,OAAO,IAAK;cAC/B,IAAMC,MAAM,GAAGD,OAAO,CAACC,MAAM;cAC7B,IAAMC,MAAM,GAAIH,QAAQ,CAACE,MAAM,CAAC,GAAGF,QAAQ,CAACE,MAAM,CAAC,IAAI,CAAA,CAAG;cAC1DC,MAAM,CAACF,OAAO,CAACG,KAAK,CAAC,GAAGH,OAAO,CAACI,MAAM;YAClD,CAAS,CAAC;YACF,IAAI,CAACL,QAAQ,GAAGA,QAAQ;UAC3B;UACAM,SAASA,CAACjmB,KAAK,EAAEkmB,UAAU,EAAE;YAAA,IAAAC,MAAA;YAAA,oBAAAtT,mBAAA,GAAAC,IAAA,UAAAsT,SAAA;cAAA,IAAAC,eAAA,EAAAC,WAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,qBAAA,EAAAb,OAAA;cAAA,OAAA/S,mBAAA,GAAAc,IAAA,UAAA+S,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAAlX,IAAA,GAAAkX,SAAA,CAAAnX,IAAA;kBAAA;oBAEtB8W,WAAW,GAAG5kB,SAAS;kBAAA;oBAAA,MACpB,CAAC2kB,eAAe,GAAGH,UAAU,CAACU,IAAI,CAAA,CAAE,KAAK,CAACP,eAAe,CAACQ,IAAI;sBAAAF,SAAA,CAAAnX,IAAA;sBAAA;oBAAA;oBAC3D+W,SAAS,GAAGF,eAAe,CAACjqB,KAAK;oBACjCoqB,KAAK,GAAGL,MAAI,CAACT,QAAQ,CAACzpB,GAAG,CAACsqB,SAAS,CAAC;oBAC1CL,UAAU,CAAC1W,IAAI,CAAA,CAAE;oBAAC,MACdgX,KAAK,KAAK9kB,SAAS;sBAAAilB,SAAA,CAAAnX,IAAA;sBAAA;oBAAA;oBACnC;oBACA;oBACA;AACA;AACA;oBACsBoW,OAAO,GAAGU,WAAW,KAAK5kB,SAAS,GACnC,CAAC,EAAA+kB,qBAAA,GAAAN,MAAI,CAACR,QAAQ,CAACa,KAAK,CAACM,EAAE,CAAC,cAAAL,qBAAA,uBAAvBA,qBAAA,CAA0BH,WAAW,CAAC,KAAI,CAAC,IAC1CtmB,KAAK,CAAC+mB,aAAa,GACrB,CAAC;oBACPT,WAAW,GAAGE,KAAK,CAACM,EAAE;oBAACH,SAAA,CAAAnX,IAAA;oBACvB,OAAM;sBACFwX,MAAM,EAAE,IAAI;sBACZC,OAAO,EAAET,KAAK,CAACM,EAAE;sBACjBP,SAAS;sBACTW,OAAO,EAAEhB,UAAU,CAACiB,SAAS;sBAC7BC,QAAQ,EAAEZ,KAAK,CAACa,QAAQ,GAAGzB,OAAO;sBAClC0B,QAAQ,EAAE,CAAC;sBACXC,OAAO,EAAEf,KAAK,CAACgB,OAAO,GAAG5B,OAAO;sBAChC6B,OAAO,EAAEjB,KAAK,CAACkB,OAAO;sBACtBC,QAAQ,EAAE,CAAC;sBACXC,QAAQ,EAAE,CAAC;sBACXzhB,KAAK,EAAEqgB,KAAK,CAACrgB,KAAK;sBAClBC,MAAM,EAAEogB,KAAK,CAACpgB;oBAClC,CAAiB;kBAAA;oBAAAugB,SAAA,CAAAnX,IAAA;oBAAA;kBAAA;oBAGjB;oBACA;oBACA;oBACA;oBACA;oBACgB,IAAI+W,SAAS,KAAK/C,iBAAiB,CAACC,SAAS,EAAE;sBAC3C6C,WAAW,GAAG5kB,SAAS;oBAC1B;oBAAAilB,SAAA,CAAAnX,IAAA;oBACD,OAAM;sBACFwX,MAAM,EAAE,KAAK;sBACbT,SAAS;sBACTW,OAAO,EAAEhB,UAAU,CAACiB;oBACxC,CAAiB;kBAAA;oBAAAR,SAAA,CAAAnX,IAAA;oBAAA;kBAAA;kBAAA;oBAAA,OAAAmX,SAAA,CAAAnR,IAAA;gBAAA;cAAA,GAAA4Q,QAAA;YAAA;UAGZ;QACL;;QCtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACA;QAMO,MAAMyB,aAAa,SAAS/d,UAAU,CAAC;UAU1CnL,WAAWA,CAACoL,UAAU,EAAEC,WAAW,EAAE5J,IAAI,EAAE0K,KAAK,EAAEgd,QAAQ,EAAEC,YAAY,EAAE;YAAA,IAAAC,MAAA;YACtE,KAAK,CAACje,UAAU,EAAEC,WAAW,CAAC;YAAAge,MAAA,GAAAC,IAAA;YAAArpB,eAAA;YAAAA,eAAA;YARtC;AACA;AACA;YAFAA,eAAA,wBAGoB,CAAC;YAAAA,eAAA;YAAAA,eAAA;YAAAA,eAAA,mBAGN,IAAIwe,GAAG,EAAE;YAGhB,IAAI,CAAChd,IAAI,GAAGA,IAAI;YAChB,IAAM4B,QAAQ,GAAG8I,KAAK,CAAC9I,QAAQ;YAC/BxF,YAAY,CAACwF,QAAQ,YAAYwc,iBAAiB,EAAE,yDAAyD,CAAC;YAC9G,IAAI,CAAChT,OAAO,GAAGV,KAAK,CAAC1D,SAAS,CAACqP,WAAW,CAAC,cAAc,EAAE;cACvD2F,GAAG,EAAE0L,QAAQ;cACzB;cACA;cACA;cACA;cACYlT,gBAAgB,EAAE;YAC9B,CAAS,EAAE;cACCsT,OAAO,EAAE;YACrB,CAAS,CAAC;YACF,IAAI,CAAC1c,OAAO,CAAC3M,EAAE,CAAC,QAAQ,EAAE,MAAM;cAC5B,IAAI,CAACspB,WAAW,CAAA,CAAE;YAC9B,CAAS,CAAC;YACV;YACQC,KAAK,CAACL,YAAY,CAAC,CACdvV,IAAI;cAAA,IAAA6V,KAAA,GAAAzV,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAAwV,SAAOC,QAAQ;gBAAA,IAAAC,aAAA;gBAAA,OAAA3V,mBAAA,GAAAc,IAAA,UAAA8U,UAAAC,SAAA;kBAAA,kBAAAA,SAAA,CAAAjZ,IAAA,GAAAiZ,SAAA,CAAAlZ,IAAA;oBAAA;sBAAAkZ,SAAA,CAAAlZ,IAAA;sBAAA,OAEH+Y,QAAQ,CAACI,IAAI,CAAA,CAAE;oBAAA;sBAAjCX,MAAI,CAACvoB,IAAI,GAAAipB,SAAA,CAAAtU,IAAA;sBACrB;sBACA;sBACgBoU,aAAa,GAAG,CAAC;sBACrBR,MAAI,CAACvoB,IAAI,CAACmpB,KAAK,CAACjpB,OAAO,CAAE6mB,KAAK,IAAK;wBAC/BwB,MAAI,CAACtC,QAAQ,CAAC1K,GAAG,CAACwL,KAAK,CAACM,EAAE,EAAEN,KAAK,CAAC;wBAClC,IAAMqC,UAAU,GAAGrC,KAAK,CAACkB,OAAO,GAAGlB,KAAK,CAACpgB,MAAM;wBAC/C,IAAIyiB,UAAU,GAAGL,aAAa,EAAE;0BAC5BA,aAAa,GAAGK,UAAU;wBAC7B;sBACjB,CAAa,CAAC;sBACd;sBACYb,MAAI,CAACQ,aAAa,GAAGA,aAAa;sBAC9C;sBACA;sBACYR,MAAI,CAACc,MAAM,GAAG,IAAIrD,aAAa,CAACuC,MAAI,CAACvoB,IAAI,EAAEuoB,MAAI,CAACtC,QAAQ,CAAC;sBACzDsC,MAAI,CAACG,WAAW,CAAA,CAAE;oBAAC;oBAAA;sBAAA,OAAAO,SAAA,CAAAlT,IAAA;kBAAA;gBAAA,GAAA8S,QAAA;cAAA,CACtB;cAAA,iBAAAS,EAAA;gBAAA,OAAAV,KAAA,CAAAzY,KAAA,OAAAN,SAAA;cAAA;YAAA,IAAC,CACGmD,KAAK,CAAC7R,OAAO,CAACqH,KAAK,CAAC;UAC5B;UACD+gB,aAAaA,CAAC/B,OAAO,EAAE;YACnB,IAAMT,KAAK,GAAG,IAAI,CAACd,QAAQ,CAACzpB,GAAG,CAACgrB,OAAO,CAAC;YACxC,IAAIT,KAAK,KAAK9kB,SAAS,EAAE;cACrB,MAAM,IAAI3F,KAAK,CAAE,SAAQkrB,OAAQ,sBAAqB,IAAI,CAACld,UAAW,EAAC,CAAC;YAC3E;YACD,OAAO;cACHV,CAAC,EAAEmd,KAAK,CAACnd,CAAC;cACVC,CAAC,EAAEkd,KAAK,CAACld,CAAC;cACVnD,KAAK,EAAEqgB,KAAK,CAACrgB,KAAK;cAClBC,MAAM,EAAEogB,KAAK,CAACpgB;YAC1B,CAAS;UACJ;UACD+hB,WAAWA,CAAA,EAAG;YACV,IAAI,IAAI,CAACc,MAAM,EACX;YACJ,IAAI,IAAI,CAACzd,OAAO,CAAC3D,KAAK,KAAK,QAAQ,IAAI,IAAI,CAACpI,IAAI,EAAE;cAC9C,IAAI,CAACwpB,MAAM,GAAG,IAAI;cAClB,IAAI,CAACvpB,IAAI,CAAC,QAAQ,CAAC;YACtB;UACJ;QACL;QAAAG,OAAA,CAAA,GAAA,EAAAgoB,aAAA,CAAA;;QChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACO,MAAMqB,aAAa,CAAC;QAC3BrpB,OAAA,CAAA,GAAA,EAAAqpB,aAAA,CAAA;;;;","x_google_ignoreList":[14]} \ No newline at end of file diff --git a/assets/index-B0KZGjmD.css b/assets/index-B0KZGjmD.css deleted file mode 100644 index 0ce8b9c..0000000 --- a/assets/index-B0KZGjmD.css +++ /dev/null @@ -1 +0,0 @@ -html,body,*{padding:0;margin:0}video{position:absolute;top:0;left:0;z-index:2;outline:none}.center-element{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)} diff --git a/assets/index-By7E3s08.js b/assets/index-By7E3s08.js deleted file mode 100644 index b108ec4..0000000 --- a/assets/index-By7E3s08.js +++ /dev/null @@ -1,2 +0,0 @@ -var hi=Object.defineProperty;var fi=(n,r,e)=>r in n?hi(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var u=(n,r,e)=>(fi(n,typeof r!="symbol"?r+"":r,e),e);import{a as N,i as xo,T as gi,g as Tr,c as gt,E as nt,b as ke,d as pi,e as Zr,f as mi,m as Ct,W as zt,h as yo,j as vo,k as xi,l as _r,S as Tn,B as yi,n as vi,o as wo,p as wi,q as bi,C as Si,r as Ai,s as _n,t as Rn,u as Ci,v as Ti,R as _i,w as Ri}from"./CoreExtension-BfzrAcK3.js";function pd(){import.meta.url,import("_").catch(()=>1),async function*(){}().next()}(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))t(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const s of i.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&t(s)}).observe(document,{childList:!0,subtree:!0});function e(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function t(o){if(o.ep)return;o.ep=!0;const i=e(o);fetch(o.href,i)}})();class bo{constructor(r){u(this,"releaseCallback");this.releaseCallback=r}}class Ii extends bo{constructor(e,t){var o,i;super(e);u(this,"textureMap",new Map);u(this,"zeroReferenceTextureSet",new Set);u(this,"options");this.options={textureCleanupIntervalMs:(o=t.textureCleanupIntervalMs)!=null?o:1e4,textureCleanupAgeThreadholdMs:(i=t.textureCleanupAgeThreadholdMs)!=null?i:6e4},setInterval(()=>{const s=Date.now(),a=this.options.textureCleanupAgeThreadholdMs;for(const c of this.zeroReferenceTextureSet)s-c.lastUpdate>a&&(this.releaseCallback(c.id),this.textureMap.delete(c.id),this.zeroReferenceTextureSet.delete(c))},this.options.textureCleanupIntervalMs)}registerTexture(e){var o;const t=(o=e.options)==null?void 0:o.id;if(N(t,"Texture must have an id to be registered"),!this.textureMap.has(t)){const i={id:t,nodeRefCount:0,lastUpdate:Date.now()};this.textureMap.set(t,i),this.zeroReferenceTextureSet.add(i)}}incrementTextureRefCount(e){var i;const t=(i=e.options)==null?void 0:i.id;N(t,"Texture must have an id to be registered");let o=this.textureMap.get(t);o||(this.registerTexture(e),o=this.textureMap.get(t)),N(o,"Texture must have been registered"),e.txType==="SubTexture"&&this.incrementTextureRefCount(e.props.texture),o.nodeRefCount++,o.lastUpdate=Date.now(),this.zeroReferenceTextureSet.has(o)&&this.zeroReferenceTextureSet.delete(o)}decrementTextureRefCount(e){var i;const t=(i=e.options)==null?void 0:i.id;N(t,"Texture must have an id to be registered");const o=this.textureMap.get(t);N(o,"Texture must have been registered"),o.nodeRefCount--,o.lastUpdate=Date.now(),o.nodeRefCount===0&&this.zeroReferenceTextureSet.add(o),e.txType==="SubTexture"&&this.decrementTextureRefCount(e.props.texture)}}class Bi extends bo{constructor(e){super(e);u(this,"registry");this.registry=new FinalizationRegistry(e)}registerTexture(e){var t,o;N((t=e.options)==null?void 0:t.id,"Texture must have an ID to be registered"),this.registry.register(e,(o=e.options)==null?void 0:o.id)}incrementTextureRefCount(){}decrementTextureRefCount(){}}const wt={alpha:n=>n===1?null:{prop:"opacity",value:"".concat(n)},x:n=>({prop:"left",value:"".concat(n,"px")}),y:n=>({prop:"top",value:"".concat(n,"px")}),width:n=>n===0?null:{prop:"width",value:"".concat(n,"px")},height:n=>n===0?null:{prop:"height",value:"".concat(n,"px")},zIndex:()=>"zIndex",fontFamily:()=>"font-family",fontSize:()=>"font-size",fontStyle:()=>"font-style",fontWeight:()=>"font-weight",fontStretch:()=>"font-stretch",lineHeight:()=>"line-height",letterSpacing:()=>"letter-spacing",textAlign:()=>"text-align",overflowSuffix:()=>"overflow-suffix",maxLines:()=>"max-lines",contain:()=>"contain",verticalAlign:()=>"vertical-align",clipping:n=>n===!1?null:{prop:"overflow",value:n?"hidden":"visible"},rotation:n=>n===0?null:{prop:"transform",value:"rotate(".concat(n,"rad)")},scale:n=>n===1?null:{prop:"transform",value:"scale(".concat(n,")")},scaleX:n=>n===1?null:{prop:"transform",value:"scaleX(".concat(n,")")},scaleY:n=>n===1?null:{prop:"transform",value:"scaleY(".concat(n,")")},color:n=>n===0?null:{prop:"color",value:So(n)}},So=n=>{const r=(n&255)/255,e=n>>8&255,t=n>>16&255,o=n>>24&255;return"rgba(".concat(o,",").concat(t,",").concat(e,",").concat(r,")")},ki={id:"id"};class Ei{constructor(r,e){u(this,"root",null);u(this,"canvas",null);u(this,"height",1080);u(this,"width",1920);u(this,"scaleX",1);u(this,"scaleY",1);var i,s,a,c,d,h;if(xo())return;if(!e)throw new Error("settings is required");this.height=Math.ceil((s=e.appHeight)!=null?s:1080/((i=e.deviceLogicalPixelRatio)!=null?i:1)),this.width=Math.ceil((c=e.appWidth)!=null?c:1900/((a=e.deviceLogicalPixelRatio)!=null?a:1)),this.scaleX=(d=e.deviceLogicalPixelRatio)!=null?d:1,this.scaleY=(h=e.deviceLogicalPixelRatio)!=null?h:1,this.canvas=r,this.root=document.createElement("div"),this.setRootPosition(),document.body.appendChild(this.root),new MutationObserver(this.setRootPosition.bind(this)).observe(r,{attributes:!0,childList:!1,subtree:!1}),new ResizeObserver(this.setRootPosition.bind(this)).observe(r),window.addEventListener("resize",this.setRootPosition.bind(this)),console.warn("Inspector is enabled, this will impact performance")}setRootPosition(){if(this.root===null||this.canvas===null)return;const r=this.canvas.getBoundingClientRect(),e=document.documentElement.scrollTop+r.top,t=document.documentElement.scrollLeft+r.left;this.root.id="root",this.root.style.left="".concat(t,"px"),this.root.style.top="".concat(e,"px"),this.root.style.width="".concat(this.width,"px"),this.root.style.height="".concat(this.height,"px"),this.root.style.position="absolute",this.root.style.transformOrigin="0 0 0",this.root.style.transform="scale(".concat(this.scaleX,", ").concat(this.scaleY,")"),this.root.style.overflow="hidden",this.root.style.zIndex="65534"}createDiv(r,e){const t=document.createElement("div");t.style.position="absolute",t.id=r.id.toString();for(const o in e)this.updateNodeProperty(t,o,e[o]);return t}createNode(r,e){const t=r.createNode(e),o=this.createDiv(t,e);return o.node=t,t.div=o,this.createProxy(t,o)}createTextNode(r,e){const t=r.createTextNode(e),o=this.createDiv(t,e);return o.node=t,t.div=o,this.createProxy(t,o)}createProxy(r,e){return new Proxy(r,{set:(t,o,i)=>(this.updateNodeProperty(e,o,i),Reflect.set(t,o,i)),get:(t,o,i)=>(o==="destroy"&&this.destroyNode(t),o==="animate"?(s,a)=>{const c=t.animate(s,a);return new Proxy(c,{get:(d,h,g)=>(h==="start"&&this.animateNode(e,r,s,a),Reflect.get(d,h,g))})}:Reflect.get(t,o,i))})}destroyNode(r){const e=document.getElementById(r.id.toString());e==null||e.remove()}updateNodeProperty(r,e,t){var o;if(!(this.root===null||t===void 0||t===null)){if(e==="parent"){const i=t.id;if(i===1){this.root.appendChild(r);return}const s=document.getElementById(i.toString());s==null||s.appendChild(r);return}if(e==="text"){r.innerHTML=String(t),r.style.visibility="hidden";return}if(e==="src"&&t){r.setAttribute("data-src",String(t));return}if(wt[e]){const i=(o=wt[e])==null?void 0:o.call(wt,t);if(i===null)return;if(typeof i=="string"){r.style.setProperty(i,String(t));return}typeof i=="object"&&r.style.setProperty(i.prop,i.value);return}if(ki[e]){r.setAttribute(String(wt[e]),String(t));return}if(e==="data"){for(const i in t)r.setAttribute("data-".concat(i),String(t[i]));return}}}animateNode(r,e,t,o){const{duration:i=1e3,delay:s=0}=o,{x:a,y:c,width:d,height:h,alpha:g=1,rotation:w=0,scale:A=1,color:p}=t;function y(){setTimeout(()=>{r.style.top="".concat(c,"px"),r.style.left="".concat(a,"px"),r.style.width="".concat(d,"px"),r.style.height="".concat(h,"px"),r.style.opacity="".concat(g),r.style.rotate="".concat(w,"rad"),r.style.scale="".concat(A),r.style.color=So(p)},i)}setTimeout(y,s)}}const Fi="modulepreload",Ni=function(n){return"/solid-demo-app/"+n},In={},Li=function(r,e,t){let o=Promise.resolve();if(e&&e.length>0){const i=document.getElementsByTagName("link"),s=document.querySelector("meta[property=csp-nonce]"),a=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));o=Promise.all(e.map(c=>{if(c=Ni(c),c in In)return;In[c]=!0;const d=c.endsWith(".css"),h=d?'[rel="stylesheet"]':"";if(!!t)for(let A=i.length-1;A>=0;A--){const p=i[A];if(p.href===c&&(!d||p.rel==="stylesheet"))return}else if(document.querySelector('link[href="'.concat(c,'"]').concat(h)))return;const w=document.createElement("link");if(w.rel=d?"stylesheet":Fi,d||(w.as="script",w.crossOrigin=""),w.href=c,a&&w.setAttribute("nonce",a),document.head.appendChild(w),d)return new Promise((A,p)=>{w.addEventListener("load",A),w.addEventListener("error",()=>p(new Error("Unable to preload CSS for ".concat(c))))})}))}return o.then(()=>r()).catch(i=>{const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=i,window.dispatchEvent(s),!s.defaultPrevented)throw i})};class ie{constructor(r){u(this,"priority",1);u(this,"name","");u(this,"ref");u(this,"target");u(this,"passParameters","");u(this,"declaredUniforms","");u(this,"uniformInfo",{});const{ref:e,target:t,props:o={}}=r;this.ref=e,this.target=t;const i={},s=[];let a="";const c=this.constructor.uniforms||{};for(const d in c){const h=c[d],g=h.type,w="".concat(e,"_").concat(d);let A="";h.size&&(A="[".concat(h.size(o),"]")),s.push(w),a+="uniform ".concat(g," ").concat(w).concat(A,";"),i[d]={name:w,uniform:c[d].method}}this.passParameters=s.join(","),this.declaredUniforms=a,this.uniformInfo=i}static getEffectKey(r){return""}static getMethodParameters(r,e){const t=[];for(const o in r){const i=r[o];let s="";i.size&&(s="[".concat(i.size(e),"]")),t.push("".concat(i.type," ").concat(o).concat(s))}return t.join(",")}static resolveDefaults(r){return{}}static makeEffectKey(r){return!1}}u(ie,"uniforms",{}),u(ie,"methods"),u(ie,"onShaderMask"),u(ie,"onColorize"),u(ie,"onEffectMask");const Mi={x:(n,r)=>{n.props.x=r},y:(n,r)=>{n.props.y=r},width:(n,r)=>{n.props.width=r},height:(n,r)=>{n.props.height=r},color:(n,r)=>{n.props.color=r},zIndex:(n,r)=>{n.props.zIndex=r},fontFamily:(n,r)=>{n.props.fontFamily=r},fontWeight:(n,r)=>{n.props.fontWeight=r},fontStyle:(n,r)=>{n.props.fontStyle=r},fontStretch:(n,r)=>{n.props.fontStretch=r},fontSize:(n,r)=>{n.props.fontSize=r},text:(n,r)=>{n.props.text=r},textAlign:(n,r)=>{n.props.textAlign=r},contain:(n,r)=>{n.props.contain=r},offsetY:(n,r)=>{n.props.offsetY=r},scrollable:(n,r)=>{n.props.scrollable=r},scrollY:(n,r)=>{n.props.scrollY=r},letterSpacing:(n,r)=>{n.props.letterSpacing=r},lineHeight:(n,r)=>{n.props.lineHeight=r},maxLines:(n,r)=>{n.props.maxLines=r},textBaseline:(n,r)=>{n.props.textBaseline=r},verticalAlign:(n,r)=>{n.props.verticalAlign=r},overflowSuffix:(n,r)=>{n.props.overflowSuffix=r},debug:(n,r)=>{n.props.debug=r}};class Ao{constructor(r){u(this,"stage");u(this,"set");this.stage=r;const e={...Mi,...this.getPropertySetters()};this.set=Object.freeze(Object.fromEntries(Object.entries(e).map(([t,o])=>[t,(i,s)=>{i.props[t]!==s&&(o(i,s),this.stage.requestRender())}])))}setStatus(r,e,t){r.status!==e&&(r.status=e,r.emitter.emit(e,t))}setIsRenderable(r,e){r.isRenderable=e}destroyState(r){["loading","loaded","failed"].forEach(t=>{r.emitter.off(t)})}scheduleUpdateState(r){r.updateScheduled||(r.updateScheduled=!0,queueMicrotask(()=>{r.updateScheduled=!1,this.updateState(r)}))}}class Bn extends gi{constructor(e,t,o){super(e,t);u(this,"fontFace");u(this,"fontUrl");const i=o.replace(/\(|\)/g,""),s=this.descriptors,a={style:s.style,weight:typeof s.weight=="number"?"".concat(s.weight):s.weight,stretch:s.stretch,unicodeRange:s.unicodeRange,variant:s.variant,featureSettings:s.featureSettings,display:s.display},c=new FontFace(e,"url(".concat(i,")"),a);c.load().then(()=>{this.loaded=!0,this.emit("loaded")}).catch(console.error),this.fontFace=c,this.fontUrl=o}}const kn=2048;function En(n,r,e,t,o){const i=n!=="bottom"?.5*r:0;return e*(t-1)+i+Math.max(e,r)+(o||0)}class zi{constructor(r,e){u(this,"_canvas");u(this,"_context");u(this,"_settings");u(this,"renderInfo");this._canvas=r,this._context=e,this._settings=this.mergeDefaults({})}set settings(r){this._settings=this.mergeDefaults(r)}get settings(){return this._settings}getPrecision(){return this._settings.precision}setFontProperties(){this._context.font=this._getFontSetting(),this._context.textBaseline=this._settings.textBaseline}_getFontSetting(){const r=[this._settings.fontFace],e=[];for(let t=0,o=r.length;t{console.warn("[Lightning] Font load error",e,r)}).then(()=>{document.fonts.check(r,this._settings.text)||console.warn("[Lightning] Font not found",r)})}catch(e){console.warn("[Lightning] Can't check font loading for "+r)}}}calculateRenderInfo(){const r={},e=this.getPrecision(),t=this._settings.paddingLeft*e,o=this._settings.paddingRight*e,i=this._settings.fontSize*e;let s=this._settings.offsetY===null?null:this._settings.offsetY*e,a=(this._settings.lineHeight||i)*e;const c=this._settings.w*e,d=this._settings.h*e;let h=this._settings.wordWrapWidth*e;const g=this._settings.cutSx*e,w=this._settings.cutEx*e,A=this._settings.cutSy*e,p=this._settings.cutEy*e,y=(this._settings.letterSpacing||0)*e,S=this._settings.textIndent*e;this.setFontProperties();let b=c||2048/this.getPrecision(),v=b-t;if(v<10&&(b+=10-v,v=10),h||(h=v),this._settings.textOverflow&&!this._settings.wordWrap){let T;switch(this._settings.textOverflow){case"clip":T="";break;case"ellipsis":T=this._settings.overflowSuffix;break;default:T=this._settings.textOverflow}this._settings.text=this.wrapWord(this._settings.text,h-S,T)}let x;if(this._settings.wordWrap)x=this.wrapText(this._settings.text,h,y,S);else{x={l:this._settings.text.split(/(?:\r\n|\r|\n)/),n:[]};const T=x.l.length;for(let _=0;_this._settings.maxLines){const T=m.slice(0,this._settings.maxLines);let _=null;if(this._settings.overflowSuffix){const O=this._settings.overflowSuffix?this.measureText(this._settings.overflowSuffix):0,D=this.wrapText(T[T.length-1],h-O,y,S);T[T.length-1]="".concat(D.l[0]).concat(this._settings.overflowSuffix),_=[D.l.length>1?D.l[1]:""]}else _=[""];let k;const z=m.length;let E=0;const P=x.n.length;for(k=this._settings.maxLines;k=128&&(this._context.globalAlpha=.01,this._context.fillRect(0,0,.01,.01),this._context.globalAlpha=1),(r.cutSx||r.cutSy)&&this._context.translate(-r.cutSx,-r.cutSy);let a,c;const d=[];for(let g=0,w=o.length;ge)for(;a>0&&(c=this._context.measureText(r.substring(0,a)).width+o,c>e);)a-=1;else for(;a=o?t:"")}wrapText(r,e,t,o=0){const i=r.split(/\r?\n/g);let s=[];const a=[];for(let c=0;cg?(A>0&&(d.push(h),h=""),h+=w[A],g=e-p-(A===0?o:0)):(g-=y,h+=" ".concat(w[A]))}d.push(h),h="",s=s.concat(d),ct+this._context.measureText(o).width+e,0):this._context.measureText(r).width}mergeDefaults(r){return{text:"",w:0,h:0,fontStyle:"normal",fontSize:40,fontFace:null,wordWrap:!0,wordWrapWidth:0,wordBreak:!1,textOverflow:"",lineHeight:null,textBaseline:"alphabetic",textAlign:"left",verticalAlign:"top",offsetY:null,maxLines:0,overflowSuffix:"...",textColor:[1,1,1,1],paddingLeft:0,paddingRight:0,shadow:!1,shadowColor:[0,0,0,1],shadowOffsetX:0,shadowOffsetY:0,shadowBlur:5,highlight:!1,highlightHeight:0,highlightColor:[0,0,0,1],highlightOffset:0,highlightPaddingLeft:0,highlightPaddingRight:0,letterSpacing:0,textIndent:0,cutSx:0,cutEx:0,cutSy:0,cutEy:0,advancedRenderer:!1,fontBaselineRatio:0,precision:1,textRenderIssueMargin:0,...r}}}const Fn=typeof self>"u"?globalThis:self;var mo;const Nn=((mo=Fn.document)==null?void 0:mo.fonts)||Fn.fonts;function Pi(n){const{fontFamily:r,fontStyle:e,fontWeight:t,fontStretch:o,fontSize:i}=n;return[e,t,o,"".concat(i,"px"),r].join(" ")}const Di=gt(0,0,0,0);class Oi extends Ao{constructor(e){super(e);u(this,"canvas");u(this,"context");u(this,"rendererBounds");typeof OffscreenCanvas<"u"?this.canvas=new OffscreenCanvas(0,0):this.canvas=document.createElement("canvas");let t=this.canvas.getContext("2d");t||(this.canvas=document.createElement("canvas"),t=this.canvas.getContext("2d")),N(t),this.context=t,this.rendererBounds={x1:0,y1:0,x2:this.stage.options.appWidth,y2:this.stage.options.appHeight}}getPropertySetters(){return{fontFamily:(e,t)=>{e.props.fontFamily=t,e.fontInfo=void 0,this.invalidateLayoutCache(e)},fontWeight:(e,t)=>{e.props.fontWeight=t,e.fontInfo=void 0,this.invalidateLayoutCache(e)},fontStyle:(e,t)=>{e.props.fontStyle=t,e.fontInfo=void 0,this.invalidateLayoutCache(e)},fontStretch:(e,t)=>{e.props.fontStretch=t,e.fontInfo=void 0,this.invalidateLayoutCache(e)},fontSize:(e,t)=>{e.props.fontSize=t,e.fontInfo=void 0,this.invalidateLayoutCache(e)},text:(e,t)=>{e.props.text=t,this.invalidateLayoutCache(e)},textAlign:(e,t)=>{e.props.textAlign=t,this.invalidateLayoutCache(e)},color:(e,t)=>{e.props.color=t,this.invalidateLayoutCache(e)},x:(e,t)=>{e.props.x=t,this.invalidateVisibleWindowCache(e)},y:(e,t)=>{e.props.y=t,this.invalidateVisibleWindowCache(e)},contain:(e,t)=>{e.props.contain=t,this.invalidateLayoutCache(e)},width:(e,t)=>{e.props.width=t,e.props.contain!=="none"&&this.invalidateLayoutCache(e)},height:(e,t)=>{e.props.height=t,e.props.contain==="both"&&this.invalidateLayoutCache(e)},offsetY:(e,t)=>{e.props.offsetY=t,this.invalidateLayoutCache(e)},scrollY:(e,t)=>{e.props.scrollY=t},letterSpacing:(e,t)=>{e.props.letterSpacing=t,this.invalidateLayoutCache(e)},lineHeight:(e,t)=>{e.props.lineHeight=t,this.invalidateLayoutCache(e)},maxLines:(e,t)=>{e.props.maxLines=t,this.invalidateLayoutCache(e)},textBaseline:(e,t)=>{e.props.textBaseline=t,this.invalidateLayoutCache(e)},verticalAlign:(e,t)=>{e.props.verticalAlign=t,this.invalidateLayoutCache(e)},overflowSuffix:(e,t)=>{e.props.overflowSuffix=t,this.invalidateLayoutCache(e)}}}canRenderFont(e){return!0}isFontFaceSupported(e){return e instanceof Bn}addFontFace(e){N(e instanceof Bn),Nn.add(e.fontFace)}createState(e){return{props:e,status:"initialState",updateScheduled:!1,emitter:new nt,canvasPages:void 0,lightning2TextRenderer:new zi(this.canvas,this.context),renderWindow:void 0,visibleWindow:{x1:0,y1:0,x2:0,y2:0,valid:!1},renderInfo:void 0,forceFullLayoutCalc:!1,textW:0,textH:0,fontInfo:void 0,fontFaceLoadedHandler:void 0,isRenderable:!1,debugData:{updateCount:0,layoutCount:0,drawCount:0,lastLayoutNumCharacters:0,layoutSum:0,drawSum:0,bufferSize:0}}}updateState(e){var p,y;if(e.status==="initialState"&&this.setStatus(e,"loading"),!e.fontInfo){const S=Pi(e.props);if(e.fontInfo={cssString:S,loaded:!1},!e.fontInfo.loaded){Nn.load(S).then(this.onFontLoaded.bind(this,e,S)).catch(this.onFontLoadError.bind(this,e,S));return}}if(!e.fontInfo.loaded)return;if(!e.renderInfo){const S=e.props.maxLines,b=e.props.contain==="both"?Math.floor((e.props.height-e.props.offsetY)/e.props.lineHeight):0,v=b>0&&S>0?Math.min(b,S):Math.max(b,S);e.lightning2TextRenderer.settings={text:e.props.text,textAlign:e.props.textAlign,fontFace:e.props.fontFamily,fontSize:e.props.fontSize,fontStyle:[e.props.fontStretch,e.props.fontStyle,e.props.fontWeight].join(" "),textColor:ke(e.props.color),offsetY:e.props.fontSize+e.props.offsetY,wordWrap:e.props.contain!=="none",wordWrapWidth:e.props.contain==="none"?void 0:e.props.width,letterSpacing:e.props.letterSpacing,lineHeight:e.props.lineHeight,maxLines:v,textBaseline:e.props.textBaseline,verticalAlign:e.props.verticalAlign,overflowSuffix:e.props.overflowSuffix},e.renderInfo=e.lightning2TextRenderer.calculateRenderInfo(),e.textH=e.renderInfo.lineHeight*e.renderInfo.lines.length,e.textW=e.renderInfo.width,e.renderWindow=void 0}const{x:t,y:o,width:i,height:s,scrollY:a,contain:c}=e.props,{visibleWindow:d}=e;let{renderWindow:h,canvasPages:g}=e;if(!d.valid){const S=gt(t,o,c!=="none"?t+i:1/0,c==="both"?o+s:1/0,Di);pi(this.rendererBounds,S,d),d.valid=!0}const w=d.y2-d.y1,A=Math.ceil(w/e.renderInfo.lineHeight);if(w===0){g=void 0,h=void 0,this.setStatus(e,"loaded");return}else if(h&&g){const S=t+h.x1,b=o-a+h.y1,v=t+h.x2,x=o-a+h.y2;if(S<=d.x1&&v>=d.x2&&b<=d.y1&&x>=d.y2){this.setStatus(e,"loaded");return}xd.y1&&(h.y1-=A*e.renderInfo.lineHeight,h.y2-=A*e.renderInfo.lineHeight,g.unshift(g.pop()),g[0].lineNumStart=g[1].lineNumStart-A,g[0].lineNumEnd=g[0].lineNumStart+A,g[0].valid=!1)}else{const S=e.renderInfo.lineHeight*A,b=Math.ceil(a/S),v=b*A,x=v-A,m=v+A;g=[{texture:g==null?void 0:g[0].texture,lineNumStart:x,lineNumEnd:x+A,valid:!1},{texture:g==null?void 0:g[1].texture,lineNumStart:v,lineNumEnd:v+A,valid:!1},{texture:g==null?void 0:g[2].texture,lineNumStart:m,lineNumEnd:m+A,valid:!1}],e.canvasPages=g;const C=b*S;h={x1:0,y1:C-S,x2:i,y2:C+S*2}}e.renderWindow=h,performance.now();for(const S of g)if(!S.valid){if(S.lineNumStart<0){(p=S.texture)==null||p.setRenderableOwner(e,!1),S.texture=this.stage.txManager.loadTexture("ImageTexture",{src:""}),S.texture.setRenderableOwner(e,e.isRenderable),S.valid=!0;continue}e.lightning2TextRenderer.draw(e.renderInfo,{lines:e.renderInfo.lines.slice(S.lineNumStart,S.lineNumEnd),lineWidths:e.renderInfo.lineWidths.slice(S.lineNumStart,S.lineNumEnd)}),this.canvas.width===0||this.canvas.height===0||((y=S.texture)==null||y.setRenderableOwner(e,!1),S.texture=this.stage.txManager.loadTexture("ImageTexture",{src:this.context.getImageData(0,0,this.canvas.width,this.canvas.height)},{preload:!0}),S.texture.setRenderableOwner(e,e.isRenderable)),S.valid=!0}this.setStatus(e,"loaded")}renderQuads(e,t,o,i){var T,_,k,z,E,P,O,D,U,j,se,re;const{stage:s}=this,{canvasPages:a,textW:c=0,textH:d=0,renderWindow:h}=e;if(!a||!h)return;const{x:g,y:w,scrollY:A,contain:p,width:y,height:S}=e.props,b={x:g,y:w,width:p!=="none"?y:c,height:p==="both"?S:d};Zr({x:0,y:0,width:s.options.appWidth,height:s.options.appHeight},b),N(a,"canvasPages is not defined"),N(h,"renderWindow is not defined");const x=(h.y2-h.y1)/3,{zIndex:m,color:C}=e.props,I=i*mi(C),R=Ct(4294967295,I);a[0].valid&&this.stage.renderer.addQuad({alpha:I,clippingRect:o,colorBl:R,colorBr:R,colorTl:R,colorTr:R,width:((_=(T=a[0].texture)==null?void 0:T.dimensions)==null?void 0:_.width)||0,height:((z=(k=a[0].texture)==null?void 0:k.dimensions)==null?void 0:z.height)||0,texture:a[0].texture,textureOptions:{},shader:null,shaderProps:null,zIndex:m,tx:t.tx,ty:t.ty-A+h.y1,ta:t.ta,tb:t.tb,tc:t.tc,td:t.td}),a[1].valid&&this.stage.renderer.addQuad({alpha:I,clippingRect:o,colorBl:R,colorBr:R,colorTl:R,colorTr:R,width:((P=(E=a[1].texture)==null?void 0:E.dimensions)==null?void 0:P.width)||0,height:((D=(O=a[1].texture)==null?void 0:O.dimensions)==null?void 0:D.height)||0,texture:a[1].texture,textureOptions:{},shader:null,shaderProps:null,zIndex:m,tx:t.tx,ty:t.ty-A+h.y1+x,ta:t.ta,tb:t.tb,tc:t.tc,td:t.td}),a[2].valid&&this.stage.renderer.addQuad({alpha:I,clippingRect:o,colorBl:R,colorBr:R,colorTl:R,colorTr:R,width:((j=(U=a[2].texture)==null?void 0:U.dimensions)==null?void 0:j.width)||0,height:((re=(se=a[2].texture)==null?void 0:se.dimensions)==null?void 0:re.height)||0,texture:a[2].texture,textureOptions:{},shader:null,shaderProps:null,zIndex:m,tx:t.tx,ty:t.ty-A+h.y1+x+x,ta:t.ta,tb:t.tb,tc:t.tc,td:t.td})}setIsRenderable(e,t){var o;super.setIsRenderable(e,t),(o=e.canvasPages)==null||o.forEach(i=>{var s;(s=i.texture)==null||s.setRenderableOwner(e,t)})}destroyState(e){var t;(t=e.canvasPages)==null||t.forEach(o=>{var i;(i=o.texture)==null||i.setRenderableOwner(e,!1)})}invalidateVisibleWindowCache(e){e.visibleWindow.valid=!1,this.setStatus(e,"loading"),this.scheduleUpdateState(e)}invalidateLayoutCache(e){e.renderInfo=void 0,e.visibleWindow.valid=!1,this.setStatus(e,"loading"),this.scheduleUpdateState(e)}onFontLoaded(e,t){var o;t!==((o=e.fontInfo)==null?void 0:o.cssString)||!e.fontInfo||(e.fontInfo.loaded=!0,this.scheduleUpdateState(e))}onFontLoadError(e,t,o){var i;t!==((i=e.fontInfo)==null?void 0:i.cssString)||!e.fontInfo||(e.fontInfo.loaded=!0,console.error("CanvasTextRenderer: Error loading font '".concat(e.fontInfo.cssString,"'"),o),this.scheduleUpdateState(e))}}class Co extends zt{constructor(r){super({renderer:r,attributes:["a_position","a_textureCoordinate","a_color"],uniforms:[{name:"u_resolution",uniform:"uniform2fv"},{name:"u_pixelRatio",uniform:"uniform1f"},{name:"u_texture",uniform:"uniform2fv"}]})}bindTextures(r){const{glw:e}=this;e.activeTexture(0),e.bindTexture(r[0].ctxTexture)}}u(Co,"shaderSources",{vertex:"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio;\n vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);\n\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);\n gl_Position.y = -sign(screenSpace.y) * gl_Position.y;\n }\n ",fragment:"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate);\n gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoordinate);\n }\n "});class To extends zt{constructor(e){super({renderer:e,attributes:["a_position","a_textureCoordinate","a_color","a_textureIndex"],uniforms:[{name:"u_resolution",uniform:"uniform2fv"},{name:"u_pixelRatio",uniform:"uniform1f"},{name:"u_textures[0]",uniform:"uniform1iv"}]});u(this,"supportsIndexedTextures",!0)}bindTextures(e){const{renderer:t,glw:o}=this;if(e.length>t.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS)throw new Error("DefaultShaderBatched: Cannot bind more than ".concat(t.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS," textures"));e.forEach((s,a)=>{o.activeTexture(a),o.bindTexture(s.ctxTexture)});const i=Array.from(Array(e.length).keys());this.setUniform("u_textures[0]",i)}}u(To,"shaderSources",{vertex:"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n ",fragment:e=>"\n #define txUnits ".concat(e,"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_image;\n uniform sampler2D u_textures[txUnits];\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n vec4 sampleFromTexture(sampler2D textures[").concat(e,"], int idx, vec2 uv) {\n ").concat(Array.from(Array(e).keys()).map(t=>"\n ".concat(t!==0?"else ":"","if (idx == ").concat(t,") {\n return texture2D(textures[").concat(t,"], uv);\n }\n ")).join(""),"\n return texture2D(textures[0], uv);\n }\n\n void main(){\n gl_FragColor = vec4(v_color) * sampleFromTexture(u_textures, int(v_textureIndex), v_textureCoordinate);\n }\n ")});const Rr=new Map,Wi=(n,r)=>{const e=JSON.stringify(n);if(Rr.has(e))return Rr.get(e);const t=(n!=null?n:[]).map(o=>({type:o.type,props:r[o.type].resolveDefaults(o.props||{})}));return Rr.set(e,t),t},Ne=class Ne extends zt{constructor(e,t,o){const i=Ne.createShader(t,o);super({renderer:e,attributes:["a_position","a_textureCoordinate","a_color"],uniforms:[{name:"u_resolution",uniform:"uniform2fv"},{name:"u_pixelRatio",uniform:"uniform1f"},{name:"u_texture",uniform:"uniform2fv"},{name:"u_dimensions",uniform:"uniform2fv"},{name:"u_alpha",uniform:"uniform1f"},...i.uniforms],shaderSources:{vertex:i.vertex,fragment:i.fragment}});u(this,"effects",[]);this.effects=i.effects,this.calculateProps=yo(this.calculateProps.bind(this))}bindTextures(e){const{glw:t}=this;t.activeTexture(0),t.bindTexture(e[0].ctxTexture)}calculateProps(e){const t=this.renderer.shManager.getRegisteredEffects(),o=[];return e==null||e.forEach((i,s)=>{var g;const a=this.effects[s],c=t[a.name],d=(g=i.props)!=null?g:{},h=a.uniformInfo;Object.keys(d).forEach(w=>{const A=c.uniforms[w],p=h[w];let y=A.validator?A.validator(d[w],d):d[w];Array.isArray(y)&&(y=new Float32Array(y)),o.push({name:p.name,value:y})})}),o}bindProps(e){this.calculateProps(e.effects).forEach(o=>{this.setUniform(o.name,o.value)})}canBatchShaderProps(e,t){if(e.$dimensions.width!==t.$dimensions.width||e.$dimensions.height!==t.$dimensions.height||e.effects.length!==t.effects.length)return!1;const o=e.effects.length;let i=0;for(;i{const y=t[p.type],S=y.getEffectKey(p.props||{});o[S]=o[S]?++o[S]:1;const b=o[S];b===1&&c.push({key:S,type:p.type,props:p.props});const v=new y({ref:"".concat(S).concat(b===1?"":b),target:S,props:p.props});return s+=v.declaredUniforms,a.push(...Object.values(v.uniformInfo)),v});let h="";c==null||c.forEach(p=>{var R;const y=t[p.type],S=y.resolveDefaults((R=p.props)!=null?R:{}),b=[];for(const T in y.methods){let _=T;const k=y.methods[T];i[T]&&i[T]!==k&&(_=Ne.resolveMethodDuplicate(T,k,i)),i[_]=k.replace("function",_),b.push({m:T,cm:_})}let v=y.onShaderMask instanceof Function?y.onShaderMask(S):y.onShaderMask,x=y.onColorize instanceof Function?y.onColorize(S):y.onColorize,m=y.onEffectMask instanceof Function?y.onEffectMask(S):y.onEffectMask;b.forEach(T=>{const{m:_,cm:k}=T,z=new RegExp("\\$".concat(_),"g");v&&(v=v.replace(z,k)),x&&(x=x.replace(z,k)),m&&(m=m.replace(z,k))});const C=y.getMethodParameters(y.uniforms,S),I=C.length>0?", ".concat(C):"";v&&(h+="\n float fx_".concat(p.key,"_onShaderMask(float shaderMask ").concat(I,") {\n ").concat(v,"\n }\n ")),x&&(h+="\n vec4 fx_".concat(p.key,"_onColorize(float shaderMask, vec4 maskColor, vec4 shaderColor").concat(I,") {\n ").concat(x,"\n }\n ")),m&&(h+="\n vec4 fx_".concat(p.key,"_onEffectMask(float shaderMask, vec4 maskColor, vec4 shaderColor").concat(I,") {\n ").concat(m,"\n }\n "))});let g="";for(const p in i)g+=i[p];let w="mix(shaderColor, maskColor, clamp(-(lng_DefaultMask), 0.0, 1.0))",A="\n\n ";for(let p=0;p0?", ".concat(y.passParameters):"",b=t[y.name];b.onShaderMask&&(A+="\n shaderMask = fx_".concat(y.target,"_onShaderMask(shaderMask ").concat(S,");\n ")),b.onColorize&&(A+="\n maskColor = fx_".concat(y.target,"_onColorize(shaderMask, maskColor, shaderColor").concat(S,");\n ")),b.onEffectMask&&(w="fx_".concat(y.target,"_onEffectMask(shaderMask, maskColor, shaderColor").concat(S,")"));const v=d[p+1];(v===void 0||t[v.name].onEffectMask)&&(A+="\n shaderColor = ".concat(w,";\n "))}return{effects:d,uniforms:a,fragment:Ne.fragment(s,g,h,A),vertex:Ne.vertex()}}static resolveMethodDuplicate(e,t,o,i=0){const s=e+(i>0?i:"");return o[s]&&o[s]!==t?this.resolveMethodDuplicate(e,t,o,++i):s}static resolveDefaults(e,t){return{effects:Wi(e.effects,t),$dimensions:{width:0,height:0},$alpha:0}}static makeCacheKey(e,t){var i;let o="";return(i=e.effects)==null||i.forEach(s=>{const c=t[s.type].getEffectKey(s.props||{});o+=",".concat(c)}),"DynamicShader".concat(o)}};u(Ne,"z$__type__Props"),u(Ne,"vertex",()=>"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n "),u(Ne,"fragment",(e,t,o,i)=>"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n #define PI 3.14159265359\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_alpha;\n uniform float u_radius;\n uniform sampler2D u_texture;\n uniform float u_pixelRatio;\n\n ".concat(e,"\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n ").concat(t,"\n\n ").concat(o,"\n\n void main() {\n vec2 p = v_textureCoordinate.xy * u_dimensions - u_dimensions * 0.5;\n vec2 d = abs(p) - (u_dimensions) * 0.5;\n float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n\n vec4 shaderColor = vec4(0.0);\n float shaderMask = lng_DefaultMask;\n\n vec4 maskColor = texture2D(u_texture, v_textureCoordinate) * v_color;\n\n shaderColor = mix(shaderColor, maskColor, clamp(-(lng_DefaultMask + 0.5), 0.0, 1.0));\n\n ").concat(i,"\n\n gl_FragColor = shaderColor * u_alpha;\n }\n "));let pt=Ne;class Lr extends zt{constructor(r){super({renderer:r,attributes:["a_position","a_textureCoordinate","a_color"],uniforms:[{name:"u_resolution",uniform:"uniform2fv"},{name:"u_pixelRatio",uniform:"uniform1f"},{name:"u_texture",uniform:"uniform2f"},{name:"u_dimensions",uniform:"uniform2fv"},{name:"u_radius",uniform:"uniform1f"}]})}static resolveDefaults(r){return{radius:r.radius||10,$dimensions:{width:0,height:0}}}bindTextures(r){const{glw:e}=this;e.activeTexture(0),e.bindTexture(r[0].ctxTexture)}bindProps(r){this.setUniform("u_radius",r.radius)}canBatchShaderProps(r,e){return r.radius===e.radius&&r.$dimensions.width===e.$dimensions.width&&r.$dimensions.height===e.$dimensions.height}}u(Lr,"z$__type__Props"),u(Lr,"shaderSources",{vertex:"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n ",fragment:"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_radius;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n float boxDist(vec2 p, vec2 size, float radius){\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n\n float fillMask(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color;\n vec2 halfDimensions = u_dimensions * 0.5;\n\n float d = boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);\n gl_FragColor = mix(vec4(0.0), color, fillMask(d));\n }\n "});const Ui=new Float32Array([1,0,0,0,1,0,0,0,1]),vr=class vr extends zt{constructor(r){super({renderer:r,attributes:["a_position","a_textureCoordinate"],uniforms:[{name:"u_resolution",uniform:"uniform2fv"},{name:"u_transform",uniform:"uniformMatrix3fv"},{name:"u_scrollY",uniform:"uniform1f"},{name:"u_pixelRatio",uniform:"uniform1f"},{name:"u_texture",uniform:"uniform2f"},{name:"u_color",uniform:"uniform4fv"},{name:"u_size",uniform:"uniform1f"},{name:"u_distanceRange",uniform:"uniform1f"},{name:"u_debug",uniform:"uniform1i"}]})}bindTextures(r){const{glw:e}=this;e.activeTexture(0),e.bindTexture(r[0].ctxTexture)}bindProps(r){const e=vr.resolveDefaults(r);for(const t in e)if(t==="transform")this.setUniform("u_transform",!1,e[t]);else if(t==="scrollY")this.setUniform("u_scrollY",e[t]);else if(t==="color"){const o=ke(e.color);this.setUniform("u_color",o)}else t==="size"?this.setUniform("u_size",e[t]):t==="distanceRange"?this.setUniform("u_distanceRange",e[t]):t==="debug"&&this.setUniform("u_debug",e[t]?1:0)}static resolveDefaults(r={}){var e,t,o,i,s,a;return{transform:(e=r.transform)!=null?e:Ui,scrollY:(t=r.scrollY)!=null?t:0,color:(o=r.color)!=null?o:4294967295,size:(i=r.size)!=null?i:16,distanceRange:(s=r.distanceRange)!=null?s:1,debug:(a=r.debug)!=null?a:!1}}};u(vr,"shaderSources",{vertex:"\n // an attribute is an input (in) to a vertex shader.\n // It will receive data from a buffer\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n\n uniform vec2 u_resolution;\n uniform mat3 u_transform;\n uniform float u_scrollY;\n uniform float u_pixelRatio;\n uniform float u_size;\n\n varying vec2 v_texcoord;\n\n void main() {\n vec2 scrolledPosition = a_position * u_size - vec2(0, u_scrollY);\n vec2 transformedPosition = (u_transform * vec3(scrolledPosition, 1)).xy;\n\n // Calculate screen space with pixel ratio\n vec2 screenSpace = (transformedPosition * u_pixelRatio / u_resolution * 2.0 - 1.0) * vec2(1, -1);\n\n gl_Position = vec4(screenSpace, 0.0, 1.0);\n v_texcoord = a_textureCoordinate;\n\n }\n ",fragment:"\n precision highp float;\n\n uniform vec4 u_color;\n uniform sampler2D u_texture;\n uniform float u_distanceRange;\n uniform float u_pixelRatio;\n uniform int u_debug;\n\n varying vec2 v_texcoord;\n\n float median(float r, float g, float b) {\n return max(min(r, g), min(max(r, g), b));\n }\n\n void main() {\n vec3 sample = texture2D(u_texture, v_texcoord).rgb;\n if (u_debug == 1) {\n gl_FragColor = vec4(sample.r, sample.g, sample.b, 1.0);\n return;\n }\n float scaledDistRange = u_distanceRange * u_pixelRatio;\n float sigDist = scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);\n float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_color.a;\n\n // Build the final color.\n // IMPORTANT: We must premultiply the color by the alpha value before returning it.\n gl_FragColor = vec4(u_color.r * opacity, u_color.g * opacity, u_color.b * opacity, opacity);\n }\n "});let Mr=vr;class at extends ie{constructor(){super(...arguments);u(this,"name","radius")}static getEffectKey(){return"radius"}static resolveDefaults(e){var t;return{radius:(t=e.radius)!=null?t:10}}}u(at,"z$__type__Props"),u(at,"uniforms",{radius:{value:0,method:"uniform4fv",type:"vec4",validator:e=>{let t=e;return Array.isArray(t)?t.length===2?t=[t[0],t[1],t[0],t[1]]:t.length===3?t=[t[0],t[1],t[2],t[0]]:t.length!==4&&(t=[t[0],t[0],t[0],t[0]]):typeof t=="number"&&(t=[t,t,t,t]),t}}}),u(at,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",boxDist:"\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n "}),u(at,"onShaderMask","\n vec2 halfDimensions = u_dimensions * 0.5;\n float r = radius[0] * step(v_textureCoordinate.x, 0.5) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[1] * step(0.5, v_textureCoordinate.x) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[2] * step(0.5, v_textureCoordinate.x) * step(0.5, v_textureCoordinate.y);\n r = r + radius[3] * step(v_textureCoordinate.x, 0.5) * step(0.5, v_textureCoordinate.y);\n return $boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions, r);\n "),u(at,"onEffectMask","\n return mix(vec4(0.0), maskColor, $fillMask(shaderMask));\n ");class Tt extends ie{constructor(){super(...arguments);u(this,"name","border")}static getEffectKey(){return"border"}static resolveDefaults(e){var t,o;return{width:(t=e.width)!=null?t:10,color:(o=e.color)!=null?o:4294967295}}}u(Tt,"z$__type__Props"),u(Tt,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>ke(e),method:"uniform4fv",type:"vec4"}}),u(Tt,"onEffectMask","\n float mask = clamp(shaderMask + width, 0.0, 1.0) - clamp(shaderMask, 0.0, 1.0);\n return mix(shaderColor, mix(shaderColor, maskColor, maskColor.a), mask);\n "),u(Tt,"onColorize","\n return color;\n ");const Ye=class Ye extends ie{constructor(){super(...arguments);u(this,"name","linearGradient")}static getEffectKey(e){return"linearGradient".concat(e.colors.length)}static resolveDefaults(e){var i,s;const t=(i=e.colors)!=null?i:[4278190080,4294967295];let o=e.stops||[];if(o.length===0||o.length!==t.length){const a=t.length;let c=0;const d=o;for(;ce.map(o=>ke(o)).reduce((o,i)=>o.concat(i),[]),size:e=>e.colors.length,method:"uniform4fv",type:"vec4"},stops:{value:[],size:e=>e.colors.length,method:"uniform1fv",type:"float"}}),u(Ye,"methods",{fromLinear:"\n vec4 function(vec4 linearRGB) {\n vec4 higher = vec4(1.055)*pow(linearRGB, vec4(1.0/2.4)) - vec4(0.055);\n vec4 lower = linearRGB * vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n ",toLinear:"\n vec4 function(vec4 sRGB) {\n vec4 higher = pow((sRGB + vec4(0.055))/vec4(1.055), vec4(2.4));\n vec4 lower = sRGB/vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n ",calcPoint:"\n vec2 function(float d, float angle) {\n return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);\n }\n "}),u(Ye,"ColorLoop",e=>{let t="";for(let o=2;o{const t=e.colors.length||1;return"\n float a = angle - (PI / 180.0 * 90.0);\n float lineDist = abs(u_dimensions.x * cos(a)) + abs(u_dimensions.y * sin(a));\n vec2 f = $calcPoint(lineDist * 0.5, a);\n vec2 t = $calcPoint(lineDist * 0.5, a + PI);\n vec2 gradVec = t - f;\n float dist = dot(v_textureCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = $fromLinear(mix($toLinear(colors[0]), $toLinear(colors[1]), stopCalc));\n ".concat(Ye.ColorLoop(t),"\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n ")});let zr=Ye;class Pr extends ie{constructor(){super(...arguments);u(this,"name","grayscale")}static getEffectKey(){return"grayscale"}static resolveDefaults(e){var t;return{amount:(t=e.amount)!=null?t:1}}}u(Pr,"uniforms",{amount:{value:1,method:"uniform1f",type:"float"}}),u(Pr,"onColorize","\n float grayness = 0.2 * maskColor.r + 0.6 * maskColor.g + 0.2 * maskColor.b;\n return vec4(amount * vec3(grayness) + (1.0 - amount) * maskColor.rgb, maskColor.a);\n ");class lt extends ie{constructor(){super(...arguments);u(this,"name","borderRight")}static getEffectKey(){return"borderRight"}static resolveDefaults(e){var t,o;return{width:(t=e.width)!=null?t:10,color:(o=e.color)!=null?o:4294967295}}}u(lt,"z$__type__Props"),u(lt,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>ke(e),method:"uniform4fv",type:"vec4"}}),u(lt,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",rectDist:"\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n "}),u(lt,"onEffectMask","\n vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "),u(lt,"onColorize","\n return color;\n ");class ct extends ie{constructor(){super(...arguments);u(this,"name","borderTop")}static getEffectKey(){return"borderTop"}static resolveDefaults(e){var t,o;return{width:(t=e.width)!=null?t:10,color:(o=e.color)!=null?o:4294967295}}}u(ct,"z$__type__Props"),u(ct,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>ke(e),method:"uniform4fv",type:"vec4"}}),u(ct,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",rectDist:"\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n "}),u(ct,"onEffectMask","\n vec2 pos = vec2(0.0, width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "),u(ct,"onColorize","\n return color;\n ");class dt extends ie{constructor(){super(...arguments);u(this,"name","borderBottom")}static getEffectKey(){return"borderBottom"}static resolveDefaults(e){var t,o;return{width:(t=e.width)!=null?t:10,color:(o=e.color)!=null?o:4294967295}}}u(dt,"z$__type__Props"),u(dt,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>ke(e),method:"uniform4fv",type:"vec4"}}),u(dt,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",rectDist:"\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n "}),u(dt,"onEffectMask","\n vec2 pos = vec2(0.0, u_dimensions.y - width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "),u(dt,"onColorize","\n return color;\n ");class ut extends ie{constructor(){super(...arguments);u(this,"name","borderLeft")}static getEffectKey(){return"borderLeft"}static resolveDefaults(e){var t,o;return{width:(t=e.width)!=null?t:10,color:(o=e.color)!=null?o:4294967295}}}u(ut,"z$__type__Props"),u(ut,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>ke(e),method:"uniform4fv",type:"vec4"}}),u(ut,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",rectDist:"\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n "}),u(ut,"onEffectMask","\n vec2 pos = vec2(width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "),u(ut,"onColorize","\n return color;\n ");class _t extends ie{constructor(){super(...arguments);u(this,"name","glitch")}static getEffectKey(e){return"glitch"}static resolveDefaults(e){var t,o,i,s,a;return{amplitude:(t=e.amplitude)!=null?t:.2,narrowness:(o=e.narrowness)!=null?o:4,blockiness:(i=e.blockiness)!=null?i:2,minimizer:(s=e.minimizer)!=null?s:8,time:(a=e.time)!=null?a:Date.now()}}}u(_t,"z$__type__Props"),u(_t,"uniforms",{amplitude:{value:0,method:"uniform1f",type:"float"},narrowness:{value:0,method:"uniform1f",type:"float"},blockiness:{value:0,method:"uniform1f",type:"float"},minimizer:{value:0,method:"uniform1f",type:"float"},time:{value:0,method:"uniform1f",validator:e=>(Date.now()-e)%1e3,type:"float"}}),u(_t,"methods",{rand:"\n float function(vec2 p, float time) {\n float t = floor(time * 20.) / 10.;\n return fract(sin(dot(p, vec2(t * 12.9898, t * 78.233))) * 43758.5453);\n }\n ",noise:"\n float function(vec2 uv, float blockiness, float time) {\n vec2 lv = fract(uv);\n vec2 id = floor(uv);\n\n float n1 = rand(id, time);\n float n2 = rand(id+vec2(1,0), time);\n float n3 = rand(id+vec2(0,1), time);\n float n4 = rand(id+vec2(1,1), time);\n vec2 u = smoothstep(0.0, 1.0 + blockiness, lv);\n return mix(mix(n1, n2, u.x), mix(n3, n4, u.x), u.y);\n }\n ",fbm:"\n float function(vec2 uv, int count, float blockiness, float complexity, float time) {\n float val = 0.0;\n float amp = 0.5;\n const int MAX_ITERATIONS = 10;\n\n for(int i = 0; i < MAX_ITERATIONS; i++) {\n if(i >= count) {break;}\n val += amp * noise(uv, blockiness, time);\n amp *= 0.5;\n uv *= complexity;\n }\n return val;\n }\n "}),u(_t,"onColorize","\n vec2 uv = v_textureCoordinate.xy;\n float aspect = u_dimensions.x / u_dimensions.y;\n vec2 a = vec2(uv.x * aspect , uv.y);\n vec2 uv2 = vec2(a.x / u_dimensions.x, exp(a.y));\n\n float shift = amplitude * pow($fbm(uv2, 4, blockiness, narrowness, time), minimizer);\n float colR = texture2D(u_texture, vec2(uv.x + shift, uv.y)).r * (1. - shift);\n float colG = texture2D(u_texture, vec2(uv.x - shift, uv.y)).g * (1. - shift);\n float colB = texture2D(u_texture, vec2(uv.x - shift, uv.y)).b * (1. - shift);\n\n vec3 f = vec3(colR, colG, colB);\n return vec4(f, texture2D(u_texture, vec2(uv.x - shift, uv.y)).a);\n ");class ir extends ie{constructor(){super(...arguments);u(this,"name","fadeOut")}static getEffectKey(){return"fadeOut"}static resolveDefaults(e){var t;return{fade:(t=e.fade)!=null?t:10}}}u(ir,"z$__type__Props"),u(ir,"uniforms",{fade:{value:0,method:"uniform4fv",type:"vec4",validator:e=>{let t=e;return Array.isArray(t)?t.length===2?t=[t[0],t[1],t[0],t[1]]:t.length===3?t=[t[0],t[1],t[2],t[0]]:t.length!==4&&(t=[t[0],t[0],t[0],t[0]]):typeof t=="number"&&(t=[t,t,t,t]),t}}}),u(ir,"onColorize","\n vec2 point = v_textureCoordinate.xy * u_dimensions.xy;\n vec2 pos1;\n vec2 pos2;\n vec2 d;\n float c;\n vec4 result = maskColor;\n\n\n if(fade[0] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x, point.y + fade[0]);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[1] > 0.0) {\n pos1 = vec2(point.x - u_dimensions.x - fade[1], v_textureCoordinate.y);\n pos2 = vec2(point.x - u_dimensions.x, v_textureCoordinate.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[2] > 0.0) {\n pos1 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y - fade[2]);\n pos2 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[3] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x + fade[3], point.y);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n return result;\n ");const Ze=class Ze extends ie{constructor(){super(...arguments);u(this,"name","radialGradient")}static getEffectKey(e){return"radialGradient".concat(e.colors.length)}static resolveDefaults(e){var i,s,a,c,d;const t=(i=e.colors)!=null?i:[4278190080,4294967295];let o=e.stops||[];if(o.length===0||o.length!==t.length){const h=t.length;let g=0;const w=o;for(;ge.map(o=>ke(o)).reduce((o,i)=>o.concat(i),[]),size:e=>e.colors.length,method:"uniform4fv",type:"vec4"},stops:{value:[],size:e=>e.colors.length,method:"uniform1fv",type:"float"}}),u(Ze,"ColorLoop",e=>{let t="";for(let o=2;o{const t=e.colors.length||1;return"\n vec2 point = v_textureCoordinate.xy * u_dimensions;\n vec2 projection = vec2(pivot.x * u_dimensions.x, pivot.y * u_dimensions.y);\n\n float dist = length((point - projection) / vec2(width, height));\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = mix(colors[0], colors[1], stopCalc);\n ".concat(Ze.ColorLoop(t),"\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n ")});let Dr=Ze;class ht extends ie{constructor(){super(...arguments);u(this,"name","radialProgress")}static getEffectKey(){return"radialProgress"}static resolveDefaults(e){var t,o,i,s,a,c,d;return{width:(t=e.width)!=null?t:10,progress:(o=e.progress)!=null?o:.5,offset:(i=e.offset)!=null?i:0,range:(s=e.range)!=null?s:Math.PI*2,rounded:(a=e.rounded)!=null?a:!1,radius:(c=e.radius)!=null?c:1,color:(d=e.color)!=null?d:4294967295}}}u(ht,"z$__type__Props"),u(ht,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},progress:{value:.5,method:"uniform1f",type:"float"},offset:{value:0,method:"uniform1f",type:"float"},range:{value:0,method:"uniform1f",type:"float"},rounded:{value:0,method:"uniform1f",type:"float",validator:e=>e?1:0},radius:{value:1,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>ke(e),method:"uniform4fv",type:"vec4"}}),u(ht,"methods",{rotateUV:"\n vec2 function(vec2 uv, float d) {\n float s = sin(d);\n float c = cos(d);\n mat2 rotMatrix = mat2(c, -s, s, c);\n return uv * rotMatrix;\n }\n ",drawDot:"\n float function(vec2 uv, vec2 p, float r) {\n uv += p;\n float circle = length(uv) - r;\n return clamp(-circle, 0.0, 1.0);\n }\n "}),u(ht,"onEffectMask","\n float outerRadius = radius * u_dimensions.y * 0.5;\n\n float endAngle = range * progress - 0.0005;\n\n vec2 uv = v_textureCoordinate.xy * u_dimensions.xy - u_dimensions * 0.5;\n\n uv = $rotateUV(uv, -(offset));\n float linewidth = width * u_pixelRatio;\n float circle = length(uv) - (outerRadius - linewidth) ;\n circle = abs(circle) - linewidth;\n circle = clamp(-circle, 0.0, 1.0);\n\n float angle = (atan(uv.x, -uv.y) / 3.14159265359 * 0.5);\n float p = endAngle / (PI * 2.);\n\n circle *= step(fract(angle), fract(p));\n\n circle = rounded < 1. ? circle : max(circle, $drawDot(uv, vec2(0, outerRadius - linewidth), linewidth));\n circle = rounded < 1. ? circle : max(circle, $drawDot($rotateUV(uv, -(endAngle)), vec2(0, outerRadius - linewidth), linewidth));\n\n return mix(shaderColor, maskColor, circle);\n "),u(ht,"onColorize","\n return color;\n ");class ft extends ie{constructor(){super(...arguments);u(this,"name","holePunch")}static getEffectKey(){return"holePunch"}static resolveDefaults(e){var t;return{x:e.x||0,y:e.y||0,width:e.width||50,height:e.height||50,radius:(t=e.radius)!=null?t:0}}}u(ft,"z$__type__Props"),u(ft,"uniforms",{x:{value:0,method:"uniform1f",type:"float"},y:{value:0,method:"uniform1f",type:"float"},width:{value:0,method:"uniform1f",type:"float"},height:{value:0,method:"uniform1f",type:"float"},radius:{value:0,method:"uniform4fv",type:"vec4",validator:e=>{let t=e;return Array.isArray(t)?t.length===2?t=[t[0],t[1],t[0],t[1]]:t.length===3?t=[t[0],t[1],t[2],t[0]]:t.length!==4&&(t=[t[0],t[0],t[0],t[0]]):typeof t=="number"&&(t=[t,t,t,t]),t}}}),u(ft,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",boxDist:"\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n "}),u(ft,"onShaderMask","\n vec2 halfDimensions = u_dimensions * 0.5;\n vec2 size = vec2(width, height) * 0.5;\n vec2 basePos = v_textureCoordinate.xy * u_dimensions.xy - vec2(x, y);\n vec2 pos = basePos - size;\n float r = radius[0] * step(pos.x, 0.5) * step(pos.y, 0.5);\n r = r + radius[1] * step(0.5, pos.x) * step(pos.y, 0.5);\n r = r + radius[2] * step(0.5, pos.x) * step(0.5, pos.y);\n r = r + radius[3] * step(pos.x, 0.5) * step(0.5, pos.y);\n return $boxDist(pos, size, r);\n "),u(ft,"onEffectMask","\n return mix(maskColor, vec4(0.0), $fillMask(shaderMask));\n ");class Yi{constructor(){u(this,"shCache",new Map);u(this,"shConstructors",{});u(this,"attachedShader",null);u(this,"effectConstructors",{});u(this,"renderer");this.registerShaderType("DefaultShader",Co),this.registerShaderType("DefaultShaderBatched",To),this.registerShaderType("RoundedRectangle",Lr),this.registerShaderType("DynamicShader",pt),this.registerShaderType("SdfShader",Mr),this.registerEffectType("border",Tt),this.registerEffectType("borderBottom",dt),this.registerEffectType("borderLeft",ut),this.registerEffectType("borderRight",lt),this.registerEffectType("borderTop",ct),this.registerEffectType("fadeOut",ir),this.registerEffectType("linearGradient",zr),this.registerEffectType("radialGradient",Dr),this.registerEffectType("grayscale",Pr),this.registerEffectType("glitch",_t),this.registerEffectType("radius",at),this.registerEffectType("radialProgress",ht),this.registerEffectType("holePunch",ft)}registerShaderType(r,e){this.shConstructors[r]=e}registerEffectType(r,e){this.effectConstructors[r]=e}getRegisteredEffects(){return this.effectConstructors}getRegisteredShaders(){return this.shConstructors}loadShader(r,e){if(!this.renderer)throw new Error("Renderer is not been defined");const t=this.shConstructors[r];if(!t)throw new Error('Shader type "'.concat(r,'" is not registered'));if(r==="DynamicShader")return this.loadDynamicShader(e);const o=t.resolveDefaults(e),i=t.makeCacheKey(o)||t.name;if(i&&this.shCache.has(i))return{shader:this.shCache.get(i),props:o};const s=new t(this.renderer,e);return i&&this.shCache.set(i,s),{shader:s,props:o}}loadDynamicShader(r){if(!this.renderer)throw new Error("Renderer is not been defined");const e=pt.resolveDefaults(r,this.effectConstructors),t=pt.makeCacheKey(e,this.effectConstructors);if(t&&this.shCache.has(t))return{shader:this.shCache.get(t),props:e};const o=new pt(this.renderer,r,this.effectConstructors);return t&&this.shCache.set(t,o),{shader:o,props:e}}useShader(r){this.attachedShader!==r&&(this.attachedShader&&this.attachedShader.detach(),r.attach(),this.attachedShader=r)}}class $i{constructor(){u(this,"data",{})}reset(){this.data={}}increment(r){this.data[r]||(this.data[r]=0),this.data[r]++}getData(){return{...this.data}}}function Hi(n){return/\.(ktx|pvr)$/.test(n)}const ji=async n=>{const e=await(await fetch(n)).arrayBuffer();return n.indexOf(".ktx")!==-1?Qi(e):Xi(e)},Qi=async n=>{const r=new DataView(n),e=r.getUint32(12)===16909060,t=[],o={glInternalFormat:r.getUint32(28,e),pixelWidth:r.getUint32(36,e),pixelHeight:r.getUint32(40,e),numberOfMipmapLevels:r.getUint32(56,e),bytesOfKeyValueData:r.getUint32(60,e)};let i=64;i+=o.bytesOfKeyValueData;for(let s=0;s{const a=n,c=new Int32Array(a,0,13),d=c[12]+52,h=new Uint8Array(a,d),g=[],w={pixelWidth:c[7],pixelHeight:c[6],numberOfMipmapLevels:c[11]||0};let A=0,p=w.pixelWidth||0,y=w.pixelHeight||0;for(let S=0;S>2)*(y+3>>2)*8,v=new Uint8Array(a,h.byteOffset+A,b);g.push(v),A+=b,p=p>>1,y=y>>1}return{data:{glInternalFormat:36196,mipmaps:g,width:w.pixelWidth||0,height:w.pixelHeight||0,type:"pvr"},premultiplyAlpha:!1}},Ft=class Ft extends vo{constructor(e,t){super(e);u(this,"props");this.props=Ft.resolveDefaults(t)}hasAlphaChannel(e){return e.indexOf("image/png")!==-1}async getTextureData(){const{src:e,premultiplyAlpha:t}=this.props;if(!e)return{data:null};if(e instanceof ImageData)return{data:e,premultiplyAlpha:t};if(Hi(e))return ji(e);if(this.txManager.imageWorkerManager)return await this.txManager.imageWorkerManager.getImage(e,t);if(this.txManager.hasCreateImageBitmap){const i=await(await fetch(e)).blob(),s=t!=null?t:this.hasAlphaChannel(i.type);return{data:await createImageBitmap(i,{premultiplyAlpha:s?"premultiply":"none",colorSpaceConversion:"none",imageOrientation:"none"}),premultiplyAlpha:s}}else{const o=new Image;return e.substr(0,5)!="data:"&&(o.crossOrigin="Anonymous"),o.src=e,await new Promise((i,s)=>{o.onload=()=>i(),o.onerror=()=>s(new Error("Failed to load image"))}).catch(i=>{console.error(i)}),{data:o,premultiplyAlpha:t!=null?t:!0}}}static makeCacheKey(e){const t=Ft.resolveDefaults(e);return t.src instanceof ImageData?!1:"ImageTexture,".concat(t.src,",").concat(t.premultiplyAlpha)}static resolveDefaults(e){var t,o;return{src:(t=e.src)!=null?t:"",premultiplyAlpha:(o=e.premultiplyAlpha)!=null?o:!0}}};u(Ft,"z$__type__Props");let Or=Ft;const Ki=24;function Vi(n,r,e,t,o,i,s,a,c){const d=Math.min(Math.max(s.firstLineIdx,0),a.length),h=0;let g=0;t==="middle"?g=(r-n)/2:t==="bottom"&&(g=r-n);const A=o/i+d*r+g;if(!(c&&A>=c/i))return{sdfX:h,sdfY:A,lineIndex:d}}class Rt{constructor(r,e=0){u(this,"iterator");u(this,"peekBuffer",[]);u(this,"_lastIndex");this.iterator=r,this.iterator=r,this._lastIndex=e-1,this.peekBuffer=[]}next(){const r=this.peekBuffer.length>0?this.peekBuffer.pop():this.iterator.next();return r.done?this._lastIndex=-1:this._lastIndex++,r}peek(){if(this.peekBuffer.length>0)return this.peekBuffer[0];const r=this.iterator.next();return this.peekBuffer.push(r),r}get lastIndex(){return this._lastIndex}}function*It(n,r=0){let e=r;for(;e=A.y1,De=O<=A.y2,xe=Pe&&De;for(;(de=re.next())&&!de.done;){const K=de.value;if(n===w.length)w.push({codepointIndex:K.cluster,maxY:E,maxX:z});else if(n>w.length)throw new Error("Unexpected lineCache length");if(K.codepoint===32||K.codepoint===10?U.codepointIndex!==-1&&(U.codepointIndex=-1,ne=P):U.codepointIndex===-1&&(U.codepointIndex=K.cluster,U.bufferOffset=D,U.xStart=ne),K.mapped){const Ut=P+K.xOffset+K.width;if(g!=="none"&&Ut>=me&&U.codepointIndex!==-1&&U.xStart>0)if(Se){re=j.shapeText(se,new Rt(It(t,U.codepointIndex),U.codepointIndex)),D=U.bufferOffset;break}else re=j.shapeText(se,new Rt(It(b,0),0)),P=U.xStart,D=U.bufferOffset,g="none";else{const Oe=P+K.xOffset,We=O+K.yOffset;if(xe){Ce===-1&&(Ce=D);const Ke=p.getAtlasEntry(K.glyphId),Ve=Ke.x/p.data.common.scaleW,Ge=Ke.y/p.data.common.scaleH,yt=Ke.width/p.data.common.scaleW,vt=Ke.height/p.data.common.scaleH;h[D++]=Oe,h[D++]=We,h[D++]=Ve,h[D++]=Ge,h[D++]=Oe+K.width,h[D++]=We,h[D++]=Ve+yt,h[D++]=Ge,h[D++]=Oe,h[D++]=We+K.height,h[D++]=Ve,h[D++]=Ge+vt,h[D++]=Oe+K.width,h[D++]=We+K.height,h[D++]=Ve+yt,h[D++]=Ge+vt}E=Math.max(E,We+K.height),z=Math.max(z,Oe+K.width),P+=K.xAdvance}}else if(K.codepoint===10){if(Se)break;re=j.shapeText(se,new Rt(It(b,0),0)),g="none"}}Ce!==-1&&(ze.push({bufferStart:Ce,bufferEnd:D}),Ce=-1),P=0,O+=m,n++,U.codepointIndex=-1,ne=0,!y&&g==="both"&&O>A.y2||de&&de.done?Xe=!1:Se||(Xe=!1)}if(o==="center"){const Se=g==="none"?z:C;for(let me=0;metypeof n=="number"?n:ts[n]||400;function rs(n,r,e,t,o){let i=Ln(e);for(const s of n){const a=s[r];if(!a)continue;if(a.size===1)return console.warn("TrFontManager: Only one font face found for family: '".concat(r,"' - will be used for all weights and styles")),a.values().next().value;const c=new Map;for(const h of a){const g=Ln(h.descriptors.weight);if(g===i&&h.descriptors.style===t&&h.descriptors.stretch===o)return h;c.set(g,h)}const d="TrFontManager: No exact match: '".concat(r," Weight: ").concat(i," Style: ").concat(t," Stretch: ").concat(o,"'");if(console.error(d),i===400&&c.has(500))return c.get(500);if(i===500&&c.has(400))return c.get(400);if(i<400){for(;i>0;){if(c.has(i))return c.get(i);i-=100}i=600}for(;i<1e3;){if(c.has(i))return c.get(i);i+=100}for(i=500;i>0;){if(c.has(i))return c.get(i);i-=100}}}const ns=yo(rs);class _o{constructor(r){u(this,"textRenderers");this.textRenderers=r}addFontFace(r){for(const e in this.textRenderers){const t=this.textRenderers[e];t&&t.isFontFaceSupported(r)&&t.addFontFace(r)}}static resolveFontFace(r,e){const{fontFamily:t,fontWeight:o,fontStyle:i,fontStretch:s}=e;return ns(r,t,o,i,s)}}const os={x:0,y:0,width:0,height:0};class is extends Ao{constructor(e){super(e);u(this,"ssdfFontFamilies",{});u(this,"msdfFontFamilies",{});u(this,"fontFamilyArray",[this.ssdfFontFamilies,this.msdfFontFamilies]);u(this,"sdfShader");u(this,"rendererBounds");this.sdfShader=this.stage.shManager.loadShader("SdfShader").shader,this.rendererBounds={x1:0,y1:0,x2:this.stage.options.appWidth,y2:this.stage.options.appHeight}}getPropertySetters(){return{fontFamily:(e,t)=>{e.props.fontFamily=t,this.releaseFontFace(e),this.invalidateLayoutCache(e)},fontWeight:(e,t)=>{e.props.fontWeight=t,this.releaseFontFace(e),this.invalidateLayoutCache(e)},fontStyle:(e,t)=>{e.props.fontStyle=t,this.releaseFontFace(e),this.invalidateLayoutCache(e)},fontStretch:(e,t)=>{e.props.fontStretch=t,this.releaseFontFace(e),this.invalidateLayoutCache(e)},fontSize:(e,t)=>{e.props.fontSize=t,this.invalidateLayoutCache(e)},text:(e,t)=>{e.props.text=t,this.invalidateLayoutCache(e)},textAlign:(e,t)=>{e.props.textAlign=t,this.invalidateLayoutCache(e)},color:(e,t)=>{e.props.color=t},x:(e,t)=>{e.props.x=t,e.elementBounds.valid&&(this.setElementBoundsX(e),!e.renderWindow.valid&&_r(e.elementBounds,this.rendererBounds)&&this.scheduleUpdateState(e))},y:(e,t)=>{e.props.y=t,e.elementBounds.valid&&(this.setElementBoundsY(e),!e.renderWindow.valid&&_r(e.elementBounds,this.rendererBounds)&&this.scheduleUpdateState(e))},contain:(e,t)=>{e.props.contain=t,this.invalidateLayoutCache(e)},width:(e,t)=>{e.props.width=t,e.props.contain!=="none"&&this.invalidateLayoutCache(e)},height:(e,t)=>{e.props.height=t,e.props.contain==="both"&&this.invalidateLayoutCache(e)},offsetY:(e,t)=>{e.props.offsetY=t,this.invalidateLayoutCache(e)},scrollable:(e,t)=>{e.props.scrollable=t,this.invalidateLayoutCache(e)},scrollY:(e,t)=>{e.props.scrollY=t,this.scheduleUpdateState(e)},letterSpacing:(e,t)=>{e.props.letterSpacing=t,this.invalidateLayoutCache(e)},lineHeight:(e,t)=>{e.props.lineHeight=t,this.invalidateLayoutCache(e)},maxLines:(e,t)=>{e.props.maxLines=t,this.invalidateLayoutCache(e)},textBaseline:(e,t)=>{e.props.textBaseline=t,this.invalidateLayoutCache(e)},verticalAlign:(e,t)=>{e.props.verticalAlign=t,this.invalidateLayoutCache(e)},overflowSuffix:(e,t)=>{e.props.overflowSuffix=t,this.invalidateLayoutCache(e)},debug:(e,t)=>{e.props.debug=t}}}canRenderFont(e){const{fontFamily:t}=e;return t in this.ssdfFontFamilies||t in this.msdfFontFamilies||t==="$$SDF_FAILURE_TEST$$"}isFontFaceSupported(e){return e instanceof Tn}addFontFace(e){N(e instanceof Tn);const t=e.fontFamily,o=e.type==="ssdf"?this.ssdfFontFamilies:e.type==="msdf"?this.msdfFontFamilies:void 0;if(!o){console.warn("Invalid font face type: ".concat(e.type));return}let i=o[t];i||(i=new Set,o[t]=i),i.add(e)}createState(e){return{props:e,status:"initialState",updateScheduled:!1,emitter:new nt,lineCache:[],forceFullLayoutCalc:!1,renderWindow:{screen:{x1:0,y1:0,x2:0,y2:0},sdf:{x1:0,y1:0,x2:0,y2:0},firstLineIdx:0,numLines:0,valid:!1},elementBounds:{x1:0,y1:0,x2:0,y2:0,valid:!1},clippingRect:{x:0,y:0,width:0,height:0,valid:!1},bufferNumFloats:0,bufferNumQuads:0,vertexBuffer:void 0,webGlBuffers:null,bufferUploaded:!1,textH:void 0,textW:void 0,distanceRange:0,trFontFace:void 0,isRenderable:!1,debugData:{updateCount:0,layoutCount:0,lastLayoutNumCharacters:0,layoutSum:0,drawSum:0,drawCount:0,bufferSize:0}}}updateState(e){let{trFontFace:t}=e;const{textH:o,lineCache:i,debugData:s,forceFullLayoutCalc:a}=e;if(s.updateCount++,e.status==="initialState"&&this.setStatus(e,"loading"),!t){if(t=this.resolveFontFace(e.props),e.trFontFace=t,!t){const j="SdfTextRenderer: Could not resolve font face for family: '".concat(e.props.fontFamily,"'");console.error(j),this.setStatus(e,"failed",new Error(j));return}t.texture.setRenderableOwner(e,e.isRenderable)}if(!t.loaded){t.once("loaded",()=>{this.scheduleUpdateState(e)});return}N(t.data,"Font face data should be loaded");const{text:c,fontSize:d,x:h,y:g,contain:w,width:A,height:p,lineHeight:y,verticalAlign:S,scrollable:b,overflowSuffix:v,maxLines:x}=e.props,m=w==="both"&&b?e.props.scrollY:0,{renderWindow:C}=e,I=t.data.info.size,R=d/I,T=y/R;e.distanceRange=R*t.data.distanceField.distanceRange;const _=c.length*Ki;let k=e.vertexBuffer;(!k||k.length<_)&&(k=new Float32Array(_*2));const z=e.elementBounds;if(z.valid||(this.setElementBoundsX(e),this.setElementBoundsY(e),z.valid=!0),!a&&C.valid){const j=C.screen;if(h+j.x1<=z.x1&&h+j.x2>=z.x2&&g-m+j.y1<=z.y1&&g-m+j.y2>=z.y2){this.setStatus(e,"loaded");return}C.valid=!1,this.setStatus(e,"loading")}const{offsetY:E,textAlign:P}=e.props;if(!C.valid){if(!_r(z,this.rendererBounds))return;es(C,h,g,m,y,w==="both"?z.y2-z.y1:0,z,R)}const O=Vi(I,T,y,S,E,R,C,i,o);if(!O){this.setStatus(e,"loaded");return}const{letterSpacing:D}=e.props,U=qi(O.lineIndex,O.sdfX,O.sdfY,c,P,A,p,d,y,D,k,w,i,C.sdf,t,a,b,v,x);e.bufferUploaded=!1,e.bufferNumFloats=U.bufferNumFloats,e.bufferNumQuads=U.bufferNumQuads,e.vertexBuffer=k,e.renderWindow=C,s.lastLayoutNumCharacters=U.layoutNumCharacters,s.bufferSize=k.byteLength,U.fullyProcessed&&(e.textW=U.maxX*R,e.textH=U.maxY*R),this.setStatus(e,"loaded")}renderQuads(e,t,o,i,s,a){var z,E,P;if(!e.vertexBuffer)return;const{renderer:c}=this.stage,{fontSize:d,color:h,contain:g,scrollable:w,zIndex:A,debug:p}=e.props,y=g==="both"&&w?e.props.scrollY:0,{textW:S=0,textH:b=0,distanceRange:v,vertexBuffer:x,bufferUploaded:m,trFontFace:C,elementBounds:I}=e;let{webGlBuffers:R}=e;if(!R){const O=c.glw,D=4*Float32Array.BYTES_PER_ELEMENT,U=O.createBuffer();N(U),e.webGlBuffers=new yi([{buffer:U,attributes:{a_position:{name:"a_position",size:2,type:O.FLOAT,normalized:!1,stride:D,offset:0},a_textureCoordinate:{name:"a_textureCoordinate",size:2,type:O.FLOAT,normalized:!1,stride:D,offset:2*Float32Array.BYTES_PER_ELEMENT}}}]),e.bufferUploaded=!1,N(e.webGlBuffers),R=e.webGlBuffers}if(!m){const O=c.glw,D=(z=R==null?void 0:R.getBuffer("a_textureCoordinate"))!=null?z:null;O.arrayBufferData(D,x,O.STATIC_DRAW),e.bufferUploaded=!0}if(N(C),w&&g==="both"){N(I.valid);const O=vi(I,os);o.valid?(e.clippingRect.valid=!0,o=Zr(o,O,e.clippingRect)):(e.clippingRect.valid=!0,o=wo(O,e.clippingRect))}const T=new wi(c.glw,c.options,R,this.sdfShader,{transform:t.data,color:bi(h,i),size:d/(((E=C.data)==null?void 0:E.info.size)||0),scrollY:y,distanceRange:v,debug:p.sdfShaderDebug},i,o,{height:b,width:S},0,A,!1,s,a),_=(P=e.trFontFace)==null?void 0:P.texture;N(_);const k=this.stage.txManager.getCtxTexture(_);T.addTexture(k),T.length=e.bufferNumFloats,T.numQuads=e.bufferNumQuads,c.addRenderOp(T)}setIsRenderable(e,t){var o;super.setIsRenderable(e,t),(o=e.trFontFace)==null||o.texture.setRenderableOwner(e,t)}destroyState(e){var t;super.destroyState(e),(t=e.trFontFace)==null||t.texture.setRenderableOwner(e,!1)}resolveFontFace(e){return _o.resolveFontFace(this.fontFamilyArray,e)}releaseFontFace(e){e.trFontFace&&(e.trFontFace.texture.setRenderableOwner(e,!1),e.trFontFace=void 0)}invalidateLayoutCache(e){e.renderWindow.valid=!1,e.elementBounds.valid=!1,e.textH=void 0,e.textW=void 0,e.lineCache=[],this.setStatus(e,"loading"),this.scheduleUpdateState(e)}setElementBoundsX(e){const{x:t,contain:o,width:i}=e.props,{elementBounds:s}=e;s.x1=t,s.x2=o!=="none"?t+i:1/0}setElementBoundsY(e){const{y:t,contain:o,height:i}=e.props,{elementBounds:s}=e;s.y1=t,s.y2=o==="both"?t+i:1/0}}function ss(n){return n.prototype instanceof Si}async function as(n,r){let e;try{console.log("Loading core extension",n),e=await Li(()=>import(n),[])}catch(o){console.error("The core extension module at '".concat(n,"' could not be loaded.")),console.error(o);return}if(!e.default){console.error("The core extension module at '".concat(n,"' does not have a default export."));return}const t=e.default;if(ss(t)){const o=new t;try{await o.run(r)}catch(i){console.error("The core extension at '".concat(n,"' threw an error.")),console.error(i)}}else console.error("The core extension at '".concat(n,"' does not extend CoreExtension."))}function Ro(n){const r={boolean:!0,string:!0,number:!0},e=Object.keys(n);for(let t=0;t2048&&(console.warn("Custom Data value for ".concat(o," is too long, it will be truncated to 2048 characters")),n[o]=i.substring(0,2048)),r[s]||(console.warn("Custom Data value for ".concat(o," is not a boolean, string, or number, it will be ignored")),delete n[o])}return n}class ls extends nt{constructor(e,t,o){var b,v,x,m;super();u(this,"root",null);u(this,"driver");u(this,"canvas");u(this,"settings");u(this,"inspector",null);u(this,"nodes",new Map);u(this,"nextTextureId",1);u(this,"textureTracker");const i={appWidth:e.appWidth||1920,appHeight:e.appHeight||1080,txMemByteThreshold:e.txMemByteThreshold||124e6,boundsMargin:e.boundsMargin||0,deviceLogicalPixelRatio:e.deviceLogicalPixelRatio||1,devicePhysicalPixelRatio:e.devicePhysicalPixelRatio||window.devicePixelRatio,clearColor:(b=e.clearColor)!=null?b:0,coreExtensionModule:e.coreExtensionModule||null,experimental_FinalizationRegistryTextureUsageTracker:(v=e.experimental_FinalizationRegistryTextureUsageTracker)!=null?v:!1,textureCleanupOptions:e.textureCleanupOptions||{},fpsUpdateInterval:e.fpsUpdateInterval||0,numImageWorkers:e.numImageWorkers!==void 0?e.numImageWorkers:2,enableContextSpy:(x=e.enableContextSpy)!=null?x:!1,enableInspector:(m=e.enableInspector)!=null?m:!1};this.settings=i;const{appWidth:s,appHeight:a,deviceLogicalPixelRatio:c,devicePhysicalPixelRatio:d,enableInspector:h}=i,g=C=>{this.driver.releaseTexture(C)},w=i.experimental_FinalizationRegistryTextureUsageTracker&&typeof FinalizationRegistry=="function";this.textureTracker=w?new Bi(g):new Ii(g,this.settings.textureCleanupOptions);const A=s*c,p=a*c;this.driver=o;const y=document.createElement("canvas");this.canvas=y,y.width=A*d,y.height=p*d,y.style.width="".concat(A,"px"),y.style.height="".concat(p,"px");let S;if(typeof t=="string"?S=document.getElementById(t):S=t,!S)throw new Error("Could not find target element");o.onCreateNode=C=>{this.nodes.set(C.id,C)},o.onBeforeDestroyNode=C=>{this.nodes.delete(C.id)},o.onFpsUpdate=C=>{this.emit("fpsUpdate",C)},o.onFrameTick=C=>{this.emit("frameTick",C)},o.onIdle=()=>{this.emit("idle")},S.appendChild(y),h&&!xo()&&(this.inspector=new Ei(y,i))}async init(){await this.driver.init(this,this.settings,this.canvas),this.root=this.driver.getRootNode()}createNode(e){return this.inspector?this.inspector.createNode(this.driver,this.resolveNodeDefaults(e)):this.driver.createNode(this.resolveNodeDefaults(e))}createTextNode(e){var i,s,a,c,d,h,g,w,A,p,y,S,b,v,x,m,C,I,R;const t=(i=e.fontSize)!=null?i:16,o={...this.resolveNodeDefaults(e),text:(s=e.text)!=null?s:"",textRendererOverride:(a=e.textRendererOverride)!=null?a:null,fontSize:t,fontFamily:(c=e.fontFamily)!=null?c:"sans-serif",fontStyle:(d=e.fontStyle)!=null?d:"normal",fontWeight:(h=e.fontWeight)!=null?h:"normal",fontStretch:(g=e.fontStretch)!=null?g:"normal",textAlign:(w=e.textAlign)!=null?w:"left",contain:(A=e.contain)!=null?A:"none",scrollable:(p=e.scrollable)!=null?p:!1,scrollY:(y=e.scrollY)!=null?y:0,offsetY:(S=e.offsetY)!=null?S:0,letterSpacing:(b=e.letterSpacing)!=null?b:0,lineHeight:(v=e.lineHeight)!=null?v:t,maxLines:(x=e.maxLines)!=null?x:0,textBaseline:(m=e.textBaseline)!=null?m:"alphabetic",verticalAlign:(C=e.verticalAlign)!=null?C:"top",overflowSuffix:(I=e.overflowSuffix)!=null?I:"...",debug:(R=e.debug)!=null?R:{}};return this.inspector?this.inspector.createTextNode(this.driver,o):this.driver.createTextNode(o)}resolveNodeDefaults(e){var h,g,w,A,p,y,S,b,v,x,m,C,I,R,T,_,k,z,E,P,O,D,U,j,se,re,de,Ce,ze,Ot,Wt,Xe,Se,me,ne,Pe,De,xe,K,Ut,Oe,We,Ke,Ve,Ge,yt,vt,wn,bn,Sn,An,Cn;const t=(h=e.color)!=null?h:4294967295,o=(A=(w=(g=e.colorTl)!=null?g:e.colorTop)!=null?w:e.colorLeft)!=null?A:t,i=(S=(y=(p=e.colorTr)!=null?p:e.colorTop)!=null?y:e.colorRight)!=null?S:t,s=(x=(v=(b=e.colorBl)!=null?b:e.colorBottom)!=null?v:e.colorLeft)!=null?x:t,a=(I=(C=(m=e.colorBr)!=null?m:e.colorBottom)!=null?C:e.colorRight)!=null?I:t,c=Ro((R=e.data)!=null?R:{}),d=(z=(k=(T=e.parent)==null?void 0:T.rtt)!=null?k:(_=e.parent)==null?void 0:_.parentHasRenderTexture)!=null?z:!1;return{x:(E=e.x)!=null?E:0,y:(P=e.y)!=null?P:0,width:(O=e.width)!=null?O:0,height:(D=e.height)!=null?D:0,alpha:(U=e.alpha)!=null?U:1,autosize:(j=e.autosize)!=null?j:!1,clipping:(se=e.clipping)!=null?se:!1,color:t,colorTop:(re=e.colorTop)!=null?re:t,colorBottom:(de=e.colorBottom)!=null?de:t,colorLeft:(Ce=e.colorLeft)!=null?Ce:t,colorRight:(ze=e.colorRight)!=null?ze:t,colorBl:s,colorBr:a,colorTl:o,colorTr:i,zIndex:(Ot=e.zIndex)!=null?Ot:0,zIndexLocked:(Wt=e.zIndexLocked)!=null?Wt:0,parent:(Xe=e.parent)!=null?Xe:null,texture:(Se=e.texture)!=null?Se:null,shader:(me=e.shader)!=null?me:null,src:(ne=e.src)!=null?ne:"",scale:(Pe=e.scale)!=null?Pe:null,scaleX:(xe=(De=e.scaleX)!=null?De:e.scale)!=null?xe:1,scaleY:(Ut=(K=e.scaleY)!=null?K:e.scale)!=null?Ut:1,mount:(Oe=e.mount)!=null?Oe:0,mountX:(Ke=(We=e.mountX)!=null?We:e.mount)!=null?Ke:0,mountY:(Ge=(Ve=e.mountY)!=null?Ve:e.mount)!=null?Ge:0,pivot:(yt=e.pivot)!=null?yt:.5,pivotX:(wn=(vt=e.pivotX)!=null?vt:e.pivot)!=null?wn:.5,pivotY:(Sn=(bn=e.pivotY)!=null?bn:e.pivot)!=null?Sn:.5,rotation:(An=e.rotation)!=null?An:0,rtt:(Cn=e.rtt)!=null?Cn:!1,parentHasRenderTexture:d,data:c}}destroyNode(e){return this.inspector&&this.inspector.destroyNode(e),this.driver.destroyNode(e)}createTexture(e,t,o){const i=this.nextTextureId++,s={descType:"texture",txType:e,props:t,options:{...o,id:i}};return this.textureTracker.registerTexture(s),s}createShader(e,t){return{descType:"shader",shType:e,props:t}}getNodeById(e){return this.nodes.get(e)||null}toggleFreeze(){throw new Error("Not implemented")}advanceFrame(){throw new Error("Not implemented")}rerender(){throw new Error("Not implemented")}}class cs extends nt{constructor(e,t,o){super();u(this,"node");u(this,"props");u(this,"settings");u(this,"propStartValues",{});u(this,"restoreValues",{});u(this,"progress",0);u(this,"delayFor",0);u(this,"timingFunction");u(this,"propsList");this.node=e,this.props=t,this.settings=o,this.propStartValues={},this.propsList=Object.keys(t),this.propsList.forEach(i=>{this.propStartValues[i]=e[i]}),this.timingFunction=i=>i,o.easing&&typeof o.easing=="string"&&(this.timingFunction=Ai(o.easing)),this.delayFor=o.delay||0}reset(){this.progress=0,this.delayFor=this.settings.delay||0,this.update(0)}restore(){this.reset(),Object.keys(this.props).forEach(e=>{this.node[e]=this.propStartValues[e]})}reverse(){this.progress=0,Object.keys(this.props).forEach(e=>{const t=this.props[e],o=this.propStartValues[e];this.props[e]=o,this.propStartValues[e]=t}),this.settings.loop||(this.settings.stopMethod=!1)}applyEasing(e,t,o){return(this.timingFunction(e)||e)*(o-t)+t}update(e){const{duration:t,loop:o,easing:i,stopMethod:s}=this.settings;if(!t){this.emit("finished",{});return}if(this.delayFor>0){this.delayFor-=e;return}if(this.delayFor<=0&&this.progress===0&&this.emit("start",{}),this.progress+=e/t,this.progress>1&&(this.progress=o?0:1,s)){this.emit("finished",{});return}for(let a=0;a{this.startedResolve=r}))}makeStoppedPromise(){this.stoppedResolve===null&&(this.stoppedPromise=new Promise(r=>{this.stoppedResolve=r}))}started(){N(this.startedResolve),this.startedResolve(this),this.startedResolve=null}finished(){N(this.stoppedResolve);const{loop:r,stopMethod:e}=this.animation.settings;if(e==="reverse"){this.animation.reverse(),this.start();return}this.stoppedResolve(),this.stoppedResolve=null,!r&&this.manager.unregisterAnimation(this.animation)}}const Z=0,J=3,ce=6,V=1,ee=4,ue=7,ye=2,ve=5,we=8;class fe{constructor(r){u(this,"data");r?(this.data=new Float32Array(9),this.data[Z]=r[0],this.data[J]=r[3],this.data[ce]=r[6],this.data[V]=r[1],this.data[ee]=r[4],this.data[ue]=r[7],this.data[ye]=r[2],this.data[ve]=r[5],this.data[we]=r[8]):this.data=new Float32Array(9)}static get temp(){return us}static multiply(r,e,t){const o=r.data[Z]*e.data[Z]+r.data[J]*e.data[V]+r.data[ce]*e.data[ye],i=r.data[Z]*e.data[J]+r.data[J]*e.data[ee]+r.data[ce]*e.data[ve],s=r.data[Z]*e.data[ce]+r.data[J]*e.data[ue]+r.data[ce]*e.data[we],a=r.data[V]*e.data[Z]+r.data[ee]*e.data[V]+r.data[ue]*e.data[ye],c=r.data[V]*e.data[J]+r.data[ee]*e.data[ee]+r.data[ue]*e.data[ve],d=r.data[V]*e.data[ce]+r.data[ee]*e.data[ue]+r.data[ue]*e.data[we],h=r.data[ye]*e.data[Z]+r.data[ve]*e.data[V]+r.data[we]*e.data[ye],g=r.data[ye]*e.data[J]+r.data[ve]*e.data[ee]+r.data[we]*e.data[ve],w=r.data[ye]*e.data[ce]+r.data[ve]*e.data[ue]+r.data[we]*e.data[we];return t||(t=new fe),t.data[Z]=o,t.data[J]=i,t.data[ce]=s,t.data[V]=a,t.data[ee]=c,t.data[ue]=d,t.data[ye]=h,t.data[ve]=g,t.data[we]=w,t}static identity(r){return r||(r=new fe),r.data[Z]=1,r.data[J]=0,r.data[ce]=0,r.data[V]=0,r.data[ee]=1,r.data[ue]=0,r.data[ye]=0,r.data[ve]=0,r.data[we]=1,r}static translate(r,e,t){return t||(t=new fe),t.data[Z]=1,t.data[J]=0,t.data[ce]=r,t.data[V]=0,t.data[ee]=1,t.data[ue]=e,t.data[ye]=0,t.data[ve]=0,t.data[we]=1,t}static scale(r,e,t){return t||(t=new fe),t.data[Z]=r,t.data[J]=0,t.data[ce]=0,t.data[V]=0,t.data[ee]=e,t.data[ue]=0,t.data[ye]=0,t.data[ve]=0,t.data[we]=1,t}static rotate(r,e){const t=Math.cos(r),o=Math.sin(r);return e||(e=new fe),e.data[Z]=t,e.data[J]=-o,e.data[ce]=0,e.data[V]=o,e.data[ee]=t,e.data[ue]=0,e.data[ye]=0,e.data[ve]=0,e.data[we]=1,e}static copy(r,e,t){return e||(e=new fe),e.data[0]=r.data[0],e.data[1]=r.data[1],e.data[2]=r.data[2],e.data[3]=r.data[3],e.data[4]=r.data[4],e.data[5]=r.data[5],e.data[6]=r.data[6],e.data[7]=r.data[7],e.data[8]=r.data[8],e}translate(r,e){return this.data[ce]=this.data[Z]*r+this.data[J]*e+this.data[ce],this.data[ue]=this.data[V]*r+this.data[ee]*e+this.data[ue],this}scale(r,e){return this.data[Z]=this.data[Z]*r,this.data[J]=this.data[J]*e,this.data[V]=this.data[V]*r,this.data[ee]=this.data[ee]*e,this}rotate(r){if(r===0||!(r%Math.PI*2))return this;const e=Math.cos(r),t=Math.sin(r),o=this.data[Z]*e+this.data[J]*t,i=this.data[J]*e-this.data[Z]*t,s=this.data[V]*e+this.data[ee]*t,a=this.data[ee]*e-this.data[V]*t;return this.data[Z]=o,this.data[J]=i,this.data[V]=s,this.data[ee]=a,this}multiply(r){return fe.multiply(this,r,this)}get tx(){return this.data[ce]}get ty(){return this.data[ue]}get ta(){return this.data[Z]}get tb(){return this.data[J]}get tc(){return this.data[V]}get td(){return this.data[ee]}transformPoint(r,e){return[this.data[Z]*r+this.data[J]*e+this.data[ce],this.data[V]*r+this.data[ee]*e+this.data[V]]}}const us=new fe,Yt=0,$t=2,Ht=4,jt=6,Qt=1,Xt=3,Kt=5,Vt=7;class ar{constructor(r){u(this,"data");this.data=new Float32Array(8),r&&(this.data[Yt]=r[Yt],this.data[$t]=r[$t],this.data[Ht]=r[Ht],this.data[jt]=r[jt],this.data[Qt]=r[Qt],this.data[Xt]=r[Xt],this.data[Kt]=r[Kt],this.data[Vt]=r[Vt])}static translate(r,e,t,o,i,s,a,c,d){return d||(d=new ar),d.data[Yt]=r,d.data[$t]=t,d.data[Ht]=i,d.data[jt]=a,d.data[Qt]=e,d.data[Xt]=o,d.data[Kt]=s,d.data[Vt]=c,d}get x1(){return this.data[Yt]}get x2(){return this.data[$t]}get x3(){return this.data[Ht]}get x4(){return this.data[jt]}get y1(){return this.data[Qt]}get y2(){return this.data[Xt]}get y3(){return this.data[Kt]}get y4(){return this.data[Vt]}}var G;(function(n){n[n.Init=0]="Init",n[n.OutOfBounds=2]="OutOfBounds",n[n.InBounds=4]="InBounds",n[n.InViewport=8]="InViewport"})(G||(G={}));const et=new Map;et.set(G.Init,"init");et.set(G.OutOfBounds,"outOfBounds");et.set(G.InBounds,"inBounds");et.set(G.InViewport,"inViewport");var B;(function(n){n[n.Children=1]="Children",n[n.ScaleRotate=2]="ScaleRotate",n[n.Local=4]="Local",n[n.Global=8]="Global",n[n.Clipping=16]="Clipping",n[n.CalculatedZIndex=32]="CalculatedZIndex",n[n.ZIndexSortedChildren=64]="ZIndexSortedChildren",n[n.PremultipliedColors=128]="PremultipliedColors",n[n.WorldAlpha=256]="WorldAlpha",n[n.RenderState=512]="RenderState",n[n.IsRenderable=1024]="IsRenderable",n[n.None=0]="None",n[n.All=2047]="All"})(B||(B={}));class Jr extends nt{constructor(e,t){super();u(this,"stage");u(this,"children",[]);u(this,"props");u(this,"updateType",B.All);u(this,"globalTransform");u(this,"scaleRotateTransform");u(this,"localTransform");u(this,"renderCoords");u(this,"renderBound");u(this,"strictBound");u(this,"preloadBound");u(this,"clippingRect",{x:0,y:0,width:0,height:0,valid:!1});u(this,"isRenderable",!1);u(this,"renderState",G.Init);u(this,"worldAlpha",1);u(this,"premultipliedColorTl",0);u(this,"premultipliedColorTr",0);u(this,"premultipliedColorBl",0);u(this,"premultipliedColorBr",0);u(this,"calcZIndex",0);u(this,"hasRTTupdates",!1);u(this,"onTextureLoaded",(e,t)=>{this.autosizeNode(t),this.parentHasRenderTexture&&this.setRTTUpdates(1),this.emit("loaded",{type:"texture",dimensions:t}),queueMicrotask(()=>{this.stage.requestRender()})});u(this,"onTextureFailed",(e,t)=>{this.emit("failed",{type:"texture",error:t})});u(this,"onTextureFreed",e=>{this.emit("freed",{type:"texture"})});this.stage=e,this.props={...t,parent:null,parentHasRenderTexture:!1},this.parent=t.parent,this.rtt=t.rtt,this.updateScaleRotateTransform()}loadTexture(e,t,o=null){this.props.texture&&this.unloadTexture();const{txManager:i}=this.stage,s=i.loadTexture(e,t,o);this.props.texture=s,this.props.textureOptions=o,this.setUpdateType(B.IsRenderable),queueMicrotask(()=>{s.state==="loaded"?this.onTextureLoaded(s,s.dimensions):s.state==="failed"?this.onTextureFailed(s,s.error):s.state==="freed"&&this.onTextureFreed(s),s.on("loaded",this.onTextureLoaded),s.on("failed",this.onTextureFailed),s.on("freed",this.onTextureFreed)})}unloadTexture(){if(this.props.texture){const{texture:e}=this.props;e.off("loaded",this.onTextureLoaded),e.off("failed",this.onTextureFailed),e.off("freed",this.onTextureFreed),e.setRenderableOwner(this,!1)}this.props.texture=null,this.props.textureOptions=null,this.setUpdateType(B.IsRenderable)}autosizeNode(e){this.autosize&&(this.width=e.width,this.height=e.height)}loadShader(e,t){const o=this.stage.renderer.getShaderManager();N(o);const{shader:i,props:s}=o.loadShader(e,t);this.props.shader=i,this.props.shaderProps=s,this.setUpdateType(B.IsRenderable)}setUpdateType(e){this.updateType|=e;const t=this.props.parent;t&&!(t.updateType&B.Children)&&t.setUpdateType(B.Children),this.parentHasRenderTexture&&this.setRTTUpdates(e)}sortChildren(){this.children.sort((e,t)=>e.calcZIndex-t.calcZIndex)}updateScaleRotateTransform(){this.scaleRotateTransform=fe.rotate(this.props.rotation,this.scaleRotateTransform).scale(this.props.scaleX,this.props.scaleY)}updateLocalTransform(){N(this.scaleRotateTransform);const e=this.props.pivotX*this.props.width,t=this.props.pivotY*this.props.height,o=this.props.mountX*this.props.width,i=this.props.mountY*this.props.height;this.localTransform=fe.translate(e-o+this.props.x,t-i+this.props.y,this.localTransform).multiply(this.scaleRotateTransform).translate(-e,-t),this.setUpdateType(B.Global)}update(e,t){var s;this.updateType&B.ScaleRotate&&(this.updateScaleRotateTransform(),this.setUpdateType(B.Local)),this.updateType&B.Local&&(this.updateLocalTransform(),this.setUpdateType(B.Global));const o=this.props.parent;let i=B.None;this.updateType&B.Global&&(N(this.localTransform),this.globalTransform=fe.copy((o==null?void 0:o.globalTransform)||this.localTransform,this.globalTransform),this.parentHasRenderTexture&&((s=this.props.parent)!=null&&s.rtt)&&(this.globalTransform=fe.identity()),o&&this.globalTransform.multiply(this.localTransform),this.calculateRenderCoords(),this.updateBoundingRect(),this.setUpdateType(B.Clipping|B.RenderState|B.Children),i|=B.Global),this.updateType&B.Clipping&&(this.calculateClippingRect(t),this.setUpdateType(B.Children),i|=B.Clipping),this.updateType&B.WorldAlpha&&(o?this.worldAlpha=o.worldAlpha*this.props.alpha:this.worldAlpha=this.props.alpha,this.setUpdateType(B.Children|B.PremultipliedColors|B.IsRenderable),i|=B.WorldAlpha),this.updateType&B.PremultipliedColors&&(this.premultipliedColorTl=Ct(this.props.colorTl,this.worldAlpha,!0),this.props.colorTl===this.props.colorTr&&this.props.colorBl===this.props.colorBr&&this.props.colorTl===this.props.colorBl?this.premultipliedColorTr=this.premultipliedColorBl=this.premultipliedColorBr=this.premultipliedColorTl:(this.premultipliedColorTr=Ct(this.props.colorTr,this.worldAlpha,!0),this.premultipliedColorBl=Ct(this.props.colorBl,this.worldAlpha,!0),this.premultipliedColorBr=Ct(this.props.colorBr,this.worldAlpha,!0))),this.updateType&B.RenderState&&(this.updateRenderState(t),this.setUpdateType(B.IsRenderable)),this.updateType&B.IsRenderable&&this.updateIsRenderable(),o&&this.updateType&B.CalculatedZIndex&&(this.calculateZIndex(),o.setUpdateType(B.ZIndexSortedChildren)),this.updateType&B.Children&&this.children.length&&!this.rtt&&this.children.forEach(a=>{a.setUpdateType(i),a.updateType!==0&&a.update(e,this.clippingRect)}),this.updateType&B.ZIndexSortedChildren&&this.sortChildren(),this.updateType=0}checkRenderProps(){return this.props.texture?!0:!this.props.width||!this.props.height?!1:!!(this.props.shader||this.props.clipping||this.props.color!==0||this.props.colorTop!==0||this.props.colorBottom!==0||this.props.colorLeft!==0||this.props.colorRight!==0||this.props.colorTl!==0||this.props.colorTr!==0||this.props.colorBl!==0||this.props.colorBr!==0)}checkRenderBounds(e){N(this.renderBound);const t=e.width||this.stage.root.width,o=e.height||this.stage.root.height;this.strictBound=gt(e.x,e.y,e.x+t,e.y+o,this.strictBound);const i=this.stage.boundsMargin;return this.preloadBound=gt(e.x-i[3],e.y-i[0],e.x+t+i[1],e.y+o+i[2],this.preloadBound),Rn(this.renderBound,this.strictBound)?G.InViewport:Rn(this.renderBound,this.preloadBound)?G.InBounds:G.OutOfBounds}updateRenderState(e){const t=this.checkRenderBounds(e);if(t!==this.renderState){let o=this.renderState;this.renderState=t,o===G.InViewport&&this.emit("outOfViewport",{previous:o,current:t}),oG.InBounds&&t===G.OutOfBounds&&(this.emit(et.get(G.InBounds),{previous:o,current:t}),o=G.InBounds);const i=et.get(t);N(i),this.emit(i,{previous:o,current:t})}}setRenderState(e){e!==this.renderState&&(this.renderState=e,this.emit(G[e]))}updateIsRenderable(){let e;this.worldAlpha===0||!this.checkRenderProps()?e=!1:e=this.renderState>G.OutOfBounds,this.isRenderable!==e&&(this.isRenderable=e,this.onChangeIsRenderable(e))}onChangeIsRenderable(e){var t;(t=this.props.texture)==null||t.setRenderableOwner(this,e)}calculateRenderCoords(){const{width:e,height:t,globalTransform:o}=this;N(o);const{tx:i,ty:s,ta:a,tb:c,tc:d,td:h}=o;if(c===0&&d===0){const g=i,w=i+e*a,A=s,p=s+t*h;this.renderCoords=ar.translate(g,A,w,A,w,p,g,p,this.renderCoords)}else this.renderCoords=ar.translate(i,s,i+e*a,s+e*d,i+e*a+t*c,s+e*d+t*h,i+t*c,s+t*h,this.renderCoords)}updateBoundingRect(){const{renderCoords:e,globalTransform:t}=this;N(t),N(e);const{tb:o,tc:i}=t,{x1:s,y1:a,x3:c,y3:d}=e;if(o===0||i===0)this.renderBound=gt(s,a,c,d,this.renderBound);else{const{x2:h,x4:g,y2:w,y4:A}=e;this.renderBound=gt(Math.min(s,h,c,g),Math.min(a,w,d,A),Math.max(s,h,c,g),Math.max(a,w,d,A),this.renderBound)}}calculateClippingRect(e){N(this.globalTransform);const{clippingRect:t,props:o,globalTransform:i}=this,{clipping:s}=o,a=i.tb!==0||i.tc!==0;s&&!a?(t.x=i.tx,t.y=i.ty,t.width=this.width*i.ta,t.height=this.height*i.td,t.valid=!0):t.valid=!1,e.valid&&t.valid?Zr(e,t,t):e.valid&&(wo(e,t),t.valid=!0)}calculateZIndex(){var s,a;const e=this.props,t=e.zIndex||0,o=((s=e.parent)==null?void 0:s.zIndex)||0;let i=t;(a=e.parent)!=null&&a.zIndexLocked&&(i=t{t.setUpdateType(B.CalculatedZIndex)})}get zIndex(){return this.props.zIndex}set zIndex(e){this.props.zIndex=e,this.setUpdateType(B.CalculatedZIndex|B.Children),this.children.forEach(t=>{t.setUpdateType(B.CalculatedZIndex)})}get parent(){return this.props.parent}set parent(e){const t=this.props.parent;if(t!==e){if(this.props.parent=e,t){const o=t.children.indexOf(this);N(o!==-1,"CoreNode.parent: Node not found in old parent's children!"),t.children.splice(o,1),t.setUpdateType(B.Children|B.ZIndexSortedChildren)}e&&(e.children.push(this),this.setUpdateType(B.All),e.setUpdateType(B.Children|B.ZIndexSortedChildren),(e.rtt||e.parentHasRenderTexture)&&this.setRTTUpdates(B.All)),this.parentHasRenderTexture=(e==null?void 0:e.rtt)||(e==null?void 0:e.parentHasRenderTexture),this.updateScaleRotateTransform()}}get rtt(){return this.props.rtt}set rtt(e){var t;e&&(this.props.rtt=!0,this.hasRTTupdates=!0,(t=this.stage.renderer)==null||t.renderToTexture(this))}set parentHasRenderTexture(e){this.props.parentHasRenderTexture=!!e}get parentHasRenderTexture(){return this.props.parentHasRenderTexture}get framebufferDimensions(){var e;return this.parentHasRenderTexture&&!this.rtt?(e=this.parent)==null?void 0:e.framebufferDimensions:{width:this.width,height:this.height}}get parentRenderTexture(){let e=this.parent;for(;e;){if(e.rtt)return e;e=e.parent}return null}get texture(){return this.props.texture}setRTTUpdates(e){var t;this.hasRTTupdates=!0,(t=this.parent)==null||t.setRTTUpdates(e)}}let hs=1;function en(){return hs++}class Wr extends nt{constructor(e,t,o,i){var s;super();u(this,"rendererMain");u(this,"stage");u(this,"id");u(this,"coreNode");u(this,"_children",[]);u(this,"_src","");u(this,"_parent",null);u(this,"_texture",null);u(this,"_shader",null);u(this,"_data",{});u(this,"onTextureLoaded",(e,t)=>{this.emit("loaded",t)});u(this,"onTextureFailed",(e,t)=>{this.emit("failed",t)});u(this,"onTextureFreed",(e,t)=>{this.emit("freed",t)});u(this,"onOutOfBounds",(e,t)=>{this.emit("outOfBounds",t)});u(this,"onInBounds",(e,t)=>{this.emit("inBounds",t)});u(this,"onOutOfViewport",(e,t)=>{this.emit("outOfViewport",t)});u(this,"onInViewport",(e,t)=>{this.emit("inViewport",t)});this.rendererMain=t,this.stage=o,this.id=(s=i==null?void 0:i.id)!=null?s:en(),this.coreNode=i||new Jr(this.stage,{id:this.id,x:e.x,y:e.y,width:e.width,height:e.height,alpha:e.alpha,autosize:e.autosize,clipping:e.clipping,color:e.color,colorTop:e.colorTop,colorBottom:e.colorBottom,colorLeft:e.colorLeft,colorRight:e.colorRight,colorTl:e.colorTl,colorTr:e.colorTr,colorBl:e.colorBl,colorBr:e.colorBr,zIndex:e.zIndex,zIndexLocked:e.zIndexLocked,scaleX:e.scaleX,scaleY:e.scaleY,mountX:e.mountX,mountY:e.mountY,mount:e.mount,pivot:e.pivot,pivotX:e.pivotX,pivotY:e.pivotY,rotation:e.rotation,parent:null,shader:null,shaderProps:null,texture:null,textureOptions:null,rtt:e.rtt,parentHasRenderTexture:e.parentHasRenderTexture}),this.coreNode.on("loaded",this.onTextureLoaded),this.coreNode.on("failed",this.onTextureFailed),this.coreNode.on("freed",this.onTextureFreed),this.coreNode.on("outOfBounds",this.onOutOfBounds),this.coreNode.on("inBounds",this.onInBounds),this.coreNode.on("outOfViewport",this.onOutOfViewport),this.coreNode.on("inViewport",this.onInViewport),this.parent=e.parent,this.shader=e.shader,this.texture=e.texture,this.src=e.src,this.rtt=e.rtt,this._data=e.data}get x(){return this.coreNode.x}set x(e){this.coreNode.x=e}get y(){return this.coreNode.y}set y(e){this.coreNode.y=e}get width(){return this.coreNode.width}set width(e){this.coreNode.width=e}get height(){return this.coreNode.height}set height(e){this.coreNode.height=e}get alpha(){return this.coreNode.alpha}set alpha(e){this.coreNode.alpha=e}get autosize(){return this.coreNode.autosize}set autosize(e){this.coreNode.autosize=e}get clipping(){return this.coreNode.clipping}set clipping(e){this.coreNode.clipping=e}get color(){return this.coreNode.color}set color(e){this.coreNode.color=e}get colorTop(){return this.coreNode.colorTop}set colorTop(e){this.coreNode.colorTop=e}get colorBottom(){return this.coreNode.colorBottom}set colorBottom(e){this.coreNode.colorBottom=e}get colorLeft(){return this.coreNode.colorLeft}set colorLeft(e){this.coreNode.colorLeft=e}get colorRight(){return this.coreNode.colorRight}set colorRight(e){this.coreNode.colorRight=e}get colorTl(){return this.coreNode.colorTl}set colorTl(e){this.coreNode.colorTl=e}get colorTr(){return this.coreNode.colorTr}set colorTr(e){this.coreNode.colorTr=e}get colorBl(){return this.coreNode.colorBl}set colorBl(e){this.coreNode.colorBl=e}get colorBr(){return this.coreNode.colorBr}set colorBr(e){this.coreNode.colorBr=e}get scale(){return this.scaleX!==this.scaleY?null:this.coreNode.scaleX}set scale(e){e!==null&&(this.coreNode.scaleX=e,this.coreNode.scaleY=e)}get scaleX(){return this.coreNode.scaleX}set scaleX(e){this.coreNode.scaleX=e}get scaleY(){return this.coreNode.scaleY}set scaleY(e){this.coreNode.scaleY=e}get mount(){return this.coreNode.mount}set mount(e){this.coreNode.mount=e}get mountX(){return this.coreNode.mountX}set mountX(e){this.coreNode.mountX=e}get mountY(){return this.coreNode.mountY}set mountY(e){this.coreNode.mountY=e}get pivot(){return this.coreNode.pivot}set pivot(e){this.coreNode.pivot=e}get pivotX(){return this.coreNode.pivotX}set pivotX(e){this.coreNode.pivotX=e}get pivotY(){return this.coreNode.pivotY}set pivotY(e){this.coreNode.pivotY=e}get rotation(){return this.coreNode.rotation}set rotation(e){this.coreNode.rotation=e}get parent(){return this._parent}set parent(e){var o;const t=this._parent;if(this._parent=e,this.coreNode.parent=(o=e==null?void 0:e.coreNode)!=null?o:null,t){const i=t.children.indexOf(this);N(i!==-1,"MainOnlyNode.parent: Node not found in old parent's children!"),t.children.splice(i,1)}e&&e.children.push(this)}get children(){return this._children}get zIndex(){return this.coreNode.zIndex}set zIndex(e){this.coreNode.zIndex=e}get zIndexLocked(){return this.coreNode.zIndexLocked}set zIndexLocked(e){this.coreNode.zIndexLocked=e}get src(){return this._src}set src(e){if(this._src!==e){if(this._src=e,!e){this.texture=null;return}this.texture=this.rendererMain.createTexture("ImageTexture",{src:e})}}get texture(){return this._texture}set texture(e){this._texture!==e&&(this._texture&&this.rendererMain.textureTracker.decrementTextureRefCount(this._texture),e&&this.rendererMain.textureTracker.incrementTextureRefCount(e),this._texture=e,e?this.coreNode.loadTexture(e.txType,e.props,e.options):this.coreNode.unloadTexture())}get rtt(){return this.coreNode.rtt}set rtt(e){e&&(this.texture=this.rendererMain.createTexture("RenderTexture",{width:this.width,height:this.height},{preload:!0,flipY:!0})),this.coreNode.rtt=e}get parentHasRenderTexture(){return this.coreNode.parentHasRenderTexture}set parentHasRenderTexture(e){this.coreNode.parentHasRenderTexture=e}get shader(){return this._shader}set shader(e){this._shader!==e&&(this._shader=e,e&&this.coreNode.loadShader(e.shType,e.props))}get data(){return this._data}set data(e){this._data=Ro(e)}destroy(){this.emit("beforeDestroy",{});let e=this.children[0];for(;e;)e.destroy(),e=this.children[0];this.coreNode.destroy(),this.parent=null,this.texture=null,this.emit("afterDestroy",{}),this.removeAllListeners()}flush(){}animate(e,t){const o=new cs(this.coreNode,e,t);return new ds(this.stage.animationManager,o)}}const fs=n=>{let r=!1;const e=()=>{if(n.updateAnimations(),!n.hasSceneUpdates()){n.calculateFps(),setTimeout(e,16.666666666666668),r||(n.emit("idle"),r=!0);return}r=!1,n.drawFrame(),requestAnimationFrame(e)};requestAnimationFrame(e)},gs=()=>performance?performance.now():Date.now();class ps{constructor(){u(this,"activeAnimations",new Set)}registerAnimation(r){this.activeAnimations.add(r)}unregisterAnimation(r){this.activeAnimations.delete(r)}update(r){this.activeAnimations.forEach(e=>{e.update(r)})}}class ms{constructor(r){u(this,"imageWorkersEnabled",!0);u(this,"messageManager",{});u(this,"workers",[]);u(this,"workerIndex",0);this.workers=this.createWorkers(r),this.workers.forEach(e=>{e.onmessage=this.handleMessage.bind(this)})}handleMessage(r){const{src:e,data:t,error:o}=r.data,i=this.messageManager[e];if(i){const[s,a]=i;delete this.messageManager[e],o?a(new Error(o)):s(t)}}createWorkers(r=1){const e="\n function hasAlphaChannel(mimeType) {\n return (mimeType.indexOf(\"image/png\") !== -1);\n }\n\n function getImage(src, premultiplyAlpha) {\n return new Promise(function(resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', src, true);\n xhr.responseType = 'blob';\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n var blob = xhr.response;\n var hasAlphaChannel = premultiplyAlpha !== undefined ? premultiplyAlpha : hasAlphaChannel(blob.type);\n\n createImageBitmap(blob, {\n premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',\n colorSpaceConversion: 'none',\n imageOrientation: 'none'\n }).then(function(data) {\n resolve({ data: data, premultiplyAlpha: premultiplyAlpha });\n }).catch(function(error) {\n reject(error);\n });\n } else {\n reject(new Error('Failed to load image: ' + xhr.statusText));\n }\n };\n\n xhr.onerror = function() {\n reject(new Error('Network error occurred while trying to fetch the image.'));\n };\n\n xhr.send();\n });\n }\n\n self.onmessage = (event) => {\n var src = event.data.src;\n var premultiplyAlpha = event.data.premultiplyAlpha;\n\n getImage(src, premultiplyAlpha)\n .then(function(data) {\n self.postMessage({ src: src, data: data }, [data.data]);\n })\n .catch(function(error) {\n self.postMessage({ src: src, error: error.message });\n });\n };\n ",t=new Blob([e.replace('"use strict";',"")],{type:"application/javascript"}),o=(self.URL?URL:webkitURL).createObjectURL(t),i=[];for(let s=0;s{try{if(this.workers){const i=this.convertUrlToAbsolute(r);this.messageManager[i]=[t,o],this.getNextWorker().postMessage({src:i,premultiplyAlpha:e})}}catch(i){o(i)}})}}const Nt=class Nt extends vo{constructor(e,t){super(e);u(this,"props");this.props=Nt.resolveDefaults(t)}async getTextureData(){const{width:e,height:t}=this.props,o=e*t*4,i=new Uint8ClampedArray(o);for(let s=0;s{})}setTextureMemUse(r,e){if(this.textures.has(r)&&(this.memUsed-=this.textures.get(r)),e===0){this.textures.delete(r);return}else this.memUsed+=e,this.textures.set(r,e);this.memUsed>this.threshold&&this.gc()}gc(){this.textures.forEach((r,e)=>{e.renderable||e.free()})}}const vs=2e6;class ws extends nt{constructor(e){super();u(this,"options");u(this,"animationManager");u(this,"txManager");u(this,"txMemManager");u(this,"fontManager");u(this,"textRenderers");u(this,"shManager");u(this,"renderer");u(this,"root");u(this,"boundsMargin");u(this,"deltaTime",0);u(this,"lastFrameTime",0);u(this,"currentFrameTime",0);u(this,"fpsNumFrames",0);u(this,"fpsElapsedTime",0);u(this,"renderRequested",!1);u(this,"contextSpy",null);this.options=e;const{canvas:t,clearColor:o,rootId:i,debug:s,appWidth:a,appHeight:c,boundsMargin:d,enableContextSpy:h,numImageWorkers:g,txMemByteThreshold:w}=e;this.txManager=new xs(g),this.txMemManager=new ys(w),this.shManager=new Yi,this.animationManager=new ps,this.contextSpy=h?new $i:null;let A=[0,0,0,0];d&&(A=Array.isArray(d)?d:[d,d,d,d]),this.boundsMargin=A,s!=null&&s.monitorTextureCache&&setInterval(()=>{N(this.txManager);const y=this.txManager.getDebugInfo();console.log("Texture ID Cache Size: ",y.idCacheSize),console.log("Texture Key Cache Size: ",y.keyCacheSize)},1e3),this.renderer=new Ri({stage:this,canvas:t,pixelRatio:e.devicePhysicalPixelRatio*e.deviceLogicalPixelRatio,clearColor:o!=null?o:4278190080,bufferMemory:vs,txManager:this.txManager,txMemManager:this.txMemManager,shManager:this.shManager,contextSpy:this.contextSpy}),this.txManager.renderer=this.renderer,this.textRenderers={canvas:new Oi(this),sdf:new is(this)},this.fontManager=new _o(this.textRenderers);const p=new Jr(this,{id:i,x:0,y:0,width:a,height:c,alpha:1,autosize:!1,clipping:!1,color:0,colorTop:0,colorBottom:0,colorLeft:0,colorRight:0,colorTl:0,colorTr:0,colorBl:0,colorBr:0,zIndex:0,zIndexLocked:0,scaleX:1,scaleY:1,mountX:0,mountY:0,mount:0,pivot:.5,pivotX:.5,pivotY:.5,rotation:0,parent:null,texture:null,textureOptions:null,shader:null,shaderProps:null,rtt:!1});this.root=p,fs(this)}updateAnimations(){const{animationManager:e}=this;this.root&&(this.lastFrameTime=this.currentFrameTime,this.currentFrameTime=gs(),this.deltaTime=this.lastFrameTime?this.currentFrameTime-this.lastFrameTime:100/6,this.emit("frameTick",{time:this.currentFrameTime,delta:this.deltaTime}),e.update(this.deltaTime))}hasSceneUpdates(){return!!this.root.updateType||this.renderRequested}drawFrame(){const{renderer:e,renderRequested:t}=this;this.root.updateType!==0&&this.root.update(this.deltaTime,this.root.clippingRect),e==null||e.reset(),e.rttNodes.length>0&&e.renderRTTNodes(),this.addQuads(this.root),e==null||e.render(),this.calculateFps(),t&&(this.renderRequested=!1)}calculateFps(){var t,o,i;const{fpsUpdateInterval:e}=this.options;if(e&&(this.fpsNumFrames++,this.fpsElapsedTime+=this.deltaTime,this.fpsElapsedTime>=e)){const s=Math.round(this.fpsNumFrames*1e3/this.fpsElapsedTime);this.fpsNumFrames=0,this.fpsElapsedTime=0,this.emit("fpsUpdate",{fps:s,contextSpyData:(o=(t=this.contextSpy)==null?void 0:t.getData())!=null?o:null}),(i=this.contextSpy)==null||i.reset()}}addQuads(e){N(this.renderer&&e.globalTransform),e.isRenderable&&e.renderQuads(this.renderer);for(let t=0;t{const{contain:e}=this,t=this.trState.props.width,o=this.trState.props.height,i=this.trState.textW||0,s=this.trState.textH||0;e==="both"?(this.props.width=t,this.props.height=o):e==="width"?(this.props.width=t,this.props.height=s):e==="none"&&(this.props.width=i,this.props.height=s),this.updateLocalTransform(),this.stage.requestRender(),this.emit("loaded",{type:"text",dimensions:{width:this.trState.textW||0,height:this.trState.textH||0}})});u(this,"onTextFailed",(e,t)=>{this.emit("failed",{type:"text",error:t})});this._textRendererOverride=t.textRendererOverride;const{resolvedTextRenderer:o,textRendererState:i}=this.resolveTextRendererAndState({x:this.absX,y:this.absY,width:t.width,height:t.height,textAlign:t.textAlign,color:t.color,zIndex:t.zIndex,contain:t.contain,scrollable:t.scrollable,scrollY:t.scrollY,offsetY:t.offsetY,letterSpacing:t.letterSpacing,debug:t.debug,fontFamily:t.fontFamily,fontSize:t.fontSize,fontStretch:t.fontStretch,fontStyle:t.fontStyle,fontWeight:t.fontWeight,text:t.text,lineHeight:t.lineHeight,maxLines:t.maxLines,textBaseline:t.textBaseline,verticalAlign:t.verticalAlign,overflowSuffix:t.overflowSuffix});this.textRenderer=o,this.trState=i}get width(){return this.props.width}set width(e){this.props.width=e,this.textRenderer.set.width(this.trState,e),this.contain==="none"&&this.setUpdateType(B.Local)}get height(){return this.props.height}set height(e){this.props.height=e,this.textRenderer.set.height(this.trState,e),this.contain!=="both"&&this.setUpdateType(B.Local)}get color(){return this.trState.props.color}set color(e){this.textRenderer.set.color(this.trState,e)}get text(){return this.trState.props.text}set text(e){this.textRenderer.set.text(this.trState,e)}get textRendererOverride(){return this._textRendererOverride}set textRendererOverride(e){this._textRendererOverride=e,this.textRenderer.destroyState(this.trState);const{resolvedTextRenderer:t,textRendererState:o}=this.resolveTextRendererAndState(this.trState.props);this.textRenderer=t,this.trState=o}get fontSize(){return this.trState.props.fontSize}set fontSize(e){this.textRenderer.set.fontSize(this.trState,e)}get fontFamily(){return this.trState.props.fontFamily}set fontFamily(e){this.textRenderer.set.fontFamily(this.trState,e)}get fontStretch(){return this.trState.props.fontStretch}set fontStretch(e){this.textRenderer.set.fontStretch(this.trState,e)}get fontStyle(){return this.trState.props.fontStyle}set fontStyle(e){this.textRenderer.set.fontStyle(this.trState,e)}get fontWeight(){return this.trState.props.fontWeight}set fontWeight(e){this.textRenderer.set.fontWeight(this.trState,e)}get textAlign(){return this.trState.props.textAlign}set textAlign(e){this.textRenderer.set.textAlign(this.trState,e)}get contain(){return this.trState.props.contain}set contain(e){this.textRenderer.set.contain(this.trState,e)}get scrollable(){return this.trState.props.scrollable}set scrollable(e){this.textRenderer.set.scrollable(this.trState,e)}get scrollY(){return this.trState.props.scrollY}set scrollY(e){this.textRenderer.set.scrollY(this.trState,e)}get offsetY(){return this.trState.props.offsetY}set offsetY(e){this.textRenderer.set.offsetY(this.trState,e)}get letterSpacing(){return this.trState.props.letterSpacing}set letterSpacing(e){this.textRenderer.set.letterSpacing(this.trState,e)}get lineHeight(){return this.trState.props.lineHeight}set lineHeight(e){this.textRenderer.set.lineHeight&&this.textRenderer.set.lineHeight(this.trState,e)}get maxLines(){return this.trState.props.maxLines}set maxLines(e){this.textRenderer.set.maxLines&&this.textRenderer.set.maxLines(this.trState,e)}get textBaseline(){return this.trState.props.textBaseline}set textBaseline(e){this.textRenderer.set.textBaseline&&this.textRenderer.set.textBaseline(this.trState,e)}get verticalAlign(){return this.trState.props.verticalAlign}set verticalAlign(e){this.textRenderer.set.verticalAlign&&this.textRenderer.set.verticalAlign(this.trState,e)}get overflowSuffix(){return this.trState.props.overflowSuffix}set overflowSuffix(e){this.textRenderer.set.overflowSuffix&&this.textRenderer.set.overflowSuffix(this.trState,e)}get debug(){return this.trState.props.debug}set debug(e){this.textRenderer.set.debug(this.trState,e)}update(e,t){super.update(e,t),N(this.globalTransform),this.textRenderer.set.x(this.trState,this.globalTransform.tx),this.textRenderer.set.y(this.trState,this.globalTransform.ty)}checkRenderProps(){return this.trState.props.text!==""?!0:super.checkRenderProps()}onChangeIsRenderable(e){super.onChangeIsRenderable(e),this.textRenderer.setIsRenderable(this.trState,e)}renderQuads(e){var t,o;N(this.globalTransform),!(this.parentHasRenderTexture&&(!e.renderToTextureActive||this.parentRenderTexture!==e.activeRttNode))&&(this.parentHasRenderTexture&&((t=this.props.parent)!=null&&t.rtt)&&(this.globalTransform=fe.identity(),this.globalTransform.multiply((o=this.localTransform)!=null?o:fe.identity())),N(this.globalTransform),this.textRenderer.renderQuads(this.trState,this.globalTransform,this.clippingRect,this.worldAlpha,this.parentHasRenderTexture,this.framebufferDimensions))}destroy(){super.destroy(),this.textRenderer.destroyState(this.trState)}resolveTextRendererAndState(e){const t=this.stage.resolveTextRenderer(e,this._textRendererOverride),o=t.createState(e);return o.emitter.on("loaded",this.onTextLoaded),o.emitter.on("failed",this.onTextFailed),t.scheduleUpdateState(o),{resolvedTextRenderer:t,textRendererState:o}}}class Ss extends Wr{constructor(r,e,t){super(r,e,t,new bs(t,{id:en(),x:r.x,y:r.y,width:r.width,height:r.height,alpha:r.alpha,autosize:r.autosize,clipping:r.clipping,color:r.color,colorTop:r.colorTop,colorBottom:r.colorBottom,colorLeft:r.colorLeft,colorRight:r.colorRight,colorTl:r.colorTl,colorTr:r.colorTr,colorBl:r.colorBl,colorBr:r.colorBr,zIndex:r.zIndex,zIndexLocked:r.zIndexLocked,scaleX:r.scaleX,scaleY:r.scaleY,mountX:r.mountX,mountY:r.mountY,mount:r.mount,pivot:r.pivot,pivotX:r.pivotX,pivotY:r.pivotY,rotation:r.rotation,text:r.text,fontSize:r.fontSize,fontFamily:r.fontFamily,fontWeight:r.fontWeight,fontStretch:r.fontStretch,fontStyle:r.fontStyle,contain:r.contain,scrollable:r.scrollable,letterSpacing:r.letterSpacing,textAlign:r.textAlign,scrollY:r.scrollY,offsetY:r.offsetY,textRendererOverride:r.textRendererOverride,lineHeight:r.lineHeight,maxLines:r.maxLines,textBaseline:r.textBaseline,verticalAlign:r.verticalAlign,overflowSuffix:r.overflowSuffix,debug:r.debug,parent:null,texture:null,textureOptions:null,shader:null,shaderProps:null,rtt:!1,parentHasRenderTexture:!1}))}get text(){return this.coreNode.text}set text(r){this.coreNode.text=r}get textRendererOverride(){return this.coreNode.textRendererOverride}set textRendererOverride(r){this.coreNode.textRendererOverride=r}get fontSize(){return this.coreNode.fontSize}set fontSize(r){this.coreNode.fontSize=r}get fontFamily(){return this.coreNode.fontFamily}set fontFamily(r){this.coreNode.fontFamily=r}get fontWeight(){return this.coreNode.fontWeight}set fontWeight(r){this.coreNode.fontWeight=r}get fontStretch(){return this.coreNode.fontStretch}set fontStretch(r){this.coreNode.fontStretch=r}get fontStyle(){return this.coreNode.fontStyle}set fontStyle(r){this.coreNode.fontStyle=r}get textAlign(){return this.coreNode.textAlign}set textAlign(r){this.coreNode.textAlign=r}get contain(){return this.coreNode.contain}set contain(r){this.coreNode.contain=r}get scrollable(){return this.coreNode.scrollable}set scrollable(r){this.coreNode.scrollable=r}get scrollY(){return this.coreNode.scrollY}set scrollY(r){this.coreNode.scrollY=r}get offsetY(){return this.coreNode.offsetY}set offsetY(r){this.coreNode.offsetY=r}get letterSpacing(){return this.coreNode.letterSpacing}set letterSpacing(r){this.coreNode.letterSpacing=r}get lineHeight(){return this.coreNode.lineHeight}set lineHeight(r){r&&(this.coreNode.lineHeight=r)}get maxLines(){return this.coreNode.maxLines}set maxLines(r){r&&(this.coreNode.maxLines=r)}get textBaseline(){return this.coreNode.textBaseline}set textBaseline(r){r&&(this.coreNode.textBaseline=r)}get verticalAlign(){return this.coreNode.verticalAlign}set verticalAlign(r){r&&(this.coreNode.verticalAlign=r)}get overflowSuffix(){return this.coreNode.overflowSuffix}set overflowSuffix(r){r&&(this.coreNode.overflowSuffix=r)}get debug(){return this.coreNode.debug}set debug(r){this.coreNode.debug=r}}class As{constructor(){u(this,"root",null);u(this,"stage",null);u(this,"rendererMain",null)}async init(r,e,t){this.stage=new ws({rootId:en(),appWidth:e.appWidth,appHeight:e.appHeight,txMemByteThreshold:e.txMemByteThreshold,boundsMargin:e.boundsMargin,deviceLogicalPixelRatio:e.deviceLogicalPixelRatio,devicePhysicalPixelRatio:e.devicePhysicalPixelRatio,clearColor:e.clearColor,canvas:t,fpsUpdateInterval:e.fpsUpdateInterval,enableContextSpy:e.enableContextSpy,numImageWorkers:e.numImageWorkers,debug:{monitorTextureCache:!1}}),this.rendererMain=r,N(this.stage.root);const o=new Wr(r.resolveNodeDefaults({}),this.rendererMain,this.stage,this.stage.root);this.root=o,o.once("beforeDestroy",this.onBeforeDestroyNode.bind(this,o)),this.onCreateNode(o),e.coreExtensionModule&&await as(e.coreExtensionModule,this.stage),this.stage.on("fpsUpdate",(i,s)=>{this.onFpsUpdate(s)}),this.stage.on("frameTick",(i,s)=>{this.onFrameTick(s)}),this.stage.on("idle",()=>{this.onIdle()})}createNode(r){N(this.rendererMain),N(this.stage);const e=new Wr(r,this.rendererMain,this.stage);return e.once("beforeDestroy",this.onBeforeDestroyNode.bind(this,e)),this.onCreateNode(e),e}createTextNode(r){N(this.rendererMain),N(this.stage);const e=new Ss(r,this.rendererMain,this.stage);return e.once("beforeDestroy",this.onBeforeDestroyNode.bind(this,e)),this.onCreateNode(e),e}destroyNode(r){r.destroy()}releaseTexture(r){const{stage:e}=this;N(e),e.txManager.removeTextureIdFromCache(r)}getRootNode(){return N(this.root),this.root}onCreateNode(r){throw new Error("Method not implemented.")}onBeforeDestroyNode(r){throw new Error("Method not implemented.")}onFpsUpdate(r){throw new Error("Method not implemented.")}onFrameTick(r){throw new Error("Method not implemented.")}onIdle(){throw new Error("Method not implemented.")}}const Io=(n,r)=>n===r,lr=Symbol("solid-proxy"),Cs=Symbol("solid-track"),cr={equals:Io};let Bo=Po;const Ae=1,dr=2,ko={owned:null,cleanups:null,context:null,owner:null},Ir={};var $=null;let Br=null,Ts=null,H=null,ae=null,Ie=null,wr=0;function mt(n,r){const e=H,t=$,o=n.length===0,i=r===void 0?t:r,s=o?ko:{owned:null,cleanups:null,context:i?i.context:null,owner:i},a=o?n:()=>n(()=>le(()=>Sr(s)));$=s,H=null;try{return Be(a,!0)}finally{H=e,$=t}}function W(n,r){r=r?Object.assign({},cr,r):cr;const e={value:n,observers:null,observerSlots:null,comparator:r.equals||void 0},t=o=>(typeof o=="function"&&(o=o(e.value)),zo(e,o));return[Mo.bind(e),t]}function Yr(n,r,e){const t=Dt(n,r,!0,Ae);it(t)}function Re(n,r,e){const t=Dt(n,r,!1,Ae);it(t)}function He(n,r,e){Bo=Fs;const t=Dt(n,r,!1,Ae);(!e||!e.render)&&(t.user=!0),Ie?Ie.push(t):it(t)}function q(n,r,e){e=e?Object.assign({},cr,e):cr;const t=Dt(n,r,!0,0);return t.observers=null,t.observerSlots=null,t.comparator=e.equals||void 0,it(t),Mo.bind(t)}function _s(n){return n&&typeof n=="object"&&"then"in n}function tt(n,r,e){let t,o,i;arguments.length===2&&typeof r=="object"||arguments.length===1?(t=!0,o=n,i=r||{}):(t=n,o=r,i=e||{});let s=null,a=Ir,c=!1,d="initialValue"in i,h=typeof t=="function"&&q(t);const g=new Set,[w,A]=(i.storage||W)(i.initialValue),[p,y]=W(void 0),[S,b]=W(void 0,{equals:!1}),[v,x]=W(d?"ready":"unresolved");function m(T,_,k,z){return s===T&&(s=null,z!==void 0&&(d=!0),(T===a||_===a)&&i.onHydrated&&queueMicrotask(()=>i.onHydrated(z,{value:_})),a=Ir,C(_,k)),_}function C(T,_){Be(()=>{_===void 0&&A(()=>T),x(_!==void 0?"errored":d?"ready":"unresolved"),y(_);for(const k of g.keys())k.decrement();g.clear()},!1)}function I(){const T=Bs,_=w(),k=p();if(k!==void 0&&!s)throw k;return H&&!H.user&&T&&Yr(()=>{S(),s&&(T.resolved||g.has(T)||(T.increment(),g.add(T)))}),_}function R(T=!0){if(T!==!1&&c)return;c=!1;const _=h?h():t;if(_==null||_===!1){m(s,le(w));return}const k=a!==Ir?a:le(()=>o(_,{value:w(),refetching:T}));return _s(k)?(s=k,"value"in k?(k.status==="success"?m(s,k.value,void 0,_):m(s,void 0,void 0,_),k):(c=!0,queueMicrotask(()=>c=!1),Be(()=>{x(d?"refreshing":"pending"),b()},!1),k.then(z=>m(k,z,void 0,_),z=>m(k,void 0,Oo(z),_)))):(m(s,k,void 0,_),k)}return Object.defineProperties(I,{state:{get:()=>v()},error:{get:()=>p()},loading:{get(){const T=v();return T==="pending"||T==="refreshing"}},latest:{get(){if(!d)return I();const T=p();if(T&&!s)throw T;return w()}}}),h?Yr(()=>R(!1)):R(!1),[I,{refetch:R,mutate:A}]}function Eo(n,r=Io,e){const t=new Map,o=Dt(i=>{const s=n();for(const[a,c]of t.entries())if(r(a,s)!==r(a,i))for(const d of c.values())d.state=Ae,d.pure?ae.push(d):Ie.push(d);return s},void 0,!0,Ae);return it(o),i=>{const s=H;if(s){let a;(a=t.get(i))?a.add(s):t.set(i,a=new Set([s])),Me(()=>{a.delete(s),!a.size&&t.delete(i)})}return r(i,o.value)}}function Rs(n){return Be(n,!1)}function le(n){if(H===null)return n();const r=H;H=null;try{return n()}finally{H=r}}function ot(n,r,e){const t=Array.isArray(n);let o,i=e&&e.defer;return s=>{let a;if(t){a=Array(n.length);for(let d=0;dr(a,o,s));return o=a,c}}function Qe(n){He(()=>le(n))}function Me(n){return $===null||($.cleanups===null?$.cleanups=[n]:$.cleanups.push(n)),n}function Pt(){return $}function Fo(n,r){const e=$,t=H;$=n,H=null;try{return Be(r,!0)}catch(o){tn(o)}finally{$=e,H=t}}function Is(n){const r=H,e=$;return Promise.resolve().then(()=>{H=r,$=e;let t;return Be(n,!1),H=$=null,t?t.done:void 0})}function No(n,r){const e=Symbol("context");return{id:e,Provider:Ns(e),defaultValue:n}}function Lo(n){return $&&$.context&&$.context[n.id]!==void 0?$.context[n.id]:n.defaultValue}function br(n){const r=q(n),e=q(()=>$r(r()));return e.toArray=()=>{const t=e();return Array.isArray(t)?t:t!=null?[t]:[]},e}let Bs;function Mo(){if(this.sources&&this.state)if(this.state===Ae)it(this);else{const n=ae;ae=null,Be(()=>hr(this),!1),ae=n}if(H){const n=this.observers?this.observers.length:0;H.sources?(H.sources.push(this),H.sourceSlots.push(n)):(H.sources=[this],H.sourceSlots=[n]),this.observers?(this.observers.push(H),this.observerSlots.push(H.sources.length-1)):(this.observers=[H],this.observerSlots=[H.sources.length-1])}return this.value}function zo(n,r,e){let t=n.value;return(!n.comparator||!n.comparator(t,r))&&(n.value=r,n.observers&&n.observers.length&&Be(()=>{for(let o=0;o1e6)throw ae=[],new Error},!1)),r}function it(n){if(!n.fn)return;Sr(n);const r=wr;ks(n,n.value,r)}function ks(n,r,e){let t;const o=$,i=H;H=$=n;try{t=n.fn(r)}catch(s){return n.pure&&(n.state=Ae,n.owned&&n.owned.forEach(Sr),n.owned=null),n.updatedAt=e+1,tn(s)}finally{H=i,$=o}(!n.updatedAt||n.updatedAt<=e)&&(n.updatedAt!=null&&"observers"in n?zo(n,t):n.value=t,n.updatedAt=e)}function Dt(n,r,e,t=Ae,o){const i={fn:n,state:t,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:r,owner:$,context:$?$.context:null,pure:e};return $===null||$!==ko&&($.owned?$.owned.push(i):$.owned=[i]),i}function ur(n){if(n.state===0)return;if(n.state===dr)return hr(n);if(n.suspense&&le(n.suspense.inFallback))return n.suspense.effects.push(n);const r=[n];for(;(n=n.owner)&&(!n.updatedAt||n.updatedAt=0;e--)if(n=r[e],n.state===Ae)it(n);else if(n.state===dr){const t=ae;ae=null,Be(()=>hr(n,r[0]),!1),ae=t}}function Be(n,r){if(ae)return n();let e=!1;r||(ae=[]),Ie?e=!0:Ie=[],wr++;try{const t=n();return Es(e),t}catch(t){e||(Ie=null),ae=null,tn(t)}}function Es(n){if(ae&&(Po(ae),ae=null),n)return;const r=Ie;Ie=null,r.length&&Be(()=>Bo(r),!1)}function Po(n){for(let r=0;r=0;r--)Sr(n.owned[r]);n.owned=null}if(n.cleanups){for(r=n.cleanups.length-1;r>=0;r--)n.cleanups[r]();n.cleanups=null}n.state=0}function Oo(n){return n instanceof Error?n:new Error(typeof n=="string"?n:"Unknown error",{cause:n})}function tn(n,r=$){throw Oo(n)}function $r(n){if(typeof n=="function"&&!n.length)return $r(n());if(Array.isArray(n)){const r=[];for(let e=0;eo=le(()=>($.context={...$.context,[n]:t.value},br(()=>t.children))),void 0),o}}const Ls=Symbol("fallback");function Mn(n){for(let r=0;r1?[]:null;return Me(()=>Mn(i)),()=>{let c=n()||[],d,h;return c[Cs],le(()=>{let w=c.length,A,p,y,S,b,v,x,m,C;if(w===0)s!==0&&(Mn(i),i=[],t=[],o=[],s=0,a&&(a=[])),e.fallback&&(t=[Ls],o[0]=mt(I=>(i[0]=I,e.fallback())),s=1);else if(s===0){for(o=new Array(w),h=0;h=v&&m>=v&&t[x]===c[m];x--,m--)y[m]=o[x],S[m]=i[x],a&&(b[m]=a[x]);for(A=new Map,p=new Array(m+1),h=m;h>=v;h--)C=c[h],d=A.get(C),p[h]=d===void 0?-1:d,A.set(C,h);for(d=v;d<=x;d++)C=t[d],h=A.get(C),h!==void 0&&h!==-1?(y[h]=o[d],S[h]=i[d],a&&(b[h]=a[d]),h=p[h],A.set(C,h)):i[d]();for(h=v;hn(r||{}))}function Gt(){return!0}const Hr={get(n,r,e){return r===lr?e:n.get(r)},has(n,r){return r===lr?!0:n.has(r)},set:Gt,deleteProperty:Gt,getOwnPropertyDescriptor(n,r){return{configurable:!0,enumerable:!0,get(){return n.get(r)},set:Gt,deleteProperty:Gt}},ownKeys(n){return n.keys()}};function kr(n){return(n=typeof n=="function"?n():n)?n:{}}function zs(){for(let n=0,r=this.length;n=0;a--){const c=kr(n[a])[s];if(c!==void 0)return c}},has(s){for(let a=n.length-1;a>=0;a--)if(s in kr(n[a]))return!0;return!1},keys(){const s=[];for(let a=0;a=0;s--){const a=n[s];if(!a)continue;const c=Object.getOwnPropertyNames(a);for(let d=c.length-1;d>=0;d--){const h=c[d];if(h==="__proto__"||h==="constructor")continue;const g=Object.getOwnPropertyDescriptor(a,h);if(!t[h])t[h]=g.get?{enumerable:!0,configurable:!0,get:zs.bind(e[h]=[g.get.bind(a)])}:g.value!==void 0?g:void 0;else{const w=e[h];w&&(g.get?w.push(g.get.bind(a)):g.value!==void 0&&w.push(()=>g.value))}}}const o={},i=Object.keys(t);for(let s=i.length-1;s>=0;s--){const a=i[s],c=t[a];c&&c.get?Object.defineProperty(o,a,c):o[a]=c?c.value:void 0}return o}function Ps(n,...r){if(lr in n){const o=new Set(r.length>1?r.flat():r[0]),i=r.map(s=>new Proxy({get(a){return s.includes(a)?n[a]:void 0},has(a){return s.includes(a)&&a in n},keys(){return s.filter(a=>a in n)}},Hr));return i.push(new Proxy({get(s){return o.has(s)?void 0:n[s]},has(s){return o.has(s)?!1:s in n},keys(){return Object.keys(n).filter(s=>!o.has(s))}},Hr)),i}const e={},t=r.map(()=>({}));for(const o of Object.getOwnPropertyNames(n)){const i=Object.getOwnPropertyDescriptor(n,o),s=!i.get&&!i.set&&i.enumerable&&i.writable&&i.configurable;let a=!1,c=0;for(const d of r)d.includes(o)&&(a=!0,s?t[c][o]=i.value:Object.defineProperty(t[c],o,i)),++c;a||(s?e[o]=i.value:Object.defineProperty(e,o,i))}return[...t,e]}const Ds=n=>"Stale read from <".concat(n,">.");function nn(n){const r="fallback"in n&&{fallback:()=>n.fallback};return q(Ms(()=>n.each,n.children,r||void 0))}function je(n){const r=n.keyed,e=q(()=>n.when,void 0,{equals:(t,o)=>r?t===o:!t==!o});return q(()=>{const t=e();if(t){const o=n.children;return typeof o=="function"&&o.length>0?le(()=>o(r?t:()=>{if(!le(e))throw Ds("Show");return n.when})):o}return n.fallback},void 0,void 0)}const Os=void 0;let Le,on;function Ws(n={},r="app"){const e=new As;return Le=new ls(n,r,e),on=Le.createShader.bind(Le),Le}class Us extends Array{constructor(e){super();u(this,"_parent");this._parent=e}get selected(){return this[this._parent.selected||0]}get firstChild(){return this[0]}insert(e,t){if(t){const o=this.indexOf(t);this.splice(o,0,e)}else this.push(e);e.parent=this._parent,this._parent._isDirty=!0}remove(e){const t=this.indexOf(e);t>=0&&this.splice(t,1)}}function Ys(){return{BASE_URL:"/solid-demo-app/",MODE:"production",DEV:!1,PROD:!0,SSR:!1,LEGACY:!1}&&!1}const $s=Ys()||!1,pe={debug:!1,animationsEnabled:!0,animationSettings:{duration:250,easing:"ease-in-out"},fontSettings:{fontFamily:"Ubuntu",fontSize:100}};function zn(n){return Hs(n)&&n.debug}function Je(n,r,...e){$s&&(pe.debug||zn(r)||zn(e[0]))&&console.log(n,r,...e)}function qt(n){return typeof n=="function"}function Hs(n){return typeof n=="object"}function fr(n){return Array.isArray(n)}function js(n){return typeof n=="string"}function Qs(n){return typeof n=="number"}function Xs(n){return Number.isInteger(n)}function Ks(n,r){for(const e of r)if(e in n)return!0;return!1}function Uo(n,r={}){if(fr(n))n.forEach(e=>{Uo(e,r)});else if(n)for(const e in n)r[e]===void 0&&(r[e]=n[e]);return r}class Pn extends Array{constructor(e,t={}){var r=(...Md)=>(super(...Md),u(this,"onChange"),this);return fr(t)?r(...t):js(t)?r(t):r(...Object.entries(t).filter(([o,i])=>i).map(([o])=>o)),this.onChange=e,this}has(e){return this.indexOf(e)>=0}is(e){return this.indexOf(e)>=0}add(e){this.push(e),this.onChange()}toggle(e){this.has(e)?this.remove(e):this.add(e)}remove(e){const t=this.indexOf(e);t>=0&&(this.splice(t,1),this.onChange())}}function Vs(n){const r=[];let e=!1;for(let x=0;x(x.flexOrder||0)-(m.flexOrder||0));const t=r.length,i=(n.flexDirection||"row")==="row",s=i?"width":"height",a=i?"height":"width",c=i?"marginLeft":"marginTop",d=i?"marginRight":"marginBottom",h=i?"x":"y",g=i?"y":"x",w=n[s]||0,A=n[a]||0,p=n.gap||0,y=n.justifyContent||"flexStart",S=n.alignItems;let b=0;["center","spaceBetween","spaceEvenly"].includes(y)&&(b=r.reduce((x,m)=>x+(m[s]||0),0));const v=A&&S?x=>{S==="flexStart"?x[g]=0:S==="center"?x[g]=(A-(x[a]||0))/2:S==="flexEnd"&&(x[g]=A-(x[a]||0))}:x=>x;if(y==="flexStart"){let x=0;if(r.forEach(m=>{m[h]=x+(m[c]||0),x+=(m[s]||0)+p+(m[c]||0)+(m[d]||0),v(m)}),n.flexBoundary!=="fixed"){const m=x-p;if(m!==n[s])return n[s]=m,!0}}else if(y==="flexEnd"){let x=w;for(let m=t-1;m>=0;m--){const C=r[m];N(C),C[h]=x-(C[s]||0)-(C[d]||0),x-=(C[s]||0)+p+(C[c]||0)+(C[d]||0),v(C)}}else if(y==="center"){let x=(w-(b+p*(t-1)))/2;r.forEach(m=>{m[h]=x,x+=(m[s]||0)+p,v(m)})}else if(y==="spaceBetween"){const x=(w-b)/(t-1);let m=0;r.forEach(C=>{C[h]=m,m+=(C[s]||0)+x,v(C)})}else if(y==="spaceEvenly"){const x=(w-b)/(t+1);let m=x;r.forEach(C=>{C[h]=m,m+=(C[s]||0)+x,v(C)})}return!1}const[sn,Yo]=W(void 0),{animationSettings:Gs}=pe;function Dn(n){const r=[];for(const[e,t]of Object.entries(n))r.push({type:e,props:t});return on("DynamicShader",{effects:r})}function bt(n=""){return{set(r){Qs(r)&&(r={width:r,color:255}),this.effects={...this.effects||{},["border".concat(n)]:r},this["_border".concat(n)]=r},get(){return this["_border".concat(n)]}}}const qs=["alpha","color","colorTop","colorRight","colorLeft","colorBottom","colorTl","colorTr","colorBl","colorBr","height","fontSize","lineHeight","mount","mountX","mountY","pivot","pivotX","pivotY","rotation","scale","width","worldX","worldY","x","y","zIndex","zIndexLocked"],Zs=["autosize","clipping","contain","fontFamily","fontStretch","fontStyle","fontWeight","letterSpacing","maxLines","offsetY","overflowSuffix","rtt","scrollable","scrollY","src","text","textAlign","textBaseline","textOverflow","texture","verticalAlign","wordWrap"];class be extends Object{constructor(e){super();u(this,"id");u(this,"debug");u(this,"name");u(this,"lng");u(this,"renderer");u(this,"selected");u(this,"autofocus");u(this,"flexItem");u(this,"flexOrder");u(this,"flexBoundary");u(this,"_queueDelete");u(this,"forwardFocus");u(this,"_undoStyles");u(this,"_renderProps");u(this,"_effects");u(this,"_parent");u(this,"_shader");u(this,"_style");u(this,"_states");u(this,"_events");u(this,"_animationSettings");u(this,"_borderRadius");u(this,"_border");u(this,"_borderLeft");u(this,"_borderRight");u(this,"_borderTop");u(this,"_borderBottom");u(this,"_autosized");u(this,"_isDirty");u(this,"_animationQueue",[]);u(this,"_animationQueueSettings");u(this,"_animationRunning",!1);u(this,"children");this.name=e,this._renderProps={},this.children=new Us(this)}get effects(){return this._effects}set effects(e){this._effects=e,this.lng&&(this.shader=Dn(e))}get parent(){return this._parent}set parent(e){var t;this._parent=e,this.lng&&(this.lng.parent=(t=e==null?void 0:e.lng)!=null?t:null)}get shader(){return this._shader}set shader(e){fr(e)?this._shader=on(...e):this._shader=e,this._sendToLightning("shader",this._shader)}_sendToLightningAnimatable(e,t){if(this.lng){if(pe.animationsEnabled&&this.transition&&(this.transition===!0||this.transition[e])){const o=this.transition===!0||this.transition[e]===!0?void 0:this.transition[e];return this.animate({[e]:t},o).start()}this.lng[e]=t}else this._renderProps[e]=t}_sendToLightning(e,t){this.lng?this.lng[e]=t:this._renderProps[e]=t}animate(e,t){return N(this.lng,"Node must be rendered before animating"),this.lng.animate(e,t||this.animationSettings)}chain(e,t){return this._animationRunning&&(this._animationQueue=[],this._animationRunning=!1),t?this._animationQueueSettings=t:this._animationQueueSettings||(this._animationQueueSettings=t||this.animationSettings),t=t||this._animationQueueSettings,this._animationQueue.push({props:e,animationSettings:t}),this}async start(){let e=this._animationQueue.shift();for(;e;)this._animationRunning=!0,await this.animate(e.props,e.animationSettings).start().waitUntilStopped(),e=this._animationQueue.shift();this._animationRunning=!1,this._animationQueueSettings=void 0}setFocus(){if(this.lng){if(this.forwardFocus!==void 0)if(qt(this.forwardFocus)){if(this.forwardFocus.call(this,this)!==!1)return}else{const e=typeof this.forwardFocus=="number"?this.forwardFocus:null;if(e!==null&&eYo(this))}else this.autofocus=!0}isTextNode(){return this.name==="text"}_resizeOnTextLoad(){this.lng.on("loaded",(e,t)=>{if(t.type==="text"){const{dimensions:o}=t;this.parent.updateLayout(this,o)}})}getText(){return this.children.map(e=>e.text).join("")}destroy(){var e;this._queueDelete&&((e=this.lng)==null||e.destroy())}set onEvents(e){this._events=e}get onEvents(){return this._events||[]}set style(e){fr(e)?this._style=Uo(e):this._style=e;for(const t in this._style)this[t]===void 0&&(this[t]=this._style[t])}get style(){return this._style}get hasChildren(){return this.children.length>0}getChildById(e){return this.children.find(t=>t.id===e)}searchChildrenById(e){for(let t=0;to.states=t)}const e=this.states;if(this._undoStyles||this.style&&Ks(this.style,e)){this._undoStyles=this._undoStyles||[];const t={};this._undoStyles.forEach(i=>{t[i]=this.style[i]});const o=e.reduce((i,s)=>{const a=this.style[s];return a&&(i={...i,...a}),i},{});this._undoStyles=Object.keys(o),o.transition!==void 0&&(this.transition=o.transition),Object.assign(this,t,o)}}render(){const e=this,t=this.parent;if(!t){console.warn("Parent not set - no node created for: ",this);return}if(!t.lng){console.warn("Parent not rendered yet: ",this);return}if(this.lng){console.warn("Node already rendered: ",this);return}t._isDirty&&(t.updateLayout(),t._isDirty=!1),this.states.length&&this._stateChanged();const o=e._renderProps;if(o.x=o.x||0,o.y=o.y||0,t.lng&&(o.parent=t.lng),e._effects&&(this.shader=Dn(e._effects)),e.isTextNode()){if(pe.fontSettings)for(const i in pe.fontSettings)o[i]===void 0&&(o[i]=pe.fontSettings[i]);o.text=e.getText(),o.contain&&(o.width||(o.width=(t.width||0)-o.x-(o.marginRight||0),e._autosized=!0),o.contain==="both"&&!o.height&&!o.maxLines&&(o.height=(t.height||0)-o.y-(o.marginBottom||0),e._autosized=!0)),Je("Rendering: ",this,o),e.lng=Le.createTextNode(o),(!o.width||!o.height)&&(e._autosized=!0,e._resizeOnTextLoad())}else o.texture||(isNaN(o.width)&&(o.width=(t.width||0)-o.x,e._autosized=!0),isNaN(o.height)&&(o.height=(t.height||0)-o.y,e._autosized=!0),!o.color&&!o.src&&(o.color=0)),Je("Rendering: ",this,o),e.lng=Le.createNode(o);e.onFail&&e.lng.on("failed",e.onFail),e.onLoad&&e.lng.on("loaded",e.onLoad),qt(this.onCreate)&&this.onCreate.call(this,e),e.onEvents.forEach(([i,s])=>{var a;(a=e.lng)==null||a.on(i,(c,d)=>s(e,d))}),e.lng.div&&(e.lng.div.solid=e),e.name!=="text"&&e.children.forEach(i=>{i.render?i.render():i.text!==""&&console.warn("TextNode outside of : ",i)}),e.autofocus&&e.setFocus(),delete this._renderProps}}for(const n of qs)Object.defineProperty(be.prototype,n,{get(){return this.lng?this.lng[n]:this._renderProps[n]},set(r){this._sendToLightningAnimatable(n,r)}});for(const n of Zs)Object.defineProperty(be.prototype,n,{get(){return this.lng?this.lng[n]:this._renderProps[n]},set(r){this._sendToLightning(n,r)}});Object.defineProperties(be.prototype,{borderRadius:{set(n){this._borderRadius=n,this.effects={...this.effects||{},radius:{radius:n}}},get(){return this._borderRadius}},border:bt(),borderLeft:bt("Left"),borderRight:bt("Right"),borderTop:bt("Top"),borderBottom:bt("Bottom")});Object.defineProperties(be.prototype,{linearGradient:{set(n={}){this._linearGradient=n,this.effects={...this.effects||{},linearGradient:n}},get(){return this._linearGradient}}});const F=n=>(()=>{var r=Ar("text");return an(r,n,!1),r})(),L=n=>(()=>{var r=Ar("node");return an(r,n,!1),r})();function Js({createElement:n,createTextNode:r,isTextNode:e,replaceText:t,insertNode:o,removeNode:i,setProperty:s,getParentNode:a,getFirstChild:c,getNextSibling:d}){function h(v,x,m,C){if(m!==void 0&&!C&&(C=[]),typeof x!="function")return g(v,x,C,m);Re(I=>g(v,x(),I,m),C)}function g(v,x,m,C,I){for(;typeof m=="function";)m=m();if(x===m)return m;const R=typeof x,T=C!==void 0;if(R==="string"||R==="number")if(R==="number"&&(x=x.toString()),T){let _=m[0];_&&e(_)?t(_,x):_=r(x),m=p(v,m,C,_)}else m!==""&&typeof m=="string"?t(c(v),m=x):(p(v,m,C,r(x)),m=x);else if(x==null||R==="boolean")m=p(v,m,C);else{if(R==="function")return Re(()=>{let _=x();for(;typeof _=="function";)_=_();m=g(v,_,m,C)}),()=>m;if(Array.isArray(x)){const _=[];if(w(_,x,I))return Re(()=>m=g(v,_,m,C,!0)),()=>m;if(_.length===0){const k=p(v,m,C);if(T)return m=k}else Array.isArray(m)?m.length===0?y(v,_,C):A(v,m,_):m==null||m===""?y(v,_):A(v,T&&m||[c(v)],_);m=_}else{if(Array.isArray(m)){if(T)return m=p(v,m,C,x);p(v,m,null,x)}else m==null||m===""||!c(v)?o(v,x):S(v,x,c(v));m=x}}return m}function w(v,x,m){let C=!1;for(let I=0,R=x.length;IE-_){const U=x[T];for(;_=0;T--){const _=x[T];if(I!==_){const k=a(_)===v;!R&&!T?k?S(v,I,_):o(v,I,m):k&&i(v,_)}else R=!0}}else o(v,I,m);return[I]}function y(v,x,m){for(let C=0,I=x.length;Cm.children=g(v,x.children,m.children)),Re(()=>x.ref&&x.ref(v)),Re(()=>{for(const I in x){if(I==="children"||I==="ref")continue;const R=x[I];R!==m[I]&&(s(v,I,R,m[I]),m[I]=R)}}),m}return{render(v,x){let m;return mt(C=>{m=C,h(x,v())}),m},insert:h,spread(v,x,m){typeof x=="function"?Re(C=>b(v,x(),C,m)):b(v,x,void 0,m)},createElement:n,createTextNode:r,insertNode:o,setProp(v,x,m,C){return s(v,x,m,C),m},mergeProps:rn,effect:Re,memo:q,createComponent:Wo,use(v,x,m){return le(()=>v(x,m))}}}function ea(n){const r=Js(n);return r.mergeProps=rn,r}const ta={createElement(n){return new be(n)},createTextNode(n){return{name:"TextNode",text:n,parent:void 0}},replaceText(n,r){Je("Replace Text: ",n,r),n.text=r;const e=n.parent;N(e),e.text=e.getText()},setProperty(n,r,e=!0){n[r]=e},insertNode(n,r,e){Je("INSERT: ",n,r,e),n.children.insert(r,e),r._queueDelete=!1,r instanceof be?n.lng&&r.render():n.isTextNode()&&(n.text=n.getText())},isTextNode(n){return n.isTextNode()},removeNode(n,r){Je("REMOVE: ",n,r),n.children.remove(r),r._queueDelete=!0,r instanceof be&&queueMicrotask(()=>r.destroy())},getParentNode(n){return n.parent},getFirstChild(n){return n.children[0]},getNextSibling(n){const r=n.parent.children||[],e=r.indexOf(n)+1;if(en.delete(o)}let e=!1;function t(o,i){if(e)return!(e=!1);const s={to:o,options:i,defaultPrevented:!1,preventDefault:()=>s.defaultPrevented=!0};for(const a of n)a.listener({...s,from:a.location,retry:c=>{c&&(e=!0),a.navigate(o,{...i,resolve:!1})}});return!s.defaultPrevented}return{subscribe:r,confirm:t}}let jr;function ln(){(!window.history.state||window.history.state._depth==null)&&window.history.replaceState({...window.history.state,_depth:window.history.length-1},""),jr=window.history.state._depth}ln();function ca(n){return{...n,_depth:window.history.state&&window.history.state._depth}}function da(n,r){let e=!1;return()=>{const t=jr;ln();const o=t==null?null:jr-t;if(e){e=!1;return}o&&r(o)?(e=!0,window.history.go(-o)):n()}}const ua=/^(?:[a-z0-9]+:)?\/\//i,ha=/^\/+|(\/)\/+$/g,jo="http://sr";function Bt(n,r=!1){const e=n.replace(ha,"$1");return e?r||/^[?#]/.test(e)?e:"/"+e:""}function sr(n,r,e){if(ua.test(r))return;const t=Bt(n),o=e&&Bt(e);let i="";return!o||r.startsWith("/")?i=t:o.toLowerCase().indexOf(t.toLowerCase())!==0?i=t+o:i=o,(i||"/")+Bt(r,!i)}function fa(n,r){if(n==null)throw new Error(r);return n}function ga(n,r){return Bt(n).replace(/\/*(\*.*)?$/g,"")+Bt(r)}function Qo(n){const r={};return n.searchParams.forEach((e,t)=>{r[t]=e}),r}function Xo(n,r,e){const[t,o]=n.split("/*",2),i=t.split("/").filter(Boolean),s=i.length;return a=>{const c=a.split("/").filter(Boolean),d=c.length-s;if(d<0||d>0&&o===void 0&&!r)return null;const h={path:s?"":"/",params:{}},g=w=>e===void 0?void 0:e[w];for(let w=0;wt.localeCompare(n,void 0,{sensitivity:"base"})===0;return r===void 0?!0:typeof r=="string"?e(r):typeof r=="function"?r(n):Array.isArray(r)?r.some(e):r instanceof RegExp?r.test(n):!1}function pa(n){const[r,e]=n.pattern.split("/*",2),t=r.split("/").filter(Boolean);return t.reduce((o,i)=>o+(i.startsWith(":")?2:3),t.length-(e===void 0?0:1))}function Ko(n){const r=new Map,e=Pt();return new Proxy({},{get(t,o){return r.has(o)||Fo(e,()=>r.set(o,q(()=>n()[o]))),r.get(o)()},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}},ownKeys(){return Reflect.ownKeys(n())}})}function cn(n){let r=/(\/?\:[^\/]+)\?/.exec(n);if(!r)return[n];let e=n.slice(0,r.index),t=n.slice(r.index+r[0].length);const o=[e,e+=r[1]];for(;r=/^(\/\:[^\/]+)\?/.exec(t);)o.push(e+=r[1]),t=t.slice(r[0].length);return cn(t).reduce((i,s)=>[...i,...o.map(a=>a+s)],[])}const ma=100,Vo=No(),Go=No(),dn=()=>fa(Lo(Vo)," and 'use' router primitives can be only used inside a Route."),xt=()=>dn().navigatorFactory(),qo=()=>dn().location,xa=(n,r)=>{const e=qo(),t=q(()=>cn(n()).map(o=>Xo(o,void 0,r)));return q(()=>{for(const o of t()){const i=o(e.pathname);if(i)return i}})},un=()=>dn().params;function ya(n,r=""){const{component:e,load:t,children:o,info:i}=n,s=!o||Array.isArray(o)&&!o.length,a={key:n,component:e,load:t,info:i};return Zo(n.path).reduce((c,d)=>{for(const h of cn(d)){const g=ga(r,h);let w=s?g:g.split("/*",1)[0];w=w.split("/").map(A=>A.startsWith(":")||A.startsWith("*")?A:encodeURIComponent(A)).join("/"),c.push({...a,originalPath:h,pattern:w,matcher:Xo(w,!s,n.matchFilters)})}return c},[])}function va(n,r=0){return{routes:n,score:pa(n[n.length-1])*1e4-r,matcher(e){const t=[];for(let o=n.length-1;o>=0;o--){const i=n[o],s=i.matcher(e);if(!s)return null;t.unshift({...s,route:i})}return t}}}function Zo(n){return Array.isArray(n)?n:[n]}function Jo(n,r="",e=[],t=[]){const o=Zo(n);for(let i=0,s=o.length;is.score-i.score)}function Wn(n,r){for(let e=0,t=n.length;e{const d=n();try{return new URL(d,e)}catch(h){return console.error("Invalid path ".concat(d)),c}},e,{equals:(c,d)=>c.href===d.href}),o=q(()=>t().pathname),i=q(()=>t().search,!0),s=q(()=>t().hash),a=()=>"";return{get pathname(){return o()},get search(){return i()},get hash(){return s()},get state(){return r()},get key(){return a()},query:Ko(ot(i,()=>Qo(t())))}}let Ue;function ba(n,r,e,t={}){const{signal:[o,i],utils:s={}}=n,a=s.parsePath||(E=>E),c=s.renderPath||(E=>E),d=s.beforeLeave||Ho(),h=sr("",t.base||"");if(h===void 0)throw new Error("".concat(h," is not a valid base path"));h&&!o().value&&i({value:h,replace:!0,scroll:!1});const[g,w]=W(!1),A=async E=>{w(!0);try{await Is(E)}finally{w(!1)}},[p,y]=W(o().value),[S,b]=W(o().state),v=wa(p,S),x=[],m=W([]),C=q(()=>Wn(r(),v.pathname)),I=Ko(()=>{const E=C(),P={};for(let O=0;Oh,outlet:()=>null,resolvePath(E){return sr(h,E)}};return Re(()=>{const{value:E,state:P}=o();le(()=>{E!==p()&&A(()=>{Ue="native",y(E),b(P),m[1]([])}).then(()=>{Ue=void 0})})}),{base:R,location:v,params:I,isRouting:g,renderPath:c,parsePath:a,navigatorFactory:_,matches:C,beforeLeave:d,preloadRoute:z,singleFlight:t.singleFlight===void 0?!0:t.singleFlight,submissions:m};function T(E,P,O){le(()=>{if(typeof P=="number"){P&&(s.go?s.go(P):console.warn("Router integration does not support relative routing"));return}const{replace:D,resolve:U,scroll:j,state:se}={replace:!1,resolve:!0,scroll:!0,...O},re=U?E.resolvePath(P):sr("",P);if(re===void 0)throw new Error("Path '".concat(P,"' is not a routable path"));if(x.length>=ma)throw new Error("Too many redirects");const de=p();if((re!==de||se!==S())&&!la){if(d.confirm(re,O)){const Ce=x.push({value:de,replace:D,scroll:j,state:S()});A(()=>{Ue="navigate",y(re),b(se),m[1]([])}).then(()=>{x.length===Ce&&(Ue=void 0,k({value:re,state:se}))})}}})}function _(E){return E=E||Lo(Go)||R,(P,O)=>T(E,P,O)}function k(E){const P=x[0];P&&((E.value!==P.value||E.state!==P.state)&&i({...E,replace:P.replace,scroll:P.scroll}),x.length=0)}function z(E,P){const O=Wn(r(),E.pathname),D=Ue;Ue="preload";for(let U in O){const{route:j,params:se}=O[U];j.component&&j.component.preload&&j.component.preload();const{load:re}=j;P&&re&&Fo(e(),()=>re({params:se,location:{pathname:E.pathname,search:E.search,hash:E.hash,query:Qo(E),state:null,key:""},intent:"preload"}))}Ue=D}}function Sa(n,r,e,t){const{base:o,location:i,params:s}=n,{pattern:a,component:c,load:d}=t().route,h=q(()=>t().path);c&&c.preload&&c.preload();const g=d?d({params:s,location:i,intent:Ue||"initial"}):void 0;return{parent:r,pattern:a,path:h,outlet:()=>c?Wo(c,{params:s,location:i,data:g,get children(){return e()}}):e(),resolvePath(A){return sr(o.path(),A,h())}}}const Aa=n=>r=>{const{base:e}=r,t=br(()=>r.children),o=q(()=>Jo(t(),r.base||""));let i;const s=ba(n,o,()=>i,{base:e,singleFlight:r.singleFlight});return n.create&&n.create(s),l(Vo.Provider,{value:s,get children(){return l(Ca,{routerState:s,get root(){return r.root},get load(){return r.rootLoad},get children(){return[Lt(()=>(i=Pt())&&null),l(Ta,{routerState:s,get branches(){return o()}})]}})}})};function Ca(n){const r=n.routerState.location,e=n.routerState.params,t=q(()=>n.load&&le(()=>n.load({params:e,location:r,intent:"preload"})));return l(je,{get when(){return n.root},keyed:!0,get fallback(){return n.children},children:o=>l(o,{params:e,location:r,get data(){return t()},get children(){return n.children}})})}function Ta(n){const r=[];let e;const t=q(ot(n.routerState.matches,(o,i,s)=>{let a=i&&o.length===i.length;const c=[];for(let d=0,h=o.length;d{r[d]=A,c[d]=Sa(n.routerState,c[d-1]||n.routerState.base,Un(()=>t()[d+1]),()=>n.routerState.matches()[d])}))}return r.splice(o.length).forEach(d=>d()),s&&a?s:(e=c[0],c)}));return Un(()=>t()&&e)()}const Un=n=>()=>l(je,{get when(){return n()},keyed:!0,children:r=>l(Go.Provider,{value:r,get children(){return r.outlet()}})}),he=n=>{const r=br(()=>n.children);return rn(n,{get children(){return r()}})};function _a([n,r],e,t){return[e?()=>e(n()):n,t?o=>r(t(o)):r]}function Ra(n){if(n==="#")return null;try{return document.querySelector(n)}catch(r){return null}}function Ia(n){let r=!1;const e=o=>typeof o=="string"?{value:o}:o,t=_a(W(e(n.get()),{equals:(o,i)=>o.value===i.value}),void 0,o=>(!r&&n.set(o),o));return n.init&&Me(n.init((o=n.get())=>{r=!0,t[1](e(o)),r=!1})),Aa({signal:t,create:n.create,utils:n.utils})}function Ba(n,r,e){return n.addEventListener(r,e),()=>n.removeEventListener(r,e)}function ka(n,r){const e=Ra("#".concat(n));e?e.scrollIntoView():r&&window.scrollTo(0,0)}const Ea=new Map;function Fa(n=!0,r=!1,e="/_server"){return t=>{const o=t.base.path(),i=t.navigatorFactory(t.base);let s={};function a(p){return p.namespaceURI==="http://www.w3.org/2000/svg"}function c(p){if(p.defaultPrevented||p.button!==0||p.metaKey||p.altKey||p.ctrlKey||p.shiftKey)return;const y=p.composedPath().find(C=>C instanceof Node&&C.nodeName.toUpperCase()==="A");if(!y||r&&!y.hasAttribute("link"))return;const S=a(y),b=S?y.href.baseVal:y.href;if((S?y.target.baseVal:y.target)||!b&&!y.hasAttribute("state"))return;const x=(y.getAttribute("rel")||"").split(/\s+/);if(y.hasAttribute("download")||x&&x.includes("external"))return;const m=S?new URL(b,document.baseURI):new URL(b);if(!(m.origin!==window.location.origin||o&&m.pathname&&!m.pathname.toLowerCase().startsWith(o.toLowerCase())))return[y,m]}function d(p){const y=c(p);if(!y)return;const[S,b]=y,v=t.parsePath(b.pathname+b.search+b.hash),x=S.getAttribute("state");p.preventDefault(),i(v,{resolve:!1,replace:S.hasAttribute("replace"),scroll:!S.hasAttribute("noscroll"),state:x&&JSON.parse(x)})}function h(p){const y=c(p);if(!y)return;const[S,b]=y;s[b.pathname]||t.preloadRoute(b,S.getAttribute("preload")!=="false")}function g(p){const y=c(p);if(!y)return;const[S,b]=y;s[b.pathname]||(s[b.pathname]=setTimeout(()=>{t.preloadRoute(b,S.getAttribute("preload")!=="false"),delete s[b.pathname]},200))}function w(p){const y=c(p);if(!y)return;const[,S]=y;s[S.pathname]&&(clearTimeout(s[S.pathname]),delete s[S.pathname])}function A(p){let y=p.submitter&&p.submitter.hasAttribute("formaction")?p.submitter.getAttribute("formaction"):p.target.getAttribute("action");if(!y)return;if(!y.startsWith("https://action/")){const b=new URL(y,jo);if(y=t.parsePath(b.pathname+b.search),!y.startsWith(e))return}if(p.target.method.toUpperCase()!=="POST")throw new Error("Only POST forms are supported for Actions");const S=Ea.get(y);if(S){p.preventDefault();const b=new FormData(p.target);p.submitter&&p.submitter.name&&b.append(p.submitter.name,p.submitter.value),S.call({r:t,f:p.target},b)}}sa(["click","submit"]),document.addEventListener("click",d),n&&(document.addEventListener("mouseover",g),document.addEventListener("mouseout",w),document.addEventListener("focusin",h),document.addEventListener("touchstart",h)),document.addEventListener("submit",A),Me(()=>{document.removeEventListener("click",d),n&&(document.removeEventListener("mouseover",g),document.removeEventListener("mouseout",w),document.removeEventListener("focusin",h),document.removeEventListener("touchstart",h)),document.removeEventListener("submit",A)})}}function Na(n){const r=n.replace(/^.*?#/,"");if(!r.startsWith("/")){const[,e="/"]=window.location.hash.split("#",2);return"".concat(e,"#").concat(r)}return r}function La(n){const r=()=>window.location.hash.slice(1),e=Ho();return Ia({get:r,set({value:t,replace:o,scroll:i,state:s}){o?window.history.replaceState(ca(s),"","#"+t):window.location.hash=t;const a=t.indexOf("#"),c=a>=0?t.slice(a+1):"";ka(c,i),ln()},init:t=>Ba(window,"hashchange",da(t,o=>!e.confirm(o&&o<0?o:r()))),create:Fa(n.preload,n.explicitLinks,n.actionBase),utils:{go:t=>window.history.go(t),renderPath:t=>"#".concat(t),parsePath:Na,beforeLeave:e}})(n)}var Ma=!!Os,za=Ma?n=>Pt()?Me(n):n:Me;function Pa(n,r,e,t){return n.addEventListener(r,e,t),za(n.removeEventListener.bind(n,r,e,t))}function Da(n,r=Pt()){let e=0,t,o;return()=>(e++,Me(()=>{e--,queueMicrotask(()=>{!e&&o&&(o(),o=t=void 0)})}),o||mt(i=>t=n(o=i),r),t)}var Oa=Da(()=>{const[n,r]=W(null);return Pa(window,"keydown",e=>{r(e),setTimeout(()=>r(null))}),n});function Zt(n){return typeof n=="function"}function Wa(n){return Array.isArray(n)}const Jt={ArrowLeft:"Left",ArrowRight:"Right",ArrowUp:"Up",ArrowDown:"Down",Enter:"Enter",l:"Last"," ":"Space",Backspace:"Back",Escape:"Escape"},[gr,Ua]=W([]),Ya=n=>{const r=Oa();if(n)for(const[e,t]of Object.entries(n))Wa(t)?t.forEach(o=>{Jt[o]=e}):Jt[t]=e;return He(ot(sn,(e,t,o=[])=>{let i=e;const s=[];for(;i;)i.states.has("focus")||(i.states.add("focus"),Zt(i.onFocus)&&i.onFocus.call(i,e,t)),s.push(i),i=i.parent;return o.forEach(a=>{s.includes(a)||(a.states.remove("focus"),Zt(a.onBlur)&&a.onBlur.call(a,e,t))}),Ua(s),s},{defer:!0})),He(()=>{const e=r();if(e){const t=Jt[e.key]||Jt[e.keyCode];le(()=>{const o=gr();let i;for(const s of o){if(i=i||s,t){const a=s["on".concat(t)];if(Zt(a)&&a.call(s,e,s,i)===!0)break}else console.log("Unhandled key event: ".concat(e.key));if(Zt(s.onKeyPress)&&s.onKeyPress.call(s,e,t,s,i)===!0)break}return!1})}}),gr};function $a(n,r){const e=r();let t,o,i,s;Array.isArray(e)?e.length===2?(t=s=e[0],o=i=e[1]):e.length===3?(t=e[0],o=i=e[1],s=e[2]):[t,i,s,o]=e:t=i=s=o=e,n.onBeforeLayout=(a,c)=>{if(c){n.width=n.children.reduce((g,w)=>g+(w.width||0),0)+o+i;const d=n.children[0];d&&(d.x=o,d.marginLeft=o);let h=0;return n.children.forEach(g=>{g.y=t,g.marginTop=t,h=Math.max(h,g.height||0)}),n.height=h+t+s,!0}}}function Ha(n=[]){const r=[];let e;for(e=0;e{setTimeout(r,n)})}function ja(n,r,e="en-US"){const t=window.speechSynthesis;return new Promise((o,i)=>{const s=new SpeechSynthesisUtterance(n);s.lang=e,s.onend=()=>{o()},s.onerror=a=>{i(a)},r.push(s),t.speak(s)})}function Qr(n,r,e=!0){const t=window.speechSynthesis,o=Ha(Array.isArray(n)?n:[n]),i=[],s=[];let a=!0;return{series:(async()=>{try{for(;a&&o.length;){const d=await Promise.resolve(o.shift());if(a){if(typeof d=="string"&&d.includes("PAUSE-")){let h=Number(d.split("PAUSE-")[1])*1e3;isNaN(h)&&(h=0),await Yn(h)}else if(typeof d=="string"&&d.length){let g=3;for(;a&&g>0;)try{await ja(d,s,r),g=0}catch(w){if(w instanceof SpeechSynthesisErrorEvent)if(w.error==="network")g--,console.warn("Speech synthesis network error. Retries left: ".concat(g)),await Yn(500*(3-g));else if(w.error==="canceled"||w.error==="interrupted")g=0;else throw new Error("SpeechSynthesisErrorEvent: ".concat(w.error));else throw w}}else if(typeof d=="function"){const h=Qr(d(),r,!1);i.push(h),await h.series}else if(Array.isArray(d)){const h=Qr(d,r,!1);i.push(h),await h.series}}else break}}finally{a=!1}})(),get active(){return a},append:d=>{o.push(d)},cancel:()=>{a&&(e&&t.cancel(),i.forEach(d=>{d.cancel()}),a=!1)}}}let er;function Qa(n,r="en-US"){return er&&er.cancel(),er=Qr(n,r),er}var Xr=(n,r)=>{let e;const t=()=>clearTimeout(e);return Pt()&&Me(t),Object.assign((...i)=>{e!==void 0&&t(),e=setTimeout(()=>n(...i),r)},{clear:t})};let Kr,kt=[],_e,Vr=!1;const Xa=3e5;function $n(n,r){const e=Xr(n,r);let t;const o=i=>{t=i,e(i)};return o.flush=()=>{e.clear(),n(t)},o.clear=e.clear,o}function St(n){return n.id||n.name}function Ka(n=[]){if(!oe.onFocusChange||!oe.enabled)return;const r=n.every(i=>!i.loading),e=n.filter(i=>!kt.includes(i));if(Kr(),!r&&oe.onFocusChange){oe.onFocusChange([]);return}kt=n.slice(0);const t=[],o=e.reduce((i,s)=>(s.announce?(i.push([St(s),"Announce",s.announce]),t.push(s.announce)):s.title?(i.push([St(s),"Title",s.title]),t.push(s.title)):i.push([St(s),"No Announce",""]),i),[]);if(e.reverse().reduce((i,s)=>(s.announceContext?(i.push([St(s),"Context",s.announceContext]),t.push(s.announceContext)):i.push([St(s),"No Context",""]),i),o),oe.debug&&console.table(o),t.length)return oe.speak(t.reduce((i,s)=>i.concat(s),[]))}function Va(n){if(!Vr)return _e=Qa(n)}const oe={debug:!1,enabled:!0,cancel:function(){_e&&_e.cancel()},clearPrevFocus:function(n=0){kt=kt.slice(0,n),Kr()},speak:function(n,{append:r=!1,notification:e=!1}={}){return oe.onFocusChange&&oe.enabled&&(oe.onFocusChange.flush(),r&&_e&&_e.active?_e.append(n):(oe.cancel(),Va(n)),e&&(Vr=!0,_e==null||_e.series.finally(()=>{Vr=!1,oe.refresh()}).catch(console.error))),_e},refresh:function(n=0){oe.clearPrevFocus(n),oe.onFocusChange&&oe.onFocusChange(le(()=>gr()))},setupTimers:function({focusDebounce:n=400,focusChangeTimeout:r=Xa}={}){oe.onFocusChange=$n(Ka,n),Kr=$n(()=>{kt=[]},r)}},Ga=()=>(oe.setupTimers(),He(ot(gr,oe.onFocusChange,{defer:!0})),oe);function qa(n,r){const e=Le.createTexture("ImageTexture",{src:n});return r.reduce((t,o)=>{const{x:i,y:s,width:a,height:c}=o;return t[o.name]=Le.createTexture("SubTexture",{texture:e,x:i,y:s,width:a,height:c}),t},{})}const[Za,Ee]=W(""),f={name:"Base Lightning TV",alpha:{primary:1,secondary:.7,tertiary:.1,inactive:.5,full:1,none:0,alpha1:.1,alpha2:.3,alpha3:.5,alpha4:.7,alpha5:.9},animation:{duration:{none:0,xfast:.1,fast:.25,normal:.5,slow:.75,xslow:.9},delay:{none:0,xfast:.01,fast:.025,normal:.05,slow:.075,xslow:.09},expressive:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},expressiveEntrance:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},expressiveExit:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},standard:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},standardEntrance:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},standardExit:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},utility:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},utilityEntrance:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},utilityExit:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25}},asset:{arrowLeft:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAi0lEQVRIDWNgGAWjIfD//38JID5Fk5AAGqwKxPeA+D/VLQCaaQLEr0CGgwBVLQCa5wbEn0EGwwDVLAAaGA3Ev2AGw2iqWAA0rBiI/8EMRaYptgBoWDeygehsci1gIlcjWfqArqZdEMFcBLSEdpGMZAntkimSJbTLaEiW0K6oQLKEdoUdzJJRemiHAAD4n+yzPWCs7QAAAABJRU5ErkJggg==",arrowRight:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAg0lEQVRIDWNgGAWjIYArBP7//38KiCVwyVMsDjQcBO4BsSrFhmEzAGw8hHgFpEywqaFIDMkCEPMzELtRZCC6ZjQLQNxfQByNro5sPhYLQEL/gLiYbEORNeKwACbcDVPLBGMMOhrmVDSapkFE00imaTKlaUajaVFB28Ju0CXrUQfhDAEAEgHss6NhpLQAAAAASUVORK5CYII=",backspaceOutline:"data:image/png;base64,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",check:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAOCAYAAAAi2ky3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACtSURBVHgBvdPdDcIgEAfwoy8Nb45QN3AGF2s36Ahu4gpuIDoBfSgfpdoTlCbEWEMh6T8hFzjyg5AAkBHOcQe5UWqspRx435sDpMYj6IYQwwVSEiJ2MKVUBWuzLSLl2HL+uxmNCGFO8yaL7RHxve6qRZoAuS4hxac8735elWVx7jrtMKL1o0Gcat9jhExHSukN/kUIFZ7MpDRtzE1isDRkAUtDvrA8ZI597FUf8gWH9P0b4gko9wAAAABJRU5ErkJggg=="},color:{palette:{"blue-20":"0xbecffeff","blue-40":"0x93a9fdff","blue-90":"0x000033ff","grey-05":"0xf8f7faff","grey-40":"0x929096ff","grey-70":"0x48474bff","grey-90":"0x181819ff"},white:"0xffffffff",black:"0x000000ff",grey:"0x929096ff",red:"0xe74c3cff",orange:"0xdc7633ff",yellow:"0xf7dc6fff",green:"0x2ecc71ff",blue:"0x93a9fdff",purple:"0x663399ff",material:"0x181819ff",materialBrand:"0x000033ff",overlay:"0x181819b3",textNeutral:"0xf8f7faff",textNeutralSecondary:"0xf8f7fab3",textNeutralTertiary:"0xf8f7fa1a",textNeutralDisabled:"0xf8f7fa80",textInverse:"0x181819ff",textInverseSecondary:"0x181819b3",textInverseTertiary:"0x1818191a",textInverseDisabled:"0x18181980",textBrand:"0x93a9fdff",textBrandSecondary:"0x93a9fdb3",textBrandTertiary:"0x93a9fd1a",textBrandDisabled:"0x93a9fd80",textPositive:"0x2ecc71ff",textNegative:"0xe74c3cff",textInfo:"0x93a9fdff",textCaution:"0xdc7633ff",fillTransparent:"0xffffff0",fillNeutral:"0xf8f7faff",fillNeutralSecondary:"0xf8f7fab3",fillNeutralTertiary:"0xf8f7fa1a",fillNeutralDisabled:"0xf8f7fa80",fillInverse:"0x181819ff",fillInverseSecondary:"0x181819b3",fillInverseTertiary:"0x1818191a",fillInverseDisabled:"0x18181980",fillBrand:"0x93a9fdff",fillBrandSecondary:"0x93a9fdb3",fillBrandTertiary:"0x93a9fd1a",fillBrandDisabled:"0x93a9fd80",fillPositive:"0x2ecc71ff",fillNegative:"0xe74c3cff",fillInfo:"0x93a9fdff",fillCaution:"0xdc7633ff",strokeNeutral:"0xf8f7faff",strokeNeutralSecondary:"0xf8f7fab3",strokeNeutralTertiary:"0xf8f7fa1a",strokeNeutralDisabled:"0xf8f7fa80",strokeInverse:"0x181819ff",strokeInverseSecondary:"0x181819b3",strokeInverseTertiary:"0x1818191a",strokeInverseDisabled:"0x18181980",strokeBrand:"0x93a9fdff",strokeBrandSecondary:"0x93a9fdb3",strokeBrandTertiary:"0x93a9fd1a",strokeBrandDisabled:"0x93a9fd80",strokePositive:"0x2ecc71ff",strokeNegative:"0xe74c3cff",strokeInfo:"0x93a9fdff",strokeCaution:"0xdc7633ff",interactiveNeutral:"0xffffff1a",interactiveNeutralFocus:"0xffffffff",interactiveNeutralFocusSoft:"0xffffff1a",interactiveInverse:"0x48474b1a",interactiveInverseFocus:"0x48474bff",interactiveInverseFocusSoft:"0x48474b1a",interactiveBrand:"0xbecffe1a",interactiveBrandFocus:"0xbecffeff",interactiveBrandFocusSoft:"0xbecffe1a",shadowNeutral:"0x000000b3",shadowNeutralFocus:"0x000000b3",shadowNeutralFocusSoft:"0x000000b3",shadowNeutralText:"0x000000ff",shadowInverse:"0x000000b3",shadowInverseFocus:"0x000000b3",shadowInverseFocusSoft:"0x000000b3",shadowInverseText:"0x000000ff",shadowBrand:"0x000000b3",shadowBrandFocus:"0x000000b3",shadowBrandFocusSoft:"0x000000b3",shadowBrandText:"0x000000ff"},font:[],layout:{columnCount:10,focusScale:1.2,gutterX:20,gutterY:20,marginX:150,marginY:150,safe:50,screenW:1920,screenH:1080},radius:{none:0,xs:2,sm:4,md:8,lg:16,xl:24},spacer:{none:0,xxs:2,xs:4,sm:8,md:10,lg:20,xl:30,xxl:40,xxxl:50},stroke:{none:0,sm:2,md:4,lg:6,xl:8},typography:{display1:{fontFamily:"Arial",fontSize:75,lineHeight:85,fontWeight:500,verticalAlign:"middle",textBaseline:"bottom"},display2:{fontFamily:"Arial",fontSize:50,lineHeight:60,fontWeight:500,verticalAlign:"middle",textBaseline:"bottom"},headline1:{fontFamily:"Arial",fontSize:35,fontWeight:500,lineHeight:48,verticalAlign:"middle",textBaseline:"bottom"},headline2:{fontFamily:"Arial",fontSize:30,fontWeight:500,lineHeight:40,verticalAlign:"middle",textBaseline:"bottom"},headline3:{fontFamily:"Arial",fontSize:25,fontWeight:500,lineHeight:36,verticalAlign:"middle",textBaseline:"bottom"},body1:{fontFamily:"Arial",fontSize:25,fontWeight:300,lineHeight:40,verticalAlign:"middle",textBaseline:"bottom"},body2:{fontFamily:"Arial",fontSize:22,fontWeight:300,lineHeight:32,verticalAlign:"middle",textBaseline:"bottom"},body3:{fontFamily:"Arial",fontSize:20,fontWeight:300,lineHeight:32,verticalAlign:"middle",textBaseline:"bottom"},button1:{fontFamily:"Arial",fontSize:25,fontWeight:500,lineHeight:32,verticalAlign:"middle",textBaseline:"bottom"},button2:{fontFamily:"Arial",fontSize:20,fontWeight:500,lineHeight:32,verticalAlign:"middle",textBaseline:"bottom"},callout1:{fontFamily:"Arial",fontSize:20,fontWeight:500,lineHeight:32,verticalAlign:"middle",textBaseline:"bottom"},caption1:{fontFamily:"Arial",fontSize:15,fontWeight:500,lineHeight:24,verticalAlign:"middle",textBaseline:"bottom"},tag1:{fontFamily:"Arial",fontSize:20,fontWeight:500,lineHeight:24,verticalAlign:"middle",textBaseline:"bottom"},footnote1:{fontFamily:"Arial",fontSize:22,fontWeight:300,lineHeight:30,verticalAlign:"middle",textBaseline:"bottom"}},componentConfig:{Keyboard:{base:{keyProps:{delete:{title:null,icon:"data:image/png;base64,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"}}}}}};function Ja(){let n,r,e,t=0;const o=1,i={duration:750,easing:"ease-in-out"},s={alpha:o,color:4294967295};function a(c){if(c.startsWith("#")){n.color=M(c),n.src="",n.alpha=1,t=1,r.alpha=0,e.alpha=0;return}else n.color=4294967295,e.alpha=1;if(t===0){n.src=c,t=1;return}if(t===1){r.src=c,t=2,r.alpha=0,r.animate({alpha:o},i).start(),n.animate({alpha:0},i).start();return}t===2&&(n.src=c,t=1,n.alpha=0,n.animate({alpha:o},i).start(),r.animate({alpha:0},i).start())}return He(ot(Za,c=>{a(c)},{defer:!0})),l(L,{width:1920,height:1080,zIndex:-5,get children(){return[l(L,{ref(c){var d=n;typeof d=="function"?d(c):n=c},style:s}),l(L,{ref(c){var d=r;typeof d=="function"?d(c):r=c},style:s,alpha:0}),l(L,{ref(c){var d=e;typeof d=="function"?d(c):e=c},src:"./assets/hero-mask-inverted.png",get color(){return M(f.color.materialBrand)},width:1920,height:1080})]}})}var Hn,jn,Qn,Xn,Kn,Vn,Gn,qn,Zn,Jn,eo,to,ro,no,oo,io,so,ao;function tr(n){if(!n||!n[Symbol.iterator])throw new Error("objectFromEntries requires a single iterable argument");const r={};for(const[e,t]of n)r[e]=t;return r}const el=["focus","disabled"],tl=["brand","inverse","neutral"];function Y({themeKeys:n,base:r,modes:e,tones:t,themeStyles:o,modeKeys:i=el,toneKeys:s=tl},a=!1){const c=(p,y,S)=>{const b=s.map(v=>{var C,I;const x={};return new Set([].concat.apply([],[(C=p==null?void 0:p[v])!=null?C:{},(I=y==null?void 0:y[v])!=null?I:{}].map(Object.keys))).forEach(R=>{var k;var T,_;i.includes(R)||(x[R]=(k=(T=y==null?void 0:y[v])==null?void 0:T[R])!=null?k:(_=p==null?void 0:p[v])==null?void 0:_[R])}),i.forEach(R=>{var T,_;x[R]={...S[R],...(T=p==null?void 0:p[v])==null?void 0:T[R],...(_=y==null?void 0:y[v])==null?void 0:_[R]}}),[v,x]});return tr(b)},d=(p,y)=>{const S=i.map(v=>[v,{...p==null?void 0:p[v],...y==null?void 0:y[v]}]);return tr(S)},h=(p,y)=>({...p,...y.base}),g=p=>tr(Object.entries(n).filter(([y,S])=>p[S]).map(([y,S])=>[y,p[S]])),w=p=>tr(Object.entries(p).map(([S,b])=>{const v=g(b);return Object.entries(b).filter(([x,m])=>i.includes(x)).forEach(([x,m])=>{v[x]=g(m)}),[S,v]}));return((p,y,S)=>{const b=w(o);a&&console.log(b);const v=h(p,b);a&&console.log(v);const x=d(y,b);a&&console.log(x);const m=c(S,b,x);return a&&console.log(m),{base:{...v,...x},tones:m}})(r,e,t)}function pr(n=0){return(r,e,t=0,o)=>{var S,b,v,x;if(r.children.length===0)return;const i=r.flexDirection==="row"?"width":"height",s=r.flexDirection==="row"?"x":"y",a=r.gap||0,c=r.scroll||"auto",[d,h]=rl(r);let g=(S=r[s])!=null?S:0;const w=(b=e==null?void 0:e[s])!=null?b:0,A=(v=e==null?void 0:e[i])!=null?v:0,p=o===void 0?"none":t>o?"positive":"negative";let y=g;if(c==="auto")r.scrollIndex!=null&&r.scrollIndex>=0?r.selected>=r.scrollIndex&&(p==="positive"?y=g-A-a:y=g+A+a):(Math.abs(g)+hw)y=-w+n;else if(c==="edge"&&p==="positive"&&Math.abs(g)+h{const r=n.filter(e=>typeof e=="function");if(r.length!==0)return r.length===1?r[0]:function(...e){let t;for(const o of r)if(t=o.apply(this,e),t===!0)return t;return t}};function ei(){if(!this||this.selected===void 0||this.children.length===0)return!1;let n=this.children[this.selected];for(;n!=null&&n.skipFocus;)this.selected++,n=this.children[this.selected];return n instanceof be?(n.setFocus(),!0):!1}function mr(n){return function(){var r,e,t;const o=this.children.length,i=this.wrap,s=this.selected||0;if(o===0)return!1;if(n==="right"||n==="down")do if(this.selected=(this.selected||0)%o+1,this.selected>=o){if(!i){this.selected=void 0;break}this.selected=0}while((r=this.children[this.selected])!=null&&r.skipFocus);else if(n==="left"||n==="up")do if(this.selected=(this.selected||0)%o-1,this.selected<0){if(!i){this.selected=void 0;break}this.selected=o-1}while((e=this.children[this.selected])!=null&&e.skipFocus);if(this.selected===void 0&&(this.selected=s,(t=this.children[this.selected])!=null&&t.states.has("focus")))return!1;const a=this.children[this.selected];if(this.onSelectedChanged&&this.onSelectedChanged.call(this,this,a,this.selected,s),this.plinko&&s!==void 0){const d=this.children[s].selected||0;a.selected=dt){console.error("Column expects a number between 1 & ".concat(t,". Received ").concat(r));return}const s=e-o*2,a=(r-1)*i;return(s-a)/r}const{Artwork:{defaultTone:wd,...ol}={styles:{}}}=(Hn=f)==null?void 0:Hn.componentConfig,il={themeKeys:{fillColor:"fillColor",scale:"imageScale",pivotX:"imageScalePivotX",pivotY:"imageScalePivotY"},base:{fallbackSrc:void 0,fillColor:f.color.overlay,gradientColor:f.color.material,pivotX:.5,pivotY:.5,scale:void 0},themeStyles:ol};Y(il);const{Badge:{defaultTone:bd,...hn}={styles:{}}}=(jn=f)==null?void 0:jn.componentConfig,sl={themeKeys:{color:"backgroundColor"},base:{color:f.color.fillInverseSecondary,borderRadius:f.radius.sm,border:{color:f.color.strokeInverse,width:f.stroke.sm},display:"flex",justifyContent:"spaceEvenly",padding:[f.spacer.md-f.stroke.sm,f.spacer.xs+f.stroke.sm,f.spacer.md+f.stroke.sm,f.spacer.md+f.stroke.sm]},tones:{inverse:{color:f.color.fillNeutralSecondary,borderRadius:f.radius.sm,border:{color:f.color.strokeInverseSecondary,width:f.stroke.sm}},brand:{color:f.color.fillBrand,borderRadius:f.radius.sm,border:{color:f.color.strokeInverseSecondary,width:f.stroke.sm}}},themeStyles:hn},al={themeKeys:{color:"textColor"},base:{...f.typography.tag1,color:f.color.textNeutral},tones:{inverse:{color:f.color.textInverse},brand:{color:f.color.textNeutral}},themeStyles:hn},ll={themeKeys:{color:"iconColor"},base:{color:f.color.textNeutral},tones:{inverse:{color:f.color.textInverse},brand:{color:f.color.textNeutral}},themeStyles:hn};Y(sl);Y(ll);Y(al);const{Button:{defaultTone:cl,...fn}={styles:{}}}=(Qn=f)==null?void 0:Qn.componentConfig,{Surface:{surfaceDefaultTone:dl,...gn}={styles:{}}}=(Xn=f)==null?void 0:Xn.componentConfig,ul={themeKeys:{textAlign:"textAlign",borderRadius:"radius",color:"backgroundColor",justifyContent:"justifyContent"},base:{height:f.typography.button1.lineHeight+f.spacer.xl*2,display:"flex",padding:[f.spacer.xxxl,f.spacer.xl],color:f.color.interactiveNeutral,justifyContent:"center",alignItems:"center",borderRadius:f.radius.sm,contentColor:f.color.fillNeutral},modes:{focus:{color:f.color.interactiveNeutralFocus,contentColor:f.color.fillInverse},disabled:{color:f.color.fillNeutralDisabled}},tones:{inverse:{color:f.color.interactiveInverse},brand:{color:f.color.interactiveBrand,focus:{color:f.color.fillNeutral}}},themeStyles:{...gn,...fn}},hl={themeKeys:{color:"contentColor"},base:{color:f.color.textNeutral},modes:{focus:{color:f.color.textInverse},disabled:{color:f.color.textNeutralDisabled}},tones:{inverse:{color:f.color.fillNeutral},brand:{color:f.color.fillBrand,focus:{color:f.color.fillBrand}}},themeStyles:{...gn,...fn}},fl={themeKeys:{color:"textColor"},base:{textAlign:"left",color:f.color.textNeutral,...f.typography.button1},modes:{focus:{color:f.color.textInverse},disabled:{color:f.color.textNeutralDisabled}},tones:{inverse:{color:f.color.fillNeutral},brand:{color:f.color.fillBrand,focus:{color:f.color.fillBrand}}},themeStyles:{...gn,...fn}},gl=Y(ul),pl=Y(hl),ml=Y(fl),st={tone:cl||dl||"neutral",Container:gl,Content:pl,Text:ml},lo=n=>l(L,Q(n,{get style(){var e;var r;return[...[n.style].flat(),(r=st.Container.tones)==null?void 0:r[(e=n.tone)!=null?e:st.tone],st.Container.base]},forwardStates:!0,get children(){return l(F,{get style(){var e;var r;return[...[(r=n.style)==null?void 0:r.Text].flat(),st.Text.tones[(e=n.tone)!=null?e:st.tone],st.Text.base]},get children(){return n.children}})}})),{Checkbox:{defaultTone:Sd,...ti}={styles:{}}}=(Kn=f)==null?void 0:Kn.componentConfig,qe=f.stroke.sm,Fe=f.spacer.xxl,xl={themeKeys:{color:"color",borderRadius:"borderRadius",border:"border",justifyContent:"justifyContent"},base:{width:Fe,height:Fe,display:"flex",justifyContent:"center",color:f.color.fillNeutral,alignItems:"center",borderRadius:Fe/4,border:{color:f.color.strokeInverse,width:qe}},modes:{disabled:{alpha:f.alpha.inactive}},tones:{brand:{borderRadius:Fe/4,border:{color:f.color.strokeNeutralSecondary,width:qe},color:f.color.fillNeutralSecondary,checked:{borderRadius:Fe/4,border:{color:f.color.strokeNeutralSecondary,width:qe},color:f.color.fillBrand}},neutral:{borderRadius:Fe/4,border:{color:f.color.strokeNeutralSecondary,width:qe},color:f.color.fillInverseSecondary,checked:{borderRadius:Fe/4,border:{color:f.color.strokeNeutralSecondary,width:qe},color:f.color.fillNeutral}},inverse:{borderRadius:Fe/4,border:{color:f.color.strokeInverseSecondary,width:qe},color:f.color.fillNeutralSecondary,checked:{borderRadius:Fe/4,border:{color:f.color.strokeInverseSecondary,width:qe},color:f.color.fillInverse}}},modeKeys:["focus","disabled","checked"],themeStyles:ti},yl={themeKeys:{color:"color"},base:{width:f.spacer.lg,height:f.spacer.lg,src:f.asset.check},tones:{neutral:{color:f.color.fillInverse},inverse:{color:f.color.fillNeutral},brand:{color:f.color.fillInverse}},themeStyles:ti};Y(xl);Y(yl);const{Icon:{defaultTone:Ad,...vl}={styles:{}}}=(Vn=f)==null?void 0:Vn.componentConfig,wl={themeKeys:{color:"color"},base:{width:100,height:100,color:f.color.fillInverse},tones:{inverse:{color:f.color.fillInverse},brand:{color:f.color.fillBrand}},themeStyles:vl};Y(wl);const{Column:{defaultTone:bl,...Sl}={styles:{}}}=(Gn=f)==null?void 0:Gn.componentConfig,Al={themeKeys:{gap:"itemSpacing",scrollIndex:"scrollIndex",itemTransition:"itemTransition"},base:{display:"flex",flexBoundary:"fixed",flexDirection:"column",gap:f.layout.gutterY,itemTransition:{...f.animation.standardEntrance,duration:f.animation.duration.fast}},themeStyles:Sl},Cl=Y(Al),Fr={tone:bl||"neutral",Container:Cl},te=n=>{const r=mr("up"),e=mr("down");return l(L,Q(n,{get onUp(){return $e(n.onUp,r)},get onDown(){return $e(n.onDown,e)},get selected(){return n.selected||0},forwardFocus:ei,get onCreate(){return $e(t=>{var o,i;return pr(n.y).call(t,t,t.children[(o=n.selected)!=null?o:0],(i=n.selected)!=null?i:0,void 0)},n.onCreate)},get onSelectedChanged(){return $e(n.onSelectedChanged,n.scroll!=="none"?pr(n.y):void 0)},get style(){var t;return[...[n.style].flat(),Fr.Container.tones[(t=n.tone)!=null?t:Fr.tone],Fr.Container.base]}}))},{Label:{defaultTone:Cd,...ri}={styles:{}}}=(qn=f)==null?void 0:qn.componentConfig,Tl={themeKeys:{color:"backgroundColor",borderRadius:"radius"},base:{display:"flex",justifyContent:"center",color:f.color.textNeutral,padding:[f.spacer.md,f.spacer.lg],borderRadius:[f.radius.md,f.radius.md,f.radius.md,f.radius.none],height:f.typography.caption1.lineHeight+f.spacer.md,neutral:{backgroundColor:f.color.fillNeutral}},tones:{inverse:{color:f.color.fillInverse},brand:{color:f.color.fillBrand,focus:{color:f.color.orange}}},themeStyles:ri},_l={themeKeys:{color:"textColor"},base:{...f.typography.caption1,color:f.color.textInverse},tones:{inverse:{color:f.color.textNeutral},brand:{color:f.color.textNeutral}},themeStyles:ri};Y(Tl);Y(_l);const{Rating:{styles:pn,defaultTone:Td}={styles:{},defaultTone:"neutral"}}=(Zn=f)==null?void 0:Zn.componentConfig,Rl={themeKeys:{justifyContent:"justifyContent",itemSpacing:"itemSpacing"},base:{display:"flex",flexDirection:"column",justifyContent:"flexStart",itemSpacing:f.spacer.sm},toneModes:{},themeStyles:pn},Il={themeKeys:{color:"textColor"},base:{color:f.color.textNeutral,...f.typography.body2},toneModes:{},themeStyles:pn},Bl={themeKeys:{color:"color"},base:{height:f.typography.body2.lineHeight,width:f.typography.body2.lineHeight,color:f.color.fillNeutral,marginRight:f.spacer.sm},toneModes:{},themeStyles:pn};Y(Rl);Y(Bl);Y(Il);const{Details:{defaultTone:_d,...ni}={styles:{}}}=(Jn=f)==null?void 0:Jn.componentConfig,kl={themeKeys:{alignItems:"alignItems",contentSpacing:"contentSpacing",badgeContentSpacing:"badgeContentSpacing",ratingContentSpacing:"ratingContentSpacing"},base:{display:"flex",flexDirection:"row",alignItems:"center",contentSpacing:f.spacer.lg,badgeContentSpacing:f.spacer.sm,ratingContentSpacing:f.spacer.lg},themeStyles:ni},El={themeKeys:{color:"textColor"},base:{...f.typography.body2,marginRight:f.spacer.lg,color:f.color.textNeutral},tones:{neutral:{disabled:{color:f.color.textNeutralDisabled}},inverse:{color:f.color.textInverse,disabled:{color:f.color.textNeutralDisabled}},brand:{color:f.color.textNeutral,disabled:{color:f.color.textNeutralDisabled}}},themeStyles:ni};Y(kl);Y(El);const{Metadata:{defaultTone:Rd,...mn}={styles:{}}}=(eo=f)==null?void 0:eo.componentConfig,Fl={themeKeys:{justifyContent:"justifyContent",alpha:"alpha"},base:{display:"flex",flexDirection:"column",justifyContent:"flexStart",alpha:f.alpha.primary},modes:{disabled:{alpha:f.alpha.inactive}},themeStyles:mn},Nl={themeKeys:{color:"textColor"},base:{maxLines:1,contain:"width",...f.typography.headline3,color:f.color.textNeutral},tones:{neutral:{disabled:{color:f.color.textNeutralDisabled}},inverse:{color:f.color.textInverse,disabled:{color:f.color.textNeutralDisabled}},brand:{color:f.color.textNeutral,disabled:{color:f.color.textNeutralDisabled}}},themeStyles:mn},Ll={themeKeys:{color:"textColor"},base:{contain:"width",maxLines:2,...f.typography.body2,color:f.color.textNeutralSecondary},tones:{neutral:{disabled:{color:f.color.textNeutralDisabled}},inverse:{color:f.color.textInverseSecondary,disabled:{color:f.color.textNeutralDisabled}},brand:{color:f.color.textNeutralSecondary,disabled:{color:f.color.textNeutralDisabled}}},themeStyles:mn};Y(Fl);Y(Ll);Y(Nl);const{ProgressBar:{defaultTone:Id,...oi}={styles:{}}}=(to=f)==null?void 0:to.componentConfig,Ml={themeKeys:{color:"barColor",borderRadius:"borderRadius"},base:{height:f.spacer.md,color:f.color.fillNeutralTertiary,borderRadius:f.radius.xs},tones:{inverse:{color:f.color.fillInverseTertiary}},themeStyles:oi},zl={themeKeys:{color:"progressColor",borderRadius:"borderRadius"},base:{borderRadius:f.radius.xs,color:f.color.fillNeutral},tones:{inverse:{color:f.color.fillInverse},brand:{color:f.color.fillBrand}},themeStyles:oi};Y(Ml);Y(zl);const{Row:{defaultTone:Pl,...Dl}={styles:{}}}=(ro=f)==null?void 0:ro.componentConfig,Ol={themeKeys:{gap:"itemSpacing",scrollIndex:"scrollIndex",itemTransition:"itemTransition"},base:{display:"flex",flexBoundary:"fixed",flexDirection:"row",gap:f.layout.gutterX,itemTransition:{...f.animation.standardEntrance,duration:f.animation.duration.fast}},themeStyles:Dl},Wl=Y(Ol),At={tone:Pl,Container:Wl},X=n=>{const r=mr("left"),e=mr("right");return l(L,Q(n,{get selected(){return n.selected||0},get onLeft(){return $e(n.onLeft,r)},get onRight(){return $e(n.onRight,e)},forwardFocus:ei,get onCreate(){return $e(t=>{var o,i;return pr(n.x).call(t,t,t.children[(o=n.selected)!=null?o:0],(i=n.selected)!=null?i:0,void 0)},n.onCreate)},get onSelectedChanged(){return $e(n.onSelectedChanged,n.scroll!=="none"?pr(n.x):void 0)},get tone(){var t;return(t=n.tone)!=null?t:At.tone},get style(){return[...[n.style].flat(),At.Container.tones[n.tone||At.tone],At.Container.base]},get states(){var t;return(t=n.tone)!=null?t:At.tone}}))},{Keyboard:{defaultTone:Bd,...xn}={styles:{}}}=(no=f)==null?void 0:no.componentConfig,Ul={themeKeys:{keySpacing:"keySpacing",screenW:"screenW",marginX:"marginX"},base:{keySpacing:f.spacer.md,screenW:f.layout.screenW,marginX:f.layout.marginX,height:100},themeStyles:xn},Yl={themeKeys:{keySpacing:"keySpacing",textAlign:"textAlign",borderRadius:"borderRadius",color:"backgroundColor",justifyContent:"justifyContent",baseWidth:"baseWidth",sizes:"sizes",contentColor:"contentColor"},base:{keySpacing:f.spacer.md,height:f.spacer.md*9,paddingX:f.spacer.md,sizes:{sm:1,md:2,lg:3,xl:4,xxl:5},contentColor:f.color.fillNeutral,padding:[f.spacer.xxxl,f.spacer.xl],baseWidth:f.spacer.md*7,color:f.color.interactiveNeutral,display:"flex",justifyContent:"center",alignItems:"center",borderRadius:f.radius.sm},modes:{focus:{color:f.color.interactiveNeutralFocus,contentColor:f.color.fillInverse},disabled:{color:f.color.fillNeutralDisabled,contentColor:f.color.fillNeutralDisabled}},tones:{inverse:{color:f.color.interactiveInverse,focus:{color:f.color.interactiveInverseFocus,contentColor:f.color.fillNeutral}},brand:{focus:{contentColor:f.color.fillNeutral}}},themeStyles:xn},$l={themeKeys:{color:"textColor"},base:{textAlign:"left",color:f.color.textNeutral,...f.typography.headline2},modes:{focus:{color:f.color.textInverse},disabled:{color:f.color.textNeutralDisabled}},tones:{inverse:{focus:{color:f.color.textNeutral}}},themeStyles:xn};Y(Ul);Y(Yl);Y($l);const{Key:{defaultTone:kd,...ii}={styles:{}}}=(oo=f)==null?void 0:oo.componentConfig,Hl={themeKeys:{keySpacing:"keySpacing",textAlign:"textAlign",borderRadius:"borderRadius",color:"backgroundColor",justifyContent:"justifyContent",baseWidth:"baseWidth",sizes:"sizes",contentColor:"contentColor"},base:{keySpacing:f.spacer.md,height:f.spacer.md*9,paddingX:f.spacer.md,contentColor:f.color.fillNeutral,sizes:{sm:1,md:2,lg:3,xl:4,xxl:5},padding:[f.spacer.md],baseWidth:f.spacer.md*7,color:f.color.interactiveNeutral,display:"flex",justifyContent:"center",alignItems:"center",borderRadius:f.radius.sm},modes:{focus:{color:f.color.interactiveNeutralFocus,contentColor:f.color.fillInverse},disabled:{color:f.color.fillNeutralDisabled,contentColor:f.color.fillNeutralDisabled}},tones:{inverse:{color:f.color.interactiveInverse,focus:{color:f.color.interactiveInverseFocus,contentColor:f.color.fillNeutral}},brand:{focus:{contentColor:f.color.fillNeutral}}},themeStyles:ii},jl={themeKeys:{color:"textColor"},base:{textAlign:"left",color:f.color.textNeutral,...f.typography.headline2},modes:{focus:{color:f.color.textInverse},disabled:{color:f.color.textNeutralDisabled}},tones:{inverse:{focus:{color:f.color.textNeutral}}},themeStyles:ii};Y(Hl);Y(jl);const{Input:{defaultTone:Ed,...yn}={styles:{}}}=(io=f)==null?void 0:io.componentConfig,Ql={themeKeys:{justifyContent:"justifyContent"},base:{display:"flex",justifyContent:"flexStart",flexDirection:"column",width:100,height:100,actualTitle:""},themeStyles:yn},Xl={themeKeys:{borderRadius:"borderRadius",color:"backgroundColor"},base:{width:nl(f,4),height:100,display:"flex",flexDirection:"column",padding:[f.spacer.xxxl,f.spacer.xl],color:f.color.interactiveNeutral,contentColor:f.color.fillInverse,borderRadius:f.radius.sm,marginX:f.spacer.xxxl},modes:{focus:{color:f.color.interactiveNeutralFocus},disabled:{color:f.color.fillNeutralDisabled}},tones:{inverse:{color:f.color.interactiveInverse},brand:{color:f.color.interactiveBrand,focus:{color:f.color.fillNeutral}}},themeStyles:yn},Kl={themeKeys:{color:"textColor"},base:{textAlign:"left",color:f.color.textNeutral,...f.typography.button1},themeStyles:yn};Y(Ql);Y(Xl);Y(Kl);const{Tile:{defaultTone:Fd,...Cr}={styles:{}}}=(so=f)==null?void 0:so.componentConfig,{Surface:{defaultSurfaceTone:Nd,...Vl}={styles:{}}}=(ao=f)==null?void 0:ao.componentConfig,Gl={themeKeys:{alpha:"alpha",paddingYProgress:"paddingYProgress"},base:{width:400,height:240,padding:[40,10],paddingYProgress:f.spacer.xl,paddingYBetweenContent:f.spacer.md,borderRadius:f.radius.md,alpha:f.alpha.primary},modes:{disabled:{alpha:f.alpha.inactive}},themeStyles:{...Vl,...Cr}},ql={themeKeys:{},base:{display:"flex",flexDirection:"column",justifyContent:"flexStart",mountY:1},themeStyles:Cr},Zl={themeKeys:{},base:{display:"flex",flexDirection:"column",justifyContent:"flexStart"},themeStyles:Cr},Jl={themeKeys:{},base:{width:f.spacer.lg*5,height:f.spacer.xxl+f.spacer.md},themeStyles:Cr};Y(Gl);Y(ql);Y(Zl);Y(Jl);const ec={color:255,height:150,width:330,x:1910,y:10,mountX:1,alpha:.8,zIndex:100},Te={x:10,fontSize:22,textColor:M("#f6f6f6")},rr={fontSize:22,textColor:M("#f6f6f6")},[tc,rc]=W(0),[nc,oc]=W(0),[ic,sc]=W(99),[ac,lc]=W(0),[cc,dc]=W(0),[uc,hc]=W(0),[fc,gc]=W(0);let co=0,uo=0;const pc=n=>{n&&(rc(n),sc(r=>Math.min(n,r)),lc(r=>Math.max(n,r)),uo+=n,co++,oc(Math.round(uo/co)))},mc=n=>{let r=0,e=0,t=0;n.txManager.textureIdCache.forEach((o,i,s)=>{o.state==="loaded"&&r++,o.state==="loading"&&e++,o.state==="failed"&&t++}),dc(r),hc(e),gc(t)};function xc(n){n.renderer.on("fpsUpdate",(r,e)=>{const t=typeof e=="number"?e:e.fps;t>5&&(pc(t),mc(r.root.stage))})}const yc=n=>l(L,Q(n,{style:ec,get children(){return[l(L,{get children(){return[l(F,{style:Te,children:"FPS:"}),l(F,{style:rr,x:90,get children(){return tc()}})]}}),l(L,{x:160,get children(){return[l(F,{style:Te,children:"AVG:"}),l(F,{style:rr,x:100,get children(){return nc()}})]}}),l(L,{x:0,y:20,get children(){return[l(F,{style:Te,children:"MIN:"}),l(F,{style:rr,x:90,get children(){return ic()}})]}}),l(L,{x:160,y:20,get children(){return[l(F,{style:Te,children:"MAX:"}),l(F,{style:rr,x:100,get children(){return ac()}})]}}),l(L,{x:0,y:50,get children(){return[l(F,{style:Te,children:"Loaded Textures Cnt:"}),l(F,{style:Te,x:270,get children(){return cc()}})]}}),l(L,{x:0,y:80,get children(){return[l(F,{style:Te,children:"Loading Textures Cnt:"}),l(F,{style:Te,x:270,get children(){return uc()}})]}}),l(L,{x:0,y:110,get children(){return[l(F,{style:Te,children:"Failed Textures Cnt:"}),l(F,{style:Te,x:270,get children(){return fc()}})]}})]}})),Gr={Column:{flexDirection:"column",display:"flex",width:320,height:600,y:360,gap:20,zIndex:101,transition:{x:{duration:250,easing:"ease-in-out"}},x:8,focus:{x:f.layout.marginX}},Gradient:{zIndex:99,color:M("#000000"),src:"./assets/sidenav.png",alpha:0,width:1200,height:1080,focus:{alpha:1},transition:{alpha:!0}},NavButton:{zIndex:102,height:70,width:100,borderRadius:8,focus:{color:M("#424242")},active:{width:328,height:70}}},vc="/solid-demo-app/",wc=[{name:"experiment",width:81,height:100,x:0,y:0},{name:"trending",width:100,height:56,x:81,y:0},{name:"tv",width:100,height:68,x:181,y:0},{name:"movie",width:94,height:100,x:282,y:0}];function bc(n){const r=qa(vc+"assets/icons_white.png",wc);return l(L,Q(n,{get texture(){return r[n.name]},get width(){return r[n.name].props.width},get height(){return r[n.name].props.height},get x(){return(100-(r[n.name].props.width||0))/2},get y(){return(100-(r[n.name].props.height||0))/2}}))}function nr(n){return l(L,Q(n,{forwardStates:!0,get style(){return Gr.NavButton},get children(){return[l(L,{y:-16,get children(){return l(bc,{scale:.5,get name(){return n.icon}})}}),l(F,{style:{fontSize:38,x:116,y:18,height:50,alpha:0,active:{alpha:1}},get children(){return n.children}})]}}))}function Sc(n){let r;const e=xt();function t(){r.states.add("focus"),this.children.forEach(s=>s.states.add("active")),this.children.selected.setFocus()}function o(){r.states.remove("focus"),this.selected=0,this.children.forEach(s=>s.states.remove("active"))}function i(s){if(xa(()=>s)())return n.focusPage();e(s)}return[l(L,{flexItem:!1,x:40,y:30,zIndex:105,get alpha(){return n.showWidgets?1:0},get children(){return[l(F,{x:80,fontSize:28,color:4143380036,children:"Built With:"}),l(L,{y:22,src:"./assets/solidWord.png",width:280,height:52})]}}),l(te,Q(n,{onFocus:t,onBlur:o,get style(){return Gr.Column},scroll:"none",get children(){return[l(nr,{onEnter:()=>i("/browse/all"),icon:"trending",children:"Trending"}),l(nr,{icon:"movie",onEnter:()=>i("/browse/movie"),children:"Movies"}),l(nr,{icon:"tv",onEnter:()=>i("/browse/tv"),children:"TV"}),l(nr,{icon:"experiment",onEnter:()=>i("/examples"),children:"Examples"})]}})),l(L,{ref(s){var a=r;typeof a=="function"?a(s):r=s},get style(){return Gr.Gradient}})]}const Ac=n=>{Ya({Announcer:["a"],Menu:["m"],Escape:["Escape",27],Backspace:["Backspace",8],Left:["ArrowLeft",37],Right:["ArrowRight",39],Up:["ArrowUp",38],Down:["ArrowDown",40],Enter:["Enter",13]});const r=Ga();r.enabled=!1;const e=xt();let t,o;xc({renderer:Le});function i(){return t.states.has("focus")?!1:(o=sn(),t.setFocus())}const[s,a]=W(!0),c=qo(),d=["/browse","/entity"];return He(()=>{const h=c.pathname;let g=d.some(w=>h.startsWith(w));h==="/"&&(g=!0),a(g)}),l(L,{ref(h){var g=window.APP;typeof g=="function"?g(h):window.APP=h},onAnnouncer:()=>r.enabled=!r.enabled,onLast:()=>history.back(),onMenu:()=>e("/"),style:{width:1920,height:1080},onBackspace:i,onLeft:i,onRight:()=>t.states.has("focus")&&o.setFocus(),get children(){return[l(Ja,{}),l(yc,{mountX:1,x:1910,y:10,get alpha(){return s()?1:0}}),Lt(()=>n.children),l(Sc,{ref(h){var g=t;typeof g=="function"?g(h):t=h},focusPage:()=>o.setFocus(),get showWidgets(){return s()}})]}})},ge={Page:{width:1920,height:1080},headlineText:{width:1200,height:240,x:360,y:455,contain:"both",fontSize:66,textAlign:"center"},headlineSubText:{width:960,height:170,x:530,y:655,contain:"both",fontSize:48,textAlign:"center"},itemsContainer:{width:f.layout.screenW,height:600,y:560,x:0,zIndex:2},Thumbnail:{borderRadius:16,width:185,height:278,scale:1,zIndex:2,transition:{scale:{duration:250,easing:"ease-in-out"}},border:{width:0,color:0},focus:{scale:1.1,border:{color:4294967142,width:8}}},FocusRing:{borderRadius:16,width:194,height:286,y:-5,x:-5,zIndex:-1},FPS:{color:255,height:42,width:140,x:20,y:20,zIndex:100},FPSLabel:{x:10,y:0,fontSize:36,textColor:M("#ffffff")},FPSValue:{x:90,y:0,fontSize:36,textColor:M("#ffffff")},showHeadline:{x:70,y:20},headlineBlur:{width:1920,height:150,x:0,y:0,zIndex:14,alpha:.9,color:M("#000000")},RowTitle:{height:60,width:300,marginBottom:-40,fontSize:36,color:M("#f0f0f0"),zIndex:2},Row:{display:"flex",justifyContent:"spaceBetween",height:300},Column:{display:"flex",flexDirection:"column",justifyContent:"flexStart",gap:64,width:f.layout.screenW-2*f.layout.marginX,x:f.layout.marginX+f.layout.gutterX,y:48,transition:{y:{duration:250,easing:"ease-in-out"}},zIndex:2},Rect:{width:250,height:100,y:10,x:300,color:M("#0000ff")},peopleBio:{...f.typography.body1,fontFamily:"Ubuntu",fontWeight:"normal",contain:"both",width:780,height:340}},xr={width:120,height:40,color:M("#000000"),borderRadius:8,border:{width:2,color:M("#3333ff")},scale:1,focus:{scale:1.1,border:{width:5,color:M("#333333")}},transition:{scale:!0,color:!0}},Cc={color:M("#00A699"),height:8,y:2,x:-4,width:xr.width+8},Tc={fontSize:12,y:12,contain:"width",textAlign:"center",color:M("#F6F6F9"),height:xr.height,width:xr.width},ho={container:xr,topBar:Cc,text:Tc},fo={width:386,height:136,color:M("#715cab"),focus:{color:M("#5a39a2")},disabled:{color:M("#291d43")}},_c={fontSize:32,contain:"width",textAlign:"center",mountY:-.35,color:M("#FFFFFF"),height:fo.height,width:fo.width,focus:{fontSize:40},disabled:{color:M("#909090")}};function Rc(n){return l(L,Q(n,{get style(){return ge.Thumbnail}}))}function yr(n){const[r,e]=Ps(n,["items"]);return l(X,Q(e,{get style(){return ge.Row},get children(){return l(nn,{get each(){return r.items},children:t=>l(Rc,t)})}}))}const Ic="eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIyZDE4YjEwMTA0YjdiZTlkNjFiMWYwYjVlMGEwNzM2OCIsInN1YiI6IjYwZTVjMTdlNGNhNjc2MDA3NTA4Njc3MSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.D_nqH9kd-bhhWzeVsTDPYhHnsUaNAuyAa6YATmKHqsA",Bc="https://api.themoviedb.org/3";let si,ai;const kc="w185",Ec={headers:{"Content-Type":"application/json",Authorization:"Bearer "+Ic}};function Et(n,r=kc){return ai+r+n}function Fc(n,r={}){return si?qr(n,r):li().then(()=>qr(n,r))}function qr(n,r={}){return fetch(Bc+n,{...Ec,...r}).then(e=>e.json())}function li(){return qr("/configuration").then(n=>{var r;return si=n,ai=(r=n.images)==null?void 0:r.secure_base_url,n})}const rt={get:Fc,loadConfig:li};function Nc(n,r){return n.length>r?n.substring(0,r-3)+"...":n}function Lc(n,r=7){let e=[];for(let t=0,o=n.length;t({src:Et(r.poster_path||r.profile_path),tileSrc:Et(r.backdrop_path||r.profile_path,"w300"),backdrop:Et(r.backdrop_path,"w1280"),href:"/entity/".concat(r.media_type||"people","/").concat(r.id),shortTitle:Nc(r.title||r.name,30),title:r.title||r.name,data:r,entityInfo:{type:r.media_type||"people",id:r.id},heroContent:{title:r.title||r.name,description:r.overview}}))}let Nr=new Map;const or=new Map;function Mc(n){return r=>{const e="/trending/".concat(n,"/week?page=").concat(r);if(Nr.has(e))return Nr.get(e);let t=rt.get(e).then(o=>{let i=o.results.filter(c=>!c.adult),s=(or.has(n)?or.get(n):[]).concat(Mt(i)),a=Lc(s);return a[a.length-1].length<7?or.set(n,a.pop()):or.delete(n),a});return Nr.set(e,t),t}}function zc(n){const[r,e]=W([]),[t,o]=W(1),[i,s]=W(!1),[a]=tt(t,n);return Yr(()=>{const c=a();c&&Rs(()=>{c.length===0&&s(!0),e(d=>[...d,...c])})}),{pages:r,page:t,setPage:o,setPages:e,end:i,setEnd:s}}const vn=900,Pc={display:"flex",flexDirection:"column",x:50,y:100,width:vn,height:220,gap:16},Dc={...f.typography.display2,fontFamily:"Ubuntu",fontWeight:700,maxLines:1,width:vn,contain:"width"},Oc=n=>l(F,Q(n,{style:Dc})),Wc={...f.typography.body1,fontFamily:"Ubuntu",fontWeight:400,lineHeight:32,width:vn,maxLines:3,contain:"width"},Uc=n=>l(F,Q(n,{style:Wc,get children(){return n.children}}));({...f.typography.body2});const ci=n=>l(L,Q(n,{style:Pc,get children(){return[l(Oc,{get children(){return n.title}}),l(Uc,{get children(){return n.description}})]}}));function Yc(n){const r=Math.floor(n/60),e=n%60;return r+"h "+(e<10?"0":"")+e+"min"}function $c(n){const r=n.split("-");return r[1]+"/"+r[2]+"/"+r[0]}function go(n){return n.split("-")[0]}function Hc({type:n,id:r}){return rt.get("/".concat(n,"/").concat(r,"/recommendations")).then(({results:e})=>e.length?Mt(e.slice(0,7)):rt.get("/trending/".concat(n,"/week?page=1")).then(({results:t})=>Mt(t.slice(0,7))))}function jc({type:n,id:r}){return rt.get("/".concat(n,"/").concat(r,"/credits")).then(({cast:e})=>Mt(e.slice(0,7)))}function di({type:n,id:r}){let e=n==="movie"?{rtCrit:86,rtFan:92}:{};return rt.get("/".concat(n,"/").concat(r)).then(t=>({backgroundImage:Et(t.backdrop_path,"w1280"),heroContent:{title:t.title||t.name,description:t.overview,badges:["HD","CC"],voteAverage:t.vote_average,voteCount:t.vote_count,metaText:n==="movie"?Yc(t.runtime)+" "+$c(t.release_date):"".concat(go(t.first_air_date)," - ").concat(go(t.last_air_date)),reviews:e},...t}))}const po=()=>{const n=un(),[r,e]=W(0),[t,o]=W();tt(t,di);const[i,s]=W({}),a=xt(),c=Eo(()=>0),d=q(()=>zc(Mc(n.filter||"all"))),h=Xr(p=>Ee(p),400),g=Xr(p=>s(p),200);He(ot(sn,p=>{p.backdrop&&h(p.backdrop),p.heroContent&&g(p.heroContent)},{defer:!0}));function w(){var y;(y=this.children.selected)==null||y.setFocus(),e((this.y||0)*-1+24);let p=d().pages().length;(p===0||this.parent.selected&&this.parent.selected>=p-2)&&d().setPage(S=>S+1)}function A(){let p=this.children.selected;return N(p&&p.href),a(p.href),!0}return l(je,{get when(){return d().pages().length},get children(){return[l(ci,Q({y:360,x:162},i)),l(L,{clipping:!0,get style(){return ge.itemsContainer},get children(){return l(te,{plinko:!0,announce:"All Trending - Week",get y(){return r()},get style(){return ge.Column},get children(){return l(nn,{get each(){return d().pages()},children:(p,y)=>l(yr,{get autofocus(){return c(y())},items:p,width:1620,onFocus:w,onEnter:A})})}})}})]}})},Qc=()=>{const n=xt(),r=Eo(()=>0);function e(){let c=this.children.selected;N(c&&c.id),n("/"+c.id)}const t=[{title:"Flex Row",id:"flex",description:"Flex Row Implementation"},{title:"Flex Column",id:"flexcolumn",description:"Flex Column Implementation"},{title:"Flex Row Vertical Align",id:"flexsize",description:"Flex Row Vertical Align Implementation"},{title:"Flex Column Vertical Align",id:"flexcolumnsize",description:"Flex Column Vertical Align Implementation"},{title:"Buttons",id:"buttons",description:"Demo a few buttons"},{title:"Text",id:"text",description:"Text layout with flexbox"},{title:"Create Elements",id:"create",description:"Testing Show + children + inserting text"},{title:"Viewport",id:"viewport",description:"Events going in and out of viewport"}];function o(c){const d={width:370,height:320,borderRadius:6,scale:1,color:405488895,transition:{color:!0,scale:!0},focus:{scale:1.1,color:4294967295}},[h,g]=W(4294967295);return l(L,Q(c,{onFocus:()=>g(255),onBlur:()=>g(4294967295),style:d,get children(){return l(L,{x:30,get children(){return[l(F,{y:30,fontSize:84,get color(){return h()},get children(){return c.index}}),l(F,{y:140,fontSize:42,width:340,height:42,contain:"both",get color(){return h()},get children(){return c.title}}),l(F,{y:200,fontSize:28,width:330,contain:"width",get color(){return h()},get children(){return c.description}})]}})}}))}const[i,s]=W(140);function a(c){s(c.selected*-400+140)}return l(L,{colorTop:1147903743,colorBottom:743406847,get children(){return[l(L,{x:120,get children(){return[l(L,{src:"./assets/solidjs.png",width:101,height:90,y:40}),l(F,{fontSize:90,x:110,y:40,children:"Examples"}),l(L,{y:140,height:1,width:1800,color:3906468351})]}}),l(X,{onSelectedChanged:a,onEnter:e,transition:{x:{delay:20,duration:300}},get x(){return i()},y:300,width:4400,get style(){return ge.Row},justifyContent:"flexStart",gap:40,get children(){return l(nn,{each:t,children:(c,d)=>l(o,Q({get autofocus(){return r(d())},get index(){return d()}},c))})}})]}})},Xc=()=>{const n={width:900,height:500,y:350,x:150,gap:25,display:"flex",flexDirection:"column",justifyContent:"flexStart",color:M("00000000")},r={width:900,height:36,gap:6,display:"flex",flexDirection:"row",justifyContent:"flexStart",color:M("00000000")},e={fontSize:42},t={width:n.width,fontSize:26,contain:"width"},o={fontSize:26};return Qe(()=>{Ee("#000000")}),l(L,{autofocus:!0,style:n,get children(){return[l(F,{style:e,children:"Title of the Page"}),l(F,{style:t,children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel tempor tellus. Sed eu leo purus. Vestibulum sollicitudin eget tellus a varius. Phasellus est turpis, volutpat sed blandit sit amet, rutrum sit amet mauris. In dignissim elit orci, a sollicitudin ipsum faucibus et. Quisque vel quam rutrum, faucibus augue sed, scelerisque nunc."}),l(L,{style:r,get children(){return[l(F,{style:o,children:"Subline Text"}),l(L,{width:28,height:28,src:"./assets/rt-popcorn.png"}),l(F,{style:o,children:"More Text"})]}})]}})},Kc=()=>{const n={width:900,height:500,y:50,x:150,gap:25,display:"flex",flexDirection:"column",justifyContent:"flexStart",color:M("00000000")},r={width:900,height:36,gap:6,display:"flex",flexDirection:"row",justifyContent:"flexStart",color:M("00000000")},e={fontSize:42},t={fontSize:26};let o,i;Qe(()=>{Ee("#000000"),o.animate({x:100},{duration:2e3}).start()});const[s,a]=W(),[c,d]=W();setTimeout(()=>{var b;a("- Inserted -"),(b=i.getChildById("child1"))==null||b.animate({x:600},{duration:2e3}).start()},2e3);const h={width:400,height:300,color:M("#0000ff")},g={color:M("#f54242"),focus:{color:M("#4287f5")}};function w(b){const v=br(()=>b.children);return l(L,Q(b,{get style(){return[g,b.style,[h]]},get children(){return[l(L,{id:"child1",width:100,height:100,get color(){return M("#ff0000")},y:25,get children(){return[Lt(()=>v()),l(L,{id:"subChild",x:150,width:100,height:100,get color(){return M("#00ff00")}}),l(F,{get children(){return b.title}})]}}),l(L,{width:100,height:100,get color(){return M("#ffff00")},y:175,get children(){return v()}})]}}))}const A={borderLeft:{width:8,color:95598118},borderTop:{width:8,color:631422246},borderRight:{width:8,color:95598118},borderBottom:{width:8,color:3316790822}},p={color:M("#cccccc"),focus:{color:M("#000000")}},y={color:M("#ffffff"),focus:{color:M("#f6f6cc")}};function S(b){return b.states.has("focus")}return l(L,{style:n,get children(){return[l(F,{style:e,children:"Title of the Page"}),l(L,{style:r,get children(){return[l(F,{get children(){return c()}}),l(F,{style:t,get children(){return["Sub ",Lt(()=>s())," Text"]}}),l(je,{get when(){return s()},get children(){return l(L,{width:28,height:28,src:"./assets/rt-popcorn.png"})}}),l(F,{style:t,children:"More Text"})]}}),l(w,{autofocus:!0,ref(b){var v=i;typeof v=="function"?v(b):i=b},style:[y,p],get children(){return l(F,{children:"Child Test"})}}),l(L,{ref(b){var v=o;typeof v=="function"?v(b):o=b},style:A,width:100,height:100,get color(){return M("#00ff00")},x:900,y:400,get alpha(){return S(o)?1:.2}})]}})},Vc=()=>{let n,r;const[e,t]=W([]),o={width:100,height:100,x:-400,y:-400,rotation:0,borderRadius:50,color:M("#4287f5"),transition:{x:{duration:1250,easing:"linear"},y:{duration:1250,easing:"linear"},rotation:{duration:1400,easing:"ease-in-out"}}},i={fontSize:32,x:960,y:540,mount:.5,lineheight:52},s=(c,d)=>Math.floor(Math.random()*(d-c+1)+c);Qe(()=>{Ee("#000000"),n.x=1820/2,n.y=980/2,r=setInterval(()=>{n.rotation=s(-90,90),n.x=s(-300,2220),n.y=s(-300,1380)},2500)});function a(c,d){t(h=>[...h,c].slice(-4)),console.log(c)}return Me(()=>{clearInterval(r)}),l(L,{get children(){return[l(F,{style:i,get children(){return e().join("\n")}}),l(L,{autofocus:!0,style:o,ref(c){var d=n;typeof d=="function"?d(c):n=c},onEvents:[["inBounds",c=>a("inBounds")],["outOfBounds",c=>a("outOfBounds")],["inViewport",c=>a("inViewport")],["outOfViewport",c=>a("outOfViewport")]]})]}})},Gc=()=>{function n(o,i){this.states.toggle("disabled")}const r={display:"flex",justifyContent:"flexStart",width:1500,height:300,color:M("00000000"),gap:26,y:400};function e(o){return l(L,Q(o,{forwardStates:!0,get style(){return ho.container},get children(){return l(F,{get style(){return ho.text},get children(){return o.children}})}}))}const t=o=>(()=>{var i=Ar("node");return ia($a,i,()=>[10,15]),an(i,Q(o,{get style(){return{color:M("#000000be"),borderRadius:8,border:{width:2,color:M("#ffffff")}}}}),!0),na(i,l(F,{style:{fontSize:20},get children(){return o.children}})),i})();return[l(X,{x:100,y:200,gap:5,style:r,get children(){return[l(t,{children:"HD"}),l(t,{children:"PG13"}),l(t,{children:"NC17"}),l(F,{fontSize:30,children:"I like bananas"}),l(t,{children:"DOLBY"})]}}),l(X,{x:100,gap:40,style:r,get children(){return[l(e,{autofocus:!0,onEnter:n,children:"TV Shows"}),l(e,{states:{active:!0,disabled:!1},children:"Movies"}),l(e,{states:"active",children:"Sports"}),l(e,{states:"disabled",children:"News"})]}})]},qc=()=>{const n={display:"flex",justifyContent:"flexStart",width:1600,height:110,color:M("#4dabf5")},r={fontSize:44,marginTop:25,marginBottom:-20,skipFocus:!0};function e(a){return l(L,Q(a,{style:{width:200,height:100,y:5,color:392801023}}))}const[t,o]=W(50);function i(){var a;(a=this.children.selected)==null||a.setFocus(),o(150+(this.y||0)*-1)}Qe(()=>{Ee("#333333")});const s=50;return l(te,{x:160,get y(){return t()},gap:30,height:850,get width(){return n.width},get style(){return ge.Column},get children(){return[l(F,{style:r,children:"Flex Start"}),l(X,{gap:s,style:n,onFocus:i,get children(){return[l(e,{autofocus:!0}),l(e,{}),l(e,{}),l(e,{}),l(e,{})]}}),l(F,{style:r,children:"Flex Start - Margin Left"}),l(X,{gap:s,style:n,onFocus:i,get children(){return[l(e,{marginLeft:100}),l(e,{}),l(e,{marginLeft:100}),l(e,{}),l(e,{})]}}),l(F,{style:r,children:"Flex End"}),l(X,{gap:s,justifyContent:"flexEnd",style:n,onFocus:i,get children(){return[l(e,{}),l(e,{}),l(e,{}),l(e,{}),l(e,{})]}}),l(F,{style:r,children:"Flex End - Margin Right"}),l(X,{gap:s,justifyContent:"flexEnd",style:n,onFocus:i,get children(){return[l(e,{}),l(e,{marginRight:100}),l(e,{}),l(e,{}),l(e,{marginRight:100})]}}),l(F,{style:r,children:"Center - No Margin Support"}),l(X,{gap:s,justifyContent:"center",style:n,onFocus:i,get children(){return[l(e,{}),l(e,{}),l(e,{}),l(e,{}),l(e,{})]}}),l(F,{style:r,children:"Space Between - No Margin Support"}),l(X,{gap:s,justifyContent:"spaceBetween",style:n,onFocus:i,get children(){return[l(e,{}),l(e,{}),l(e,{}),l(e,{}),l(e,{})]}}),l(F,{style:r,children:"Space Evenly - No Margin Support"}),l(X,{gap:s,justifyContent:"spaceEvenly",style:n,onFocus:i,get children(){return[l(e,{}),l(e,{}),l(e,{}),l(e,{}),l(e,{})]}})]}})},Zc=()=>{const n={display:"flex",justifyContent:"flexStart",width:1600,height:110,color:M("#4dabf5")},r={fontSize:44,marginTop:25,marginBottom:-20,skipFocus:!0};function e(c){return l(L,Q(c,{style:{width:200,height:100,y:5,color:392801023}}))}function t(){return Math.floor(Math.random()*91)+10}const[o,i]=W(50);function s(){var c;(c=this.children.selected)==null||c.setFocus(),i(150+(this.y||0)*-1)}Qe(()=>{Ee("#333333")});const a=50;return l(te,{x:160,get y(){return o()},gap:30,height:850,get width(){return n.width},get style(){return ge.Column},get children(){return[l(F,{style:r,children:"Flex Start - AlignItems: center"}),l(X,{alignItems:"center",gap:a,style:n,onFocus:s,get children(){return[l(e,{autofocus:!0,get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}})]}}),l(F,{style:r,children:"Flex Start - Margin Left - AlignItems: flexStart"}),l(X,{gap:a,alignItems:"flexStart",style:n,onFocus:s,get children(){return[l(e,{marginLeft:100,get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{marginLeft:100,get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}})]}}),l(F,{style:r,children:"Flex End - AlignItems: flexEnd"}),l(X,{gap:a,justifyContent:"flexEnd",alignItems:"flexEnd",style:n,onFocus:s,get children(){return[l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}})]}}),l(F,{style:r,children:"Flex End - Margin Right"}),l(X,{gap:a,justifyContent:"flexEnd",style:n,onFocus:s,get children(){return[l(e,{get height(){return t()}}),l(e,{marginRight:100,get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{marginRight:100,get height(){return t()}})]}}),l(F,{style:r,children:"Center - No Margin Support"}),l(X,{gap:a,justifyContent:"center",style:n,onFocus:s,get children(){return[l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}})]}}),l(F,{style:r,children:"Space Between - No Margin Support"}),l(X,{gap:a,justifyContent:"spaceBetween",style:n,onFocus:s,get children(){return[l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}})]}}),l(F,{style:r,children:"Space Evenly - No Margin Support"}),l(X,{gap:a,justifyContent:"spaceEvenly",style:n,onFocus:s,get children(){return[l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}}),l(e,{get height(){return t()}})]}})]}})},Jc=()=>{const n={display:"flex",justifyContent:"spaceEvenly",width:1920,y:100,height:880,color:M("00000000")},r={display:"flex",flexDirection:"column",justifyContent:"flexStart",color:M("#4dabf5"),height:850,width:80},e={fontSize:44,y:20,x:150};function t(d){const h={width:o(),height:80,x:5,color:M("#1769aa")};return l(L,Q(d,{style:h}))}function o(){return Math.floor(Math.random()*61)+10}const[i,s]=W(50);function a(){var d;(d=this.children.selected)==null||d.setFocus(),s(150+(this.y||0)*-1)}Qe(()=>{Ee("#333333")});const c=50;return[l(F,{style:e,children:"Start, MarginTop, End, MarginBottom, Center, Between, Evenly"}),l(X,{gap:c,style:n,onFocus:a,get children(){return[l(te,{gap:30,style:r,alignItems:"center",get children(){return[l(t,{autofocus:!0}),l(t,{}),l(t,{}),l(t,{}),l(t,{})]}}),l(te,{gap:c,style:r,onFocus:a,alignItems:"flexStart",get children(){return[l(t,{marginTop:100}),l(t,{}),l(t,{marginTop:100}),l(t,{}),l(t,{})]}}),l(te,{gap:c,alignItems:"flexEnd",justifyContent:"flexEnd",style:r,onFocus:a,get children(){return[l(t,{}),l(t,{}),l(t,{}),l(t,{}),l(t,{})]}}),l(te,{gap:c,justifyContent:"flexEnd",style:r,onFocus:a,get children(){return[l(t,{}),l(t,{marginBottom:100}),l(t,{}),l(t,{}),l(t,{marginBottom:100})]}}),l(te,{gap:c,justifyContent:"center",style:r,onFocus:a,get children(){return[l(t,{}),l(t,{}),l(t,{}),l(t,{}),l(t,{})]}}),l(te,{gap:c,justifyContent:"spaceBetween",style:r,onFocus:a,get children(){return[l(t,{}),l(t,{}),l(t,{}),l(t,{}),l(t,{})]}}),l(te,{gap:c,justifyContent:"spaceEvenly",style:r,onFocus:a,get children(){return[l(t,{}),l(t,{}),l(t,{}),l(t,{}),l(t,{})]}})]}})]},ed=()=>{const n={display:"flex",justifyContent:"spaceEvenly",width:1920,y:100,height:880,color:M("00000000")},r={display:"flex",flexDirection:"column",justifyContent:"flexStart",color:M("#4dabf5"),height:850,width:60},e={fontSize:44,y:20,x:150};function t(c){const d={width:50,height:80,x:5,color:M("#1769aa")};return l(L,Q(c,{style:d}))}const[o,i]=W(50);function s(){var c;(c=this.children.selected)==null||c.setFocus(),i(150+(this.y||0)*-1)}Qe(()=>{Ee("#333333")});const a=50;return[l(F,{style:e,children:"Start, MarginTop, End, MarginBottom, Center, Between, Evenly"}),l(X,{gap:a,style:n,onFocus:s,get children(){return[l(te,{gap:30,style:r,get children(){return[l(t,{autofocus:!0}),l(t,{}),l(t,{}),l(t,{}),l(t,{})]}}),l(te,{gap:a,style:r,onFocus:s,get children(){return[l(t,{marginTop:100}),l(t,{}),l(t,{marginTop:100}),l(t,{}),l(t,{})]}}),l(te,{gap:a,justifyContent:"flexEnd",style:r,onFocus:s,get children(){return[l(t,{}),l(t,{}),l(t,{}),l(t,{}),l(t,{})]}}),l(te,{gap:a,justifyContent:"flexEnd",style:r,onFocus:s,get children(){return[l(t,{}),l(t,{marginBottom:100}),l(t,{}),l(t,{}),l(t,{marginBottom:100})]}}),l(te,{gap:a,justifyContent:"center",style:r,onFocus:s,get children(){return[l(t,{}),l(t,{}),l(t,{}),l(t,{}),l(t,{})]}}),l(te,{gap:a,justifyContent:"spaceBetween",style:r,onFocus:s,get children(){return[l(t,{}),l(t,{}),l(t,{}),l(t,{}),l(t,{})]}}),l(te,{gap:a,justifyContent:"spaceEvenly",style:r,onFocus:s,get children(){return[l(t,{}),l(t,{}),l(t,{}),l(t,{}),l(t,{})]}})]}})]},td=()=>{function n(i,s){this.states.toggle("disabled")}const r={display:"flex",justifyContent:"flexStart",width:1500,height:300,color:M("00000000"),gap:26,y:400,x:100},e={width:386,height:136,color:"0x715cabff",focus:{color:"0x5a39a2ff"},disabled:{color:"0x291d43ff"}},t=["RoundedRectangle",{radius:65}];function o(i){return l(L,Q(i,{forwardStates:!0,style:e,shader:t,get children(){return l(F,{style:_c,get children(){return i.children}})}}))}return l(X,{style:r,get children(){return[l(o,{autofocus:!0,onEnter:n,children:"Focused"}),l(o,{states:{active:!0,disabled:!1},children:"Normal"}),l(o,{states:"disabled",children:"Disabled"})]}})},rd="https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd";function nd(){shaka.polyfill.installAll(),shaka.Player.isBrowserSupported()?od():console.error("Browser not supported!")}async function od(){const n=document.getElementById("video"),r=new shaka.Player;await r.attach(n),window.player=r,r.addEventListener("error",id);try{await r.load(rd),console.log("The video has now been loaded!")}catch(e){ui(e)}}function id(n){ui(n.detail)}function ui(n){console.error("Error code",n.code,"object",n)}function sd(){const n=document.getElementById("video");return n.hidden=!1,setTimeout(()=>n.play(),50),n.focus(),n}function ad(){const n=document.getElementById("video");return n.hidden=!0,n.pause(),n}document.addEventListener("DOMContentLoaded",nd);const ld=()=>{const n=un(),r=xt(),[e]=tt(()=>({...n}),di),[t]=tt(()=>({...n}),jc),[o]=tt(()=>({...n}),Hc),[i,s]=W(0);He(ot(e,b=>{Ee(b.backgroundImage)},{defer:!0}));const a=640,c={color:M("#000000"),alpha:0,width:1900,height:890,x:-160,y:a,borderRadius:30};function d(){var b;(b=this.children.selected)==null||b.setFocus(),p.y=a,y.y=a,y.alpha=0}function h(){var b;(b=this.children.selected)==null||b.setFocus(),p.y=200,y.y=160,y.alpha=.9}function g(){let b=this.children.selected;N(b&&b.href),r(b.href)}function w(){ad(),document.getElementsByTagName("canvas")[0].focus(),S.setFocus(),s(0)}function A(){const b=sd();Yo(b),s(.9)}let p,y,S;return l(je,{get when(){return e()},keyed:!0,get children(){return[l(L,{x:170,onUp:()=>S.setFocus(),onEscape:w,get children(){return[l(ci,Q({y:260},()=>e().heroContent)),l(X,{ref(b){var v=S;typeof v=="function"?v(b):S=b},y:500,scroll:"none",height:90,width:640,gap:40,onDown:()=>p.setFocus(),onEnter:A,get children(){return[l(lo,{width:300,autofocus:!0,children:"Play"}),l(lo,{width:300,children:"Resume"})]}}),l(te,{ref(b){var v=p;typeof v=="function"?v(b):p=b},x:0,y:a,get style(){return ge.Column},zIndex:5,get children(){return l(je,{get when(){return Lt(()=>!!o())()&&t()},get children(){return[l(F,{skipFocus:!0,get style(){return ge.RowTitle},children:"Recommendations"}),l(yr,{onFocus:d,onEnter:g,get items(){return o()},width:1620}),l(F,{skipFocus:!0,get style(){return ge.RowTitle},children:"Cast and Crew"}),l(yr,{onFocus:h,onEnter:g,get items(){return t()},width:1620})]}})}}),l(L,{ref(b){var v=y;typeof v=="function"?v(b):y=b},style:c,transition:{alpha:!0,y:!0}})]}}),l(L,{get alpha(){return i()},get color(){return M("#000000")},zIndex:200,transition:{alpha:!0}})]}})};function cd({id:n}){return rt.get("/person/".concat(n,"/combined_credits")).then(({cast:r})=>Mt(r.slice(0,7)))}function dd({id:n}){return rt.get("/person/".concat(n)).then(r=>({backgroundImage:Et(r.profile_path,"original"),heroContent:{title:r.title||r.name,description:r.biography},...r}))}const ud=()=>{const n=un(),r=xt(),[e]=tt(()=>({...n}),dd),[t]=tt(()=>({...n}),cd),o={color:M("#000000"),alpha:.8,width:800,height:440,x:130,y:180,borderRadius:30};function i(){let s=this.children.selected;N(s&&s.href),r(s.href)}return Qe(()=>{Ee("#333333")}),l(je,{get when(){return e()},keyed:!0,get children(){return[l(L,{get src(){return e().backgroundImage},width:400,autosize:!0,y:0,x:1800,mountX:1}),l(L,{x:150,y:200,width:800,gap:24,get style(){return ge.Column},zIndex:3,get children(){return[l(F,{contain:"width",fontFamily:"Ubuntu",get style(){return f.typography.display2},get children(){return e().name}}),l(F,{contain:"both",get style(){return ge.peopleBio},get children(){return e().biography}})]}}),l(L,{style:o}),l(te,{y:670,x:140,get style(){return ge.Column},scroll:"none",get children(){return l(je,{get when(){return t()},get children(){return[l(F,{skipFocus:!0,get style(){return ge.RowTitle},children:"Credits"}),l(yr,{autofocus:!0,onEnter:i,get items(){return t()}})]}})}})]}})},hd=()=>(()=>{var n=Ar("node");return oa(n,"style",{width:1920,height:1080,color:868483072}),n})(),fd=new URL("AppCoreExtensions-ChAx3lKK.js",import.meta.url).href;pe.debug=!1;pe.animationsEnabled=!0;pe.fontSettings.fontFamily="Ubuntu";pe.fontSettings.color=M("#f6f6f6");pe.fontSettings.fontSize=32;pe.rendererOptions={coreExtensionModule:fd,fpsUpdateInterval:200,enableInspector:!0};ra(()=>l(La,{root:n=>l(Ac,n),get children(){return[l(he,{path:"",component:po}),l(he,{path:"examples",component:Qc}),l(he,{path:"browse/:filter",component:po}),l(he,{path:"text",component:Xc}),l(he,{path:"buttons",component:Gc}),l(he,{path:"flex",component:qc}),l(he,{path:"create",component:Kc}),l(he,{path:"viewport",component:Vc}),l(he,{path:"flexsize",component:Zc}),l(he,{path:"flexcolumnsize",component:Jc}),l(he,{path:"flexcolumn",component:ed}),l(he,{path:"buttonsmaterial",component:td}),l(he,{path:"entity/people/:id",component:ud}),l(he,{path:"entity/:type/:id",component:ld}),l(he,{path:"*all",component:hd})]}}));export{pd as __vite_legacy_guard}; -//# sourceMappingURL=index-By7E3s08.js.map diff --git a/assets/index-By7E3s08.js.map b/assets/index-By7E3s08.js.map deleted file mode 100644 index 9d02970..0000000 --- a/assets/index-By7E3s08.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"mappings":"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,EACT,EACD,UAAW,CACT,SAAU,CACR,KAAM,EACN,MAAO,GACP,KAAM,IACN,OAAQ,GACR,KAAM,IACN,MAAO,EACR,EACD,MAAO,CACL,KAAM,EACN,MAAO,IACP,KAAM,KACN,OAAQ,IACR,KAAM,KACN,MAAO,GACR,EACD,WAAY,CACV,eAAgB,2BAChB,MAAO,EACP,SAAU,GACX,EACD,mBAAoB,CAClB,eAAgB,2BAChB,MAAO,EACP,SAAU,GACX,EACD,eAAgB,CACd,eAAgB,2BAChB,MAAO,EACP,SAAU,GACX,EACD,SAAU,CACR,eAAgB,2BAChB,MAAO,EACP,SAAU,GACX,EACD,iBAAkB,CAChB,eAAgB,2BAChB,MAAO,EACP,SAAU,GACX,EACD,aAAc,CACZ,eAAgB,2BAChB,MAAO,EACP,SAAU,GACX,EACD,QAAS,CACP,eAAgB,2BAChB,MAAO,EACP,SAAU,GACX,EACD,gBAAiB,CACf,eAAgB,2BAChB,MAAO,EACP,SAAU,GACX,EACD,YAAa,CACX,eAAgB,2BAChB,MAAO,EACP,SAAU,GACX,CACF,EACD,MAAO,CACL,UACE,6ZACF,WACE,iZACF,iBACE,ylHACF,MACE,gZACH,EACD,MAAO,CACL,QAAS,CACP,UAAW,aACX,UAAW,aACX,UAAW,aACX,UAAW,aACX,UAAW,aACX,UAAW,aACX,UAAW,YACZ,EACD,MAAO,aACP,MAAO,aACP,KAAM,aACN,IAAK,aACL,OAAQ,aACR,OAAQ,aACR,MAAO,aACP,KAAM,aACN,OAAQ,aACR,SAAU,aACV,cAAe,aACf,QAAS,aACT,YAAa,aACb,qBAAsB,aACtB,oBAAqB,aACrB,oBAAqB,aACrB,YAAa,aACb,qBAAsB,aACtB,oBAAqB,aACrB,oBAAqB,aACrB,UAAW,aACX,mBAAoB,aACpB,kBAAmB,aACnB,kBAAmB,aACnB,aAAc,aACd,aAAc,aACd,SAAU,aACV,YAAa,aACb,gBAAiB,YACjB,YAAa,aACb,qBAAsB,aACtB,oBAAqB,aACrB,oBAAqB,aACrB,YAAa,aACb,qBAAsB,aACtB,oBAAqB,aACrB,oBAAqB,aACrB,UAAW,aACX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","names":["TextureUsageTracker","releaseCallback","__publicField","ManualCountTextureUsageTracker","options","_a","_b","now","thresholdMs","textureRefInfo","texture","textureId","assertTruthy","FinalizationRegistryTextureUsageTracker","stylePropertyMap","v","x","y","w","h","convertColorToRgba","color","a","b","g","r","domPropertyMap","Inspector","canvas","settings","isProductionEnvironment","_d","_c","_e","_f","rect","top","left","node","properties","div","key","driver","target","property","value","receiver","props","anim","parentId","parent","mappedStyleResponse","duration","delay","width","height","alpha","rotation","scale","animate","ShaderEffect","ref","uniformInfo","passParameters","declaredUniforms","uniforms","u","unif","uniType","uniformName","define","res","uni","trPropSetterDefaults","state","TextRenderer","stage","propSetters","setter","status","error","renderable","eventName","WebTrFontFace","TrFontFace","fontFamily","descriptors","fontUrl","fontUrlWithoutParentheses","determinedDescriptors","cssDescriptors","fontFace","MAX_TEXTURE_DIMENSION","calcHeight","textBaseline","fontSize","lineHeight","numLines","offsetY","baselineOffset","LightningTextTextureRenderer","context","ff","ffs","i","n","fontSetting","err","renderInfo","precision","paddingLeft","paddingRight","wordWrapWidth","cutSx","cutEx","cutSy","cutEy","letterSpacing","textIndent","innerWidth","suffix","linesInfo","lines","usedLines","otherLines","al","j","m","maxLineWidth","lineWidths","lineWidth","linesOverride","linePositionX","linePositionY","drawLines","hlHeight","offset","hlPaddingLeft","hlPaddingRight","getRgbaString","drawLine","prevShadowSettings","textSplit","word","suffixWidth","wordLen","wordWidth","cutoffIndex","truncWordWidth","text","indent","allLines","realNewlines","resultLines","result","spaceLeft","words","wordWidthWithSpace","space","acc","char","resolvedGlobal","globalFontSet","getFontCssString","fontStyle","fontWeight","fontStretch","tmpElementBounds","createBound","CanvasTextRenderer","EventEmitter","cssString","maxLines","containedMaxLines","calcMaxLines","getNormalizedRgbaComponents","scrollY","contain","visibleWindow","renderWindow","canvasPages","elementBounds","intersectBound","visibleWindowHeight","maxLinesPerCanvasPage","renderWindowScreenX1","renderWindowScreenY1","renderWindowScreenX2","renderWindowScreenY2","pageHeight","page1Block","page1LineStart","page0LineStart","page2LineStart","scrollYNearestPage","pageInfo","transform","clippingRect","textW","textH","elementRect","intersectRect","pageSize","zIndex","combinedAlpha","getNormalizedAlphaComponent","quadColor","mergeColorAlphaPremultiplied","_h","_g","_j","_i","_l","_k","DefaultShader","WebGlCoreShader","renderer","textures","glw","DefaultShaderBatched","t","samplers","textureUnits","idx","effectCache","getResolvedEffect","effects","effectContructors","effect","_DynamicShader","shader","memize","regEffects","results","eff","index","fxClass","uniInfo","p","fxProp","propInfo","propsA","propsB","propsEffectsLen","effectA","effectB","effectNameCount","methods","declareUniforms","uFx","baseClass","nr","effectMethods","fx","fxProps","remap","cm","fxMethod","onShaderMask","onColorize","onEffectMask","reg","methodParameters","pm","sharedMethods","currentMask","drawEffects","current","currentClass","next","effectMethod","methodCollection","increment","DynamicShader","RoundedRectangle","IDENTITY_MATRIX_3x3","_SdfShader","resolvedProps","components","SdfShader","RadiusEffect","BorderEffect","rgba","_LinearGradientEffect","colors","stops","colorsL","tmp","rgbas","val","amount","loop","LinearGradientEffect","GrayscaleEffect","BorderRightEffect","BorderTopEffect","BorderBottomEffect","BorderLeftEffect","GlitchEffect","FadeOutEffect","_RadialGradientEffect","RadialGradientEffect","RadialProgressEffect","HolePunchEffect","CoreShaderManager","shType","shClass","effectType","effectClass","ShaderClass","cacheKey","ContextSpy","name","isCompressedTextureContainer","url","loadCompressedTexture","arrayBuffer","loadKTXData","loadPVRData","buffer","view","littleEndian","mipmaps","data","imageSize","header","dataOffset","pvrtcData","level","_ImageTexture","Texture","txManager","mimeType","src","premultiplyAlpha","blob","hasAlphaChannel","img","resolve","reject","e","ImageTexture","FLOATS_PER_GLYPH","getStartConditions","sdfFontSize","sdfLineHeight","verticalAlign","fontSizeRatio","lineCache","startLineIndex","sdfStartX","sdfVerticalAlignYOffset","sdfStartY","PeekableIterator","iterator","indexBase","nextResult","getUnicodeCodepoints","start","codePoint","measureText","shaperProps","shaper","glyphs","glyph","layoutText","curLineIndex","startX","startY","textAlign","vertexBuffer","rwSdf","trFontFace","forceFullLayoutCalc","scrollable","overflowSuffix","vertexLineHeight","vertexW","vertexLSpacing","startingLineCacheEntry","startingCodepointIndex","startingMaxX","startingMaxY","maxX","maxY","curX","curY","bufferOffset","lastWord","glyphResult","curLineBufferStart","bufferLineInfos","vertexTruncateHeight","overflowSuffVertexWidth","moreLines","nextLineWillFit","lineVertexW","xStartLastWordBoundary","lineIsBelowWindowTop","lineIsAboveWindowBottom","lineIsWithinWindow","charEndX","quadX","quadY","atlasEntry","uvWidth","uvHeight","vertexTextW","line","xOffset","roundUpToMultiple","multiple","roundDownToMultiple","setRenderWindow","outRenderWindow","bufferMargin","screen","sdf","isBoundPositive","x1","x2","y1Base","y1","y2","weightConversions","fontWeightToNumber","weight","rawResolveFontToUse","familyMapsByPriority","family","weightIn","style","stretch","fontFamiles","fontFaces","weightMap","fontFamilyWeight","msg","resolveFontToUse","TrFontManager","textRenderers","font","trId","tr","tmpRect","SdfTextRenderer","boundsOverlap","SdfTrFontFace","familyName","faceSet","debugData","neededLength","rwScreen","out2","parentHasRenderTexture","framebufferDimensions","debug","distanceRange","bufferUploaded","webGlBuffers","stride","webGlBuffer","BufferCollection","convertBoundToRect","copyRect","renderOp","WebGlCoreRenderOp","mergeColorAlpha","ctxTexture","classExtendsCoreExtension","Class","CoreExtension","loadCoreExtension","coreExtensionModule","module","__vitePreload","ExtensionClass","coreExtension","santizeCustomDataMap","d","validTypes","keys","valueType","RendererMain","resolvedSettings","appWidth","appHeight","deviceLogicalPixelRatio","devicePhysicalPixelRatio","enableInspector","useFinalizationRegistryTracker","deviceLogicalWidth","deviceLogicalHeight","targetEl","fpsData","frameTickData","_m","_n","_o","_p","_q","_r","_s","colorTl","colorTr","colorBl","colorBr","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_L","_K","_N","_M","_O","_Q","_P","_S","_R","_T","_V","_U","_X","_W","_Y","_Z","textureType","id","desc","shaderType","CoreAnimation","propName","getTimingFunction","startValue","endValue","s","dt","easing","stopMethod","propValue","easingProgressValue","easingColorValue","mergeColorProgress","CoreAnimationController","manager","animation","promise","m0","m1","m2","m3","m4","m5","m6","m7","m8","Matrix3d","entries","tempMatrix","out","e0","e1","e2","e3","e4","e5","e6","e7","e8","sx","sy","angle","cos","sin","dst","transpose","other","rx1","rx2","rx3","rx4","ry1","ry2","ry3","ry4","RenderCoords","x3","y3","x4","y4","CoreNodeRenderState","CoreNodeRenderStateMap","UpdateType","CoreNode","dimensions","shManager","type","pivotTranslateX","pivotTranslateY","mountTranslateX","mountTranslateY","delta","parentClippingRect","childUpdateType","child","rectW","rectH","renderM","boundInsideBound","renderState","previous","event","newIsRenderable","isRenderable","tx","ty","ta","tb","tc","td","minX","minY","renderCoords","gt","clipping","isRotated","z","textureOptions","shaderProps","rtt","premultipliedColorTl","premultipliedColorTr","premultipliedColorBl","premultipliedColorBr","worldAlpha","newParent","oldParent","nextId","getNewId","MainOnlyNode","rendererMain","coreNode","payload","imageUrl","startLoop","isIdle","runLoop","getTimeStamp","AnimationManager","ImageWorkerManager","numImageWorkers","worker","numWorkers","workerCode","blobURL","workers","absoluteSrcUrl","_NoiseTexture","size","pixelData8","NoiseTexture","CoreTextureManager","ColorTexture","SubTexture","RenderTexture","textureClass","TextureClass","descId","textureDescId","textureIdCache","textureRefCountMap","refCountObj","textureSource","TextureMemoryManager","byteThreshold","byteSize","bufferMemory","Stage","clearColor","rootId","boundsMargin","enableContextSpy","txMemByteThreshold","bm","debugInfo","WebGlCoreRenderer","rootNode","animationManager","renderRequested","fpsUpdateInterval","fps","trProps","textRendererOverride","rendererId","overrideFallback","possibleRenderer","resolvedTextRenderer","CoreTextNode","setWidth","setHeight","calcWidth","textRendererState","MainOnlyTextNode","MainCoreDriver","rendererSettings","equalFn","$PROXY","$TRACK","signalOptions","runEffects","runQueue","STALE","PENDING","UNOWNED","NO_INIT","Owner","Transition","ExternalSourceConfig","Listener","Updates","Effects","ExecCount","createRoot","fn","detachedOwner","listener","owner","unowned","root","updateFn","untrack","cleanNode","runUpdates","createSignal","writeSignal","readSignal","createComputed","c","createComputation","updateComputation","createRenderEffect","createEffect","runUserEffects","createMemo","isPromise","createResource","pSource","pFetcher","pOptions","source","fetcher","pr","initP","scheduled","resolved","dynamic","contexts","setValue","setError","track","trigger","setState","loadEnd","completeLoad","read","SuspenseContext","load","refetching","lookup","castError","createSelector","subs","l","onCleanup","batch","on","deps","isArray","prevInput","defer","prevValue","input","onMount","getOwner","runWithOwner","o","prev","prevListener","handleError","startTransition","createContext","defaultValue","createProvider","useContext","children","memo","resolveChildren","updates","lookUpstream","sSlot","isComp","TransitionRunning","markDownstream","time","runComputation","nextValue","init","pure","runTop","ancestors","wait","completeUpdates","queue","userLength","ignore","obs","FALLBACK","dispose","mapArray","list","mapFn","items","mapped","disposers","len","indexes","newItems","newLen","newIndices","newIndicesNext","temp","tempdisposers","tempIndexes","end","newEnd","item","disposer","mapper","set","createComponent","Comp","trueFn","propTraps","_","resolveSource","resolveSources","length","mergeProps","sources","proxy","sourcesMap","defined","sourceKeys","definedKeys","splitProps","blocked","k","otherObject","objects","isDefaultDesc","objectIndex","narrowedError","For","fallback","Show","keyed","condition","DEV","createShader","startLightningRenderer","Children","beforeNode","nodeIndexToRemove","isDevEnv","isDev","config","hasDebug","isObject","log","args","isFunc","isString","isNumber","isInteger","keyExists","obj","flattenStyles","States","callback","initialState","__super","_key","stateIndexToRemove","calculateFlex","hasOrder","numChildren","isRow","dimension","crossDimension","marginOne","marginTwo","prop","crossProp","containerSize","containerCrossSize","gap","justify","align","itemSize","crossAlignChild","calculatedSize","toPad","activeElement","setActiveElement","defaultAnimationSettings","convertEffectsToShader","styleEffects","borderAccessor","direction","LightningRendererNumberProps","LightningRendererNonAnimatingProps","ElementNode","animationSettings","focusedIndex","_node","loadedPayload","events","values","found","states","changedLayout","stylesToUndo","styleKey","newStyles","styles","handler","inode","radius","Text","_el$","_$createElement","View","createRenderer$1","createElement","createTextNode","isTextNode","replaceText","insertNode","removeNode","setProperty","getParentNode","getFirstChild","getNextSibling","insert","accessor","marker","initial","insertExpression","unwrapArray","multi","cleanChildren","array","normalizeIncomingArray","replacement","appendNodes","reconcileArrays","replaceNode","normalized","unwrap","parentNode","bLength","aEnd","bEnd","aStart","bStart","after","map","sequence","removed","inserted","el","isParent","newNode","oldNode","spreadExpression","prevProps","skipChildren","code","element","arg","createRenderer","universalLightning","anchor","solidRenderer","render","spread","setProp","use","hexColor","$$EVENTS","delegateEvents","eventNames","document","eventHandler","isServer","createBeforeLeave","listeners","subscribe","confirm","to","force","depth","saveCurrentDepth","keepDepth","notifyIfNotBlocked","notify","block","prevDepth","hasSchemeRegex","trimPathRegex","mockBase","normalizePath","path","omitSlash","resolvePath","base","from","basePath","fromPath","invariant","message","joinPaths","extractSearchParams","params","createMatcher","partial","matchFilters","pattern","splat","segments","location","locSegments","lenDiff","match","matchFilter","segment","locSegment","matchSegment","remainder","filter","isEqual","scoreRoute","route","score","createMemoObject","expandOptionals","prefix","prefixes","expansion","MAX_REDIRECTS","RouterContextObj","RouteContextObj","useRouter","useNavigate","useLocation","useMatch","matchers","matcher","useParams","createRoutes","routeDef","component","info","isLeaf","shared","asArray","originalPath","createBranch","routes","matches","createBranches","stack","branches","routeDefs","def","isEmptyArray","branch","getRouteMatches","createLocation","origin","path_","pathname","search","hash","intent","createRouterContext","integration","getContext","setSource","utils","parsePath","renderPath","beforeLeave","isRouting","setIsRouting","reference","setReference","referrers","submissions","baseRoute","navigatorFactory","preloadRoute","navigateFromRoute","replace","scroll","nextState","resolvedTo","navigateEnd","first","preloadData","prevIntent","createRouteContext","router","outlet","createRouterComponent","routerState","singleFlight","create","_$createComponent","Provider","Root","rootLoad","_$memo","Routes","when","routeStates","nextMatches","prevMatches","equal","prevMatch","nextMatch","createOutlet","splice","forEach","Route","childRoutes","intercept","get","querySelector","selector","createRouter","wrap","signal","bindEvent","scrollToHash","fallbackTop","actions","setupNativeEvents","preload","explicitLinks","actionBase","preloadTimeout","isSvg","handleAnchor","evt","svg","href","rel","handleAnchorClick","handleAnchorPreload","handleAnchorIn","handleAnchorOut","handleFormSubmit","actionRef","hashParser","str","HashRouter","getSource","hashIndex","tryOnCleanup","makeEventListener","createSingletonRoot","factory","disposeRoot","useKeyDownEvent","setEvent","keyMapEntries","focusPath","setFocusPath","useFocusManager","userKeyMap","keypressEvent","currentFocusedElm","prevFocusedElm","prevFocusPath","fp","elm","mappedKeyEvent","finalFocusElm","onKeyHandler","withPadding","padding","pad","right","bottom","firstChild","maxHeight","flattenStrings","series","flattenedSeries","pause","speak","phrase","utterances","lang","synth","utterance","speakSeries","remainingPhrases","nestedSeriesResults","active","retriesLeft","seriesResult","toSpeak","currentSeries","SpeechEngine","debounce","timeoutId","clear","resetFocusPathTimer","currentlySpeaking","voiceOutDisabled","fiveMinutes","debounceWithFlush","scopedValue","debounced","newValue","getElmName","onFocusChangeCore","Announcer","loaded","focusDiff","toAnnounceText","toAnnounce","textToSpeech","append","notification","focusDebounce","focusChangeTimeout","useAnnouncer","createSpriteMap","subTextures","spriteMapTexture","globalBackground","setGlobalBackground","theme","Background","bg1","bg2","heroMask","bgStyles","changeBackgrounds","startsWith","r$","_ref$","_ref$2","_ref$3","materialBrand","objectFromEntries","key2","defaultModeKeys","defaultToneKeys","makeComponentStyles","themeKeys","modes","tones","themeStyles2","modeKeys","toneKeys","makeToneStyles","tones2","themeComponentStyles","modeStyles","toneStyles","tone","styles2","_a2","_b2","mode","makeModeStyles","modes2","makeBaseStyles","base2","mapThemeKeysToSolid","stylesToMap","themeKey","solidKey","convertComponentConfig","themeStyles3","variantName","convertedStyles","styleName","modeName","baseStyles","withScrolling","adjustment","componentRef","selectedElement","selected","lastSelected","axis","lastItem","updateLastIndex","rootPosition","selectedPosition","selectedSize","direct","currentChildIndex","currentChild","currentChildSize","chainFunctions","onlyFunctions","func","innerArgs","onGridFocus","handleNavigation","_c2","num","getWidthByUpCount$1","theme2","upCount","screenW","columnCount","marginX","gutterX","columnWidth","columnGapTotal","defaultTone$f","themeStyles$e","container$f","defaultTone$e","themeStyles$d","container$e","text$7","icon$2","defaultTone$d","themeStyles$c","surfaceDefaultTone","surfaceThemeStyles$1","container$d","content","text$6","Container$c","Content","Text$5","styles$c","Button","Text$7","defaultTone$c","themeStyles$b","strokeWidth","container$c","icon$1","defaultTone$b","themeStyles$a","container$b","defaultTone$a","themeStyles$9","container$a","Container$9","styles$9","Column","onUp","onDown","defaultTone$9","themeStyles$8","container$9","text$5","themeStyles$7","defaultTone$8","container$8","text$4","icon","defaultTone$7","themeStyles$6","container$7","text$3","defaultTone$6","themeStyles$5","container$6","titleText","descriptionText","defaultTone$5","themeStyles$4","container$5","progress","defaultTone$4","themeStyles$3","container$4","Container$3","styles$3","Row","onLeft","onRight","defaultTone$3","themeStyles$2","container$3","text$2","defaultTone$2","themeStyles$1","container$2","text$1","defaultTone$1","themeStyles","container$1","defaultTone","tileThemeStyles","defaultSurfaceTone","surfaceThemeStyles","container","insetBottom","standardBottom","logoContainer","fpsStyle","fpsLabel","fpsValue","setFps","avgFps","setAvgFps","minFps","setMinFps","maxFps","setMaxFps","isLoadedCount","setIsLoadedCount","isLoadingCount","setIsLoadingCount","isFailedCount","setIsFailedCount","count","totalFps","calcFps","fps2","calcPerformanceMetrics","isLoadedCount2","isLoadingCount2","isFailedCount2","setupFPS","FPSCounter","styles$1","import","icons","Icon","sprite","_$mergeProps","NavButton","forwardStates","NavDrawer","backdrop","navigate","onFocus","add","setFocus","onBlur","remove","handleNavigate","page","focusPage","flexItem","showWidgets","onEnter","Gradient","App","Menu","Escape","Backspace","Left","Right","Up","Down","Enter","announcer","enabled","navDrawer","lastFocused","focusNavDrawer","has","setShowWidgets","showOnPaths","currentPath","matchesPartial","some","window","APP","onAnnouncer","onLast","history","back","onMenu","onBackspace","mountX","TopBar","ButtonText","buttonStyles","MaterialButton","MaterialButtonText","Thumbnail","TileRow","local","others","each","API_KEY_V4","API_BASE","tmdbConfig","baseImageUrl","basePosterSize","defaultFetchParams","getImageUrl","posterSize","_get","loadConfig","api","truncateString","maxLength","chunkArray","convertItemsToTiles","cache","leftoverTiles","browseProvider","pageIndex","trending","tiles","chunks","createInfiniteScroll","pages","setPages","setPage","setEnd","contents","blockWidth","ContentBlockStyle","display","flexDirection","HeadlineStyles","typography","display2","Headline","DescriptionStyles","body1","Description","body2","ContentBlock","title","description","minutesToHMM","minutes","hours","remainingMinutes","formatDate","dateString","parts","justYear","getRecommendations","getCredits","cast","getInfo","rt","Browse","columnY","setcolumnY","entityInfo","setEntityInfo","entityProvider","heroContent","setHeroContent","isFirst","provider","delayedBackgrounds","delayedHero","onRowFocus","numPages","entity","itemsContainer","plinko","announce","autofocus","Portal","demos","DemoTile","Container","borderRadius","transition","focus","setColor","rowX","setRowX","moveRow","row","colorTop","colorBottom","onSelectedChanged","justifyContent","demo","TextPage","OverviewContainer","SublineContainer","Title","Overview","Subline","CreatePage","myBox","childRef","insertTest","setInsertTest","emptyTest","setEmptyTest","setTimeout","getChildById","styleChild","someOtherStyle","ChildTest","borderStyles","borderLeft","borderTop","borderRight","borderBottom","childTestPassedStyles","childTestPassedStyles2","hasFocus","ViewportPage","ball","invervalTimer","ballStatus","setBallStatus","styleBall","mount","lineheight","randomIntBetween","Math","floor","random","setInterval","logEvent","slice","console","clearInterval","join","onEvents","ButtonsPage","toggle","RowStyles","Badge","_$use","border","disabled","FlexPage","rowTitle","marginTop","marginBottom","skipFocus","Block","setColumnY","marginLeft","marginRight","FlexSizePage","randSize","alignItems","FlexColumnPage","ColumnStyles","MaterialButtonsPage","manifestUri","initApp","initPlayer","video","player","onErrorEvent","onError","playVideo","closeVideo","Entity","credits","recommendations","backdropAlpha","setBackdropAlpha","backgroundImage","Backdrop","columnRef","backdropRef","onRowFocusAnimate","onEscape","getElementsByTagName","entityActions","onEnterTrailer","RowTitle","People","autosize","peopleBio","biography","NotFound","_$setProp","coreExtensionModuleUrl","Config","animationsEnabled","fontSettings","rendererOptions","FlexColumnSizePage","ButtonsMaterialPage"],"ignoreList":[59,70,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,96,98],"sources":["../../../../../renderer/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js","../../../../../renderer/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js","../../../../../renderer/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js","../../../../../renderer/dist/src/main-api/Inspector.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js","../../../../../renderer/dist/src/core/text-rendering/renderers/TextRenderer.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js","../../../../../renderer/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js","../../../../../renderer/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DefaultShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DynamicShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/SdfShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js","../../../../../renderer/dist/src/core/CoreShaderManager.js","../../../../../renderer/dist/src/core/lib/ContextSpy.js","../../../../../renderer/dist/src/core/lib/textureCompression.js","../../../../../renderer/dist/src/core/textures/ImageTexture.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js","../../../../../renderer/dist/src/core/text-rendering/TrFontManager.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js","../../../../../renderer/dist/src/render-drivers/utils.js","../../../../../renderer/dist/src/main-api/RendererMain.js","../../../../../renderer/dist/src/core/animations/CoreAnimation.js","../../../../../renderer/dist/src/core/animations/CoreAnimationController.js","../../../../../renderer/dist/src/core/lib/Matrix3d.js","../../../../../renderer/dist/src/core/lib/RenderCoords.js","../../../../../renderer/dist/src/core/CoreNode.js","../../../../../renderer/dist/src/render-drivers/main/MainOnlyNode.js","../../../../../renderer/dist/src/core/platform.js","../../../../../renderer/dist/src/core/animations/AnimationManager.js","../../../../../renderer/dist/src/core/lib/ImageWorker.js","../../../../../renderer/dist/src/core/textures/NoiseTexture.js","../../../../../renderer/dist/src/core/CoreTextureManager.js","../../../../../renderer/dist/src/core/TextureMemoryManager.js","../../../../../renderer/dist/src/core/Stage.js","../../../../../renderer/dist/src/core/CoreTextNode.js","../../../../../renderer/dist/src/render-drivers/main/MainOnlyTextNode.js","../../../../../renderer/dist/src/render-drivers/main/MainCoreDriver.js","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/dist/solid.js","../../../../../solid/src/core/lightningInit.ts","../../../../../solid/src/core/node/children.ts","../../../../../solid/src/config.ts","../../../../../solid/src/core/utils.ts","../../../../../solid/src/core/node/states.ts","../../../../../solid/src/core/flex.ts","../../../../../solid/src/core/activeElement.ts","../../../../../solid/src/core/node/index.ts","../../../../../solid/src/components/Text.tsx","../../../../../solid/src/components/View.tsx","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/universal/dist/universal.js","../../../../../solid/src/core/solidUniversal.ts","../../../../../solid/src/core/render.ts","../../../../../solid/src/utils.ts","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/web/dist/web.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/lifecycle.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/utils.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routing.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/components.jsx","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/createRouter.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/data/action.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/data/events.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/HashRouter.js","../../../../node_modules/.pnpm/@solid-primitives+utils@6.2.3_solid-js@1.8.16/node_modules/@solid-primitives/utils/dist/chunk/R5675YMU.js","../../../../node_modules/.pnpm/@solid-primitives+event-listener@2.3.3_solid-js@1.8.16/node_modules/@solid-primitives/event-listener/dist/index.js","../../../../node_modules/.pnpm/@solid-primitives+rootless@1.4.5_solid-js@1.8.16/node_modules/@solid-primitives/rootless/dist/index.js","../../../../node_modules/.pnpm/@solid-primitives+keyboard@1.2.8_solid-js@1.8.16/node_modules/@solid-primitives/keyboard/dist/index.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/utils.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/useFocusManager.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/withPadding.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/speech.js","../../../../node_modules/.pnpm/@solid-primitives+scheduled@1.4.3_solid-js@1.8.16/node_modules/@solid-primitives/scheduled/dist/index.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/announcer.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/index.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/createSpriteMap.js","../../src/state.ts","../../../../node_modules/.pnpm/@lightningjs+l3-ui-theme-base@0.3.1/node_modules/@lightningjs/l3-ui-theme-base/theme.js","../../src/components/Background.tsx","../../../../node_modules/.pnpm/@lightningjs+solid-ui@0.12.1_@babel+core@7.24.4_@lightningjs+renderer@0.8.2_@lightningjs+soli_l6qk66ywnsrdb5zvon2uxgrjiy/node_modules/@lightningjs/solid-ui/dist/index.js","../../src/components/NavDrawer/NavDrawer.styles.ts","../../src/components/Icon.tsx","../../src/components/NavDrawer/NavDrawer.tsx","../../src/pages/App.tsx","../../src/styles.ts","../../src/components/index.tsx","../../src/api/key.ts","../../src/api/index.ts","../../src/api/formatters/ItemFormatter.ts","../../src/api/providers/browse.ts","../../src/components/pagination.ts","../../src/components/ContentBlock.tsx","../../src/api/providers/entity.js","../../src/pages/Browse.tsx","../../src/pages/Portal.tsx","../../src/pages/Text.tsx","../../src/pages/Create.tsx","../../src/pages/Viewport.tsx","../../src/pages/Buttons.tsx","../../src/pages/Flex.tsx","../../src/pages/FlexSize.tsx","../../src/pages/FlexColumnSize.tsx","../../src/pages/FlexColumn.tsx","../../src/pages/ButtonsMaterial.tsx","../../src/video.js","../../src/pages/Entity.tsx","../../src/api/providers/people.js","../../src/pages/People.tsx","../../src/pages/NotFound.tsx","../../AppCoreExtensions.js?importChunkUrl","../../src/index.tsx"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Texture Usage Tracker for Usage Based Texture Garbage Collection\n */\nexport class TextureUsageTracker {\n releaseCallback;\n constructor(releaseCallback) {\n this.releaseCallback = releaseCallback;\n }\n}\n//# sourceMappingURL=TextureUsageTracker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { TextureUsageTracker } from './TextureUsageTracker.js';\n/**\n * Usage-based Texture Garbage Collection Registry\n */\nexport class ManualCountTextureUsageTracker extends TextureUsageTracker {\n textureMap = new Map();\n zeroReferenceTextureSet = new Set();\n options;\n constructor(releaseCallback, options) {\n super(releaseCallback);\n this.options = {\n textureCleanupIntervalMs: options.textureCleanupIntervalMs ?? 10000,\n textureCleanupAgeThreadholdMs: options.textureCleanupAgeThreadholdMs ?? 60000,\n };\n // Periodically check for textures that are no longer referenced by any\n // Nodes and notify RendererMain to release them.\n setInterval(() => {\n const now = Date.now();\n const thresholdMs = this.options.textureCleanupAgeThreadholdMs;\n for (const textureRefInfo of this.zeroReferenceTextureSet) {\n if (now - textureRefInfo.lastUpdate > thresholdMs) {\n this.releaseCallback(textureRefInfo.id);\n this.textureMap.delete(textureRefInfo.id);\n this.zeroReferenceTextureSet.delete(textureRefInfo);\n }\n }\n }, this.options.textureCleanupIntervalMs);\n }\n registerTexture(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n if (!this.textureMap.has(textureId)) {\n const textureRefInfo = {\n id: textureId,\n nodeRefCount: 0,\n lastUpdate: Date.now(),\n };\n this.textureMap.set(textureId, textureRefInfo);\n this.zeroReferenceTextureSet.add(textureRefInfo);\n }\n }\n incrementTextureRefCount(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n let textureRefInfo = this.textureMap.get(textureId);\n if (!textureRefInfo) {\n // Texture has not been registered yet, so register it now.\n // This may happen if the TextureRef was cleaned up from the registry\n // but was still alive in memory and eventually re-used.\n this.registerTexture(texture);\n textureRefInfo = this.textureMap.get(textureId);\n }\n assertTruthy(textureRefInfo, 'Texture must have been registered');\n if (texture.txType === 'SubTexture') {\n // If this is a SubTexture, then increment the reference count of the\n // parent texture as well.\n this.incrementTextureRefCount(texture.props.texture);\n }\n textureRefInfo.nodeRefCount++;\n textureRefInfo.lastUpdate = Date.now();\n if (this.zeroReferenceTextureSet.has(textureRefInfo)) {\n this.zeroReferenceTextureSet.delete(textureRefInfo);\n }\n }\n decrementTextureRefCount(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n const textureRefInfo = this.textureMap.get(textureId);\n assertTruthy(textureRefInfo, 'Texture must have been registered');\n textureRefInfo.nodeRefCount--;\n textureRefInfo.lastUpdate = Date.now();\n if (textureRefInfo.nodeRefCount === 0) {\n this.zeroReferenceTextureSet.add(textureRefInfo);\n }\n if (texture.txType === 'SubTexture') {\n // If this is a SubTexture, then decrement the reference count of the\n // parent texture as well.\n this.decrementTextureRefCount(texture.props.texture);\n }\n }\n}\n//# sourceMappingURL=ManualCountTextureUsageTracker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { TextureUsageTracker } from './TextureUsageTracker.js';\nexport class FinalizationRegistryTextureUsageTracker extends TextureUsageTracker {\n registry;\n constructor(releaseCallback) {\n super(releaseCallback);\n this.registry = new FinalizationRegistry(releaseCallback);\n }\n registerTexture(texture) {\n assertTruthy(texture.options?.id, 'Texture must have an ID to be registered');\n this.registry.register(texture, texture.options?.id);\n }\n incrementTextureRefCount() {\n // No-op for FinalizationRegistry\n }\n decrementTextureRefCount() {\n // No-op for FinalizationRegistry\n }\n}\n//# sourceMappingURL=FinalizationRegistryTextureUsageTracker.js.map","import {} from './RendererMain.js';\nimport { isProductionEnvironment } from '../utils.js';\nconst stylePropertyMap = {\n alpha: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'opacity', value: `${v}` };\n },\n x: (x) => {\n return { prop: 'left', value: `${x}px` };\n },\n y: (y) => {\n return { prop: 'top', value: `${y}px` };\n },\n width: (w) => {\n if (w === 0) {\n return null;\n }\n return { prop: 'width', value: `${w}px` };\n },\n height: (h) => {\n if (h === 0) {\n return null;\n }\n return { prop: 'height', value: `${h}px` };\n },\n zIndex: () => 'zIndex',\n fontFamily: () => 'font-family',\n fontSize: () => 'font-size',\n fontStyle: () => 'font-style',\n fontWeight: () => 'font-weight',\n fontStretch: () => 'font-stretch',\n lineHeight: () => 'line-height',\n letterSpacing: () => 'letter-spacing',\n textAlign: () => 'text-align',\n overflowSuffix: () => 'overflow-suffix',\n maxLines: () => 'max-lines',\n contain: () => 'contain',\n verticalAlign: () => 'vertical-align',\n clipping: (v) => {\n if (v === false) {\n return null;\n }\n return { prop: 'overflow', value: v ? 'hidden' : 'visible' };\n },\n rotation: (v) => {\n if (v === 0) {\n return null;\n }\n return { prop: 'transform', value: `rotate(${v}rad)` };\n },\n scale: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scale(${v})` };\n },\n scaleX: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scaleX(${v})` };\n },\n scaleY: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scaleY(${v})` };\n },\n color: (v) => {\n if (v === 0) {\n return null;\n }\n return { prop: 'color', value: convertColorToRgba(v) };\n },\n};\nconst convertColorToRgba = (color) => {\n const a = (color & 0xff) / 255;\n const b = (color >> 8) & 0xff;\n const g = (color >> 16) & 0xff;\n const r = (color >> 24) & 0xff;\n return `rgba(${r},${g},${b},${a})`;\n};\nconst domPropertyMap = {\n id: 'id',\n};\nconst gradientColorPropertyMap = [\n 'colorTop',\n 'colorBottom',\n 'colorLeft',\n 'colorRight',\n 'colorTl',\n 'colorTr',\n 'colorBl',\n 'colorBr',\n];\nexport class Inspector {\n root = null;\n canvas = null;\n height = 1080;\n width = 1920;\n scaleX = 1;\n scaleY = 1;\n constructor(canvas, settings) {\n if (isProductionEnvironment())\n return;\n if (!settings) {\n throw new Error('settings is required');\n }\n // calc dimensions based on the devicePixelRatio\n this.height = Math.ceil(settings.appHeight ?? 1080 / (settings.deviceLogicalPixelRatio ?? 1));\n this.width = Math.ceil(settings.appWidth ?? 1900 / (settings.deviceLogicalPixelRatio ?? 1));\n this.scaleX = settings.deviceLogicalPixelRatio ?? 1;\n this.scaleY = settings.deviceLogicalPixelRatio ?? 1;\n this.canvas = canvas;\n this.root = document.createElement('div');\n this.setRootPosition();\n document.body.appendChild(this.root);\n //listen for changes on canvas\n const mutationObserver = new MutationObserver(this.setRootPosition.bind(this));\n mutationObserver.observe(canvas, {\n attributes: true,\n childList: false,\n subtree: false,\n });\n // Create a ResizeObserver to watch for changes in the element's size\n const resizeObserver = new ResizeObserver(this.setRootPosition.bind(this));\n resizeObserver.observe(canvas);\n //listen for changes on window\n window.addEventListener('resize', this.setRootPosition.bind(this));\n console.warn('Inspector is enabled, this will impact performance');\n }\n setRootPosition() {\n if (this.root === null || this.canvas === null) {\n return;\n }\n // get the world position of the canvas object, so we can match the inspector to it\n const rect = this.canvas.getBoundingClientRect();\n const top = document.documentElement.scrollTop + rect.top;\n const left = document.documentElement.scrollLeft + rect.left;\n this.root.id = 'root';\n this.root.style.left = `${left}px`;\n this.root.style.top = `${top}px`;\n this.root.style.width = `${this.width}px`;\n this.root.style.height = `${this.height}px`;\n this.root.style.position = 'absolute';\n this.root.style.transformOrigin = '0 0 0';\n this.root.style.transform = `scale(${this.scaleX}, ${this.scaleY})`;\n this.root.style.overflow = 'hidden';\n this.root.style.zIndex = '65534';\n }\n createDiv(node, properties) {\n const div = document.createElement('div');\n div.style.position = 'absolute';\n div.id = node.id.toString();\n // set initial properties\n for (const key in properties) {\n this.updateNodeProperty(div, \n // really typescript? really?\n key, properties[key]);\n }\n return div;\n }\n createNode(driver, properties) {\n const node = driver.createNode(properties);\n const div = this.createDiv(node, properties);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n div.node = node;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n node.div = div;\n return this.createProxy(node, div);\n }\n createTextNode(driver, properties) {\n const node = driver.createTextNode(properties);\n const div = this.createDiv(node, properties);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n div.node = node;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n node.div = div;\n return this.createProxy(node, div);\n }\n createProxy(node, div) {\n return new Proxy(node, {\n set: (target, property, value) => {\n this.updateNodeProperty(div, property, value);\n return Reflect.set(target, property, value);\n },\n get: (target, property, receiver) => {\n if (property === 'destroy') {\n this.destroyNode(target);\n }\n if (property === 'animate') {\n return (props, settings) => {\n const anim = target.animate(props, settings);\n // Trap the animate start function so we can update the inspector accordingly\n return new Proxy(anim, {\n get: (target, property, receiver) => {\n if (property === 'start') {\n this.animateNode(div, node, props, settings);\n }\n return Reflect.get(target, property, receiver);\n },\n });\n };\n }\n return Reflect.get(target, property, receiver);\n },\n });\n }\n destroyNode(node) {\n const div = document.getElementById(node.id.toString());\n div?.remove();\n }\n updateNodeProperty(div, property, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value) {\n if (this.root === null || value === undefined || value === null) {\n return;\n }\n /**\n * Special case for parent property\n */\n if (property === 'parent') {\n const parentId = value.id;\n // only way to detect if the parent is the root node\n // if you are reading this and have a better way, please let me know\n if (parentId === 1) {\n this.root.appendChild(div);\n return;\n }\n const parent = document.getElementById(parentId.toString());\n parent?.appendChild(div);\n return;\n }\n // special case for text\n if (property === 'text') {\n div.innerHTML = String(value);\n // hide text because we can't render SDF fonts\n // it would look weird and obstruct the WebGL rendering\n div.style.visibility = 'hidden';\n return;\n }\n // special case for images\n // we're not setting any CSS properties to avoid images getting loaded twice\n // as the renderer will handle the loading of the image. Setting it to `data-src`\n if (property === 'src' && value) {\n div.setAttribute(`data-src`, String(value));\n return;\n }\n // special case for color gradients (normal colors are handled by the stylePropertyMap)\n // FIXME the renderer seems to return the same number for all colors\n // if (gradientColorPropertyMap.includes(property as string)) {\n // const color = convertColorToRgba(value as number);\n // div.setAttribute(`data-${property}`, color);\n // return;\n // }\n // CSS mappable attribute\n if (stylePropertyMap[property]) {\n const mappedStyleResponse = stylePropertyMap[property]?.(value);\n if (mappedStyleResponse === null) {\n return;\n }\n if (typeof mappedStyleResponse === 'string') {\n div.style.setProperty(mappedStyleResponse, String(value));\n return;\n }\n if (typeof mappedStyleResponse === 'object') {\n div.style.setProperty(mappedStyleResponse.prop, mappedStyleResponse.value);\n }\n return;\n }\n // DOM properties\n if (domPropertyMap[property]) {\n div.setAttribute(String(stylePropertyMap[property]), String(value));\n return;\n }\n // custom data properties\n if (property === 'data') {\n for (const key in value) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n div.setAttribute(`data-${key}`, String(value[key]));\n }\n return;\n }\n }\n // simple animation handler\n animateNode(div, node, props, settings) {\n const { duration = 1000, delay = 0,\n // easing = 'linear',\n // repeat = 0,\n // loop = false,\n // stopMethod = false,\n } = settings;\n const { x, y, width, height, alpha = 1, rotation = 0, scale = 1, color, } = props;\n // ignoring loops and repeats for now, as that might be a bit too much for the inspector\n function animate() {\n setTimeout(() => {\n div.style.top = `${y}px`;\n div.style.left = `${x}px`;\n div.style.width = `${width}px`;\n div.style.height = `${height}px`;\n div.style.opacity = `${alpha}`;\n div.style.rotate = `${rotation}rad`;\n div.style.scale = `${scale}`;\n div.style.color = convertColorToRgba(color);\n }, duration);\n }\n setTimeout(animate, delay);\n }\n}\n//# sourceMappingURL=Inspector.js.map","export class ShaderEffect {\n priority = 1;\n name = '';\n ref;\n target;\n passParameters = '';\n declaredUniforms = '';\n uniformInfo = {};\n static uniforms = {};\n static methods;\n static onShaderMask;\n static onColorize;\n static onEffectMask;\n static getEffectKey(props) {\n return '';\n }\n static getMethodParameters(uniforms, props) {\n const res = [];\n for (const u in uniforms) {\n const uni = uniforms[u];\n let define = '';\n if (uni.size) {\n define = `[${uni.size(props)}]`;\n }\n res.push(`${uni.type} ${u}${define}`);\n }\n return res.join(',');\n }\n constructor(options) {\n const { ref, target, props = {} } = options;\n this.ref = ref;\n this.target = target;\n const uniformInfo = {};\n const passParameters = [];\n let declaredUniforms = '';\n const uniforms = this.constructor.uniforms || {};\n for (const u in uniforms) {\n const unif = uniforms[u];\n const uniType = unif.type;\n //make unique uniform name\n const uniformName = `${ref}_${u}`;\n let define = '';\n if (unif.size) {\n define = `[${unif.size(props)}]`;\n }\n passParameters.push(uniformName);\n declaredUniforms += `uniform ${uniType} ${uniformName}${define};`;\n uniformInfo[u] = { name: uniformName, uniform: uniforms[u].method };\n }\n this.passParameters = passParameters.join(',');\n this.declaredUniforms = declaredUniforms;\n this.uniformInfo = uniformInfo;\n }\n static resolveDefaults(props) {\n return {};\n }\n static makeEffectKey(props) {\n return false;\n }\n}\n//# sourceMappingURL=ShaderEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst trPropSetterDefaults = {\n x: (state, value) => {\n state.props.x = value;\n },\n y: (state, value) => {\n state.props.y = value;\n },\n width: (state, value) => {\n state.props.width = value;\n },\n height: (state, value) => {\n state.props.height = value;\n },\n color: (state, value) => {\n state.props.color = value;\n },\n zIndex: (state, value) => {\n state.props.zIndex = value;\n },\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n },\n text: (state, value) => {\n state.props.text = value;\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n },\n contain: (state, value) => {\n state.props.contain = value;\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n },\n scrollable: (state, value) => {\n state.props.scrollable = value;\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n },\n debug: (state, value) => {\n state.props.debug = value;\n },\n};\nexport class TextRenderer {\n stage;\n set;\n constructor(stage) {\n this.stage = stage;\n const propSetters = {\n ...trPropSetterDefaults,\n ...this.getPropertySetters(),\n };\n // For each prop setter add a wrapper method that checks if the prop is\n // different before calling the setter\n this.set = Object.freeze(Object.fromEntries(Object.entries(propSetters).map(([key, setter]) => {\n return [\n key,\n (state, value) => {\n if (state.props[key] !== value) {\n setter(state, value);\n // Assume any prop change will require a render\n // This is required because otherwise a paused RAF will result\n // in renders when text props are changed.\n this.stage.requestRender();\n }\n },\n ];\n })));\n }\n setStatus(state, status, error) {\n // Don't emit the same status twice\n if (state.status === status) {\n return;\n }\n state.status = status;\n state.emitter.emit(status, error);\n }\n /**\n * Allows the CoreTextNode to communicate changes to the isRenderable state of\n * the itself.\n *\n * @param state\n * @param renderable\n */\n setIsRenderable(state, renderable) {\n state.isRenderable = renderable;\n }\n /**\n * Destroy/Clean up the state object\n *\n * @remarks\n * Opposite of createState(). Frees any event listeners / resources held by\n * the state that may not reliably get garbage collected.\n *\n * @param state\n */\n destroyState(state) {\n const stateEvents = ['loading', 'loaded', 'failed'];\n // Remove the old event listeners from previous state obj there was one\n stateEvents.forEach((eventName) => {\n state.emitter.off(eventName);\n });\n }\n /**\n * Schedule a state update via queueMicrotask\n *\n * @remarks\n * This method is used to schedule a state update via queueMicrotask. This\n * method should be called whenever a state update is needed, and it will\n * ensure that the state is only updated once per microtask.\n * @param state\n * @returns\n */\n scheduleUpdateState(state) {\n if (state.updateScheduled) {\n return;\n }\n state.updateScheduled = true;\n queueMicrotask(() => {\n state.updateScheduled = false;\n this.updateState(state);\n });\n }\n}\n//# sourceMappingURL=TextRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TrFontFace } from './TrFontFace.js';\nexport class WebTrFontFace extends TrFontFace {\n fontFace;\n fontUrl;\n constructor(fontFamily, descriptors, fontUrl) {\n super(fontFamily, descriptors);\n // Filter out parentheses from fontUrl\n const fontUrlWithoutParentheses = fontUrl.replace(/\\(|\\)/g, '');\n // Defaults for descriptors resolved in the super constructor\n const determinedDescriptors = this.descriptors;\n // Convert TrFontFaceDescriptors to CSS FontFaceDescriptors\n const cssDescriptors = {\n style: determinedDescriptors.style,\n weight: typeof determinedDescriptors.weight === 'number'\n ? `${determinedDescriptors.weight}`\n : determinedDescriptors.weight,\n stretch: determinedDescriptors.stretch,\n unicodeRange: determinedDescriptors.unicodeRange,\n variant: determinedDescriptors.variant,\n featureSettings: determinedDescriptors.featureSettings,\n display: determinedDescriptors.display,\n };\n const fontFace = new FontFace(fontFamily, `url(${fontUrlWithoutParentheses})`, cssDescriptors);\n fontFace\n .load()\n .then(() => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.loaded = true;\n this.emit('loaded');\n })\n .catch(console.error);\n this.fontFace = fontFace;\n this.fontUrl = fontUrl;\n }\n}\n//# sourceMappingURL=WebTrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { getRgbaString } from '../../lib/utils.js';\nconst MAX_TEXTURE_DIMENSION = 2048;\n/**\n * Calculate height for the canvas\n *\n * @param textBaseline\n * @param fontSize\n * @param lineHeight\n * @param numLines\n * @param offsetY\n * @returns\n */\nfunction calcHeight(textBaseline, fontSize, lineHeight, numLines, offsetY) {\n const baselineOffset = textBaseline !== 'bottom' ? 0.5 * fontSize : 0;\n return (lineHeight * (numLines - 1) +\n baselineOffset +\n Math.max(lineHeight, fontSize) +\n (offsetY || 0));\n}\nexport class LightningTextTextureRenderer {\n _canvas;\n _context;\n _settings;\n renderInfo;\n constructor(canvas, context) {\n this._canvas = canvas;\n this._context = context;\n this._settings = this.mergeDefaults({});\n }\n set settings(v) {\n this._settings = this.mergeDefaults(v);\n }\n get settings() {\n return this._settings;\n }\n getPrecision() {\n return this._settings.precision;\n }\n setFontProperties() {\n this._context.font = this._getFontSetting();\n this._context.textBaseline = this._settings.textBaseline;\n }\n _getFontSetting() {\n const ff = [this._settings.fontFace];\n const ffs = [];\n for (let i = 0, n = ff.length; i < n; i++) {\n if (ff[i] === 'serif' || ff[i] === 'sans-serif') {\n ffs.push(ff[i]);\n }\n else {\n ffs.push(`\"${ff[i]}\"`);\n }\n }\n return `${this._settings.fontStyle} ${this._settings.fontSize * this.getPrecision()}px ${ffs.join(',')}`;\n }\n _load() {\n if (true && document.fonts) {\n const fontSetting = this._getFontSetting();\n try {\n if (!document.fonts.check(fontSetting, this._settings.text)) {\n // Use a promise that waits for loading.\n return document.fonts\n .load(fontSetting, this._settings.text)\n .catch((err) => {\n // Just load the fallback font.\n console.warn('[Lightning] Font load error', err, fontSetting);\n })\n .then(() => {\n if (!document.fonts.check(fontSetting, this._settings.text)) {\n console.warn('[Lightning] Font not found', fontSetting);\n }\n });\n }\n }\n catch (e) {\n console.warn(\"[Lightning] Can't check font loading for \" + fontSetting);\n }\n }\n }\n calculateRenderInfo() {\n const renderInfo = {};\n const precision = this.getPrecision();\n const paddingLeft = this._settings.paddingLeft * precision;\n const paddingRight = this._settings.paddingRight * precision;\n const fontSize = this._settings.fontSize * precision;\n let offsetY = this._settings.offsetY === null\n ? null\n : this._settings.offsetY * precision;\n let lineHeight = (this._settings.lineHeight || fontSize) * precision;\n const w = this._settings.w * precision;\n const h = this._settings.h * precision;\n let wordWrapWidth = this._settings.wordWrapWidth * precision;\n const cutSx = this._settings.cutSx * precision;\n const cutEx = this._settings.cutEx * precision;\n const cutSy = this._settings.cutSy * precision;\n const cutEy = this._settings.cutEy * precision;\n const letterSpacing = (this._settings.letterSpacing || 0) * precision;\n const textIndent = this._settings.textIndent * precision;\n // Set font properties.\n this.setFontProperties();\n // Total width.\n let width = w || 2048 / this.getPrecision();\n // Inner width.\n let innerWidth = width - paddingLeft;\n if (innerWidth < 10) {\n width += 10 - innerWidth;\n innerWidth = 10;\n }\n if (!wordWrapWidth) {\n wordWrapWidth = innerWidth;\n }\n // Text overflow\n if (this._settings.textOverflow && !this._settings.wordWrap) {\n let suffix;\n switch (this._settings.textOverflow) {\n case 'clip':\n suffix = '';\n break;\n case 'ellipsis':\n suffix = this._settings.overflowSuffix;\n break;\n default:\n suffix = this._settings.textOverflow;\n }\n this._settings.text = this.wrapWord(this._settings.text, wordWrapWidth - textIndent, suffix);\n }\n // word wrap\n // preserve original text\n let linesInfo;\n if (this._settings.wordWrap) {\n linesInfo = this.wrapText(this._settings.text, wordWrapWidth, letterSpacing, textIndent);\n }\n else {\n linesInfo = { l: this._settings.text.split(/(?:\\r\\n|\\r|\\n)/), n: [] };\n const n = linesInfo.l.length;\n for (let i = 0; i < n - 1; i++) {\n linesInfo.n.push(i);\n }\n }\n let lines = linesInfo.l;\n if (this._settings.maxLines && lines.length > this._settings.maxLines) {\n const usedLines = lines.slice(0, this._settings.maxLines);\n let otherLines = null;\n if (this._settings.overflowSuffix) {\n // Wrap again with max lines suffix enabled.\n const w = this._settings.overflowSuffix\n ? this.measureText(this._settings.overflowSuffix)\n : 0;\n const al = this.wrapText(usedLines[usedLines.length - 1], wordWrapWidth - w, letterSpacing, textIndent);\n usedLines[usedLines.length - 1] = `${al.l[0]}${this._settings.overflowSuffix}`;\n otherLines = [al.l.length > 1 ? al.l[1] : ''];\n }\n else {\n otherLines = [''];\n }\n // Re-assemble the remaining text.\n let i;\n const n = lines.length;\n let j = 0;\n const m = linesInfo.n.length;\n for (i = this._settings.maxLines; i < n; i++) {\n otherLines[j] += `${otherLines[j] ? ' ' : ''}${lines[i]}`;\n if (i + 1 < m && linesInfo.n[i + 1]) {\n j++;\n }\n }\n renderInfo.remainingText = otherLines.join('\\n');\n renderInfo.moreTextLines = true;\n lines = usedLines;\n }\n else {\n renderInfo.moreTextLines = false;\n renderInfo.remainingText = '';\n }\n // calculate text width\n let maxLineWidth = 0;\n const lineWidths = [];\n for (let i = 0; i < lines.length; i++) {\n const lineWidth = this.measureText(lines[i], letterSpacing) + (i === 0 ? textIndent : 0);\n lineWidths.push(lineWidth);\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n renderInfo.lineWidths = lineWidths;\n if (!w) {\n // Auto-set width to max text length.\n width = maxLineWidth + paddingLeft + paddingRight;\n innerWidth = maxLineWidth;\n }\n // calculate text height\n lineHeight = lineHeight || fontSize;\n let height;\n if (h) {\n height = h;\n }\n else {\n height = calcHeight(this._settings.textBaseline, fontSize, lineHeight, lines.length, offsetY);\n }\n if (offsetY === null) {\n offsetY = fontSize;\n }\n renderInfo.w = width;\n renderInfo.h = height;\n renderInfo.lines = lines;\n renderInfo.precision = precision;\n if (!width) {\n // To prevent canvas errors.\n width = 1;\n }\n if (!height) {\n // To prevent canvas errors.\n height = 1;\n }\n if (cutSx || cutEx) {\n width = Math.min(width, cutEx - cutSx);\n }\n if (cutSy || cutEy) {\n height = Math.min(height, cutEy - cutSy);\n }\n renderInfo.width = width;\n renderInfo.innerWidth = innerWidth;\n renderInfo.height = height;\n renderInfo.fontSize = fontSize;\n renderInfo.cutSx = cutSx;\n renderInfo.cutSy = cutSy;\n renderInfo.cutEx = cutEx;\n renderInfo.cutEy = cutEy;\n renderInfo.lineHeight = lineHeight;\n renderInfo.lineWidths = lineWidths;\n renderInfo.offsetY = offsetY;\n renderInfo.paddingLeft = paddingLeft;\n renderInfo.paddingRight = paddingRight;\n renderInfo.letterSpacing = letterSpacing;\n renderInfo.textIndent = textIndent;\n return renderInfo;\n }\n draw(renderInfo, linesOverride) {\n const precision = this.getPrecision();\n // Allow lines to be overriden for partial rendering.\n const lines = linesOverride?.lines || renderInfo.lines;\n const lineWidths = linesOverride?.lineWidths || renderInfo.lineWidths;\n const height = linesOverride\n ? calcHeight(this._settings.textBaseline, renderInfo.fontSize, renderInfo.lineHeight, linesOverride.lines.length, this._settings.offsetY === null\n ? null\n : this._settings.offsetY * precision)\n : renderInfo.height;\n // Add extra margin to prevent issue with clipped text when scaling.\n this._canvas.width = Math.min(Math.ceil(renderInfo.width + this._settings.textRenderIssueMargin), MAX_TEXTURE_DIMENSION);\n this._canvas.height = Math.min(Math.ceil(height), MAX_TEXTURE_DIMENSION);\n // Canvas context has been reset.\n this.setFontProperties();\n if (renderInfo.fontSize >= 128) {\n // WpeWebKit bug: must force compositing because cairo-traps-compositor will not work with text first.\n this._context.globalAlpha = 0.01;\n this._context.fillRect(0, 0, 0.01, 0.01);\n this._context.globalAlpha = 1.0;\n }\n if (renderInfo.cutSx || renderInfo.cutSy) {\n this._context.translate(-renderInfo.cutSx, -renderInfo.cutSy);\n }\n let linePositionX;\n let linePositionY;\n const drawLines = [];\n // Draw lines line by line.\n for (let i = 0, n = lines.length; i < n; i++) {\n linePositionX = i === 0 ? renderInfo.textIndent : 0;\n // By default, text is aligned to top\n linePositionY = i * renderInfo.lineHeight + renderInfo.offsetY;\n if (this._settings.verticalAlign == 'middle') {\n linePositionY += (renderInfo.lineHeight - renderInfo.fontSize) / 2;\n }\n else if (this._settings.verticalAlign == 'bottom') {\n linePositionY += renderInfo.lineHeight - renderInfo.fontSize;\n }\n if (this._settings.textAlign === 'right') {\n linePositionX += renderInfo.innerWidth - lineWidths[i];\n }\n else if (this._settings.textAlign === 'center') {\n linePositionX += (renderInfo.innerWidth - lineWidths[i]) / 2;\n }\n linePositionX += renderInfo.paddingLeft;\n drawLines.push({\n text: lines[i],\n x: linePositionX,\n y: linePositionY,\n w: lineWidths[i],\n });\n }\n // Highlight.\n if (this._settings.highlight) {\n const color = this._settings.highlightColor;\n const hlHeight = this._settings.highlightHeight * precision || renderInfo.fontSize * 1.5;\n const offset = this._settings.highlightOffset * precision;\n const hlPaddingLeft = this._settings.highlightPaddingLeft !== null\n ? this._settings.highlightPaddingLeft * precision\n : renderInfo.paddingLeft;\n const hlPaddingRight = this._settings.highlightPaddingRight !== null\n ? this._settings.highlightPaddingRight * precision\n : renderInfo.paddingRight;\n this._context.fillStyle = getRgbaString(color);\n for (let i = 0; i < drawLines.length; i++) {\n const drawLine = drawLines[i];\n this._context.fillRect(drawLine.x - hlPaddingLeft, drawLine.y - renderInfo.offsetY + offset, drawLine.w + hlPaddingRight + hlPaddingLeft, hlHeight);\n }\n }\n // Text shadow.\n let prevShadowSettings = null;\n if (this._settings.shadow) {\n prevShadowSettings = [\n this._context.shadowColor,\n this._context.shadowOffsetX,\n this._context.shadowOffsetY,\n this._context.shadowBlur,\n ];\n this._context.shadowColor = getRgbaString(this._settings.shadowColor);\n this._context.shadowOffsetX = this._settings.shadowOffsetX * precision;\n this._context.shadowOffsetY = this._settings.shadowOffsetY * precision;\n this._context.shadowBlur = this._settings.shadowBlur * precision;\n }\n this._context.fillStyle = getRgbaString(this._settings.textColor);\n for (let i = 0, n = drawLines.length; i < n; i++) {\n const drawLine = drawLines[i];\n if (renderInfo.letterSpacing === 0) {\n this._context.fillText(drawLine.text, drawLine.x, drawLine.y);\n }\n else {\n const textSplit = drawLine.text.split('');\n let x = drawLine.x;\n for (let i = 0, j = textSplit.length; i < j; i++) {\n this._context.fillText(textSplit[i], x, drawLine.y);\n x += this.measureText(textSplit[i], renderInfo.letterSpacing);\n }\n }\n }\n if (prevShadowSettings) {\n this._context.shadowColor = prevShadowSettings[0];\n this._context.shadowOffsetX = prevShadowSettings[1];\n this._context.shadowOffsetY = prevShadowSettings[2];\n this._context.shadowBlur = prevShadowSettings[3];\n }\n if (renderInfo.cutSx || renderInfo.cutSy) {\n this._context.translate(renderInfo.cutSx, renderInfo.cutSy);\n }\n this.renderInfo = renderInfo;\n }\n wrapWord(word, wordWrapWidth, suffix) {\n const suffixWidth = this._context.measureText(suffix).width;\n const wordLen = word.length;\n const wordWidth = this._context.measureText(word).width;\n /* If word fits wrapWidth, do nothing */\n if (wordWidth <= wordWrapWidth) {\n return word;\n }\n /* Make initial guess for text cuttoff */\n let cutoffIndex = Math.floor((wordWrapWidth * wordLen) / wordWidth);\n let truncWordWidth = this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n /* In case guess was overestimated, shrink it letter by letter. */\n if (truncWordWidth > wordWrapWidth) {\n while (cutoffIndex > 0) {\n truncWordWidth =\n this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n if (truncWordWidth > wordWrapWidth) {\n cutoffIndex -= 1;\n }\n else {\n break;\n }\n }\n /* In case guess was underestimated, extend it letter by letter. */\n }\n else {\n while (cutoffIndex < wordLen) {\n truncWordWidth =\n this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n if (truncWordWidth < wordWrapWidth) {\n cutoffIndex += 1;\n }\n else {\n // Finally, when bound is crossed, retract last letter.\n cutoffIndex -= 1;\n break;\n }\n }\n }\n /* If wrapWidth is too short to even contain suffix alone, return empty string */\n return (word.substring(0, cutoffIndex) +\n (wordWrapWidth >= suffixWidth ? suffix : ''));\n }\n /**\n * Applies newlines to a string to have it optimally fit into the horizontal\n * bounds set by the Text object's wordWrapWidth property.\n */\n wrapText(text, wordWrapWidth, letterSpacing, indent = 0) {\n // Greedy wrapping algorithm that will wrap words as the line grows longer.\n // than its horizontal bounds.\n const lines = text.split(/\\r?\\n/g);\n let allLines = [];\n const realNewlines = [];\n for (let i = 0; i < lines.length; i++) {\n const resultLines = [];\n let result = '';\n let spaceLeft = wordWrapWidth - indent;\n const words = lines[i].split(' ');\n for (let j = 0; j < words.length; j++) {\n const wordWidth = this.measureText(words[j], letterSpacing);\n const wordWidthWithSpace = wordWidth + this.measureText(' ', letterSpacing);\n if (j === 0 || wordWidthWithSpace > spaceLeft) {\n // Skip printing the newline if it's the first word of the line that is.\n // greater than the word wrap width.\n if (j > 0) {\n resultLines.push(result);\n result = '';\n }\n result += words[j];\n spaceLeft = wordWrapWidth - wordWidth - (j === 0 ? indent : 0);\n }\n else {\n spaceLeft -= wordWidthWithSpace;\n result += ` ${words[j]}`;\n }\n }\n resultLines.push(result);\n result = '';\n allLines = allLines.concat(resultLines);\n if (i < lines.length - 1) {\n realNewlines.push(allLines.length);\n }\n }\n return { l: allLines, n: realNewlines };\n }\n measureText(word, space = 0) {\n if (!space) {\n return this._context.measureText(word).width;\n }\n return word.split('').reduce((acc, char) => {\n return acc + this._context.measureText(char).width + space;\n }, 0);\n }\n mergeDefaults(settings) {\n return {\n text: '',\n w: 0,\n h: 0,\n fontStyle: 'normal',\n fontSize: 40,\n fontFace: null,\n wordWrap: true,\n wordWrapWidth: 0,\n wordBreak: false,\n textOverflow: '',\n lineHeight: null,\n textBaseline: 'alphabetic',\n textAlign: 'left',\n verticalAlign: 'top',\n offsetY: null,\n maxLines: 0,\n overflowSuffix: '...',\n textColor: [1.0, 1.0, 1.0, 1.0],\n paddingLeft: 0,\n paddingRight: 0,\n shadow: false,\n shadowColor: [0.0, 0.0, 0.0, 1.0],\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowBlur: 5,\n highlight: false,\n highlightHeight: 0,\n highlightColor: [0.0, 0.0, 0.0, 1.0],\n highlightOffset: 0,\n highlightPaddingLeft: 0,\n highlightPaddingRight: 0,\n letterSpacing: 0,\n textIndent: 0,\n cutSx: 0,\n cutEx: 0,\n cutSy: 0,\n cutEy: 0,\n advancedRenderer: false,\n fontBaselineRatio: 0,\n precision: 1,\n textRenderIssueMargin: 0,\n ...settings,\n };\n }\n}\n//# sourceMappingURL=LightningTextTextureRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../../common/EventEmitter.js';\nimport { assertTruthy, mergeColorAlphaPremultiplied } from '../../../utils.js';\nimport { intersectRect, intersectBound, getNormalizedRgbaComponents, getNormalizedAlphaComponent, createBound, } from '../../lib/utils.js';\nimport { WebTrFontFace } from '../font-face-types/WebTrFontFace.js';\nimport { LightningTextTextureRenderer, } from './LightningTextTextureRenderer.js';\nimport { TextRenderer, } from './TextRenderer.js';\nconst resolvedGlobal = typeof self === 'undefined' ? globalThis : self;\n/**\n * Global font set regardless of if run in the main thread or a web worker\n */\nconst globalFontSet = (resolvedGlobal.document?.fonts ||\n resolvedGlobal.fonts);\nfunction getFontCssString(props) {\n const { fontFamily, fontStyle, fontWeight, fontStretch, fontSize } = props;\n return [fontStyle, fontWeight, fontStretch, `${fontSize}px`, fontFamily].join(' ');\n}\n/**\n * Ephemeral bounds object used for intersection calculations\n *\n * @remarks\n * Used to avoid creating a new object every time we need to intersect\n * element bounds.\n */\nconst tmpElementBounds = createBound(0, 0, 0, 0);\nexport class CanvasTextRenderer extends TextRenderer {\n canvas;\n context;\n rendererBounds;\n constructor(stage) {\n super(stage);\n if (typeof OffscreenCanvas !== 'undefined') {\n this.canvas = new OffscreenCanvas(0, 0);\n }\n else {\n this.canvas = document.createElement('canvas');\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n let context = this.canvas.getContext('2d');\n if (!context) {\n // A browser may appear to support OffscreenCanvas but not actually support the Canvas '2d' context\n // Here we try getting the context again after falling back to an HTMLCanvasElement.\n // See: https://github.com/lightning-js/renderer/issues/26#issuecomment-1750438486\n this.canvas = document.createElement('canvas');\n context = this.canvas.getContext('2d');\n }\n assertTruthy(context);\n this.context = context;\n this.rendererBounds = {\n x1: 0,\n y1: 0,\n x2: this.stage.options.appWidth,\n y2: this.stage.options.appHeight,\n };\n }\n //#region Overrides\n getPropertySetters() {\n return {\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n text: (state, value) => {\n state.props.text = value;\n this.invalidateLayoutCache(state);\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n this.invalidateLayoutCache(state);\n },\n color: (state, value) => {\n state.props.color = value;\n this.invalidateLayoutCache(state);\n },\n x: (state, value) => {\n state.props.x = value;\n this.invalidateVisibleWindowCache(state);\n },\n y: (state, value) => {\n state.props.y = value;\n this.invalidateVisibleWindowCache(state);\n },\n contain: (state, value) => {\n state.props.contain = value;\n this.invalidateLayoutCache(state);\n },\n width: (state, value) => {\n state.props.width = value;\n // Only invalidate layout cache if we're containing in the horizontal direction\n if (state.props.contain !== 'none') {\n this.invalidateLayoutCache(state);\n }\n },\n height: (state, value) => {\n state.props.height = value;\n // Only invalidate layout cache if we're containing in the vertical direction\n if (state.props.contain === 'both') {\n this.invalidateLayoutCache(state);\n }\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n this.invalidateLayoutCache(state);\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n this.invalidateLayoutCache(state);\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n this.invalidateLayoutCache(state);\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n this.invalidateLayoutCache(state);\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n this.invalidateLayoutCache(state);\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n this.invalidateLayoutCache(state);\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n this.invalidateLayoutCache(state);\n },\n // debug: (state, value) => {\n // state.props.debug = value;\n // },\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n canRenderFont(props) {\n // The canvas renderer can render any font because it automatically\n // falls back to system fonts. The CanvasTextRenderer should be\n // checked last if other renderers are preferred.\n return true;\n }\n isFontFaceSupported(fontFace) {\n return fontFace instanceof WebTrFontFace;\n }\n addFontFace(fontFace) {\n // Make sure the font face is an Canvas font face (it should have already passed\n // the `isFontFaceSupported` check)\n assertTruthy(fontFace instanceof WebTrFontFace);\n // We simply add the font face to the document\n // @ts-expect-error `add()` method should be available from a FontFaceSet\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n globalFontSet.add(fontFace.fontFace);\n }\n createState(props) {\n return {\n props,\n status: 'initialState',\n updateScheduled: false,\n emitter: new EventEmitter(),\n canvasPages: undefined,\n lightning2TextRenderer: new LightningTextTextureRenderer(this.canvas, this.context),\n renderWindow: undefined,\n visibleWindow: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n valid: false,\n },\n renderInfo: undefined,\n forceFullLayoutCalc: false,\n textW: 0,\n textH: 0,\n fontInfo: undefined,\n fontFaceLoadedHandler: undefined,\n isRenderable: false,\n debugData: {\n updateCount: 0,\n layoutCount: 0,\n drawCount: 0,\n lastLayoutNumCharacters: 0,\n layoutSum: 0,\n drawSum: 0,\n bufferSize: 0,\n },\n };\n }\n updateState(state) {\n // On the first update call we need to set the status to loading\n if (state.status === 'initialState') {\n this.setStatus(state, 'loading');\n }\n // If fontInfo is invalid, we need to establish it\n if (!state.fontInfo) {\n const cssString = getFontCssString(state.props);\n state.fontInfo = {\n cssString: cssString,\n // TODO: For efficiency we would use this here but it's not reliable on WPE -> document.fonts.check(cssString),\n loaded: false,\n };\n // If font is not loaded, set up a handler to update the font info when the font loads\n if (!state.fontInfo.loaded) {\n globalFontSet\n .load(cssString)\n .then(this.onFontLoaded.bind(this, state, cssString))\n .catch(this.onFontLoadError.bind(this, state, cssString));\n return;\n }\n }\n // If we're waiting for a font face to load, don't render anything\n if (!state.fontInfo.loaded) {\n return;\n }\n if (!state.renderInfo) {\n const maxLines = state.props.maxLines;\n const containedMaxLines = state.props.contain === 'both'\n ? Math.floor((state.props.height - state.props.offsetY) /\n state.props.lineHeight)\n : 0;\n const calcMaxLines = containedMaxLines > 0 && maxLines > 0\n ? Math.min(containedMaxLines, maxLines)\n : Math.max(containedMaxLines, maxLines);\n state.lightning2TextRenderer.settings = {\n text: state.props.text,\n textAlign: state.props.textAlign,\n fontFace: state.props.fontFamily,\n fontSize: state.props.fontSize,\n fontStyle: [\n state.props.fontStretch,\n state.props.fontStyle,\n state.props.fontWeight,\n ].join(' '),\n textColor: getNormalizedRgbaComponents(state.props.color),\n offsetY: state.props.fontSize + state.props.offsetY,\n wordWrap: state.props.contain !== 'none',\n wordWrapWidth: state.props.contain === 'none' ? undefined : state.props.width,\n letterSpacing: state.props.letterSpacing,\n lineHeight: state.props.lineHeight,\n maxLines: calcMaxLines,\n textBaseline: state.props.textBaseline,\n verticalAlign: state.props.verticalAlign,\n overflowSuffix: state.props.overflowSuffix,\n };\n // const renderInfoCalculateTime = performance.now();\n state.renderInfo = state.lightning2TextRenderer.calculateRenderInfo();\n // console.log(\n // 'Render info calculated in',\n // performance.now() - renderInfoCalculateTime,\n // 'ms',\n // );\n state.textH = state.renderInfo.lineHeight * state.renderInfo.lines.length;\n state.textW = state.renderInfo.width;\n // Invalidate renderWindow because the renderInfo changed\n state.renderWindow = undefined;\n }\n const { x, y, width, height, scrollY, contain } = state.props;\n const { visibleWindow } = state;\n let { renderWindow, canvasPages } = state;\n if (!visibleWindow.valid) {\n // Figure out whats actually in the bounds of the renderer/canvas (visibleWindow)\n const elementBounds = createBound(x, y, contain !== 'none' ? x + width : Infinity, contain === 'both' ? y + height : Infinity, tmpElementBounds);\n /**\n * Area that is visible on the screen.\n */\n intersectBound(this.rendererBounds, elementBounds, visibleWindow);\n visibleWindow.valid = true;\n }\n const visibleWindowHeight = visibleWindow.y2 - visibleWindow.y1;\n const maxLinesPerCanvasPage = Math.ceil(visibleWindowHeight / state.renderInfo.lineHeight);\n if (visibleWindowHeight === 0) {\n // Nothing to render. Clear any canvasPages and existing renderWindow\n // Return early.\n canvasPages = undefined;\n renderWindow = undefined;\n this.setStatus(state, 'loaded');\n return;\n }\n else if (renderWindow && canvasPages) {\n // Return early if we're still viewing inside the established render window\n // No need to re-render what we've already rendered\n const renderWindowScreenX1 = x + renderWindow.x1;\n const renderWindowScreenY1 = y - scrollY + renderWindow.y1;\n const renderWindowScreenX2 = x + renderWindow.x2;\n const renderWindowScreenY2 = y - scrollY + renderWindow.y2;\n if (renderWindowScreenX1 <= visibleWindow.x1 &&\n renderWindowScreenX2 >= visibleWindow.x2 &&\n renderWindowScreenY1 <= visibleWindow.y1 &&\n renderWindowScreenY2 >= visibleWindow.y2) {\n this.setStatus(state, 'loaded');\n return;\n }\n if (renderWindowScreenY2 < visibleWindow.y2) {\n // We've scrolled up, so we need to render the next page\n renderWindow.y1 += maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n renderWindow.y2 += maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n canvasPages.push(canvasPages.shift());\n canvasPages[2].lineNumStart =\n canvasPages[1].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[2].lineNumEnd =\n canvasPages[2].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[2].valid = false;\n }\n else if (renderWindowScreenY1 > visibleWindow.y1) {\n // We've scrolled down, so we need to render the previous page\n renderWindow.y1 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n renderWindow.y2 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n canvasPages.unshift(canvasPages.pop());\n canvasPages[0].lineNumStart =\n canvasPages[1].lineNumStart - maxLinesPerCanvasPage;\n canvasPages[0].lineNumEnd =\n canvasPages[0].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[0].valid = false;\n }\n }\n else {\n const pageHeight = state.renderInfo.lineHeight * maxLinesPerCanvasPage;\n const page1Block = Math.ceil(scrollY / pageHeight);\n const page1LineStart = page1Block * maxLinesPerCanvasPage;\n const page0LineStart = page1LineStart - maxLinesPerCanvasPage;\n const page2LineStart = page1LineStart + maxLinesPerCanvasPage;\n // We haven't rendered anything yet, so we need to render the first page\n // If canvasPages already exist, let's re-use the textures\n canvasPages = [\n {\n texture: canvasPages?.[0].texture,\n lineNumStart: page0LineStart,\n lineNumEnd: page0LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n {\n texture: canvasPages?.[1].texture,\n lineNumStart: page1LineStart,\n lineNumEnd: page1LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n {\n texture: canvasPages?.[2].texture,\n lineNumStart: page2LineStart,\n lineNumEnd: page2LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n ];\n state.canvasPages = canvasPages;\n const scrollYNearestPage = page1Block * pageHeight;\n renderWindow = {\n x1: 0,\n y1: scrollYNearestPage - pageHeight,\n x2: width,\n y2: scrollYNearestPage + pageHeight * 2,\n };\n }\n state.renderWindow = renderWindow;\n const pageDrawTime = performance.now();\n for (const pageInfo of canvasPages) {\n if (pageInfo.valid)\n continue;\n if (pageInfo.lineNumStart < 0) {\n pageInfo.texture?.setRenderableOwner(state, false);\n pageInfo.texture = this.stage.txManager.loadTexture('ImageTexture', {\n src: '',\n });\n pageInfo.texture.setRenderableOwner(state, state.isRenderable);\n pageInfo.valid = true;\n continue;\n }\n state.lightning2TextRenderer.draw(state.renderInfo, {\n lines: state.renderInfo.lines.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd),\n lineWidths: state.renderInfo.lineWidths.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd),\n });\n if (!(this.canvas.width === 0 || this.canvas.height === 0)) {\n pageInfo.texture?.setRenderableOwner(state, false);\n pageInfo.texture = this.stage.txManager.loadTexture('ImageTexture', {\n src: this.context.getImageData(0, 0, this.canvas.width, this.canvas.height),\n }, {\n preload: true,\n });\n pageInfo.texture.setRenderableOwner(state, state.isRenderable);\n }\n pageInfo.valid = true;\n }\n // console.log('pageDrawTime', performance.now() - pageDrawTime, 'ms');\n // Report final status\n this.setStatus(state, 'loaded');\n }\n renderQuads(state, transform, clippingRect, alpha) {\n const { stage } = this;\n const { canvasPages, textW = 0, textH = 0, renderWindow } = state;\n if (!canvasPages || !renderWindow)\n return;\n const { x, y, scrollY, contain, width, height /*, debug*/ } = state.props;\n const elementRect = {\n x: x,\n y: y,\n width: contain !== 'none' ? width : textW,\n height: contain === 'both' ? height : textH,\n };\n const visibleRect = intersectRect({\n x: 0,\n y: 0,\n width: stage.options.appWidth,\n height: stage.options.appHeight,\n }, elementRect);\n // if (!debug.disableScissor) {\n // renderer.enableScissor(\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n assertTruthy(canvasPages, 'canvasPages is not defined');\n assertTruthy(renderWindow, 'renderWindow is not defined');\n const renderWindowHeight = renderWindow.y2 - renderWindow.y1;\n const pageSize = renderWindowHeight / 3.0;\n const { zIndex, color } = state.props;\n // Color alpha of text is not properly rendered to the Canvas texture, so we\n // need to apply it here.\n const combinedAlpha = alpha * getNormalizedAlphaComponent(color);\n const quadColor = mergeColorAlphaPremultiplied(0xffffffff, combinedAlpha);\n if (canvasPages[0].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[0].texture?.dimensions?.width || 0,\n height: canvasPages[0].texture?.dimensions?.height || 0,\n texture: canvasPages[0].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n if (canvasPages[1].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[1].texture?.dimensions?.width || 0,\n height: canvasPages[1].texture?.dimensions?.height || 0,\n texture: canvasPages[1].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1 + pageSize,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n if (canvasPages[2].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[2].texture?.dimensions?.width || 0,\n height: canvasPages[2].texture?.dimensions?.height || 0,\n texture: canvasPages[2].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1 + pageSize + pageSize,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n // renderer.disableScissor();\n // if (debug.showElementRect) {\n // this.renderer.drawBorder(\n // Colors.Blue,\n // elementRect.x,\n // elementRect.y,\n // elementRect.w,\n // elementRect.h,\n // );\n // }\n // if (debug.showVisibleRect) {\n // this.renderer.drawBorder(\n // Colors.Green,\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // if (debug.showRenderWindow && renderWindow) {\n // this.renderer.drawBorder(\n // Colors.Red,\n // x + renderWindow.x1,\n // y + renderWindow.y1 - scrollY,\n // x + renderWindow.x2 - (x + renderWindow.x1),\n // y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY),\n // );\n // }\n }\n setIsRenderable(state, renderable) {\n super.setIsRenderable(state, renderable);\n // Set state object owner from any canvas page textures\n state.canvasPages?.forEach((pageInfo) => {\n pageInfo.texture?.setRenderableOwner(state, renderable);\n });\n }\n destroyState(state) {\n // Remove state object owner from any canvas page textures\n state.canvasPages?.forEach((pageInfo) => {\n pageInfo.texture?.setRenderableOwner(state, false);\n });\n }\n //#endregion Overrides\n /**\n * Invalidate the visible window stored in the state. This will cause a new\n * visible window to be calculated on the next update.\n *\n * @param state\n */\n invalidateVisibleWindowCache(state) {\n state.visibleWindow.valid = false;\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n /**\n * Invalidate the layout cache stored in the state. This will cause the text\n * to be re-layed out on the next update.\n *\n * @remarks\n * This also invalidates the visible window cache.\n *\n * @param state\n */\n invalidateLayoutCache(state) {\n state.renderInfo = undefined;\n state.visibleWindow.valid = false;\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n onFontLoaded(state, cssString) {\n if (cssString !== state.fontInfo?.cssString || !state.fontInfo) {\n return;\n }\n state.fontInfo.loaded = true;\n this.scheduleUpdateState(state);\n }\n onFontLoadError(state, cssString, error) {\n if (cssString !== state.fontInfo?.cssString || !state.fontInfo) {\n return;\n }\n // Font didn't actually load, but we'll log the error and mark it as loaded\n // because the browser can still render with a fallback font.\n state.fontInfo.loaded = true;\n console.error(`CanvasTextRenderer: Error loading font '${state.fontInfo.cssString}'`, error);\n this.scheduleUpdateState(state);\n }\n}\n//# sourceMappingURL=CanvasTextRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\nexport class DefaultShader extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2fv' },\n ],\n });\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio;\n vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);\n\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);\n gl_Position.y = -sign(screenSpace.y) * gl_Position.y;\n }\n `,\n fragment: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate);\n gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoordinate);\n }\n `,\n };\n}\n//# sourceMappingURL=DefaultShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\n// import type { Texture } from '../textures/Texture';\nexport class DefaultShaderBatched extends WebGlCoreShader {\n supportsIndexedTextures = true;\n constructor(renderer) {\n super({\n renderer,\n attributes: [\n 'a_position',\n 'a_textureCoordinate',\n 'a_color',\n 'a_textureIndex',\n ],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_textures[0]', uniform: 'uniform1iv' },\n ],\n });\n }\n bindTextures(texture) {\n const { renderer, glw } = this;\n if (texture.length > renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS) {\n throw new Error(`DefaultShaderBatched: Cannot bind more than ${renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS} textures`);\n }\n texture.forEach((t, i) => {\n glw.activeTexture(i);\n glw.bindTexture(t.ctxTexture);\n });\n const samplers = Array.from(Array(texture.length).keys());\n this.setUniform('u_textures[0]', samplers);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `,\n fragment: (textureUnits) => `\n #define txUnits ${textureUnits}\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_image;\n uniform sampler2D u_textures[txUnits];\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n vec4 sampleFromTexture(sampler2D textures[${textureUnits}], int idx, vec2 uv) {\n ${Array.from(Array(textureUnits).keys())\n .map((idx) => `\n ${idx !== 0 ? 'else ' : ''}if (idx == ${idx}) {\n return texture2D(textures[${idx}], uv);\n }\n `)\n .join('')}\n return texture2D(textures[0], uv);\n }\n\n void main(){\n gl_FragColor = vec4(v_color) * sampleFromTexture(u_textures, int(v_textureIndex), v_textureCoordinate);\n }\n `,\n };\n}\n//# sourceMappingURL=DefaultShaderBatched.js.map","import { WebGlCoreShader, } from '../WebGlCoreShader.js';\nimport { ShaderEffect } from './effects/ShaderEffect.js';\nimport memize from 'memize';\nconst effectCache = new Map();\nconst getResolvedEffect = (effects, effectContructors) => {\n const key = JSON.stringify(effects);\n if (effectCache.has(key)) {\n return effectCache.get(key);\n }\n const value = (effects ?? []).map((effect) => ({\n type: effect.type,\n props: effectContructors[effect.type].resolveDefaults((effect.props || {})),\n }));\n effectCache.set(key, value);\n return value;\n};\nexport class DynamicShader extends WebGlCoreShader {\n effects = [];\n constructor(renderer, props, effectContructors) {\n const shader = DynamicShader.createShader(props, effectContructors);\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2fv' },\n { name: 'u_dimensions', uniform: 'uniform2fv' },\n { name: 'u_alpha', uniform: 'uniform1f' },\n ...shader.uniforms,\n ],\n shaderSources: {\n vertex: shader.vertex,\n fragment: shader.fragment,\n },\n });\n this.effects = shader.effects;\n this.calculateProps = memize(this.calculateProps.bind(this));\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n calculateProps(effects) {\n const regEffects = this.renderer.shManager.getRegisteredEffects();\n const results = [];\n effects?.forEach((eff, index) => {\n const effect = this.effects[index];\n const fxClass = regEffects[effect.name];\n const props = eff.props ?? {};\n const uniInfo = effect.uniformInfo;\n Object.keys(props).forEach((p) => {\n const fxProp = fxClass.uniforms[p];\n const propInfo = uniInfo[p];\n let value = fxProp.validator\n ? fxProp.validator(props[p], props)\n : props[p];\n if (Array.isArray(value)) {\n value = new Float32Array(value);\n }\n results.push({ name: propInfo.name, value });\n });\n });\n return results;\n }\n bindProps(props) {\n const results = this.calculateProps(props.effects);\n results.forEach((r) => {\n this.setUniform(r.name, r.value);\n });\n }\n canBatchShaderProps(propsA, propsB) {\n if (propsA.$dimensions.width !== propsB.$dimensions.width ||\n propsA.$dimensions.height !== propsB.$dimensions.height ||\n propsA.effects.length !== propsB.effects.length) {\n return false;\n }\n const propsEffectsLen = propsA.effects.length;\n let i = 0;\n for (; i < propsEffectsLen; i++) {\n const effectA = propsA.effects[i];\n const effectB = propsB.effects[i];\n if (effectA.type !== effectB.type) {\n return false;\n }\n for (const key in effectA.props) {\n if ((effectB.props && !effectB.props[key]) ||\n effectA.props[key] !== effectB.props[key]) {\n return false;\n }\n }\n }\n return true;\n }\n static createShader(props, effectContructors) {\n //counts duplicate effects\n const effectNameCount = {};\n const methods = {};\n let declareUniforms = '';\n const uniforms = [];\n const uFx = [];\n const effects = props.effects.map((effect) => {\n const baseClass = effectContructors[effect.type];\n const key = baseClass.getEffectKey(effect.props || {});\n effectNameCount[key] = effectNameCount[key] ? ++effectNameCount[key] : 1;\n const nr = effectNameCount[key];\n if (nr === 1) {\n uFx.push({ key, type: effect.type, props: effect.props });\n }\n //initialize new effect class;\n const fxClass = new baseClass({\n ref: `${key}${nr === 1 ? '' : nr}`,\n target: key,\n props: effect.props,\n });\n declareUniforms += fxClass.declaredUniforms;\n uniforms.push(...Object.values(fxClass.uniformInfo));\n return fxClass;\n });\n //build source\n let effectMethods = '';\n uFx?.forEach((fx) => {\n const fxClass = effectContructors[fx.type];\n const fxProps = fxClass.resolveDefaults((fx.props ?? {}));\n const remap = [];\n for (const m in fxClass.methods) {\n let cm = m;\n const fxMethod = fxClass.methods[m];\n if (methods[m] && methods[m] !== fxMethod) {\n cm = DynamicShader.resolveMethodDuplicate(m, fxMethod, methods);\n }\n methods[cm] = fxMethod.replace('function', cm);\n remap.push({ m, cm });\n }\n let onShaderMask = fxClass.onShaderMask instanceof Function\n ? fxClass.onShaderMask(fxProps)\n : fxClass.onShaderMask;\n let onColorize = fxClass.onColorize instanceof Function\n ? fxClass.onColorize(fxProps)\n : fxClass.onColorize;\n let onEffectMask = fxClass.onEffectMask instanceof Function\n ? fxClass.onEffectMask(fxProps)\n : fxClass.onEffectMask;\n remap.forEach((r) => {\n const { m, cm } = r;\n const reg = new RegExp(`\\\\$${m}`, 'g');\n if (onShaderMask) {\n onShaderMask = onShaderMask.replace(reg, cm);\n }\n if (onColorize) {\n onColorize = onColorize.replace(reg, cm);\n }\n if (onEffectMask) {\n onEffectMask = onEffectMask.replace(reg, cm);\n }\n });\n const methodParameters = fxClass.getMethodParameters(fxClass.uniforms, fxProps);\n const pm = methodParameters.length > 0 ? `, ${methodParameters}` : '';\n if (onShaderMask) {\n effectMethods += `\n float fx_${fx.key}_onShaderMask(float shaderMask ${pm}) {\n ${onShaderMask}\n }\n `;\n }\n if (onColorize) {\n effectMethods += `\n vec4 fx_${fx.key}_onColorize(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {\n ${onColorize}\n }\n `;\n }\n if (onEffectMask) {\n effectMethods += `\n vec4 fx_${fx.key}_onEffectMask(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {\n ${onEffectMask}\n }\n `;\n }\n });\n let sharedMethods = '';\n for (const m in methods) {\n sharedMethods += methods[m];\n }\n //fill main functions\n let currentMask = `mix(shaderColor, maskColor, clamp(-(lng_DefaultMask), 0.0, 1.0))`;\n let drawEffects = `\n\n `;\n for (let i = 0; i < effects.length; i++) {\n const current = effects[i];\n const pm = current.passParameters.length > 0 ? `, ${current.passParameters}` : '';\n const currentClass = effectContructors[current.name];\n if (currentClass.onShaderMask) {\n drawEffects += `\n shaderMask = fx_${current.target}_onShaderMask(shaderMask ${pm});\n `;\n }\n if (currentClass.onColorize) {\n drawEffects += `\n maskColor = fx_${current.target}_onColorize(shaderMask, maskColor, shaderColor${pm});\n `;\n }\n if (currentClass.onEffectMask) {\n currentMask = `fx_${current.target}_onEffectMask(shaderMask, maskColor, shaderColor${pm})`;\n }\n const next = effects[i + 1];\n if (next === undefined ||\n effectContructors[next.name].onEffectMask) {\n drawEffects += `\n shaderColor = ${currentMask};\n `;\n }\n }\n return {\n effects,\n uniforms,\n fragment: DynamicShader.fragment(declareUniforms, sharedMethods, effectMethods, drawEffects),\n vertex: DynamicShader.vertex(),\n };\n }\n static resolveMethodDuplicate(key, effectMethod, methodCollection, increment = 0) {\n const m = key + (increment > 0 ? increment : '');\n if (methodCollection[m] && methodCollection[m] !== effectMethod) {\n return this.resolveMethodDuplicate(key, effectMethod, methodCollection, ++increment);\n }\n return m;\n }\n static resolveDefaults(props, effectContructors) {\n return {\n effects: getResolvedEffect(props.effects, effectContructors),\n $dimensions: {\n width: 0,\n height: 0,\n },\n $alpha: 0,\n };\n }\n static makeCacheKey(props, effectContructors) {\n let fx = '';\n props.effects?.forEach((effect) => {\n const baseClass = effectContructors[effect.type];\n const key = baseClass.getEffectKey(effect.props || {});\n fx += `,${key}`;\n });\n return `DynamicShader${fx}`;\n }\n static z$__type__Props;\n static vertex = () => `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `;\n static fragment = (uniforms, methods, effectMethods, drawEffects) => `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n #define PI 3.14159265359\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_alpha;\n uniform float u_radius;\n uniform sampler2D u_texture;\n uniform float u_pixelRatio;\n\n ${uniforms}\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n ${methods}\n\n ${effectMethods}\n\n void main() {\n vec2 p = v_textureCoordinate.xy * u_dimensions - u_dimensions * 0.5;\n vec2 d = abs(p) - (u_dimensions) * 0.5;\n float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n\n vec4 shaderColor = vec4(0.0);\n float shaderMask = lng_DefaultMask;\n\n vec4 maskColor = texture2D(u_texture, v_textureCoordinate) * v_color;\n\n shaderColor = mix(shaderColor, maskColor, clamp(-(lng_DefaultMask + 0.5), 0.0, 1.0));\n\n ${drawEffects}\n\n gl_FragColor = shaderColor * u_alpha;\n }\n `;\n}\n//# sourceMappingURL=DynamicShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader, } from '../WebGlCoreShader.js';\n/**\n * Similar to the {@link DefaultShader} but cuts out 4 rounded rectangle corners\n * as defined by the specified corner {@link RoundedRectangleProps.radius}\n */\nexport class RoundedRectangle extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2f' },\n { name: 'u_dimensions', uniform: 'uniform2fv' },\n { name: 'u_radius', uniform: 'uniform1f' },\n ],\n });\n }\n static z$__type__Props;\n static resolveDefaults(props) {\n return {\n radius: props.radius || 10,\n $dimensions: {\n width: 0,\n height: 0,\n },\n };\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n bindProps(props) {\n this.setUniform('u_radius', props.radius);\n }\n canBatchShaderProps(propsA, propsB) {\n return (propsA.radius === propsB.radius &&\n propsA.$dimensions.width === propsB.$dimensions.width &&\n propsA.$dimensions.height === propsB.$dimensions.height);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `,\n fragment: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_radius;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n float boxDist(vec2 p, vec2 size, float radius){\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n\n float fillMask(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color;\n vec2 halfDimensions = u_dimensions * 0.5;\n\n float d = boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);\n gl_FragColor = mix(vec4(0.0), color, fillMask(d));\n }\n `,\n };\n}\n//# sourceMappingURL=RoundedRectangle.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../lib/utils.js';\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\nconst IDENTITY_MATRIX_3x3 = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n/**\n * SdfShader supports multi-channel and single-channel signed distance field textures.\n *\n * @remarks\n * This Shader is used by the {@link SdfTextRenderer}. Do not use thie Shader\n * directly. Instead create a Text Node and assign a SDF font family to it.\n *\n * @internalRemarks\n * The only thing this shader does to support multi-channel SDFs is to\n * add a median function to the fragment shader. If this one function call\n * ends up being a performance bottleneck we can always look at ways to\n * remove it.\n */\nexport class SdfShader extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_transform', uniform: 'uniformMatrix3fv' },\n { name: 'u_scrollY', uniform: 'uniform1f' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2f' },\n { name: 'u_color', uniform: 'uniform4fv' },\n { name: 'u_size', uniform: 'uniform1f' },\n { name: 'u_distanceRange', uniform: 'uniform1f' },\n { name: 'u_debug', uniform: 'uniform1i' },\n ],\n });\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n bindProps(props) {\n const resolvedProps = SdfShader.resolveDefaults(props);\n for (const key in resolvedProps) {\n if (key === 'transform') {\n this.setUniform('u_transform', false, resolvedProps[key]);\n }\n else if (key === 'scrollY') {\n this.setUniform('u_scrollY', resolvedProps[key]);\n }\n else if (key === 'color') {\n const components = getNormalizedRgbaComponents(resolvedProps.color);\n this.setUniform('u_color', components);\n }\n else if (key === 'size') {\n this.setUniform('u_size', resolvedProps[key]);\n }\n else if (key === 'distanceRange') {\n this.setUniform('u_distanceRange', resolvedProps[key]);\n }\n else if (key === 'debug') {\n this.setUniform('u_debug', resolvedProps[key] ? 1.0 : 0.0);\n }\n }\n }\n static resolveDefaults(props = {}) {\n return {\n transform: props.transform ?? IDENTITY_MATRIX_3x3,\n scrollY: props.scrollY ?? 0,\n color: props.color ?? 0xffffffff,\n size: props.size ?? 16,\n distanceRange: props.distanceRange ?? 1.0,\n debug: props.debug ?? false,\n };\n }\n static shaderSources = {\n vertex: `\n // an attribute is an input (in) to a vertex shader.\n // It will receive data from a buffer\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n\n uniform vec2 u_resolution;\n uniform mat3 u_transform;\n uniform float u_scrollY;\n uniform float u_pixelRatio;\n uniform float u_size;\n\n varying vec2 v_texcoord;\n\n void main() {\n vec2 scrolledPosition = a_position * u_size - vec2(0, u_scrollY);\n vec2 transformedPosition = (u_transform * vec3(scrolledPosition, 1)).xy;\n\n // Calculate screen space with pixel ratio\n vec2 screenSpace = (transformedPosition * u_pixelRatio / u_resolution * 2.0 - 1.0) * vec2(1, -1);\n\n gl_Position = vec4(screenSpace, 0.0, 1.0);\n v_texcoord = a_textureCoordinate;\n\n }\n `,\n fragment: `\n precision highp float;\n\n uniform vec4 u_color;\n uniform sampler2D u_texture;\n uniform float u_distanceRange;\n uniform float u_pixelRatio;\n uniform int u_debug;\n\n varying vec2 v_texcoord;\n\n float median(float r, float g, float b) {\n return max(min(r, g), min(max(r, g), b));\n }\n\n void main() {\n vec3 sample = texture2D(u_texture, v_texcoord).rgb;\n if (u_debug == 1) {\n gl_FragColor = vec4(sample.r, sample.g, sample.b, 1.0);\n return;\n }\n float scaledDistRange = u_distanceRange * u_pixelRatio;\n float sigDist = scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);\n float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_color.a;\n\n // Build the final color.\n // IMPORTANT: We must premultiply the color by the alpha value before returning it.\n gl_FragColor = vec4(u_color.r * opacity, u_color.g * opacity, u_color.b * opacity, opacity);\n }\n `,\n };\n}\n//# sourceMappingURL=SdfShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Masks the current maskcolor with rounded corners similar to {@link RoundedRectangle}\n */\nexport class RadiusEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radius';\n static getEffectKey() {\n return `radius`;\n }\n static uniforms = {\n radius: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n boxDist: `\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n `,\n };\n static resolveDefaults(props) {\n return {\n radius: props.radius ?? 10,\n };\n }\n static onShaderMask = `\n vec2 halfDimensions = u_dimensions * 0.5;\n float r = radius[0] * step(v_textureCoordinate.x, 0.5) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[1] * step(0.5, v_textureCoordinate.x) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[2] * step(0.5, v_textureCoordinate.x) * step(0.5, v_textureCoordinate.y);\n r = r + radius[3] * step(v_textureCoordinate.x, 0.5) * step(0.5, v_textureCoordinate.y);\n return $boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions, r);\n `;\n static onEffectMask = `\n return mix(vec4(0.0), maskColor, $fillMask(shaderMask));\n `;\n}\n//# sourceMappingURL=RadiusEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderEffect renders a border along all edges of an element\n */\nexport class BorderEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'border';\n static getEffectKey() {\n return `border`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static onEffectMask = `\n float mask = clamp(shaderMask + width, 0.0, 1.0) - clamp(shaderMask, 0.0, 1.0);\n return mix(shaderColor, mix(shaderColor, maskColor, maskColor.a), mask);\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Linear Gradient effect over a effect mask\n */\nexport class LinearGradientEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'linearGradient';\n static getEffectKey(props) {\n return `linearGradient${props.colors.length}`;\n }\n static resolveDefaults(props) {\n const colors = props.colors ?? [0xff000000, 0xffffffff];\n let stops = props.stops || [];\n if (stops.length === 0 || stops.length !== colors.length) {\n const colorsL = colors.length;\n let i = 0;\n const tmp = stops;\n for (; i < colorsL; i++) {\n if (stops[i]) {\n tmp[i] = stops[i];\n if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {\n tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;\n }\n }\n else {\n tmp[i] = i * (1 / (colors.length - 1));\n }\n }\n stops = tmp;\n }\n return {\n colors,\n stops,\n angle: props.angle ?? 0,\n };\n }\n static uniforms = {\n angle: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n colors: {\n value: 0xffffffff,\n validator: (rgbas) => {\n const cols = rgbas.map((rgbas) => getNormalizedRgbaComponents(rgbas));\n return cols.reduce((acc, val) => acc.concat(val), []);\n },\n size: (props) => props.colors.length,\n method: 'uniform4fv',\n type: 'vec4',\n },\n stops: {\n value: [],\n size: (props) => props.colors.length,\n method: 'uniform1fv',\n type: 'float',\n },\n };\n static methods = {\n fromLinear: `\n vec4 function(vec4 linearRGB) {\n vec4 higher = vec4(1.055)*pow(linearRGB, vec4(1.0/2.4)) - vec4(0.055);\n vec4 lower = linearRGB * vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n `,\n toLinear: `\n vec4 function(vec4 sRGB) {\n vec4 higher = pow((sRGB + vec4(0.055))/vec4(1.055), vec4(2.4));\n vec4 lower = sRGB/vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n `,\n calcPoint: `\n vec2 function(float d, float angle) {\n return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);\n }\n `,\n };\n static ColorLoop = (amount) => {\n let loop = '';\n for (let i = 2; i < amount; i++) {\n loop += `colorOut = mix(colorOut, colors[${i}], clamp((dist - stops[${i - 1}]) / (stops[${i}] - stops[${i - 1}]), 0.0, 1.0));`;\n }\n return loop;\n };\n static onColorize = (props) => {\n const colors = props.colors.length || 1;\n return `\n float a = angle - (PI / 180.0 * 90.0);\n float lineDist = abs(u_dimensions.x * cos(a)) + abs(u_dimensions.y * sin(a));\n vec2 f = $calcPoint(lineDist * 0.5, a);\n vec2 t = $calcPoint(lineDist * 0.5, a + PI);\n vec2 gradVec = t - f;\n float dist = dot(v_textureCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = $fromLinear(mix($toLinear(colors[0]), $toLinear(colors[1]), stopCalc));\n ${this.ColorLoop(colors)}\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n `;\n };\n}\n//# sourceMappingURL=LinearGradientEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Grayscale effect grayscales the color values of the current mask color\n */\nexport class GrayscaleEffect extends ShaderEffect {\n name = 'grayscale';\n static getEffectKey() {\n return `grayscale`;\n }\n static resolveDefaults(props) {\n return {\n amount: props.amount ?? 1,\n };\n }\n static uniforms = {\n amount: {\n value: 1,\n method: 'uniform1f',\n type: 'float',\n },\n };\n static onColorize = `\n float grayness = 0.2 * maskColor.r + 0.6 * maskColor.g + 0.2 * maskColor.b;\n return vec4(amount * vec3(grayness) + (1.0 - amount) * maskColor.rgb, maskColor.a);\n `;\n}\n//# sourceMappingURL=GrayscaleEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the right side of an element\n */\nexport class BorderRightEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderRight';\n static getEffectKey() {\n return `borderRight`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderRightEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the top side of an element\n */\nexport class BorderTopEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderTop';\n static getEffectKey() {\n return `borderTop`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(0.0, width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderTopEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the bottom side of an element\n */\nexport class BorderBottomEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderBottom';\n static getEffectKey() {\n return `borderBottom`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(0.0, u_dimensions.y - width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderBottomEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the left of an element\n */\nexport class BorderLeftEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderLeft';\n static getEffectKey() {\n return `borderLeft`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderLeftEffect.js.map","import { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Renders a Glitch effect using the incoming texture\n */\nexport class GlitchEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'glitch';\n static getEffectKey(props) {\n return `glitch`;\n }\n static resolveDefaults(props) {\n return {\n amplitude: props.amplitude ?? 0.2,\n narrowness: props.narrowness ?? 4.0,\n blockiness: props.blockiness ?? 2.0,\n minimizer: props.minimizer ?? 8.0,\n time: props.time ?? Date.now(),\n };\n }\n static uniforms = {\n amplitude: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n narrowness: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n blockiness: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n minimizer: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n time: {\n value: 0,\n method: 'uniform1f',\n validator: (value) => {\n return (Date.now() - value) % 1000;\n },\n type: 'float',\n },\n };\n static methods = {\n rand: `\n float function(vec2 p, float time) {\n float t = floor(time * 20.) / 10.;\n return fract(sin(dot(p, vec2(t * 12.9898, t * 78.233))) * 43758.5453);\n }\n `,\n noise: `\n float function(vec2 uv, float blockiness, float time) {\n vec2 lv = fract(uv);\n vec2 id = floor(uv);\n\n float n1 = rand(id, time);\n float n2 = rand(id+vec2(1,0), time);\n float n3 = rand(id+vec2(0,1), time);\n float n4 = rand(id+vec2(1,1), time);\n vec2 u = smoothstep(0.0, 1.0 + blockiness, lv);\n return mix(mix(n1, n2, u.x), mix(n3, n4, u.x), u.y);\n }\n `,\n fbm: `\n float function(vec2 uv, int count, float blockiness, float complexity, float time) {\n float val = 0.0;\n float amp = 0.5;\n const int MAX_ITERATIONS = 10;\n\n for(int i = 0; i < MAX_ITERATIONS; i++) {\n if(i >= count) {break;}\n val += amp * noise(uv, blockiness, time);\n amp *= 0.5;\n uv *= complexity;\n }\n return val;\n }\n `,\n };\n static onColorize = `\n vec2 uv = v_textureCoordinate.xy;\n float aspect = u_dimensions.x / u_dimensions.y;\n vec2 a = vec2(uv.x * aspect , uv.y);\n vec2 uv2 = vec2(a.x / u_dimensions.x, exp(a.y));\n\n float shift = amplitude * pow($fbm(uv2, 4, blockiness, narrowness, time), minimizer);\n float colR = texture2D(u_texture, vec2(uv.x + shift, uv.y)).r * (1. - shift);\n float colG = texture2D(u_texture, vec2(uv.x - shift, uv.y)).g * (1. - shift);\n float colB = texture2D(u_texture, vec2(uv.x - shift, uv.y)).b * (1. - shift);\n\n vec3 f = vec3(colR, colG, colB);\n return vec4(f, texture2D(u_texture, vec2(uv.x - shift, uv.y)).a);\n `;\n}\n//# sourceMappingURL=GlitchEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\nexport class FadeOutEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'fadeOut';\n static getEffectKey() {\n return `fadeOut`;\n }\n static uniforms = {\n fade: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static resolveDefaults(props) {\n return {\n fade: props.fade ?? 10,\n };\n }\n static onColorize = `\n vec2 point = v_textureCoordinate.xy * u_dimensions.xy;\n vec2 pos1;\n vec2 pos2;\n vec2 d;\n float c;\n vec4 result = maskColor;\n\n\n if(fade[0] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x, point.y + fade[0]);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[1] > 0.0) {\n pos1 = vec2(point.x - u_dimensions.x - fade[1], v_textureCoordinate.y);\n pos2 = vec2(point.x - u_dimensions.x, v_textureCoordinate.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[2] > 0.0) {\n pos1 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y - fade[2]);\n pos2 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[3] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x + fade[3], point.y);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n return result;\n `;\n}\n//# sourceMappingURL=FadeOutEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\nexport class RadialGradientEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radialGradient';\n static getEffectKey(props) {\n return `radialGradient${props.colors.length}`;\n }\n static resolveDefaults(props) {\n const colors = props.colors ?? [0xff000000, 0xffffffff];\n let stops = props.stops || [];\n if (stops.length === 0 || stops.length !== colors.length) {\n const colorsL = colors.length;\n let i = 0;\n const tmp = stops;\n for (; i < colorsL; i++) {\n if (stops[i]) {\n tmp[i] = stops[i];\n if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {\n tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;\n }\n }\n else {\n tmp[i] = i * (1 / (colors.length - 1));\n }\n }\n stops = tmp;\n }\n return {\n colors,\n stops,\n width: props.width ?? 0,\n height: props.height ?? props.width ?? 0,\n pivot: props.pivot ?? [0.5, 0.5],\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n height: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n pivot: {\n value: [0.5, 0.5],\n method: 'uniform2fv',\n type: 'vec2',\n },\n colors: {\n value: 0xffffffff,\n validator: (rgbas) => {\n const cols = rgbas.map((rgbas) => getNormalizedRgbaComponents(rgbas));\n return cols.reduce((acc, val) => acc.concat(val), []);\n },\n size: (props) => props.colors.length,\n method: 'uniform4fv',\n type: 'vec4',\n },\n stops: {\n value: [],\n size: (props) => props.colors.length,\n method: 'uniform1fv',\n type: 'float',\n },\n };\n static ColorLoop = (amount) => {\n let loop = '';\n for (let i = 2; i < amount; i++) {\n loop += `colorOut = mix(colorOut, colors[${i}], clamp((dist - stops[${i - 1}]) / (stops[${i}] - stops[${i - 1}]), 0.0, 1.0));`;\n }\n return loop;\n };\n static onColorize = (props) => {\n const colors = props.colors.length || 1;\n return `\n vec2 point = v_textureCoordinate.xy * u_dimensions;\n vec2 projection = vec2(pivot.x * u_dimensions.x, pivot.y * u_dimensions.y);\n\n float dist = length((point - projection) / vec2(width, height));\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = mix(colors[0], colors[1], stopCalc);\n ${this.ColorLoop(colors)}\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n `;\n };\n}\n//# sourceMappingURL=RadialGradientEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The RadialProgressEffect renders a border along all edges of an element\n */\nexport class RadialProgressEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radialProgress';\n static getEffectKey() {\n return `radialProgress`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n progress: props.progress ?? 0.5,\n offset: props.offset ?? 0,\n range: props.range ?? Math.PI * 2,\n rounded: props.rounded ?? false,\n radius: props.radius ?? 1,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n progress: {\n value: 0.5,\n method: 'uniform1f',\n type: 'float',\n },\n offset: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n range: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n rounded: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n validator: (value) => {\n return value ? 1 : 0;\n },\n },\n radius: {\n value: 1,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n rotateUV: `\n vec2 function(vec2 uv, float d) {\n float s = sin(d);\n float c = cos(d);\n mat2 rotMatrix = mat2(c, -s, s, c);\n return uv * rotMatrix;\n }\n `,\n drawDot: `\n float function(vec2 uv, vec2 p, float r) {\n uv += p;\n float circle = length(uv) - r;\n return clamp(-circle, 0.0, 1.0);\n }\n `,\n };\n static onEffectMask = `\n float outerRadius = radius * u_dimensions.y * 0.5;\n\n float endAngle = range * progress - 0.0005;\n\n vec2 uv = v_textureCoordinate.xy * u_dimensions.xy - u_dimensions * 0.5;\n\n uv = $rotateUV(uv, -(offset));\n float linewidth = width * u_pixelRatio;\n float circle = length(uv) - (outerRadius - linewidth) ;\n circle = abs(circle) - linewidth;\n circle = clamp(-circle, 0.0, 1.0);\n\n float angle = (atan(uv.x, -uv.y) / 3.14159265359 * 0.5);\n float p = endAngle / (PI * 2.);\n\n circle *= step(fract(angle), fract(p));\n\n circle = rounded < 1. ? circle : max(circle, $drawDot(uv, vec2(0, outerRadius - linewidth), linewidth));\n circle = rounded < 1. ? circle : max(circle, $drawDot($rotateUV(uv, -(endAngle)), vec2(0, outerRadius - linewidth), linewidth));\n\n return mix(shaderColor, maskColor, circle);\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=RadialProgressEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Masks the current maskcolor a holepunch effect with rounded corners similar to {@link RoundedRectangle}\n */\nexport class HolePunchEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'holePunch';\n static getEffectKey() {\n return `holePunch`;\n }\n static uniforms = {\n x: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n y: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n height: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n radius: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static resolveDefaults(props) {\n return {\n x: props.x || 0,\n y: props.y || 0,\n width: props.width || 50,\n height: props.height || 50,\n radius: props.radius ?? 0,\n };\n }\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n boxDist: `\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n `,\n };\n static onShaderMask = `\n vec2 halfDimensions = u_dimensions * 0.5;\n vec2 size = vec2(width, height) * 0.5;\n vec2 basePos = v_textureCoordinate.xy * u_dimensions.xy - vec2(x, y);\n vec2 pos = basePos - size;\n float r = radius[0] * step(pos.x, 0.5) * step(pos.y, 0.5);\n r = r + radius[1] * step(0.5, pos.x) * step(pos.y, 0.5);\n r = r + radius[2] * step(0.5, pos.x) * step(0.5, pos.y);\n r = r + radius[3] * step(pos.x, 0.5) * step(0.5, pos.y);\n return $boxDist(pos, size, r);\n `;\n static onEffectMask = `\n return mix(maskColor, vec4(0.0), $fillMask(shaderMask));\n `;\n}\n//# sourceMappingURL=HolePunchEffect.js.map","import { DefaultShader } from './renderers/webgl/shaders/DefaultShader.js';\nimport { DefaultShaderBatched } from './renderers/webgl/shaders/DefaultShaderBatched.js';\nimport { DynamicShader, } from './renderers/webgl/shaders/DynamicShader.js';\nimport { RoundedRectangle } from './renderers/webgl/shaders/RoundedRectangle.js';\nimport { SdfShader } from './renderers/webgl/shaders/SdfShader.js';\nimport { RadiusEffect } from './renderers/webgl/shaders/effects/RadiusEffect.js';\nimport { BorderEffect } from './renderers/webgl/shaders/effects/BorderEffect.js';\nimport { LinearGradientEffect, } from './renderers/webgl/shaders/effects/LinearGradientEffect.js';\nimport { GrayscaleEffect, } from './renderers/webgl/shaders/effects/GrayscaleEffect.js';\nimport { BorderRightEffect } from './renderers/webgl/shaders/effects/BorderRightEffect.js';\nimport { BorderTopEffect } from './renderers/webgl/shaders/effects/BorderTopEffect.js';\nimport { BorderBottomEffect } from './renderers/webgl/shaders/effects/BorderBottomEffect.js';\nimport { BorderLeftEffect } from './renderers/webgl/shaders/effects/BorderLeftEffect.js';\nimport { GlitchEffect, } from './renderers/webgl/shaders/effects/GlitchEffect.js';\nimport { FadeOutEffect, } from './renderers/webgl/shaders/effects/FadeOutEffect.js';\nimport { RadialGradientEffect, } from './renderers/webgl/shaders/effects/RadialGradientEffect.js';\nimport { RadialProgressEffect, } from './renderers/webgl/shaders/effects/RadialProgressEffect.js';\nimport { HolePunchEffect } from './renderers/webgl/shaders/effects/HolePunchEffect.js';\nexport class CoreShaderManager {\n shCache = new Map();\n shConstructors = {};\n attachedShader = null;\n effectConstructors = {};\n renderer;\n constructor() {\n this.registerShaderType('DefaultShader', DefaultShader);\n this.registerShaderType('DefaultShaderBatched', DefaultShaderBatched);\n this.registerShaderType('RoundedRectangle', RoundedRectangle);\n this.registerShaderType('DynamicShader', DynamicShader);\n this.registerShaderType('SdfShader', SdfShader);\n this.registerEffectType('border', BorderEffect);\n this.registerEffectType('borderBottom', BorderBottomEffect);\n this.registerEffectType('borderLeft', BorderLeftEffect);\n this.registerEffectType('borderRight', BorderRightEffect);\n this.registerEffectType('borderTop', BorderTopEffect);\n this.registerEffectType('fadeOut', FadeOutEffect);\n this.registerEffectType('linearGradient', LinearGradientEffect);\n this.registerEffectType('radialGradient', RadialGradientEffect);\n this.registerEffectType('grayscale', GrayscaleEffect);\n this.registerEffectType('glitch', GlitchEffect);\n this.registerEffectType('radius', RadiusEffect);\n this.registerEffectType('radialProgress', RadialProgressEffect);\n this.registerEffectType('holePunch', HolePunchEffect);\n }\n registerShaderType(shType, shClass) {\n this.shConstructors[shType] = shClass;\n }\n registerEffectType(effectType, effectClass) {\n this.effectConstructors[effectType] = effectClass;\n }\n getRegisteredEffects() {\n return this.effectConstructors;\n }\n getRegisteredShaders() {\n return this.shConstructors;\n }\n loadShader(shType, props) {\n if (!this.renderer) {\n throw new Error(`Renderer is not been defined`);\n }\n const ShaderClass = this.shConstructors[shType];\n if (!ShaderClass) {\n throw new Error(`Shader type \"${shType}\" is not registered`);\n }\n if (shType === 'DynamicShader') {\n return this.loadDynamicShader(props);\n }\n const resolvedProps = ShaderClass.resolveDefaults(props);\n const cacheKey = ShaderClass.makeCacheKey(resolvedProps) || ShaderClass.name;\n if (cacheKey && this.shCache.has(cacheKey)) {\n return {\n shader: this.shCache.get(cacheKey),\n props: resolvedProps,\n };\n }\n // @ts-expect-error ShaderClass WILL accept a Renderer\n const shader = new ShaderClass(this.renderer, props);\n if (cacheKey) {\n this.shCache.set(cacheKey, shader);\n }\n return {\n shader,\n props: resolvedProps,\n };\n }\n loadDynamicShader(props) {\n if (!this.renderer) {\n throw new Error(`Renderer is not been defined`);\n }\n const resolvedProps = DynamicShader.resolveDefaults(props, this.effectConstructors);\n const cacheKey = DynamicShader.makeCacheKey(resolvedProps, this.effectConstructors);\n if (cacheKey && this.shCache.has(cacheKey)) {\n return {\n shader: this.shCache.get(cacheKey),\n props: resolvedProps,\n };\n }\n const shader = new DynamicShader(this.renderer, props, this.effectConstructors);\n if (cacheKey) {\n this.shCache.set(cacheKey, shader);\n }\n return {\n shader: shader,\n props: resolvedProps,\n };\n }\n useShader(shader) {\n if (this.attachedShader === shader) {\n return;\n }\n if (this.attachedShader) {\n this.attachedShader.detach();\n }\n shader.attach();\n this.attachedShader = shader;\n }\n}\n//# sourceMappingURL=CoreShaderManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class that keeps track of the invocations of Context methods when\n * the `enableContextSpy` renderer option is enabled.\n */\nexport class ContextSpy {\n data = {};\n reset() {\n this.data = {};\n }\n increment(name) {\n if (!this.data[name]) {\n this.data[name] = 0;\n }\n this.data[name]++;\n }\n getData() {\n return { ...this.data };\n }\n}\n//# sourceMappingURL=ContextSpy.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {} from '../textures/Texture.js';\n/**\n * Tests if the given location is a compressed texture container\n * @param url\n * @remarks\n * This function is used to determine if the given image url is a compressed\n * and only supports the following extensions: .ktx and .pvr\n * @returns\n */\nexport function isCompressedTextureContainer(url) {\n return /\\.(ktx|pvr)$/.test(url);\n}\n/**\n * Loads a compressed texture container\n * @param url\n * @returns\n */\nexport const loadCompressedTexture = async (url) => {\n const response = await fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n if (url.indexOf('.ktx') !== -1) {\n return loadKTXData(arrayBuffer);\n }\n return loadPVRData(arrayBuffer);\n};\n/**\n * Loads a KTX texture container and returns the texture data\n * @param buffer\n * @returns\n */\nconst loadKTXData = async (buffer) => {\n const view = new DataView(buffer);\n const littleEndian = view.getUint32(12) === 16909060 ? true : false;\n const mipmaps = [];\n const data = {\n glInternalFormat: view.getUint32(28, littleEndian),\n pixelWidth: view.getUint32(36, littleEndian),\n pixelHeight: view.getUint32(40, littleEndian),\n numberOfMipmapLevels: view.getUint32(56, littleEndian),\n bytesOfKeyValueData: view.getUint32(60, littleEndian),\n };\n let offset = 64;\n // Key Value Pairs of data start at byte offset 64\n // But the only known kvp is the API version, so skipping parsing.\n offset += data.bytesOfKeyValueData;\n for (let i = 0; i < data.numberOfMipmapLevels; i++) {\n const imageSize = view.getUint32(offset);\n offset += 4;\n mipmaps.push(view.buffer.slice(offset, imageSize));\n offset += imageSize;\n }\n return {\n data: {\n glInternalFormat: data.glInternalFormat,\n mipmaps,\n width: data.pixelWidth || 0,\n height: data.pixelHeight || 0,\n type: 'ktx',\n },\n premultiplyAlpha: false,\n };\n};\n/**\n * Loads a PVR texture container and returns the texture data\n * @param buffer\n * @returns\n */\nconst loadPVRData = async (buffer) => {\n // pvr header length in 32 bits\n const pvrHeaderLength = 13;\n // for now only we only support: COMPRESSED_RGB_ETC1_WEBGL\n const pvrFormatEtc1 = 0x8d64;\n const pvrWidth = 7;\n const pvrHeight = 6;\n const pvrMipmapCount = 11;\n const pvrMetadata = 12;\n const arrayBuffer = buffer;\n const header = new Int32Array(arrayBuffer, 0, pvrHeaderLength);\n // @ts-expect-error Object possibly undefined\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n const dataOffset = header[pvrMetadata] + 52;\n const pvrtcData = new Uint8Array(arrayBuffer, dataOffset);\n const mipmaps = [];\n const data = {\n pixelWidth: header[pvrWidth],\n pixelHeight: header[pvrHeight],\n numberOfMipmapLevels: header[pvrMipmapCount] || 0,\n };\n let offset = 0;\n let width = data.pixelWidth || 0;\n let height = data.pixelHeight || 0;\n for (let i = 0; i < data.numberOfMipmapLevels; i++) {\n const level = ((width + 3) >> 2) * ((height + 3) >> 2) * 8;\n const view = new Uint8Array(arrayBuffer, pvrtcData.byteOffset + offset, level);\n mipmaps.push(view);\n offset += level;\n width = width >> 1;\n height = height >> 1;\n }\n return {\n data: {\n glInternalFormat: pvrFormatEtc1,\n mipmaps: mipmaps,\n width: data.pixelWidth || 0,\n height: data.pixelHeight || 0,\n type: 'pvr',\n },\n premultiplyAlpha: false,\n };\n};\n//# sourceMappingURL=textureCompression.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\nimport { isCompressedTextureContainer, loadCompressedTexture, } from '../lib/textureCompression.js';\n/**\n * Texture consisting of an image loaded from a URL\n *\n * @remarks\n * The ImageTexture's {@link ImageTextureProps.src} prop defines the image URL\n * to be downloaded.\n *\n * By default, the texture's alpha values will be premultiplied into its color\n * values which is generally the desired setting before they are sent to the\n * texture's associated {@link Shader}. However, in special cases you may want\n * the Shader to receive straight (non-premultiplied) values. In that case you\n * can disable the default behavior by setting the\n * {@link ImageTextureProps.premultiplyAlpha} prop to `false`.\n */\nexport class ImageTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = ImageTexture.resolveDefaults(props);\n }\n hasAlphaChannel(mimeType) {\n return mimeType.indexOf('image/png') !== -1;\n }\n async getTextureData() {\n const { src, premultiplyAlpha } = this.props;\n if (!src) {\n return {\n data: null,\n };\n }\n if (src instanceof ImageData) {\n return {\n data: src,\n premultiplyAlpha,\n };\n }\n // Handle compressed textures\n if (isCompressedTextureContainer(src)) {\n return loadCompressedTexture(src);\n }\n if (this.txManager.imageWorkerManager) {\n return await this.txManager.imageWorkerManager.getImage(src, premultiplyAlpha);\n }\n else if (this.txManager.hasCreateImageBitmap) {\n const response = await fetch(src);\n const blob = await response.blob();\n const hasAlphaChannel = premultiplyAlpha ?? this.hasAlphaChannel(blob.type);\n return {\n data: await createImageBitmap(blob, {\n premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',\n colorSpaceConversion: 'none',\n imageOrientation: 'none',\n }),\n premultiplyAlpha: hasAlphaChannel,\n };\n }\n else {\n const img = new Image();\n if (!(src.substr(0, 5) == \"data:\")) {\n // Base64.\n img.crossOrigin = \"Anonymous\";\n }\n img.src = src;\n await new Promise((resolve, reject) => {\n img.onload = () => resolve();\n img.onerror = () => reject(new Error(`Failed to load image`));\n }).catch((e) => {\n console.error(e);\n });\n return {\n data: img,\n premultiplyAlpha: premultiplyAlpha ?? true,\n };\n }\n }\n static makeCacheKey(props) {\n const resolvedProps = ImageTexture.resolveDefaults(props);\n // ImageTextures sourced by ImageData are non-cacheable\n if (resolvedProps.src instanceof ImageData) {\n return false;\n }\n return `ImageTexture,${resolvedProps.src},${resolvedProps.premultiplyAlpha}`;\n }\n static resolveDefaults(props) {\n return {\n src: props.src ?? '',\n premultiplyAlpha: props.premultiplyAlpha ?? true, // null,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=ImageTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Number of floating point numbers that represent a single glyph in the SDF vertex buffer.\n *\n * @remarks\n * The vertex buffer contains:\n * - 6 vertex positions\n * - 6 texture coordinates\n * - = 12 positions/coordinates per glyph\n *\n * Each vertex position and texture coordinate consist of 2 floating point numbers (x/y).\n * So there are 12 * 2 = 24 floating point numbers that make up a single glyph.\n */\nexport const FLOATS_PER_GLYPH = 24;\n//# sourceMappingURL=constants.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Gets the start conditions for the layout loop.\n *\n * @remarks\n * Returns `undefined` if the layout loop should not be run.\n *\n * @param fontSize\n * @param fontSizeRatio\n * @param sdfLineHeight\n * @param renderWindow\n * @param lineCache\n * @param textH\n * @returns\n */\nexport function getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH) {\n // State variables\n const startLineIndex = Math.min(Math.max(renderWindow.firstLineIdx, 0), lineCache.length);\n // TODO: (fontSize / 6.4286 / fontSizeRatio) Adding this to the startY helps the text line up better with Canvas rendered text\n const sdfStartX = 0;\n let sdfVerticalAlignYOffset = 0;\n if (verticalAlign === 'middle') {\n sdfVerticalAlignYOffset = (sdfLineHeight - sdfFontSize) / 2;\n }\n else if (verticalAlign === 'bottom') {\n sdfVerticalAlignYOffset = sdfLineHeight - sdfFontSize;\n }\n const sdfOffsetY = offsetY / fontSizeRatio;\n const sdfStartY = sdfOffsetY + startLineIndex * sdfLineHeight + sdfVerticalAlignYOffset; // TODO: Figure out what determines the initial y offset of text.\n // Don't attempt to render anything if we know we're starting past the established end of the text\n if (textH && sdfStartY >= textH / fontSizeRatio) {\n return;\n }\n return {\n sdfX: sdfStartX,\n sdfY: sdfStartY,\n lineIndex: startLineIndex,\n };\n}\n//# sourceMappingURL=getStartConditions.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A wrapper Generator class that makes a generator peekable.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class PeekableIterator {\n iterator;\n peekBuffer = [];\n _lastIndex;\n constructor(iterator, indexBase = 0) {\n this.iterator = iterator;\n this.iterator = iterator;\n this._lastIndex = indexBase - 1;\n this.peekBuffer = [];\n }\n next() {\n const nextResult = this.peekBuffer.length > 0\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.peekBuffer.pop()\n : this.iterator.next();\n if (nextResult.done) {\n this._lastIndex = -1;\n }\n else {\n this._lastIndex++;\n }\n return nextResult;\n }\n peek() {\n if (this.peekBuffer.length > 0) {\n // We know that the buffer is not empty, so we can safely use the\n // non-null assertion operator\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.peekBuffer[0];\n }\n const result = this.iterator.next();\n this.peekBuffer.push(result);\n return result;\n }\n get lastIndex() {\n return this._lastIndex;\n }\n}\n//# sourceMappingURL=PeekableGenerator.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Reversible Generator Wrapper Class\n/**\n * Generator function that yields each Unicode code point in the given string.\n */\nexport function* getUnicodeCodepoints(text, start = 0) {\n let i = start;\n while (i < text.length) {\n const codePoint = text.codePointAt(i);\n if (codePoint === undefined) {\n throw new Error('Invalid Unicode code point');\n }\n yield codePoint;\n i += codePoint <= 0xffff ? 1 : 2;\n }\n}\n//# sourceMappingURL=getUnicodeCodepoints.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { PeekableIterator } from './PeekableGenerator.js';\nimport { getUnicodeCodepoints } from './getUnicodeCodepoints.js';\n/**\n * Measures a single-line of text width ignoring any unmapped glyphs including line breaks\n *\n * @param text\n * @param shaperProps\n * @param shaper\n * @returns\n */\nexport function measureText(text, shaperProps, shaper) {\n const glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, 0), 0));\n let width = 0;\n for (const glyph of glyphs) {\n if (glyph.mapped) {\n width += glyph.xAdvance;\n }\n }\n return width;\n}\n//# sourceMappingURL=measureText.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../../../utils.js';\nimport { PeekableIterator } from './PeekableGenerator.js';\nimport { getUnicodeCodepoints } from './getUnicodeCodepoints.js';\nimport { measureText } from './measureText.js';\nexport function layoutText(curLineIndex, startX, startY, text, textAlign, width, height, fontSize, lineHeight, letterSpacing, \n/**\n * Mutated\n */\nvertexBuffer, contain, \n/**\n * Mutated\n */\nlineCache, rwSdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines) {\n assertTruthy(trFontFace, 'Font face must be loaded');\n assertTruthy(trFontFace.loaded, 'Font face must be loaded');\n assertTruthy(trFontFace.data, 'Font face must be loaded');\n assertTruthy(trFontFace.shaper, 'Font face must be loaded');\n // Regardless of fontSize (or other scaling properties), we layout the vertices of each glyph\n // using the fixed coordinate space determined by font size used to produce the atlas.\n // Scaling for display is handled by shader uniforms inexpensively.\n // So we have:\n // - vertex space: the space in which the vertices of each glyph are laid out\n // - screen space: the screen pixel space\n // Input properties such as x, y, w, fontSize, letterSpacing, etc. are all expressed in screen space.\n // We convert these to the vertex space by dividing them the `fontSizeRatio` factor.\n /**\n * See above\n */\n const fontSizeRatio = fontSize / trFontFace.data.info.size;\n /**\n * `lineHeight` in vertex coordinates\n */\n const vertexLineHeight = lineHeight / fontSizeRatio;\n /**\n * `w` in vertex coordinates\n */\n const vertexW = width / fontSizeRatio;\n /**\n * `letterSpacing` in vertex coordinates\n */\n const vertexLSpacing = letterSpacing / fontSizeRatio;\n const startingLineCacheEntry = lineCache[curLineIndex];\n const startingCodepointIndex = startingLineCacheEntry?.codepointIndex || 0;\n const startingMaxX = startingLineCacheEntry?.maxX || 0;\n const startingMaxY = startingLineCacheEntry?.maxY || 0;\n let maxX = startingMaxX;\n let maxY = startingMaxY;\n let curX = startX;\n let curY = startY;\n let bufferOffset = 0;\n /**\n * Buffer offset to last word boundry. This is -1 when we aren't in a word boundry.\n */\n const lastWord = {\n codepointIndex: -1,\n bufferOffset: -1,\n xStart: -1,\n };\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const shaper = trFontFace.shaper;\n const shaperProps = {\n letterSpacing: vertexLSpacing,\n };\n // Get glyphs\n let glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, startingCodepointIndex), startingCodepointIndex));\n let glyphResult;\n let curLineBufferStart = -1;\n const bufferLineInfos = [];\n const vertexTruncateHeight = height / fontSizeRatio;\n const overflowSuffVertexWidth = measureText(overflowSuffix, shaperProps, shaper);\n // Line-by-line layout\n let moreLines = true;\n while (moreLines) {\n const nextLineWillFit = (maxLines === 0 || curLineIndex + 1 < maxLines) &&\n (contain !== 'both' ||\n scrollable ||\n curY + vertexLineHeight + trFontFace.maxCharHeight <=\n vertexTruncateHeight);\n const lineVertexW = nextLineWillFit\n ? vertexW\n : vertexW - overflowSuffVertexWidth;\n /**\n * Vertex X position to the beginning of the last word boundary. This becomes -1 when we start traversing a word.\n */\n let xStartLastWordBoundary = 0;\n const lineIsBelowWindowTop = curY + vertexLineHeight >= rwSdf.y1;\n const lineIsAboveWindowBottom = curY <= rwSdf.y2;\n const lineIsWithinWindow = lineIsBelowWindowTop && lineIsAboveWindowBottom;\n // Layout glyphs in this line\n // Any break statements in this while loop will trigger a line break\n while ((glyphResult = glyphs.next()) && !glyphResult.done) {\n const glyph = glyphResult.value;\n if (curLineIndex === lineCache.length) {\n lineCache.push({\n codepointIndex: glyph.cluster,\n maxY,\n maxX,\n });\n }\n else if (curLineIndex > lineCache.length) {\n throw new Error('Unexpected lineCache length');\n }\n // If we encounter a word boundary (white space or newline) we invalidate\n // the lastWord and set the xStartLastWordBoundary if we haven't already.\n if (glyph.codepoint === 32 || glyph.codepoint === 10) {\n if (lastWord.codepointIndex !== -1) {\n lastWord.codepointIndex = -1;\n xStartLastWordBoundary = curX;\n }\n }\n else if (lastWord.codepointIndex === -1) {\n lastWord.codepointIndex = glyph.cluster;\n lastWord.bufferOffset = bufferOffset;\n lastWord.xStart = xStartLastWordBoundary;\n }\n if (glyph.mapped) {\n // Mapped glyph\n const charEndX = curX + glyph.xOffset + glyph.width;\n // Word wrap check\n if (\n // We are containing the text\n contain !== 'none' &&\n // The current glyph reaches outside the contained width\n charEndX >= lineVertexW &&\n // There is a last word that we can break to the next line\n lastWord.codepointIndex !== -1 &&\n // Prevents infinite loop when a single word is longer than the width\n lastWord.xStart > 0) {\n // The current word is about to go off the edge of the container width\n // Reinitialize the iterator starting at the last word\n // and proceeding to the next line\n if (nextLineWillFit) {\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, lastWord.codepointIndex), lastWord.codepointIndex));\n bufferOffset = lastWord.bufferOffset;\n break;\n }\n else {\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0));\n curX = lastWord.xStart;\n bufferOffset = lastWord.bufferOffset;\n // HACK: For the rest of the line when inserting the overflow suffix,\n // set contain = 'none' to prevent an infinite loop.\n contain = 'none';\n }\n }\n else {\n // This glyph fits, so we can add it to the buffer\n const quadX = curX + glyph.xOffset;\n const quadY = curY + glyph.yOffset;\n // Only add to buffer for rendering if the line is within the render window\n if (lineIsWithinWindow) {\n if (curLineBufferStart === -1) {\n curLineBufferStart = bufferOffset;\n }\n const atlasEntry = trFontFace.getAtlasEntry(glyph.glyphId);\n // Add texture coordinates\n const u = atlasEntry.x / trFontFace.data.common.scaleW;\n const v = atlasEntry.y / trFontFace.data.common.scaleH;\n const uvWidth = atlasEntry.width / trFontFace.data.common.scaleW;\n const uvHeight = atlasEntry.height / trFontFace.data.common.scaleH;\n // TODO: (Performance) We can optimize this by using ELEMENT_ARRAY_BUFFER\n // eliminating the need to duplicate vertices\n // Top-left\n vertexBuffer[bufferOffset++] = quadX;\n vertexBuffer[bufferOffset++] = quadY;\n vertexBuffer[bufferOffset++] = u;\n vertexBuffer[bufferOffset++] = v;\n // Top-right\n vertexBuffer[bufferOffset++] = quadX + glyph.width;\n vertexBuffer[bufferOffset++] = quadY;\n vertexBuffer[bufferOffset++] = u + uvWidth;\n vertexBuffer[bufferOffset++] = v;\n // Bottom-left\n vertexBuffer[bufferOffset++] = quadX;\n vertexBuffer[bufferOffset++] = quadY + glyph.height;\n vertexBuffer[bufferOffset++] = u;\n vertexBuffer[bufferOffset++] = v + uvHeight;\n // Bottom-right\n vertexBuffer[bufferOffset++] = quadX + glyph.width;\n vertexBuffer[bufferOffset++] = quadY + glyph.height;\n vertexBuffer[bufferOffset++] = u + uvWidth;\n vertexBuffer[bufferOffset++] = v + uvHeight;\n }\n maxY = Math.max(maxY, quadY + glyph.height);\n maxX = Math.max(maxX, quadX + glyph.width);\n curX += glyph.xAdvance;\n }\n }\n else {\n // Unmapped character\n // Handle newlines\n if (glyph.codepoint === 10) {\n if (nextLineWillFit) {\n // The whole line fit, so we can break to the next line\n break;\n }\n else {\n // The whole line won't fit, so we need to add the overflow suffix\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0));\n // HACK: For the rest of the line when inserting the overflow suffix,\n // set contain = 'none' to prevent an infinite loop.\n contain = 'none';\n }\n }\n }\n }\n // Prepare for the next line...\n if (curLineBufferStart !== -1) {\n bufferLineInfos.push({\n bufferStart: curLineBufferStart,\n bufferEnd: bufferOffset,\n });\n curLineBufferStart = -1;\n }\n curX = 0;\n curY += vertexLineHeight;\n curLineIndex++;\n lastWord.codepointIndex = -1;\n xStartLastWordBoundary = 0;\n // Figure out if there are any more lines to render...\n if (!forceFullLayoutCalc && contain === 'both' && curY > rwSdf.y2) {\n // Stop layout calculation early (for performance purposes) if:\n // - We're not forcing a full layout calculation (for width/height calculation)\n // - ...and we're containing the text vertically+horizontally (contain === 'both')\n // - ...and we have a render window\n // - ...and the next line is below the bottom of the render window\n moreLines = false;\n }\n else if (glyphResult && glyphResult.done) {\n // If we've reached the end of the text, we know we're done\n moreLines = false;\n }\n else if (!nextLineWillFit) {\n // If we're contained vertically+horizontally (contain === 'both')\n // but not scrollable and the next line won't fit, we're done.\n moreLines = false;\n }\n }\n // Use textAlign to determine if we need to adjust the x position of the text\n // in the buffer line by line\n if (textAlign === 'center') {\n const vertexTextW = contain === 'none' ? maxX : vertexW;\n for (let i = 0; i < bufferLineInfos.length; i++) {\n const line = bufferLineInfos[i];\n // - 4 = the x position of a rightmost vertex\n const lineWidth = \n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n vertexBuffer[line.bufferEnd - 4] - vertexBuffer[line.bufferStart];\n const xOffset = (vertexTextW - lineWidth) / 2;\n for (let j = line.bufferStart; j < line.bufferEnd; j += 4) {\n vertexBuffer[j] += xOffset;\n }\n }\n }\n else if (textAlign === 'right') {\n const vertexTextW = contain === 'none' ? maxX : vertexW;\n for (let i = 0; i < bufferLineInfos.length; i++) {\n const line = bufferLineInfos[i];\n const lineWidth = line.bufferEnd === line.bufferStart\n ? 0\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n vertexBuffer[line.bufferEnd - 4] - vertexBuffer[line.bufferStart];\n const xOffset = vertexTextW - lineWidth;\n for (let j = line.bufferStart; j < line.bufferEnd; j += 4) {\n vertexBuffer[j] += xOffset;\n }\n }\n }\n assertTruthy(glyphResult);\n return {\n bufferNumFloats: bufferOffset,\n bufferNumQuads: bufferOffset / 16,\n layoutNumCharacters: glyphResult.done\n ? text.length - startingCodepointIndex\n : glyphResult.value.cluster - startingCodepointIndex + 1,\n fullyProcessed: !!glyphResult.done,\n maxX,\n maxY,\n };\n}\n//# sourceMappingURL=layoutText.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Round up to the nearest multiple of the given number.\n *\n * @param value\n * @param multiple\n * @returns\n */\nexport function roundUpToMultiple(value, multiple) {\n return Math.ceil(value / multiple) * multiple;\n}\n/**\n * Round down to the nearest multiple of the given number.\n *\n * @param value\n * @param multiple\n * @returns\n */\nexport function roundDownToMultiple(value, multiple) {\n return Math.floor(value / multiple) * multiple;\n}\n//# sourceMappingURL=util.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { isBoundPositive } from '../../../../lib/utils.js';\nimport { roundDownToMultiple, roundUpToMultiple } from './util.js';\n/**\n * Create a render window from the given parameters.\n *\n * @remarks\n * The render window is a rectangle that defines the area of the text that\n * should be rendered. It is used to skip rendering parts of the text that\n * are outside of the render window. The render window is relative to the\n * text's top left corner of the overrall text.\n *\n * @param x The x coordinate of the text element's top left corner relative to the screen.\n * @param y The y coordinate of the text element's top left corner relative to the screen.\n * @param scrollY The amount of pixels to scroll the text vertically.\n * @param lineHeight The number of extra lines to render above and below the visible window.\n * @param visibleWindow The visible window of the text element relative to the screen\n * @returns\n */\nexport function setRenderWindow(outRenderWindow, x, y, scrollY, lineHeight, bufferMargin, visibleWindow, fontSizeRatio) {\n const { screen, sdf } = outRenderWindow;\n if (!isBoundPositive(visibleWindow)) {\n screen.x1 = 0;\n screen.y1 = 0;\n screen.x2 = 0;\n screen.y2 = 0;\n sdf.x1 = 0;\n sdf.y1 = 0;\n sdf.x2 = 0;\n sdf.y2 = 0;\n outRenderWindow.numLines = 0;\n outRenderWindow.firstLineIdx = 0;\n }\n else {\n const x1 = visibleWindow.x1 - x;\n const x2 = x1 + (visibleWindow.x2 - visibleWindow.x1);\n const y1Base = visibleWindow.y1 - y + scrollY;\n const y1 = roundDownToMultiple(y1Base - bufferMargin, lineHeight || 1);\n const y2 = roundUpToMultiple(y1Base + (visibleWindow.y2 - visibleWindow.y1) + bufferMargin, lineHeight || 1);\n screen.x1 = x1;\n screen.y1 = y1;\n screen.x2 = x2;\n screen.y2 = y2;\n sdf.x1 = x1 / fontSizeRatio;\n sdf.y1 = y1 / fontSizeRatio;\n sdf.x2 = x2 / fontSizeRatio;\n sdf.y2 = y2 / fontSizeRatio;\n outRenderWindow.numLines = Math.ceil((y2 - y1) / lineHeight);\n outRenderWindow.firstLineIdx = lineHeight ? Math.floor(y1 / lineHeight) : 0;\n }\n outRenderWindow.valid = true;\n}\n//# sourceMappingURL=setRenderWindow.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport memize from 'memize';\nconst weightConversions = {\n normal: 400,\n bold: 700,\n bolder: 900,\n lighter: 100,\n};\nconst fontWeightToNumber = (weight) => {\n if (typeof weight === 'number') {\n return weight;\n }\n return weightConversions[weight] || 400;\n};\nfunction rawResolveFontToUse(familyMapsByPriority, family, weightIn, style, stretch) {\n let weight = fontWeightToNumber(weightIn);\n for (const fontFamiles of familyMapsByPriority) {\n const fontFaces = fontFamiles[family];\n if (!fontFaces) {\n continue;\n }\n if (fontFaces.size === 1) {\n // No Exact match found, find nearest weight match\n console.warn(`TrFontManager: Only one font face found for family: '${family}' - will be used for all weights and styles`);\n return fontFaces.values().next().value;\n }\n const weightMap = new Map();\n for (const fontFace of fontFaces) {\n const fontFamilyWeight = fontWeightToNumber(fontFace.descriptors.weight);\n if (fontFamilyWeight === weight &&\n fontFace.descriptors.style === style &&\n fontFace.descriptors.stretch === stretch) {\n return fontFace;\n }\n weightMap.set(fontFamilyWeight, fontFace);\n }\n // No Exact match found, find nearest weight match\n const msg = `TrFontManager: No exact match: '${family} Weight: ${weight} Style: ${style} Stretch: ${stretch}'`;\n console.error(msg);\n // Follow the CSS font-weight algorithm to find the nearest weight match\n // https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/#font-matching-algorithm\n if (weight === 400 && weightMap.has(500)) {\n return weightMap.get(500);\n }\n if (weight === 500 && weightMap.has(400)) {\n return weightMap.get(400);\n }\n if (weight < 400) {\n while (weight > 0) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight -= 100;\n }\n // reset back for the next loop\n weight = 600;\n }\n while (weight < 1000) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight += 100;\n }\n // finally check lower again\n weight = 500;\n while (weight > 0) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight -= 100;\n }\n }\n return;\n}\nconst resolveFontToUse = memize(rawResolveFontToUse);\nexport class TrFontManager {\n textRenderers;\n constructor(textRenderers) {\n this.textRenderers = textRenderers;\n // Intentionally left blank\n }\n addFontFace(font) {\n // All the font face to all of the text renderers that support it\n for (const trId in this.textRenderers) {\n const tr = this.textRenderers[trId];\n if (tr && tr.isFontFaceSupported(font)) {\n tr.addFontFace(font);\n }\n }\n }\n /**\n * Utility method to resolve a single font face from a list of prioritized family maps based on\n * a set of font properties.\n *\n * @remarks\n * These are to be used by a text renderer to resolve a font face if needed.\n *\n * @param familyMapsByPriority\n * @param props\n * @returns\n */\n static resolveFontFace(familyMapsByPriority, props) {\n const { fontFamily, fontWeight, fontStyle, fontStretch } = props;\n return resolveFontToUse(familyMapsByPriority, fontFamily, fontWeight, fontStyle, fontStretch);\n }\n}\n//# sourceMappingURL=TrFontManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createBound, intersectRect, copyRect, boundsOverlap, convertBoundToRect, } from '../../../lib/utils.js';\nimport { TextRenderer, } from '../TextRenderer.js';\nimport { SdfTrFontFace } from '../../font-face-types/SdfTrFontFace/SdfTrFontFace.js';\nimport { FLOATS_PER_GLYPH } from './internal/constants.js';\nimport { getStartConditions } from './internal/getStartConditions.js';\nimport { layoutText } from './internal/layoutText.js';\nimport { setRenderWindow, } from './internal/setRenderWindow.js';\nimport { TrFontManager } from '../../TrFontManager.js';\nimport { assertTruthy, mergeColorAlpha } from '../../../../utils.js';\nimport { WebGlCoreRenderOp } from '../../../renderers/webgl/WebGlCoreRenderOp.js';\nimport { BufferCollection } from '../../../renderers/webgl/internal/BufferCollection.js';\nimport { EventEmitter } from '../../../../common/EventEmitter.js';\n/**\n * Ephemeral rect object used for calculations\n */\nconst tmpRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n};\n/**\n * Singleton class for rendering text using signed distance fields.\n *\n * @remarks\n * SdfTextRenderer supports both single-channel and multi-channel signed distance fields.\n */\nexport class SdfTextRenderer extends TextRenderer {\n /**\n * Map of font family names to a set of font faces.\n */\n ssdfFontFamilies = {};\n msdfFontFamilies = {};\n fontFamilyArray = [\n this.ssdfFontFamilies,\n this.msdfFontFamilies,\n ];\n sdfShader;\n rendererBounds;\n constructor(stage) {\n super(stage);\n this.sdfShader = this.stage.shManager.loadShader('SdfShader').shader;\n this.rendererBounds = {\n x1: 0,\n y1: 0,\n x2: this.stage.options.appWidth,\n y2: this.stage.options.appHeight,\n };\n }\n //#region Overrides\n getPropertySetters() {\n return {\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n this.invalidateLayoutCache(state);\n },\n text: (state, value) => {\n state.props.text = value;\n this.invalidateLayoutCache(state);\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n this.invalidateLayoutCache(state);\n },\n color: (state, value) => {\n state.props.color = value;\n },\n x: (state, value) => {\n state.props.x = value;\n if (state.elementBounds.valid) {\n this.setElementBoundsX(state);\n // Only schedule an update if the text is not already rendered\n // (renderWindow is invalid) and the element possibly overlaps the screen\n // This is to avoid unnecessary updates when we know text is off-screen\n if (!state.renderWindow.valid &&\n boundsOverlap(state.elementBounds, this.rendererBounds)) {\n this.scheduleUpdateState(state);\n }\n }\n },\n y: (state, value) => {\n state.props.y = value;\n if (state.elementBounds.valid) {\n this.setElementBoundsY(state);\n // See x() for explanation\n if (!state.renderWindow.valid &&\n boundsOverlap(state.elementBounds, this.rendererBounds)) {\n this.scheduleUpdateState(state);\n }\n }\n },\n contain: (state, value) => {\n state.props.contain = value;\n this.invalidateLayoutCache(state);\n },\n width: (state, value) => {\n state.props.width = value;\n // Only invalidate layout cache if we're containing in the horizontal direction\n if (state.props.contain !== 'none') {\n this.invalidateLayoutCache(state);\n }\n },\n height: (state, value) => {\n state.props.height = value;\n // Only invalidate layout cache if we're containing in the vertical direction\n if (state.props.contain === 'both') {\n this.invalidateLayoutCache(state);\n }\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n this.invalidateLayoutCache(state);\n },\n scrollable: (state, value) => {\n state.props.scrollable = value;\n this.invalidateLayoutCache(state);\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n // Scrolling doesn't need to invalidate any caches, but it does need to\n // schedule an update\n this.scheduleUpdateState(state);\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n this.invalidateLayoutCache(state);\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n this.invalidateLayoutCache(state);\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n this.invalidateLayoutCache(state);\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n this.invalidateLayoutCache(state);\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n this.invalidateLayoutCache(state);\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n this.invalidateLayoutCache(state);\n },\n debug: (state, value) => {\n state.props.debug = value;\n },\n };\n }\n canRenderFont(props) {\n // TODO: Support matching on font stretch, weight and style (if/when needed)\n // For now we just match on the font family name\n // '$$SDF_FAILURE_TEST$$' is used to test the 'failure' event coming from text\n const { fontFamily } = props;\n return (fontFamily in this.ssdfFontFamilies ||\n fontFamily in this.msdfFontFamilies ||\n fontFamily === '$$SDF_FAILURE_TEST$$');\n }\n isFontFaceSupported(fontFace) {\n return fontFace instanceof SdfTrFontFace;\n }\n addFontFace(fontFace) {\n // Make sure the font face is an SDF font face (it should have already passed\n // the `isFontFaceSupported` check)\n assertTruthy(fontFace instanceof SdfTrFontFace);\n const familyName = fontFace.fontFamily;\n const fontFamiles = fontFace.type === 'ssdf'\n ? this.ssdfFontFamilies\n : fontFace.type === 'msdf'\n ? this.msdfFontFamilies\n : undefined;\n if (!fontFamiles) {\n console.warn(`Invalid font face type: ${fontFace.type}`);\n return;\n }\n let faceSet = fontFamiles[familyName];\n if (!faceSet) {\n faceSet = new Set();\n fontFamiles[familyName] = faceSet;\n }\n faceSet.add(fontFace);\n }\n createState(props) {\n return {\n props,\n status: 'initialState',\n updateScheduled: false,\n emitter: new EventEmitter(),\n lineCache: [],\n forceFullLayoutCalc: false,\n renderWindow: {\n screen: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n },\n sdf: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n },\n firstLineIdx: 0,\n numLines: 0,\n valid: false,\n },\n elementBounds: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n valid: false,\n },\n clippingRect: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n },\n bufferNumFloats: 0,\n bufferNumQuads: 0,\n vertexBuffer: undefined,\n webGlBuffers: null,\n bufferUploaded: false,\n textH: undefined,\n textW: undefined,\n distanceRange: 0,\n trFontFace: undefined,\n isRenderable: false,\n debugData: {\n updateCount: 0,\n layoutCount: 0,\n lastLayoutNumCharacters: 0,\n layoutSum: 0,\n drawSum: 0,\n drawCount: 0,\n bufferSize: 0,\n },\n };\n }\n updateState(state) {\n let { trFontFace } = state;\n const { textH, lineCache, debugData, forceFullLayoutCalc } = state;\n debugData.updateCount++;\n // On the first update call we need to set the status to loading\n if (state.status === 'initialState') {\n this.setStatus(state, 'loading');\n }\n // Resolve font face if we haven't yet\n if (!trFontFace) {\n trFontFace = this.resolveFontFace(state.props);\n state.trFontFace = trFontFace;\n if (!trFontFace) {\n const msg = `SdfTextRenderer: Could not resolve font face for family: '${state.props.fontFamily}'`;\n console.error(msg);\n this.setStatus(state, 'failed', new Error(msg));\n return;\n }\n trFontFace.texture.setRenderableOwner(state, state.isRenderable);\n }\n // If the font hasn't been loaded yet, stop here.\n // Listen for the 'loaded' event and forward fontLoaded event\n if (!trFontFace.loaded) {\n trFontFace.once('loaded', () => {\n this.scheduleUpdateState(state);\n });\n return;\n }\n // If the font is loaded then so should the data\n assertTruthy(trFontFace.data, 'Font face data should be loaded');\n const { text, fontSize, x, y, contain, width, height, lineHeight, verticalAlign, scrollable, overflowSuffix, maxLines, } = state.props;\n // scrollY only has an effect when contain === 'both' and scrollable === true\n const scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0;\n const { renderWindow } = state;\n /**\n * The font size of the SDF font face (the basis for SDF space units)\n */\n const sdfFontSize = trFontFace.data.info.size;\n /**\n * Divide screen space units by this to get the SDF space units\n * Mulitple SDF space units by this to get screen space units\n */\n const fontSizeRatio = fontSize / sdfFontSize;\n // Needed in renderWindow calculation\n const sdfLineHeight = lineHeight / fontSizeRatio;\n state.distanceRange =\n fontSizeRatio * trFontFace.data.distanceField.distanceRange;\n // Allocate buffers if needed\n const neededLength = text.length * FLOATS_PER_GLYPH;\n let vertexBuffer = state.vertexBuffer;\n if (!vertexBuffer || vertexBuffer.length < neededLength) {\n vertexBuffer = new Float32Array(neededLength * 2);\n }\n const elementBounds = state.elementBounds;\n if (!elementBounds.valid) {\n this.setElementBoundsX(state);\n this.setElementBoundsY(state);\n elementBounds.valid = true;\n }\n // Return early if we're still viewing inside the established render window\n // No need to re-render what we've already rendered\n // (Only if there's an established renderWindow and we're not suppressing early exit)\n if (!forceFullLayoutCalc && renderWindow.valid) {\n const rwScreen = renderWindow.screen;\n if (x + rwScreen.x1 <= elementBounds.x1 &&\n x + rwScreen.x2 >= elementBounds.x2 &&\n y - scrollY + rwScreen.y1 <= elementBounds.y1 &&\n y - scrollY + rwScreen.y2 >= elementBounds.y2) {\n this.setStatus(state, 'loaded');\n return;\n }\n // Otherwise invalidate the renderWindow so it can be redone\n renderWindow.valid = false;\n this.setStatus(state, 'loading');\n }\n const { offsetY, textAlign } = state.props;\n // Create a new renderWindow if needed\n if (!renderWindow.valid) {\n const isPossiblyOnScreen = boundsOverlap(elementBounds, this.rendererBounds);\n if (!isPossiblyOnScreen) {\n // If the element is not possibly on screen, we can skip the layout and rendering completely\n return;\n }\n setRenderWindow(renderWindow, x, y, scrollY, lineHeight, contain === 'both' ? elementBounds.y2 - elementBounds.y1 : 0, elementBounds, fontSizeRatio);\n // console.log('newRenderWindow', renderWindow);\n }\n const start = getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH);\n if (!start) {\n // Nothing to render, return early, but still mark as loaded (since the text is just scrolled\n // out of view)\n this.setStatus(state, 'loaded');\n return;\n }\n const { letterSpacing } = state.props;\n const out2 = layoutText(start.lineIndex, start.sdfX, start.sdfY, text, textAlign, width, height, fontSize, lineHeight, letterSpacing, vertexBuffer, contain, lineCache, renderWindow.sdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines);\n state.bufferUploaded = false;\n state.bufferNumFloats = out2.bufferNumFloats;\n state.bufferNumQuads = out2.bufferNumQuads;\n state.vertexBuffer = vertexBuffer;\n state.renderWindow = renderWindow;\n debugData.lastLayoutNumCharacters = out2.layoutNumCharacters;\n debugData.bufferSize = vertexBuffer.byteLength;\n // If we didn't exit early, we know we have completely computed w/h\n if (out2.fullyProcessed) {\n state.textW = out2.maxX * fontSizeRatio;\n state.textH = out2.maxY * fontSizeRatio;\n }\n // if (state.props.debug.printLayoutTime) {\n // debugData.layoutSum += performance.now() - updateStartTime;\n // debugData.layoutCount++;\n // }\n this.setStatus(state, 'loaded');\n }\n renderQuads(state, transform, clippingRect, alpha, parentHasRenderTexture, framebufferDimensions) {\n if (!state.vertexBuffer) {\n // Nothing to draw\n return;\n }\n const { renderer } = this.stage;\n const { fontSize, color, contain, scrollable, zIndex, debug } = state.props;\n // scrollY only has an effect when contain === 'both' and scrollable === true\n const scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0;\n const { textW = 0, textH = 0, distanceRange, vertexBuffer, bufferUploaded, trFontFace, elementBounds, } = state;\n let { webGlBuffers } = state;\n if (!webGlBuffers) {\n const glw = renderer.glw;\n const stride = 4 * Float32Array.BYTES_PER_ELEMENT;\n const webGlBuffer = glw.createBuffer();\n assertTruthy(webGlBuffer);\n state.webGlBuffers = new BufferCollection([\n {\n buffer: webGlBuffer,\n attributes: {\n a_position: {\n name: 'a_position',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 0, // start at the beginning of the buffer\n },\n a_textureCoordinate: {\n name: 'a_textureCoordinate',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 2 * Float32Array.BYTES_PER_ELEMENT,\n },\n },\n },\n ]);\n state.bufferUploaded = false;\n assertTruthy(state.webGlBuffers);\n webGlBuffers = state.webGlBuffers;\n }\n if (!bufferUploaded) {\n const glw = renderer.glw;\n const buffer = webGlBuffers?.getBuffer('a_textureCoordinate') ?? null;\n glw.arrayBufferData(buffer, vertexBuffer, glw.STATIC_DRAW);\n state.bufferUploaded = true;\n }\n assertTruthy(trFontFace);\n if (scrollable && contain === 'both') {\n assertTruthy(elementBounds.valid);\n const elementRect = convertBoundToRect(elementBounds, tmpRect);\n if (clippingRect.valid) {\n state.clippingRect.valid = true;\n clippingRect = intersectRect(clippingRect, elementRect, state.clippingRect);\n }\n else {\n state.clippingRect.valid = true;\n clippingRect = copyRect(elementRect, state.clippingRect);\n }\n }\n const renderOp = new WebGlCoreRenderOp(renderer.glw, renderer.options, webGlBuffers, this.sdfShader, {\n transform: transform.data,\n // IMPORTANT: The SDF Shader expects the color NOT to be premultiplied\n // for the best blending results. Which is why we use `mergeColorAlpha`\n // instead of `mergeColorAlphaPremultiplied` here.\n color: mergeColorAlpha(color, alpha),\n size: fontSize / (trFontFace.data?.info.size || 0),\n scrollY,\n distanceRange,\n debug: debug.sdfShaderDebug,\n }, alpha, clippingRect, { height: textH, width: textW }, 0, zIndex, false, parentHasRenderTexture, framebufferDimensions);\n const texture = state.trFontFace?.texture;\n assertTruthy(texture);\n const ctxTexture = this.stage.txManager.getCtxTexture(texture);\n renderOp.addTexture(ctxTexture);\n renderOp.length = state.bufferNumFloats;\n renderOp.numQuads = state.bufferNumQuads;\n renderer.addRenderOp(renderOp);\n // if (!debug.disableScissor) {\n // renderer.enableScissor(\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // Draw the arrays\n // gl.drawArrays(\n // gl.TRIANGLES, // Primitive type\n // 0,\n // bufferNumVertices, // Number of verticies\n // );\n // renderer.disableScissor();\n // if (debug.showElementRect) {\n // this.renderer.drawBorder(\n // Colors.Blue,\n // elementRect.x,\n // elementRect.y,\n // elementRect.w,\n // elementRect.h,\n // );\n // }\n // if (debug.showVisibleRect) {\n // this.renderer.drawBorder(\n // Colors.Green,\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // if (debug.showRenderWindow && renderWindow) {\n // this.renderer.drawBorder(\n // Colors.Red,\n // x + renderWindow.x1,\n // y + renderWindow.y1 - scrollY,\n // x + renderWindow.x2 - (x + renderWindow.x1),\n // y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY),\n // );\n // }\n // if (debug.printLayoutTime) {\n // debugData.drawSum += performance.now() - drawStartTime;\n // debugData.drawCount++;\n // }\n }\n setIsRenderable(state, renderable) {\n super.setIsRenderable(state, renderable);\n state.trFontFace?.texture.setRenderableOwner(state, renderable);\n }\n destroyState(state) {\n super.destroyState(state);\n // If there's a Font Face assigned we must free the owner relation to its texture\n state.trFontFace?.texture.setRenderableOwner(state, false);\n }\n //#endregion Overrides\n resolveFontFace(props) {\n return TrFontManager.resolveFontFace(this.fontFamilyArray, props);\n }\n /**\n * Release the loaded SDF font face\n *\n * @param state\n */\n releaseFontFace(state) {\n if (state.trFontFace) {\n state.trFontFace.texture.setRenderableOwner(state, false);\n state.trFontFace = undefined;\n }\n }\n /**\n * Invalidate the layout cache stored in the state. This will cause the text\n * to be re-layed out on the next update.\n *\n * @remarks\n * This also invalidates the visible window cache.\n *\n * @param state\n */\n invalidateLayoutCache(state) {\n state.renderWindow.valid = false;\n state.elementBounds.valid = false;\n state.textH = undefined;\n state.textW = undefined;\n state.lineCache = [];\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n setElementBoundsX(state) {\n const { x, contain, width } = state.props;\n const { elementBounds } = state;\n elementBounds.x1 = x;\n elementBounds.x2 = contain !== 'none' ? x + width : Infinity;\n }\n setElementBoundsY(state) {\n const { y, contain, height } = state.props;\n const { elementBounds } = state;\n elementBounds.y1 = y;\n elementBounds.y2 = contain === 'both' ? y + height : Infinity;\n }\n}\n//# sourceMappingURL=SdfTextRenderer.js.map","import { CoreExtension } from '../../exports/core-api.js';\n/**\n * Type guard that checks if a Class extends CoreExtension.\n *\n * @param Class\n * @returns\n */\nexport function classExtendsCoreExtension(Class) {\n return Class.prototype instanceof CoreExtension;\n}\nexport async function loadCoreExtension(coreExtensionModule, stage) {\n let module;\n try {\n console.log('Loading core extension', coreExtensionModule);\n module = (await import(coreExtensionModule /* @vite-ignore */));\n }\n catch (e) {\n console.error(`The core extension module at '${coreExtensionModule}' could not be loaded.`);\n console.error(e);\n return;\n }\n if (!module.default) {\n console.error(`The core extension module at '${coreExtensionModule}' does not have a default export.`);\n return;\n }\n const ExtensionClass = module.default;\n if (classExtendsCoreExtension(ExtensionClass)) {\n const coreExtension = new ExtensionClass();\n try {\n await coreExtension.run(stage);\n }\n catch (e) {\n console.error(`The core extension at '${coreExtensionModule}' threw an error.`);\n console.error(e);\n }\n }\n else {\n console.error(`The core extension at '${coreExtensionModule}' does not extend CoreExtension.`);\n }\n}\nexport function santizeCustomDataMap(d) {\n const validTypes = { boolean: true, string: true, number: true };\n const keys = Object.keys(d);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!key) {\n continue;\n }\n const value = d[key];\n const valueType = typeof value;\n // Typescript doesn't understand the above const valueType ¯\\_(ツ)_/¯\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore-next-line\n if (valueType === 'string' && value.length > 2048) {\n console.warn(`Custom Data value for ${key} is too long, it will be truncated to 2048 characters`);\n // same here, see above comment, this can only be a string at this point\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore-next-line\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n d[key] = value.substring(0, 2048);\n }\n if (!validTypes[valueType]) {\n console.warn(`Custom Data value for ${key} is not a boolean, string, or number, it will be ignored`);\n delete d[key];\n }\n }\n return d;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ManualCountTextureUsageTracker, } from './texture-usage-trackers/ManualCountTextureUsageTracker.js';\nimport { FinalizationRegistryTextureUsageTracker } from './texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { Inspector } from './Inspector.js';\nimport { santizeCustomDataMap } from '../render-drivers/utils.js';\nimport { isProductionEnvironment } from '../utils.js';\n/**\n * The Renderer Main API\n *\n * @remarks\n * This is the primary class used to configure and operate the Renderer.\n *\n * It is used to create and destroy Nodes, as well as Texture and Shader\n * references.\n *\n * Example:\n * ```ts\n * import { RendererMain, MainCoreDriver } from '@lightningjs/renderer';\n *\n * // Initialize the Renderer\n * const renderer = new RendererMain(\n * {\n * appWidth: 1920,\n * appHeight: 1080\n * },\n * 'app',\n * new MainCoreDriver(),\n * );\n * ```\n */\nexport class RendererMain extends EventEmitter {\n root = null;\n driver;\n canvas;\n settings;\n inspector = null;\n nodes = new Map();\n nextTextureId = 1;\n /**\n * Texture Usage Tracker for Usage Based Texture Garbage Collection\n *\n * @remarks\n * For internal use only. DO NOT ACCESS.\n */\n textureTracker;\n /**\n * Constructs a new Renderer instance\n *\n * @param settings Renderer settings\n * @param target Element ID or HTMLElement to insert the canvas into\n * @param driver Core Driver to use\n */\n constructor(settings, target, driver) {\n super();\n const resolvedSettings = {\n appWidth: settings.appWidth || 1920,\n appHeight: settings.appHeight || 1080,\n txMemByteThreshold: settings.txMemByteThreshold || 124e6,\n boundsMargin: settings.boundsMargin || 0,\n deviceLogicalPixelRatio: settings.deviceLogicalPixelRatio || 1,\n devicePhysicalPixelRatio: settings.devicePhysicalPixelRatio || window.devicePixelRatio,\n clearColor: settings.clearColor ?? 0x00000000,\n coreExtensionModule: settings.coreExtensionModule || null,\n experimental_FinalizationRegistryTextureUsageTracker: settings.experimental_FinalizationRegistryTextureUsageTracker ?? false,\n textureCleanupOptions: settings.textureCleanupOptions || {},\n fpsUpdateInterval: settings.fpsUpdateInterval || 0,\n numImageWorkers: settings.numImageWorkers !== undefined ? settings.numImageWorkers : 2,\n enableContextSpy: settings.enableContextSpy ?? false,\n enableInspector: settings.enableInspector ?? false,\n };\n this.settings = resolvedSettings;\n const { appWidth, appHeight, deviceLogicalPixelRatio, devicePhysicalPixelRatio, enableInspector, } = resolvedSettings;\n const releaseCallback = (textureId) => {\n this.driver.releaseTexture(textureId);\n };\n const useFinalizationRegistryTracker = resolvedSettings.experimental_FinalizationRegistryTextureUsageTracker &&\n typeof FinalizationRegistry === 'function';\n this.textureTracker = useFinalizationRegistryTracker\n ? new FinalizationRegistryTextureUsageTracker(releaseCallback)\n : new ManualCountTextureUsageTracker(releaseCallback, this.settings.textureCleanupOptions);\n const deviceLogicalWidth = appWidth * deviceLogicalPixelRatio;\n const deviceLogicalHeight = appHeight * deviceLogicalPixelRatio;\n this.driver = driver;\n const canvas = document.createElement('canvas');\n this.canvas = canvas;\n canvas.width = deviceLogicalWidth * devicePhysicalPixelRatio;\n canvas.height = deviceLogicalHeight * devicePhysicalPixelRatio;\n canvas.style.width = `${deviceLogicalWidth}px`;\n canvas.style.height = `${deviceLogicalHeight}px`;\n let targetEl;\n if (typeof target === 'string') {\n targetEl = document.getElementById(target);\n }\n else {\n targetEl = target;\n }\n if (!targetEl) {\n throw new Error('Could not find target element');\n }\n // Hook up the driver's callbacks\n driver.onCreateNode = (node) => {\n this.nodes.set(node.id, node);\n };\n driver.onBeforeDestroyNode = (node) => {\n this.nodes.delete(node.id);\n };\n driver.onFpsUpdate = (fpsData) => {\n this.emit('fpsUpdate', fpsData);\n };\n driver.onFrameTick = (frameTickData) => {\n this.emit('frameTick', frameTickData);\n };\n driver.onIdle = () => {\n this.emit('idle');\n };\n targetEl.appendChild(canvas);\n if (enableInspector && !isProductionEnvironment()) {\n this.inspector = new Inspector(canvas, resolvedSettings);\n }\n }\n /**\n * Initialize the renderer\n *\n * @remarks\n * This method must be called and resolved asyncronously before any other\n * methods are called.\n */\n async init() {\n await this.driver.init(this, this.settings, this.canvas);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.root = this.driver.getRootNode();\n }\n /**\n * Create a new scene graph node\n *\n * @remarks\n * A node is the main graphical building block of the Renderer scene graph. It\n * can be a container for other nodes, or it can be a leaf node that renders a\n * solid color, gradient, image, or specific texture, using a specific shader.\n *\n * To create a text node, see {@link createTextNode}.\n *\n * See {@link INode} for more details.\n *\n * @param props\n * @returns\n */\n createNode(props) {\n if (this.inspector) {\n return this.inspector.createNode(this.driver, this.resolveNodeDefaults(props));\n }\n return this.driver.createNode(this.resolveNodeDefaults(props));\n }\n /**\n * Create a new scene graph text node\n *\n * @remarks\n * A text node is the second graphical building block of the Renderer scene\n * graph. It renders text using a specific text renderer that is automatically\n * chosen based on the font requested and what type of fonts are installed\n * into an app via a CoreExtension.\n *\n * See {@link ITextNode} for more details.\n *\n * @param props\n * @returns\n */\n createTextNode(props) {\n const fontSize = props.fontSize ?? 16;\n const data = {\n ...this.resolveNodeDefaults(props),\n text: props.text ?? '',\n textRendererOverride: props.textRendererOverride ?? null,\n fontSize,\n fontFamily: props.fontFamily ?? 'sans-serif',\n fontStyle: props.fontStyle ?? 'normal',\n fontWeight: props.fontWeight ?? 'normal',\n fontStretch: props.fontStretch ?? 'normal',\n textAlign: props.textAlign ?? 'left',\n contain: props.contain ?? 'none',\n scrollable: props.scrollable ?? false,\n scrollY: props.scrollY ?? 0,\n offsetY: props.offsetY ?? 0,\n letterSpacing: props.letterSpacing ?? 0,\n lineHeight: props.lineHeight ?? fontSize,\n maxLines: props.maxLines ?? 0,\n textBaseline: props.textBaseline ?? 'alphabetic',\n verticalAlign: props.verticalAlign ?? 'top',\n overflowSuffix: props.overflowSuffix ?? '...',\n debug: props.debug ?? {},\n };\n if (this.inspector) {\n return this.inspector.createTextNode(this.driver, data);\n }\n return this.driver.createTextNode(data);\n }\n /**\n * Resolves the default property values for a Node\n *\n * @remarks\n * This method is used internally by the RendererMain to resolve the default\n * property values for a Node. It is exposed publicly so that it can be used\n * by Core Driver implementations.\n *\n * @param props\n * @returns\n */\n resolveNodeDefaults(props) {\n const color = props.color ?? 0xffffffff;\n const colorTl = props.colorTl ?? props.colorTop ?? props.colorLeft ?? color;\n const colorTr = props.colorTr ?? props.colorTop ?? props.colorRight ?? color;\n const colorBl = props.colorBl ?? props.colorBottom ?? props.colorLeft ?? color;\n const colorBr = props.colorBr ?? props.colorBottom ?? props.colorRight ?? color;\n const data = santizeCustomDataMap(props.data ?? {});\n const parentHasRenderTexture = props.parent?.rtt ?? props.parent?.parentHasRenderTexture ?? false;\n return {\n x: props.x ?? 0,\n y: props.y ?? 0,\n width: props.width ?? 0,\n height: props.height ?? 0,\n alpha: props.alpha ?? 1,\n autosize: props.autosize ?? false,\n clipping: props.clipping ?? false,\n color,\n colorTop: props.colorTop ?? color,\n colorBottom: props.colorBottom ?? color,\n colorLeft: props.colorLeft ?? color,\n colorRight: props.colorRight ?? color,\n colorBl,\n colorBr,\n colorTl,\n colorTr,\n zIndex: props.zIndex ?? 0,\n zIndexLocked: props.zIndexLocked ?? 0,\n parent: props.parent ?? null,\n texture: props.texture ?? null,\n shader: props.shader ?? null,\n // Since setting the `src` will trigger a texture load, we need to set it after\n // we set the texture. Otherwise, problems happen.\n src: props.src ?? '',\n scale: props.scale ?? null,\n scaleX: props.scaleX ?? props.scale ?? 1,\n scaleY: props.scaleY ?? props.scale ?? 1,\n mount: props.mount ?? 0,\n mountX: props.mountX ?? props.mount ?? 0,\n mountY: props.mountY ?? props.mount ?? 0,\n pivot: props.pivot ?? 0.5,\n pivotX: props.pivotX ?? props.pivot ?? 0.5,\n pivotY: props.pivotY ?? props.pivot ?? 0.5,\n rotation: props.rotation ?? 0,\n rtt: props.rtt ?? false,\n parentHasRenderTexture,\n data: data,\n };\n }\n /**\n * Destroy a node\n *\n * @remarks\n * This method destroys a node but does not destroy its children.\n *\n * @param node\n * @returns\n */\n destroyNode(node) {\n if (this.inspector) {\n this.inspector.destroyNode(node);\n }\n return this.driver.destroyNode(node);\n }\n /**\n * Create a new texture reference\n *\n * @remarks\n * This method creates a new reference to a texture. The texture is not\n * loaded until it is used on a node.\n *\n * It can be assigned to a node's `texture` property, or it can be used\n * when creating a SubTexture.\n *\n * @param textureType\n * @param props\n * @param options\n * @returns\n */\n createTexture(textureType, props, options) {\n const id = this.nextTextureId++;\n const desc = {\n descType: 'texture',\n txType: textureType,\n props,\n options: {\n ...options,\n // This ID is used to identify the texture in the CoreTextureManager's\n // ID Texture Map cache.\n id,\n },\n };\n this.textureTracker.registerTexture(desc);\n return desc;\n }\n /**\n * Create a new shader reference\n *\n * @remarks\n * This method creates a new reference to a shader. The shader is not\n * loaded until it is used on a Node.\n *\n * It can be assigned to a Node's `shader` property.\n *\n * @param shaderType\n * @param props\n * @returns\n */\n createShader(shaderType, props) {\n return {\n descType: 'shader',\n shType: shaderType,\n props: props,\n };\n }\n /**\n * Get a Node by its ID\n *\n * @param id\n * @returns\n */\n getNodeById(id) {\n return this.nodes.get(id) || null;\n }\n toggleFreeze() {\n throw new Error('Not implemented');\n }\n advanceFrame() {\n throw new Error('Not implemented');\n }\n /**\n * Re-render the current frame without advancing any running animations.\n *\n * @remarks\n * Any state changes will be reflected in the re-rendered frame. Useful for\n * debugging.\n *\n * May not do anything if the render loop is running on a separate worker.\n */\n rerender() {\n throw new Error('Not implemented');\n }\n}\n//# sourceMappingURL=RendererMain.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getTimingFunction } from '../utils.js';\nimport { mergeColorProgress } from '../../utils.js';\nimport { EventEmitter } from '../../common/EventEmitter.js';\nexport class CoreAnimation extends EventEmitter {\n node;\n props;\n settings;\n propStartValues = {};\n restoreValues = {};\n progress = 0;\n delayFor = 0;\n timingFunction;\n propsList; //fixme - aint got not time for this\n constructor(node, props, settings) {\n super();\n this.node = node;\n this.props = props;\n this.settings = settings;\n this.propStartValues = {};\n this.propsList = Object.keys(props);\n this.propsList.forEach((propName) => {\n this.propStartValues[propName] = node[propName];\n });\n this.timingFunction = (t) => t;\n if (settings.easing && typeof settings.easing === 'string') {\n this.timingFunction = getTimingFunction(settings.easing);\n }\n this.delayFor = settings.delay || 0;\n }\n reset() {\n this.progress = 0;\n this.delayFor = this.settings.delay || 0;\n this.update(0);\n }\n restore() {\n this.reset();\n Object.keys(this.props).forEach((propName) => {\n this.node[propName] = this.propStartValues[propName];\n });\n }\n reverse() {\n this.progress = 0;\n Object.keys(this.props).forEach((propName) => {\n // set the start value to the current value\n const startValue = this.props[propName];\n const endValue = this.propStartValues[propName];\n // swap the start and end values\n this.props[propName] = endValue;\n this.propStartValues[propName] = startValue;\n });\n // restore stop method if we are not looping\n if (!this.settings.loop) {\n this.settings.stopMethod = false;\n }\n }\n applyEasing(p, s, e) {\n return (this.timingFunction(p) || p) * (e - s) + s;\n }\n update(dt) {\n const { duration, loop, easing, stopMethod } = this.settings;\n if (!duration) {\n this.emit('finished', {});\n return;\n }\n if (this.delayFor > 0) {\n this.delayFor -= dt;\n return;\n }\n if (this.delayFor <= 0 && this.progress === 0) {\n this.emit('start', {});\n }\n this.progress += dt / duration;\n if (this.progress > 1) {\n this.progress = loop ? 0 : 1;\n if (stopMethod) {\n // If there's a stop method emit finished so the stop method can be applied.\n // TODO: We should probably reevaluate how stopMethod is implemented as currently\n // stop method 'reset' does not work when looping.\n this.emit('finished', {});\n return;\n }\n }\n for (let i = 0; i < this.propsList.length; i++) {\n const propName = this.propsList[i];\n const propValue = this.props[propName];\n const startValue = this.propStartValues[propName];\n const endValue = propValue;\n if (propName.indexOf('color') !== -1) {\n // check if we have to change the color to begin with\n if (startValue === endValue) {\n this.node[propName] = startValue;\n continue;\n }\n if (easing) {\n const easingProgressValue = this.timingFunction(this.progress) || this.progress;\n const easingColorValue = mergeColorProgress(startValue, endValue, easingProgressValue);\n this.node[propName] = easingColorValue;\n continue;\n }\n this.node[propName] = mergeColorProgress(startValue, endValue, this.progress);\n continue;\n }\n if (easing) {\n this.node[propName] = this.applyEasing(this.progress, startValue, endValue);\n continue;\n }\n this.node[propName] =\n startValue + (endValue - startValue) * this.progress;\n }\n if (this.progress === 1) {\n this.emit('finished', {});\n }\n }\n}\n//# sourceMappingURL=CoreAnimation.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nexport class CoreAnimationController {\n manager;\n animation;\n startedPromise = null;\n /**\n * If this is null, then the animation hasn't started yet.\n */\n startedResolve = null;\n stoppedPromise = null;\n /**\n * If this is null, then the animation is in a finished / stopped state.\n */\n stoppedResolve = null;\n constructor(manager, animation) {\n this.manager = manager;\n this.animation = animation;\n this.state = 'stopped';\n }\n state;\n start() {\n this.makeStartedPromise();\n this.animation.once('start', this.started.bind(this));\n this.makeStoppedPromise();\n this.animation.once('finished', this.finished.bind(this));\n // prevent registering the same animation twice\n if (!this.manager.activeAnimations.has(this.animation)) {\n this.manager.registerAnimation(this.animation);\n }\n this.state = 'running';\n return this;\n }\n stop() {\n this.manager.unregisterAnimation(this.animation);\n if (this.stoppedResolve !== null) {\n this.stoppedResolve();\n this.stoppedResolve = null;\n }\n this.animation.reset();\n this.state = 'stopped';\n return this;\n }\n pause() {\n this.manager.unregisterAnimation(this.animation);\n this.state = 'paused';\n return this;\n }\n restore() {\n this.stoppedResolve = null;\n this.animation.restore();\n return this;\n }\n waitUntilStarted() {\n this.makeStartedPromise();\n const promise = this.startedPromise;\n assertTruthy(promise);\n return promise;\n }\n waitUntilStopped() {\n this.makeStoppedPromise();\n const promise = this.stoppedPromise;\n assertTruthy(promise);\n return promise;\n }\n makeStartedPromise() {\n if (this.startedResolve === null) {\n this.startedPromise = new Promise((resolve) => {\n this.startedResolve = resolve;\n });\n }\n }\n makeStoppedPromise() {\n if (this.stoppedResolve === null) {\n this.stoppedPromise = new Promise((resolve) => {\n this.stoppedResolve = resolve;\n });\n }\n }\n started() {\n assertTruthy(this.startedResolve);\n // resolve promise (and pass current this to continue to the chain)\n this.startedResolve(this);\n this.startedResolve = null;\n }\n finished() {\n assertTruthy(this.stoppedResolve);\n // If the animation is looping, then we need to restart it.\n const { loop, stopMethod } = this.animation.settings;\n if (stopMethod === 'reverse') {\n this.animation.reverse();\n this.start();\n return;\n }\n // resolve promise\n this.stoppedResolve();\n this.stoppedResolve = null;\n if (loop) {\n return;\n }\n // unregister animation\n this.manager.unregisterAnimation(this.animation);\n }\n}\n//# sourceMappingURL=CoreAnimationController.js.map","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n// Matrix3d is a 3x3 matrix in column-major order because that's how WebGL likes it.\n// The matrix is stored in a Float32Array in the following order:\n// | 0 3 6 |\n// | 1 4 7 |\n// | 2 5 8 |\n// The following constants are used to index into the array in a row-major way.\nconst m0 = 0;\nconst m1 = 3;\nconst m2 = 6;\nconst m3 = 1;\nconst m4 = 4;\nconst m5 = 7;\nconst m6 = 2;\nconst m7 = 5;\nconst m8 = 8;\n/**\n * A 3x3 matrix representing a 2D transformation.\n *\n * @remarks\n * The matrix is stored in column-major order in the `data` property which can\n * be passed directly to a WebGL shader uniform.\n *\n * The matrix is stored in a Float32Array in the following index order:\n * | 0 3 6 |\n * | 1 4 7 |\n * | 2 5 8 |\n *\n * Only the first two rows are really used for the transformation. The last row is\n * generally always `[0, 0, 1]` if you only use the 2D transformation methods\n * provided by this class.\n *\n * For convenience, entries in the first two rows can be accessed by the following\n * getter properties:\n * | ta tb tx |\n * | tc td ty |\n * | 0 0 1 |\n */\nexport class Matrix3d {\n data;\n /**\n * Creates a new 3x3 matrix.\n *\n * @param entries Row-major 3x3 matrix\n */\n constructor(entries) {\n if (entries) {\n // Transpose the input matrix so that it's in column-major order.\n this.data = new Float32Array(9);\n this.data[m0] = entries[0];\n this.data[m1] = entries[3];\n this.data[m2] = entries[6];\n this.data[m3] = entries[1];\n this.data[m4] = entries[4];\n this.data[m5] = entries[7];\n this.data[m6] = entries[2];\n this.data[m7] = entries[5];\n this.data[m8] = entries[8];\n }\n else {\n this.data = new Float32Array(9);\n }\n }\n /**\n * Returns a temporary matrix that can be used for calculations.\n *\n * @remarks\n * This is useful for avoiding allocations in tight loops.\n *\n * The matrix is not guaranteed to be the same between calls.\n *\n * @returns\n */\n static get temp() {\n return tempMatrix;\n }\n static multiply(a, b, out) {\n const e0 = a.data[m0] * b.data[m0] +\n a.data[m1] * b.data[m3] +\n a.data[m2] * b.data[m6];\n const e1 = a.data[m0] * b.data[m1] +\n a.data[m1] * b.data[m4] +\n a.data[m2] * b.data[m7];\n const e2 = a.data[m0] * b.data[m2] +\n a.data[m1] * b.data[m5] +\n a.data[m2] * b.data[m8];\n const e3 = a.data[m3] * b.data[m0] +\n a.data[m4] * b.data[m3] +\n a.data[m5] * b.data[m6];\n const e4 = a.data[m3] * b.data[m1] +\n a.data[m4] * b.data[m4] +\n a.data[m5] * b.data[m7];\n const e5 = a.data[m3] * b.data[m2] +\n a.data[m4] * b.data[m5] +\n a.data[m5] * b.data[m8];\n const e6 = a.data[m6] * b.data[m0] +\n a.data[m7] * b.data[m3] +\n a.data[m8] * b.data[m6];\n const e7 = a.data[m6] * b.data[m1] +\n a.data[m7] * b.data[m4] +\n a.data[m8] * b.data[m7];\n const e8 = a.data[m6] * b.data[m2] +\n a.data[m7] * b.data[m5] +\n a.data[m8] * b.data[m8];\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = e0;\n out.data[m1] = e1;\n out.data[m2] = e2;\n out.data[m3] = e3;\n out.data[m4] = e4;\n out.data[m5] = e5;\n out.data[m6] = e6;\n out.data[m7] = e7;\n out.data[m8] = e8;\n return out;\n }\n static identity(out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = 1;\n out.data[m1] = 0;\n out.data[m2] = 0;\n out.data[m3] = 0;\n out.data[m4] = 1;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static translate(x, y, out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = 1;\n out.data[m1] = 0;\n out.data[m2] = x;\n out.data[m3] = 0;\n out.data[m4] = 1;\n out.data[m5] = y;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static scale(sx, sy, out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = sx;\n out.data[m1] = 0;\n out.data[m2] = 0;\n out.data[m3] = 0;\n out.data[m4] = sy;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static rotate(angle, out) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = cos;\n out.data[m1] = -sin;\n out.data[m2] = 0;\n out.data[m3] = sin;\n out.data[m4] = cos;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static copy(src, dst, transpose) {\n if (!dst) {\n dst = new Matrix3d();\n }\n dst.data[0] = src.data[0];\n dst.data[1] = src.data[1];\n dst.data[2] = src.data[2];\n dst.data[3] = src.data[3];\n dst.data[4] = src.data[4];\n dst.data[5] = src.data[5];\n dst.data[6] = src.data[6];\n dst.data[7] = src.data[7];\n dst.data[8] = src.data[8];\n return dst;\n }\n translate(x, y) {\n this.data[m2] = this.data[m0] * x + this.data[m1] * y + this.data[m2];\n this.data[m5] = this.data[m3] * x + this.data[m4] * y + this.data[m5];\n return this;\n }\n scale(sx, sy) {\n this.data[m0] = this.data[m0] * sx;\n this.data[m1] = this.data[m1] * sy;\n this.data[m3] = this.data[m3] * sx;\n this.data[m4] = this.data[m4] * sy;\n return this;\n }\n rotate(angle) {\n if (angle === 0 || !((angle % Math.PI) * 2)) {\n return this;\n }\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const e0 = this.data[m0] * cos + this.data[m1] * sin;\n const e1 = this.data[m1] * cos - this.data[m0] * sin;\n const e3 = this.data[m3] * cos + this.data[m4] * sin;\n const e4 = this.data[m4] * cos - this.data[m3] * sin;\n this.data[m0] = e0;\n this.data[m1] = e1;\n this.data[m3] = e3;\n this.data[m4] = e4;\n return this;\n }\n multiply(other) {\n return Matrix3d.multiply(this, other, this);\n }\n get tx() {\n return this.data[m2];\n }\n get ty() {\n return this.data[m5];\n }\n get ta() {\n return this.data[m0];\n }\n get tb() {\n return this.data[m1];\n }\n get tc() {\n return this.data[m3];\n }\n get td() {\n return this.data[m4];\n }\n transformPoint(x, y) {\n return [\n this.data[m0] * x + this.data[m1] * y + this.data[m2],\n this.data[m3] * x + this.data[m4] * y + this.data[m3],\n ];\n }\n}\nconst tempMatrix = new Matrix3d();\n//# sourceMappingURL=Matrix3d.js.map","const rx1 = 0;\nconst rx2 = 2;\nconst rx3 = 4;\nconst rx4 = 6;\nconst ry1 = 1;\nconst ry2 = 3;\nconst ry3 = 5;\nconst ry4 = 7;\nexport class RenderCoords {\n data;\n constructor(entries) {\n this.data = new Float32Array(8);\n if (entries) {\n this.data[rx1] = entries[rx1];\n this.data[rx2] = entries[rx2];\n this.data[rx3] = entries[rx3];\n this.data[rx4] = entries[rx4];\n this.data[ry1] = entries[ry1];\n this.data[ry2] = entries[ry2];\n this.data[ry3] = entries[ry3];\n this.data[ry4] = entries[ry4];\n }\n }\n static translate(x1, y1, x2, y2, x3, y3, x4, y4, out) {\n if (!out) {\n out = new RenderCoords();\n }\n out.data[rx1] = x1;\n out.data[rx2] = x2;\n out.data[rx3] = x3;\n out.data[rx4] = x4;\n out.data[ry1] = y1;\n out.data[ry2] = y2;\n out.data[ry3] = y3;\n out.data[ry4] = y4;\n return out;\n }\n get x1() {\n return this.data[rx1];\n }\n get x2() {\n return this.data[rx2];\n }\n get x3() {\n return this.data[rx3];\n }\n get x4() {\n return this.data[rx4];\n }\n get y1() {\n return this.data[ry1];\n }\n get y2() {\n return this.data[ry2];\n }\n get y3() {\n return this.data[ry3];\n }\n get y4() {\n return this.data[ry4];\n }\n}\n//# sourceMappingURL=RenderCoords.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, mergeColorAlphaPremultiplied, getImageAspectRatio, } from '../utils.js';\nimport { RenderTexture } from './textures/RenderTexture.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { copyRect, intersectRect, createBound, boundInsideBound, } from './lib/utils.js';\nimport { Matrix3d } from './lib/Matrix3d.js';\nimport { RenderCoords } from './lib/RenderCoords.js';\nexport var CoreNodeRenderState;\n(function (CoreNodeRenderState) {\n CoreNodeRenderState[CoreNodeRenderState[\"Init\"] = 0] = \"Init\";\n CoreNodeRenderState[CoreNodeRenderState[\"OutOfBounds\"] = 2] = \"OutOfBounds\";\n CoreNodeRenderState[CoreNodeRenderState[\"InBounds\"] = 4] = \"InBounds\";\n CoreNodeRenderState[CoreNodeRenderState[\"InViewport\"] = 8] = \"InViewport\";\n})(CoreNodeRenderState || (CoreNodeRenderState = {}));\nconst CoreNodeRenderStateMap = new Map();\nCoreNodeRenderStateMap.set(CoreNodeRenderState.Init, 'init');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.OutOfBounds, 'outOfBounds');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.InBounds, 'inBounds');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.InViewport, 'inViewport');\nexport var UpdateType;\n(function (UpdateType) {\n /**\n * Child updates\n */\n UpdateType[UpdateType[\"Children\"] = 1] = \"Children\";\n /**\n * Scale/Rotate transform update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `scaleRotateTransform`\n */\n UpdateType[UpdateType[\"ScaleRotate\"] = 2] = \"ScaleRotate\";\n /**\n * Translate transform update (x/y/width/height/pivot/mount)\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `localTransform`\n */\n UpdateType[UpdateType[\"Local\"] = 4] = \"Local\";\n /**\n * Global Transform update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `globalTransform`\n * - `renderCoords`\n * - `renderBound`\n */\n UpdateType[UpdateType[\"Global\"] = 8] = \"Global\";\n /**\n * Clipping rect update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `clippingRect`\n */\n UpdateType[UpdateType[\"Clipping\"] = 16] = \"Clipping\";\n /**\n * Calculated ZIndex update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `calcZIndex`\n */\n UpdateType[UpdateType[\"CalculatedZIndex\"] = 32] = \"CalculatedZIndex\";\n /**\n * Z-Index Sorted Children update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `children` (sorts children by their `calcZIndex`)\n */\n UpdateType[UpdateType[\"ZIndexSortedChildren\"] = 64] = \"ZIndexSortedChildren\";\n /**\n * Premultiplied Colors update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `premultipliedColorTl`\n * - `premultipliedColorTr`\n * - `premultipliedColorBl`\n * - `premultipliedColorBr`\n */\n UpdateType[UpdateType[\"PremultipliedColors\"] = 128] = \"PremultipliedColors\";\n /**\n * World Alpha update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `worldAlpha` = `parent.worldAlpha` * `alpha`\n */\n UpdateType[UpdateType[\"WorldAlpha\"] = 256] = \"WorldAlpha\";\n /**\n * Render State update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `renderState`\n */\n UpdateType[UpdateType[\"RenderState\"] = 512] = \"RenderState\";\n /**\n * Is Renderable update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `isRenderable`\n */\n UpdateType[UpdateType[\"IsRenderable\"] = 1024] = \"IsRenderable\";\n /**\n * None\n */\n UpdateType[UpdateType[\"None\"] = 0] = \"None\";\n /**\n * All\n */\n UpdateType[UpdateType[\"All\"] = 2047] = \"All\";\n})(UpdateType || (UpdateType = {}));\nexport class CoreNode extends EventEmitter {\n stage;\n children = [];\n props;\n updateType = UpdateType.All;\n globalTransform;\n scaleRotateTransform;\n localTransform;\n renderCoords;\n renderBound;\n strictBound;\n preloadBound;\n clippingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n };\n isRenderable = false;\n renderState = CoreNodeRenderState.Init;\n worldAlpha = 1;\n premultipliedColorTl = 0;\n premultipliedColorTr = 0;\n premultipliedColorBl = 0;\n premultipliedColorBr = 0;\n calcZIndex = 0;\n hasRTTupdates = false;\n constructor(stage, props) {\n super();\n this.stage = stage;\n this.props = {\n ...props,\n parent: null,\n // Assign a default value to parentHasRenderTexture\n parentHasRenderTexture: false,\n };\n // Allow for parent to be processed appropriately\n this.parent = props.parent;\n // Allow for Render Texture to be processed appropriately\n this.rtt = props.rtt;\n this.updateScaleRotateTransform();\n }\n //#region Textures\n loadTexture(textureType, props, options = null) {\n // First unload any existing texture\n if (this.props.texture) {\n this.unloadTexture();\n }\n const { txManager } = this.stage;\n const texture = txManager.loadTexture(textureType, props, options);\n this.props.texture = texture;\n this.props.textureOptions = options;\n this.setUpdateType(UpdateType.IsRenderable);\n // If texture is already loaded / failed, trigger loaded event manually\n // so that users get a consistent event experience.\n // We do this in a microtask to allow listeners to be attached in the same\n // synchronous task after calling loadTexture()\n queueMicrotask(() => {\n if (texture.state === 'loaded') {\n this.onTextureLoaded(texture, texture.dimensions);\n }\n else if (texture.state === 'failed') {\n this.onTextureFailed(texture, texture.error);\n }\n else if (texture.state === 'freed') {\n this.onTextureFreed(texture);\n }\n texture.on('loaded', this.onTextureLoaded);\n texture.on('failed', this.onTextureFailed);\n texture.on('freed', this.onTextureFreed);\n });\n }\n unloadTexture() {\n if (this.props.texture) {\n const { texture } = this.props;\n texture.off('loaded', this.onTextureLoaded);\n texture.off('failed', this.onTextureFailed);\n texture.off('freed', this.onTextureFreed);\n texture.setRenderableOwner(this, false);\n }\n this.props.texture = null;\n this.props.textureOptions = null;\n this.setUpdateType(UpdateType.IsRenderable);\n }\n autosizeNode(dimensions) {\n if (this.autosize) {\n this.width = dimensions.width;\n this.height = dimensions.height;\n }\n }\n onTextureLoaded = (target, dimensions) => {\n this.autosizeNode(dimensions);\n // If parent has a render texture, flag that we need to update\n // @todo: Reserve type for RTT updates\n if (this.parentHasRenderTexture) {\n this.setRTTUpdates(1);\n }\n this.emit('loaded', {\n type: 'texture',\n dimensions,\n });\n queueMicrotask(() => {\n // Texture was loaded. In case the RAF loop has already stopped, we request\n // a render to ensure the texture is rendered.\n this.stage.requestRender();\n });\n };\n onTextureFailed = (target, error) => {\n this.emit('failed', {\n type: 'texture',\n error,\n });\n };\n onTextureFreed = (target) => {\n this.emit('freed', {\n type: 'texture',\n });\n };\n //#endregion Textures\n loadShader(shaderType, props) {\n const shManager = this.stage.renderer.getShaderManager();\n assertTruthy(shManager);\n const { shader, props: p } = shManager.loadShader(shaderType, props);\n this.props.shader = shader;\n this.props.shaderProps = p;\n this.setUpdateType(UpdateType.IsRenderable);\n }\n /**\n * Change types types is used to determine the scope of the changes being applied\n *\n * @remarks\n * See {@link UpdateType} for more information on each type\n *\n * @param type\n */\n setUpdateType(type) {\n this.updateType |= type;\n // If we're updating this node at all, we need to inform the parent\n // (and all ancestors) that their children need updating as well\n const parent = this.props.parent;\n if (parent && !(parent.updateType & UpdateType.Children)) {\n parent.setUpdateType(UpdateType.Children);\n }\n // If node is part of RTT texture\n // Flag that we need to update\n if (this.parentHasRenderTexture) {\n this.setRTTUpdates(type);\n }\n }\n sortChildren() {\n this.children.sort((a, b) => a.calcZIndex - b.calcZIndex);\n }\n updateScaleRotateTransform() {\n this.scaleRotateTransform = Matrix3d.rotate(this.props.rotation, this.scaleRotateTransform).scale(this.props.scaleX, this.props.scaleY);\n }\n updateLocalTransform() {\n assertTruthy(this.scaleRotateTransform);\n const pivotTranslateX = this.props.pivotX * this.props.width;\n const pivotTranslateY = this.props.pivotY * this.props.height;\n const mountTranslateX = this.props.mountX * this.props.width;\n const mountTranslateY = this.props.mountY * this.props.height;\n this.localTransform = Matrix3d.translate(pivotTranslateX - mountTranslateX + this.props.x, pivotTranslateY - mountTranslateY + this.props.y, this.localTransform)\n .multiply(this.scaleRotateTransform)\n .translate(-pivotTranslateX, -pivotTranslateY);\n this.setUpdateType(UpdateType.Global);\n }\n /**\n * @todo: test for correct calculation flag\n * @param delta\n */\n update(delta, parentClippingRect) {\n if (this.updateType & UpdateType.ScaleRotate) {\n this.updateScaleRotateTransform();\n this.setUpdateType(UpdateType.Local);\n }\n if (this.updateType & UpdateType.Local) {\n this.updateLocalTransform();\n this.setUpdateType(UpdateType.Global);\n }\n const parent = this.props.parent;\n let childUpdateType = UpdateType.None;\n if (this.updateType & UpdateType.Global) {\n assertTruthy(this.localTransform);\n this.globalTransform = Matrix3d.copy(parent?.globalTransform || this.localTransform, this.globalTransform);\n if (this.parentHasRenderTexture && this.props.parent?.rtt) {\n this.globalTransform = Matrix3d.identity();\n }\n if (parent) {\n this.globalTransform.multiply(this.localTransform);\n }\n this.calculateRenderCoords();\n this.updateBoundingRect();\n this.setUpdateType(UpdateType.Clipping | UpdateType.RenderState | UpdateType.Children);\n childUpdateType |= UpdateType.Global;\n }\n if (this.updateType & UpdateType.Clipping) {\n this.calculateClippingRect(parentClippingRect);\n this.setUpdateType(UpdateType.Children);\n childUpdateType |= UpdateType.Clipping;\n }\n if (this.updateType & UpdateType.WorldAlpha) {\n if (parent) {\n this.worldAlpha = parent.worldAlpha * this.props.alpha;\n }\n else {\n this.worldAlpha = this.props.alpha;\n }\n this.setUpdateType(UpdateType.Children |\n UpdateType.PremultipliedColors |\n UpdateType.IsRenderable);\n childUpdateType |= UpdateType.WorldAlpha;\n }\n if (this.updateType & UpdateType.PremultipliedColors) {\n this.premultipliedColorTl = mergeColorAlphaPremultiplied(this.props.colorTl, this.worldAlpha, true);\n // If all the colors are the same just sent them all to the same value\n if (this.props.colorTl === this.props.colorTr &&\n this.props.colorBl === this.props.colorBr &&\n this.props.colorTl === this.props.colorBl) {\n this.premultipliedColorTr =\n this.premultipliedColorBl =\n this.premultipliedColorBr =\n this.premultipliedColorTl;\n }\n else {\n this.premultipliedColorTr = mergeColorAlphaPremultiplied(this.props.colorTr, this.worldAlpha, true);\n this.premultipliedColorBl = mergeColorAlphaPremultiplied(this.props.colorBl, this.worldAlpha, true);\n this.premultipliedColorBr = mergeColorAlphaPremultiplied(this.props.colorBr, this.worldAlpha, true);\n }\n }\n if (this.updateType & UpdateType.RenderState) {\n this.updateRenderState(parentClippingRect);\n this.setUpdateType(UpdateType.IsRenderable);\n }\n if (this.updateType & UpdateType.IsRenderable) {\n this.updateIsRenderable();\n }\n // No need to update zIndex if there is no parent\n if (parent && this.updateType & UpdateType.CalculatedZIndex) {\n this.calculateZIndex();\n // Tell parent to re-sort children\n parent.setUpdateType(UpdateType.ZIndexSortedChildren);\n }\n if (this.updateType & UpdateType.Children &&\n this.children.length &&\n !this.rtt) {\n this.children.forEach((child) => {\n // Trigger the depenedent update types on the child\n child.setUpdateType(childUpdateType);\n // If child has no updates, skip\n if (child.updateType === 0) {\n return;\n }\n child.update(delta, this.clippingRect);\n });\n }\n // Sorting children MUST happen after children have been updated so\n // that they have the oppotunity to update their calculated zIndex.\n if (this.updateType & UpdateType.ZIndexSortedChildren) {\n // reorder z-index\n this.sortChildren();\n }\n // reset update type\n this.updateType = 0;\n }\n //check if CoreNode is renderable based on props\n checkRenderProps() {\n if (this.props.texture) {\n return true;\n }\n if (!this.props.width || !this.props.height) {\n return false;\n }\n if (this.props.shader) {\n return true;\n }\n if (this.props.clipping) {\n return true;\n }\n if (this.props.color !== 0) {\n return true;\n }\n // Consider removing these checks and just using the color property check above.\n // Maybe add a forceRender prop for nodes that should always render.\n if (this.props.colorTop !== 0) {\n return true;\n }\n if (this.props.colorBottom !== 0) {\n return true;\n }\n if (this.props.colorLeft !== 0) {\n return true;\n }\n if (this.props.colorRight !== 0) {\n return true;\n }\n if (this.props.colorTl !== 0) {\n return true;\n }\n if (this.props.colorTr !== 0) {\n return true;\n }\n if (this.props.colorBl !== 0) {\n return true;\n }\n if (this.props.colorBr !== 0) {\n return true;\n }\n return false;\n }\n checkRenderBounds(parentClippingRect) {\n assertTruthy(this.renderBound);\n const rectW = parentClippingRect.width || this.stage.root.width;\n const rectH = parentClippingRect.height || this.stage.root.height;\n this.strictBound = createBound(parentClippingRect.x, parentClippingRect.y, parentClippingRect.x + rectW, parentClippingRect.y + rectH, this.strictBound);\n const renderM = this.stage.boundsMargin;\n this.preloadBound = createBound(parentClippingRect.x - renderM[3], parentClippingRect.y - renderM[0], parentClippingRect.x + rectW + renderM[1], parentClippingRect.y + rectH + renderM[2], this.preloadBound);\n if (boundInsideBound(this.renderBound, this.strictBound)) {\n return CoreNodeRenderState.InViewport;\n }\n if (boundInsideBound(this.renderBound, this.preloadBound)) {\n return CoreNodeRenderState.InBounds;\n }\n return CoreNodeRenderState.OutOfBounds;\n }\n updateRenderState(parentClippingRect) {\n const renderState = this.checkRenderBounds(parentClippingRect);\n if (renderState !== this.renderState) {\n let previous = this.renderState;\n this.renderState = renderState;\n if (previous === CoreNodeRenderState.InViewport) {\n this.emit('outOfViewport', {\n previous,\n current: renderState,\n });\n }\n if (previous < CoreNodeRenderState.InBounds &&\n renderState === CoreNodeRenderState.InViewport) {\n this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), {\n previous,\n current: renderState,\n });\n previous = CoreNodeRenderState.InBounds;\n }\n else if (previous > CoreNodeRenderState.InBounds &&\n renderState === CoreNodeRenderState.OutOfBounds) {\n this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), {\n previous,\n current: renderState,\n });\n previous = CoreNodeRenderState.InBounds;\n }\n const event = CoreNodeRenderStateMap.get(renderState);\n assertTruthy(event);\n this.emit(event, {\n previous,\n current: renderState,\n });\n }\n }\n setRenderState(state) {\n if (state !== this.renderState) {\n this.renderState = state;\n this.emit(CoreNodeRenderState[state]);\n }\n }\n /**\n * This function updates the `isRenderable` property based on certain conditions.\n *\n * @returns\n */\n updateIsRenderable() {\n let newIsRenderable;\n if (this.worldAlpha === 0 || !this.checkRenderProps()) {\n newIsRenderable = false;\n }\n else {\n newIsRenderable = this.renderState > CoreNodeRenderState.OutOfBounds;\n }\n if (this.isRenderable !== newIsRenderable) {\n this.isRenderable = newIsRenderable;\n this.onChangeIsRenderable(newIsRenderable);\n }\n }\n onChangeIsRenderable(isRenderable) {\n this.props.texture?.setRenderableOwner(this, isRenderable);\n }\n calculateRenderCoords() {\n const { width, height, globalTransform: transform } = this;\n assertTruthy(transform);\n const { tx, ty, ta, tb, tc, td } = transform;\n if (tb === 0 && tc === 0) {\n const minX = tx;\n const maxX = tx + width * ta;\n const minY = ty;\n const maxY = ty + height * td;\n this.renderCoords = RenderCoords.translate(\n //top-left\n minX, minY, \n //top-right\n maxX, minY, \n //bottom-right\n maxX, maxY, \n //bottom-left\n minX, maxY, this.renderCoords);\n }\n else {\n this.renderCoords = RenderCoords.translate(\n //top-left\n tx, ty, \n //top-right\n tx + width * ta, ty + width * tc, \n //bottom-right\n tx + width * ta + height * tb, ty + width * tc + height * td, \n //bottom-left\n tx + height * tb, ty + height * td, this.renderCoords);\n }\n }\n updateBoundingRect() {\n const { renderCoords, globalTransform: transform } = this;\n assertTruthy(transform);\n assertTruthy(renderCoords);\n const { tb, tc } = transform;\n const { x1, y1, x3, y3 } = renderCoords;\n if (tb === 0 || tc === 0) {\n this.renderBound = createBound(x1, y1, x3, y3, this.renderBound);\n }\n else {\n const { x2, x4, y2, y4 } = renderCoords;\n this.renderBound = createBound(Math.min(x1, x2, x3, x4), Math.min(y1, y2, y3, y4), Math.max(x1, x2, x3, x4), Math.max(y1, y2, y3, y4), this.renderBound);\n }\n }\n /**\n * This function calculates the clipping rectangle for a node.\n *\n * The function then checks if the node is rotated. If the node requires clipping and is not rotated, a new clipping rectangle is created based on the node's global transform and dimensions.\n * If a parent clipping rectangle exists, it is intersected with the node's clipping rectangle (if it exists), or replaces the node's clipping rectangle.\n *\n * Finally, the node's parentClippingRect and clippingRect properties are updated.\n */\n calculateClippingRect(parentClippingRect) {\n assertTruthy(this.globalTransform);\n const { clippingRect, props, globalTransform: gt } = this;\n const { clipping } = props;\n const isRotated = gt.tb !== 0 || gt.tc !== 0;\n if (clipping && !isRotated) {\n clippingRect.x = gt.tx;\n clippingRect.y = gt.ty;\n clippingRect.width = this.width * gt.ta;\n clippingRect.height = this.height * gt.td;\n clippingRect.valid = true;\n }\n else {\n clippingRect.valid = false;\n }\n if (parentClippingRect.valid && clippingRect.valid) {\n // Intersect parent clipping rect with node clipping rect\n intersectRect(parentClippingRect, clippingRect, clippingRect);\n }\n else if (parentClippingRect.valid) {\n // Copy parent clipping rect\n copyRect(parentClippingRect, clippingRect);\n clippingRect.valid = true;\n }\n }\n calculateZIndex() {\n const props = this.props;\n const z = props.zIndex || 0;\n const p = props.parent?.zIndex || 0;\n let zIndex = z;\n if (props.parent?.zIndexLocked) {\n zIndex = z < p ? z : p;\n }\n this.calcZIndex = zIndex;\n }\n /**\n * Destroy the node and cleanup all resources\n */\n destroy() {\n this.unloadTexture();\n this.clippingRect.valid = false;\n this.isRenderable = false;\n delete this.renderCoords;\n delete this.renderBound;\n delete this.strictBound;\n delete this.preloadBound;\n delete this.globalTransform;\n delete this.scaleRotateTransform;\n delete this.localTransform;\n this.props.texture = null;\n this.props.shader = null;\n this.removeAllListeners();\n this.parent = null;\n }\n renderQuads(renderer) {\n const { width, height, texture, textureOptions, shader, shaderProps, rtt, parentHasRenderTexture, } = this.props;\n // Prevent quad rendering if parent has a render texture\n // and renderer is not currently rendering to a texture\n if (parentHasRenderTexture) {\n if (!renderer.renderToTextureActive) {\n return;\n }\n // Prevent quad rendering if parent render texture is not the active render texture\n if (this.parentRenderTexture !== renderer.activeRttNode) {\n return;\n }\n }\n const { premultipliedColorTl, premultipliedColorTr, premultipliedColorBl, premultipliedColorBr, } = this;\n const { zIndex, worldAlpha, globalTransform: gt, clippingRect } = this;\n assertTruthy(gt);\n // add to list of renderables to be sorted before rendering\n renderer.addQuad({\n width,\n height,\n colorTl: premultipliedColorTl,\n colorTr: premultipliedColorTr,\n colorBl: premultipliedColorBl,\n colorBr: premultipliedColorBr,\n texture,\n textureOptions,\n zIndex,\n shader,\n shaderProps,\n alpha: worldAlpha,\n clippingRect,\n tx: gt.tx,\n ty: gt.ty,\n ta: gt.ta,\n tb: gt.tb,\n tc: gt.tc,\n td: gt.td,\n rtt,\n parentHasRenderTexture,\n framebufferDimensions: this.framebufferDimensions,\n });\n }\n //#region Properties\n get id() {\n return this.props.id;\n }\n get x() {\n return this.props.x;\n }\n set x(value) {\n if (this.props.x !== value) {\n this.props.x = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get absX() {\n return (this.props.x +\n (this.props.parent?.absX || this.props.parent?.globalTransform?.tx || 0));\n }\n get absY() {\n return this.props.y + (this.props.parent?.absY ?? 0);\n }\n get y() {\n return this.props.y;\n }\n set y(value) {\n if (this.props.y !== value) {\n this.props.y = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get width() {\n return this.props.width;\n }\n set width(value) {\n if (this.props.width !== value) {\n this.props.width = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n if (this.props.height !== value) {\n this.props.height = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get scale() {\n // The CoreNode `scale` property is only used by Animations.\n // Unlike INode, `null` should never be possibility for Animations.\n return this.scaleX;\n }\n set scale(value) {\n // The CoreNode `scale` property is only used by Animations.\n // Unlike INode, `null` should never be possibility for Animations.\n this.scaleX = value;\n this.scaleY = value;\n }\n get scaleX() {\n return this.props.scaleX;\n }\n set scaleX(value) {\n if (this.props.scaleX !== value) {\n this.props.scaleX = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get scaleY() {\n return this.props.scaleY;\n }\n set scaleY(value) {\n if (this.props.scaleY !== value) {\n this.props.scaleY = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get mount() {\n return this.props.mount;\n }\n set mount(value) {\n if (this.props.mountX !== value || this.props.mountY !== value) {\n this.props.mountX = value;\n this.props.mountY = value;\n this.props.mount = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get mountX() {\n return this.props.mountX;\n }\n set mountX(value) {\n if (this.props.mountX !== value) {\n this.props.mountX = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get mountY() {\n return this.props.mountY;\n }\n set mountY(value) {\n if (this.props.mountY !== value) {\n this.props.mountY = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivot() {\n return this.props.pivot;\n }\n set pivot(value) {\n if (this.props.pivotX !== value || this.props.pivotY !== value) {\n this.props.pivotX = value;\n this.props.pivotY = value;\n this.props.pivot = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivotX() {\n return this.props.pivotX;\n }\n set pivotX(value) {\n if (this.props.pivotX !== value) {\n this.props.pivotX = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivotY() {\n return this.props.pivotY;\n }\n set pivotY(value) {\n if (this.props.pivotY !== value) {\n this.props.pivotY = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get rotation() {\n return this.props.rotation;\n }\n set rotation(value) {\n if (this.props.rotation !== value) {\n this.props.rotation = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get alpha() {\n return this.props.alpha;\n }\n set alpha(value) {\n this.props.alpha = value;\n this.setUpdateType(UpdateType.PremultipliedColors | UpdateType.WorldAlpha);\n }\n get autosize() {\n return this.props.autosize;\n }\n set autosize(value) {\n this.props.autosize = value;\n }\n get clipping() {\n return this.props.clipping;\n }\n set clipping(value) {\n this.props.clipping = value;\n this.setUpdateType(UpdateType.Clipping);\n }\n get color() {\n return this.props.color;\n }\n set color(value) {\n if (this.props.colorTl !== value ||\n this.props.colorTr !== value ||\n this.props.colorBl !== value ||\n this.props.colorBr !== value) {\n this.colorTl = value;\n this.colorTr = value;\n this.colorBl = value;\n this.colorBr = value;\n }\n this.props.color = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTop() {\n return this.props.colorTop;\n }\n set colorTop(value) {\n if (this.props.colorTl !== value || this.props.colorTr !== value) {\n this.colorTl = value;\n this.colorTr = value;\n }\n this.props.colorTop = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBottom() {\n return this.props.colorBottom;\n }\n set colorBottom(value) {\n if (this.props.colorBl !== value || this.props.colorBr !== value) {\n this.colorBl = value;\n this.colorBr = value;\n }\n this.props.colorBottom = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorLeft() {\n return this.props.colorLeft;\n }\n set colorLeft(value) {\n if (this.props.colorTl !== value || this.props.colorBl !== value) {\n this.colorTl = value;\n this.colorBl = value;\n }\n this.props.colorLeft = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorRight() {\n return this.props.colorRight;\n }\n set colorRight(value) {\n if (this.props.colorTr !== value || this.props.colorBr !== value) {\n this.colorTr = value;\n this.colorBr = value;\n }\n this.props.colorRight = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTl() {\n return this.props.colorTl;\n }\n set colorTl(value) {\n this.props.colorTl = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTr() {\n return this.props.colorTr;\n }\n set colorTr(value) {\n this.props.colorTr = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBl() {\n return this.props.colorBl;\n }\n set colorBl(value) {\n this.props.colorBl = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBr() {\n return this.props.colorBr;\n }\n set colorBr(value) {\n this.props.colorBr = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n // we're only interested in parent zIndex to test\n // if we should use node zIndex is higher then parent zIndex\n get zIndexLocked() {\n return this.props.zIndexLocked || 0;\n }\n set zIndexLocked(value) {\n this.props.zIndexLocked = value;\n this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);\n this.children.forEach((child) => {\n child.setUpdateType(UpdateType.CalculatedZIndex);\n });\n }\n get zIndex() {\n return this.props.zIndex;\n }\n set zIndex(value) {\n this.props.zIndex = value;\n this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);\n this.children.forEach((child) => {\n child.setUpdateType(UpdateType.CalculatedZIndex);\n });\n }\n get parent() {\n return this.props.parent;\n }\n set parent(newParent) {\n const oldParent = this.props.parent;\n if (oldParent === newParent) {\n return;\n }\n this.props.parent = newParent;\n if (oldParent) {\n const index = oldParent.children.indexOf(this);\n assertTruthy(index !== -1, \"CoreNode.parent: Node not found in old parent's children!\");\n oldParent.children.splice(index, 1);\n oldParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);\n }\n if (newParent) {\n newParent.children.push(this);\n // Since this node has a new parent, to be safe, have it do a full update.\n this.setUpdateType(UpdateType.All);\n // Tell parent that it's children need to be updated and sorted.\n newParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);\n if (newParent.rtt || newParent.parentHasRenderTexture) {\n this.setRTTUpdates(UpdateType.All);\n }\n }\n this.parentHasRenderTexture =\n newParent?.rtt || newParent?.parentHasRenderTexture;\n this.updateScaleRotateTransform();\n }\n get rtt() {\n return this.props.rtt;\n }\n set rtt(value) {\n if (!value) {\n return;\n }\n this.props.rtt = true;\n this.hasRTTupdates = true;\n // Store RTT nodes in a separate list\n this.stage.renderer?.renderToTexture(this);\n }\n set parentHasRenderTexture(value) {\n this.props.parentHasRenderTexture = !!value;\n }\n get parentHasRenderTexture() {\n return this.props.parentHasRenderTexture;\n }\n /**\n * Returns the framebuffer dimensions of the node.\n * If the node has a render texture, the dimensions are the same as the node's dimensions.\n * If the node does not have a render texture, the dimensions are inherited from the parent.\n * If the node parent has a render texture and the node is a render texture, the nodes dimensions are used.\n */\n get framebufferDimensions() {\n if (this.parentHasRenderTexture && !this.rtt) {\n return this.parent?.framebufferDimensions;\n }\n return { width: this.width, height: this.height };\n }\n /**\n * Returns the parent render texture node if it exists.\n */\n get parentRenderTexture() {\n let parent = this.parent;\n while (parent) {\n if (parent.rtt) {\n return parent;\n }\n parent = parent.parent;\n }\n return null;\n }\n get texture() {\n return this.props.texture;\n }\n setRTTUpdates(type) {\n this.hasRTTupdates = true;\n this.parent?.setRTTUpdates(type);\n }\n}\n//# sourceMappingURL=CoreNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { CoreAnimation } from '../../core/animations/CoreAnimation.js';\nimport { CoreAnimationController } from '../../core/animations/CoreAnimationController.js';\nimport { CoreNode } from '../../core/CoreNode.js';\nimport { EventEmitter } from '../../common/EventEmitter.js';\nimport { santizeCustomDataMap } from '../utils.js';\nlet nextId = 1;\nexport function getNewId() {\n return nextId++;\n}\nexport class MainOnlyNode extends EventEmitter {\n rendererMain;\n stage;\n id;\n coreNode;\n // Prop stores\n _children = [];\n _src = '';\n _parent = null;\n _texture = null;\n _shader = null;\n _data = {};\n constructor(props, rendererMain, stage, coreNode) {\n super();\n this.rendererMain = rendererMain;\n this.stage = stage;\n this.id = coreNode?.id ?? getNewId();\n this.coreNode =\n coreNode ||\n new CoreNode(this.stage, {\n id: this.id,\n x: props.x,\n y: props.y,\n width: props.width,\n height: props.height,\n alpha: props.alpha,\n autosize: props.autosize,\n clipping: props.clipping,\n color: props.color,\n colorTop: props.colorTop,\n colorBottom: props.colorBottom,\n colorLeft: props.colorLeft,\n colorRight: props.colorRight,\n colorTl: props.colorTl,\n colorTr: props.colorTr,\n colorBl: props.colorBl,\n colorBr: props.colorBr,\n zIndex: props.zIndex,\n zIndexLocked: props.zIndexLocked,\n scaleX: props.scaleX,\n scaleY: props.scaleY,\n mountX: props.mountX,\n mountY: props.mountY,\n mount: props.mount,\n pivot: props.pivot,\n pivotX: props.pivotX,\n pivotY: props.pivotY,\n rotation: props.rotation,\n parent: null,\n shader: null,\n shaderProps: null,\n texture: null,\n textureOptions: null,\n rtt: props.rtt,\n parentHasRenderTexture: props.parentHasRenderTexture,\n });\n // Forward loaded/failed events\n this.coreNode.on('loaded', this.onTextureLoaded);\n this.coreNode.on('failed', this.onTextureFailed);\n this.coreNode.on('freed', this.onTextureFreed);\n this.coreNode.on('outOfBounds', this.onOutOfBounds);\n this.coreNode.on('inBounds', this.onInBounds);\n this.coreNode.on('outOfViewport', this.onOutOfViewport);\n this.coreNode.on('inViewport', this.onInViewport);\n // Assign properties to this object\n this.parent = props.parent;\n this.shader = props.shader;\n this.texture = props.texture;\n this.src = props.src;\n this.rtt = props.rtt;\n this._data = props.data;\n }\n get x() {\n return this.coreNode.x;\n }\n set x(value) {\n this.coreNode.x = value;\n }\n get y() {\n return this.coreNode.y;\n }\n set y(value) {\n this.coreNode.y = value;\n }\n get width() {\n return this.coreNode.width;\n }\n set width(value) {\n this.coreNode.width = value;\n }\n get height() {\n return this.coreNode.height;\n }\n set height(value) {\n this.coreNode.height = value;\n }\n get alpha() {\n return this.coreNode.alpha;\n }\n set alpha(value) {\n this.coreNode.alpha = value;\n }\n get autosize() {\n return this.coreNode.autosize;\n }\n set autosize(value) {\n this.coreNode.autosize = value;\n }\n get clipping() {\n return this.coreNode.clipping;\n }\n set clipping(value) {\n this.coreNode.clipping = value;\n }\n get color() {\n return this.coreNode.color;\n }\n set color(value) {\n this.coreNode.color = value;\n }\n get colorTop() {\n return this.coreNode.colorTop;\n }\n set colorTop(value) {\n this.coreNode.colorTop = value;\n }\n get colorBottom() {\n return this.coreNode.colorBottom;\n }\n set colorBottom(value) {\n this.coreNode.colorBottom = value;\n }\n get colorLeft() {\n return this.coreNode.colorLeft;\n }\n set colorLeft(value) {\n this.coreNode.colorLeft = value;\n }\n get colorRight() {\n return this.coreNode.colorRight;\n }\n set colorRight(value) {\n this.coreNode.colorRight = value;\n }\n get colorTl() {\n return this.coreNode.colorTl;\n }\n set colorTl(value) {\n this.coreNode.colorTl = value;\n }\n get colorTr() {\n return this.coreNode.colorTr;\n }\n set colorTr(value) {\n this.coreNode.colorTr = value;\n }\n get colorBl() {\n return this.coreNode.colorBl;\n }\n set colorBl(value) {\n this.coreNode.colorBl = value;\n }\n get colorBr() {\n return this.coreNode.colorBr;\n }\n set colorBr(value) {\n this.coreNode.colorBr = value;\n }\n get scale() {\n if (this.scaleX !== this.scaleY) {\n return null;\n }\n return this.coreNode.scaleX;\n }\n set scale(value) {\n // We ignore `null` when it's set.\n if (value === null) {\n return;\n }\n this.coreNode.scaleX = value;\n this.coreNode.scaleY = value;\n }\n get scaleX() {\n return this.coreNode.scaleX;\n }\n set scaleX(value) {\n this.coreNode.scaleX = value;\n }\n get scaleY() {\n return this.coreNode.scaleY;\n }\n set scaleY(value) {\n this.coreNode.scaleY = value;\n }\n get mount() {\n return this.coreNode.mount;\n }\n set mount(value) {\n this.coreNode.mount = value;\n }\n get mountX() {\n return this.coreNode.mountX;\n }\n set mountX(value) {\n this.coreNode.mountX = value;\n }\n get mountY() {\n return this.coreNode.mountY;\n }\n set mountY(value) {\n this.coreNode.mountY = value;\n }\n get pivot() {\n return this.coreNode.pivot;\n }\n set pivot(value) {\n this.coreNode.pivot = value;\n }\n get pivotX() {\n return this.coreNode.pivotX;\n }\n set pivotX(value) {\n this.coreNode.pivotX = value;\n }\n get pivotY() {\n return this.coreNode.pivotY;\n }\n set pivotY(value) {\n this.coreNode.pivotY = value;\n }\n get rotation() {\n return this.coreNode.rotation;\n }\n set rotation(value) {\n this.coreNode.rotation = value;\n }\n get parent() {\n return this._parent;\n }\n set parent(newParent) {\n const oldParent = this._parent;\n this._parent = newParent;\n this.coreNode.parent = newParent?.coreNode ?? null;\n if (oldParent) {\n const index = oldParent.children.indexOf(this);\n assertTruthy(index !== -1, \"MainOnlyNode.parent: Node not found in old parent's children!\");\n oldParent.children.splice(index, 1);\n }\n if (newParent) {\n newParent.children.push(this);\n }\n }\n get children() {\n return this._children;\n }\n get zIndex() {\n return this.coreNode.zIndex;\n }\n set zIndex(value) {\n this.coreNode.zIndex = value;\n }\n get zIndexLocked() {\n return this.coreNode.zIndexLocked;\n }\n set zIndexLocked(value) {\n this.coreNode.zIndexLocked = value;\n }\n get src() {\n return this._src;\n }\n set src(imageUrl) {\n if (this._src === imageUrl) {\n return;\n }\n this._src = imageUrl;\n if (!imageUrl) {\n this.texture = null;\n return;\n }\n this.texture = this.rendererMain.createTexture('ImageTexture', {\n src: imageUrl,\n });\n }\n //#region Texture\n get texture() {\n return this._texture;\n }\n set texture(texture) {\n if (this._texture === texture) {\n return;\n }\n if (this._texture) {\n this.rendererMain.textureTracker.decrementTextureRefCount(this._texture);\n }\n if (texture) {\n this.rendererMain.textureTracker.incrementTextureRefCount(texture);\n }\n this._texture = texture;\n if (texture) {\n this.coreNode.loadTexture(texture.txType, texture.props, texture.options);\n }\n else {\n this.coreNode.unloadTexture();\n }\n }\n get rtt() {\n return this.coreNode.rtt;\n }\n set rtt(value) {\n if (value) {\n this.texture = this.rendererMain.createTexture('RenderTexture', {\n width: this.width,\n height: this.height,\n }, { preload: true, flipY: true });\n }\n this.coreNode.rtt = value;\n }\n get parentHasRenderTexture() {\n return this.coreNode.parentHasRenderTexture;\n }\n set parentHasRenderTexture(value) {\n this.coreNode.parentHasRenderTexture = value;\n }\n onTextureLoaded = (target, payload) => {\n this.emit('loaded', payload);\n };\n onTextureFailed = (target, payload) => {\n this.emit('failed', payload);\n };\n onTextureFreed = (target, payload) => {\n this.emit('freed', payload);\n };\n onOutOfBounds = (target, payload) => {\n this.emit('outOfBounds', payload);\n };\n onInBounds = (target, payload) => {\n this.emit('inBounds', payload);\n };\n onOutOfViewport = (target, payload) => {\n this.emit('outOfViewport', payload);\n };\n onInViewport = (target, payload) => {\n this.emit('inViewport', payload);\n };\n //#endregion Texture\n get shader() {\n return this._shader;\n }\n set shader(shader) {\n if (this._shader === shader) {\n return;\n }\n this._shader = shader;\n if (shader) {\n this.coreNode.loadShader(shader.shType, shader.props);\n }\n }\n get data() {\n return this._data;\n }\n set data(d) {\n this._data = santizeCustomDataMap(d);\n }\n destroy() {\n this.emit('beforeDestroy', {});\n //use while loop since setting parent to null removes it from array\n let child = this.children[0];\n while (child) {\n child.destroy();\n child = this.children[0];\n }\n this.coreNode.destroy();\n this.parent = null;\n this.texture = null;\n this.emit('afterDestroy', {});\n this.removeAllListeners();\n }\n flush() {\n // No-op\n }\n animate(props, settings) {\n const animation = new CoreAnimation(this.coreNode, props, settings);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const controller = new CoreAnimationController(this.stage.animationManager, animation);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return controller;\n }\n}\n//# sourceMappingURL=MainOnlyNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Platform render loop initiator\n */\nexport const startLoop = (stage) => {\n let isIdle = false;\n const runLoop = () => {\n stage.updateAnimations();\n if (!stage.hasSceneUpdates()) {\n // We still need to calculate the fps else it looks like the app is frozen\n stage.calculateFps();\n setTimeout(runLoop, 16.666666666666668);\n if (!isIdle) {\n stage.emit('idle');\n isIdle = true;\n }\n return;\n }\n isIdle = false;\n stage.drawFrame();\n requestAnimationFrame(runLoop);\n };\n requestAnimationFrame(runLoop);\n};\n/**\n * Return unix timestamp\n * @return {number}\n */\nexport const getTimeStamp = () => {\n return performance ? performance.now() : Date.now();\n};\n//# sourceMappingURL=platform.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreAnimation } from './CoreAnimation.js';\nexport class AnimationManager {\n activeAnimations = new Set();\n registerAnimation(animation) {\n this.activeAnimations.add(animation);\n }\n unregisterAnimation(animation) {\n this.activeAnimations.delete(animation);\n }\n update(dt) {\n this.activeAnimations.forEach((animation) => {\n animation.update(dt);\n });\n }\n}\n//# sourceMappingURL=AnimationManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {} from '../textures/Texture.js';\nexport class ImageWorkerManager {\n imageWorkersEnabled = true;\n messageManager = {};\n workers = [];\n workerIndex = 0;\n constructor(numImageWorkers) {\n this.workers = this.createWorkers(numImageWorkers);\n this.workers.forEach((worker) => {\n worker.onmessage = this.handleMessage.bind(this);\n });\n }\n handleMessage(event) {\n const { src, data, error } = event.data;\n const msg = this.messageManager[src];\n if (msg) {\n const [resolve, reject] = msg;\n delete this.messageManager[src];\n if (error) {\n reject(new Error(error));\n }\n else {\n resolve(data);\n }\n }\n }\n createWorkers(numWorkers = 1) {\n const workerCode = `\n function hasAlphaChannel(mimeType) {\n return (mimeType.indexOf(\"image/png\") !== -1);\n }\n\n function getImage(src, premultiplyAlpha) {\n return new Promise(function(resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', src, true);\n xhr.responseType = 'blob';\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n var blob = xhr.response;\n var hasAlphaChannel = premultiplyAlpha !== undefined ? premultiplyAlpha : hasAlphaChannel(blob.type);\n\n createImageBitmap(blob, {\n premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',\n colorSpaceConversion: 'none',\n imageOrientation: 'none'\n }).then(function(data) {\n resolve({ data: data, premultiplyAlpha: premultiplyAlpha });\n }).catch(function(error) {\n reject(error);\n });\n } else {\n reject(new Error('Failed to load image: ' + xhr.statusText));\n }\n };\n\n xhr.onerror = function() {\n reject(new Error('Network error occurred while trying to fetch the image.'));\n };\n\n xhr.send();\n });\n }\n\n self.onmessage = (event) => {\n var src = event.data.src;\n var premultiplyAlpha = event.data.premultiplyAlpha;\n\n getImage(src, premultiplyAlpha)\n .then(function(data) {\n self.postMessage({ src: src, data: data }, [data.data]);\n })\n .catch(function(error) {\n self.postMessage({ src: src, error: error.message });\n });\n };\n `;\n const blob = new Blob([workerCode.replace('\"use strict\";', '')], {\n type: 'application/javascript',\n });\n const blobURL = (self.URL ? URL : webkitURL).createObjectURL(blob);\n const workers = [];\n for (let i = 0; i < numWorkers; i++) {\n workers.push(new Worker(blobURL));\n }\n return workers;\n }\n getNextWorker() {\n const worker = this.workers[this.workerIndex];\n this.workerIndex = (this.workerIndex + 1) % this.workers.length;\n return worker;\n }\n convertUrlToAbsolute(url) {\n const absoluteUrl = new URL(url, self.location.href);\n return absoluteUrl.href;\n }\n getImage(src, premultiplyAlpha) {\n return new Promise((resolve, reject) => {\n try {\n if (this.workers) {\n const absoluteSrcUrl = this.convertUrlToAbsolute(src);\n this.messageManager[absoluteSrcUrl] = [resolve, reject];\n this.getNextWorker().postMessage({\n src: absoluteSrcUrl,\n premultiplyAlpha,\n });\n }\n }\n catch (error) {\n reject(error);\n }\n });\n }\n}\n//# sourceMappingURL=ImageWorker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\n/**\n * Texture consisting of a random grid of greyscale pixels\n *\n * @remarks\n * The width and height of the NoiseTexture are defined by it's\n * {@link NoiseTextureProps.width} and {@link NoiseTextureProps.height}\n * properties. The {@link NoiseTextureProps.cacheId} prop can be varied in order\n * to bypass cache and get newly randomized texture data.\n */\nexport class NoiseTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = NoiseTexture.resolveDefaults(props);\n }\n async getTextureData() {\n const { width, height } = this.props;\n const size = width * height * 4;\n const pixelData8 = new Uint8ClampedArray(size);\n for (let i = 0; i < size; i += 4) {\n const v = Math.floor(Math.random() * 256);\n pixelData8[i] = v;\n pixelData8[i + 1] = v;\n pixelData8[i + 2] = v;\n pixelData8[i + 3] = 255;\n }\n return {\n data: new ImageData(pixelData8, width, height),\n };\n }\n static makeCacheKey(props) {\n const resolvedProps = NoiseTexture.resolveDefaults(props);\n return `NoiseTexture,${resolvedProps.width},${resolvedProps.height},${resolvedProps.cacheId}`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 128,\n height: props.height ?? 128,\n cacheId: props.cacheId ?? 0,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=NoiseTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../utils.js';\nimport { ImageWorkerManager } from './lib/ImageWorker.js';\nimport { ColorTexture } from './textures/ColorTexture.js';\nimport { ImageTexture } from './textures/ImageTexture.js';\nimport { NoiseTexture } from './textures/NoiseTexture.js';\nimport { SubTexture } from './textures/SubTexture.js';\nimport { RenderTexture } from './textures/RenderTexture.js';\nexport class CoreTextureManager {\n /**\n * Amount of used memory defined in pixels\n */\n usedMemory = 0;\n txConstructors = {};\n textureKeyCache = new Map();\n textureIdCache = new Map();\n ctxTextureCache = new WeakMap();\n textureRefCountMap = new WeakMap();\n imageWorkerManager = null;\n hasCreateImageBitmap = !!self.createImageBitmap;\n hasWorker = !!self.Worker;\n /**\n * Renderer that this texture manager is associated with\n *\n * @remarks\n * This MUST be set before the texture manager is used. Otherwise errors\n * will occur when using the texture manager.\n */\n renderer;\n constructor(numImageWorkers) {\n // Register default known texture types\n if (this.hasCreateImageBitmap && this.hasWorker) {\n this.imageWorkerManager = new ImageWorkerManager(numImageWorkers);\n }\n if (!this.hasCreateImageBitmap) {\n console.warn('[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.');\n }\n this.registerTextureType('ImageTexture', ImageTexture);\n this.registerTextureType('ColorTexture', ColorTexture);\n this.registerTextureType('NoiseTexture', NoiseTexture);\n this.registerTextureType('SubTexture', SubTexture);\n this.registerTextureType('RenderTexture', RenderTexture);\n }\n registerTextureType(textureType, textureClass) {\n this.txConstructors[textureType] = textureClass;\n }\n loadTexture(textureType, props, options = null) {\n const TextureClass = this.txConstructors[textureType];\n if (!TextureClass) {\n throw new Error(`Texture type \"${textureType}\" is not registered`);\n }\n let texture;\n // If an ID is specified, try to get the texture from the ID cache first\n if (options?.id !== undefined && this.textureIdCache.has(options.id)) {\n // console.log('Getting texture by texture desc ID', options.id);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n texture = this.textureIdCache.get(options.id);\n }\n // If the texture is not found in the ID cache, try to get it from the key cache\n if (!texture) {\n const descId = options?.id;\n const cacheKey = options?.cacheKey ?? TextureClass.makeCacheKey(props);\n if (cacheKey && this.textureKeyCache.has(cacheKey)) {\n // console.log('Getting texture by cache key', cacheKey);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n texture = this.textureKeyCache.get(cacheKey);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n texture = new TextureClass(this, props);\n }\n if (descId) {\n this.addTextureIdToCache(descId, cacheKey, texture);\n }\n }\n if (options?.preload) {\n const ctxTx = this.getCtxTexture(texture);\n ctxTx.load();\n }\n return texture;\n }\n /**\n * Add a `Texture` to the texture cache by its texture desc ID and cache key\n *\n * @remarks\n * This is used internally by the `CoreTextureManager` to cache textures\n * when they are created.\n *\n * It handles updating the texture ID cache, texture key cache, and texture\n * reference count map.\n *\n * @param textureDescId\n * @param cacheKey\n * @param texture\n */\n addTextureIdToCache(textureDescId, cacheKey, texture) {\n const { textureIdCache, textureRefCountMap } = this;\n textureIdCache.set(textureDescId, texture);\n if (textureRefCountMap.has(texture)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n textureRefCountMap.get(texture).count++;\n }\n else {\n textureRefCountMap.set(texture, { cacheKey, count: 1 });\n if (cacheKey) {\n this.textureKeyCache.set(cacheKey, texture);\n }\n }\n }\n /**\n * Remove a `Texture` from the texture cache by its texture desc ID\n *\n * @remarks\n * This is called externally by when we know (at least reasonably well) that\n * the `TextureRef` in the Main API space has been is no longer used. This\n * allows us to remove the `Texture` from the Usage Cache so that it can be\n * garbage collected as well.\n *\n * @param textureDescId\n */\n removeTextureIdFromCache(textureDescId) {\n const { textureIdCache, textureRefCountMap } = this;\n const texture = textureIdCache.get(textureDescId);\n if (!texture) {\n // Sometimes a texture is removed from the cache before it ever gets\n // added to the cache. This is fine and not an error.\n return;\n }\n textureIdCache.delete(textureDescId);\n if (textureRefCountMap.has(texture)) {\n const refCountObj = textureRefCountMap.get(texture);\n assertTruthy(refCountObj);\n refCountObj.count--;\n if (refCountObj.count === 0) {\n textureRefCountMap.delete(texture);\n // If the texture is not referenced anywhere else, remove it from the key cache\n // as well.\n // This should allow the `Texture` instance to be garbage collected.\n if (refCountObj.cacheKey) {\n this.textureKeyCache.delete(refCountObj.cacheKey);\n }\n }\n }\n // Free the ctx texture if it exists.\n this.ctxTextureCache.get(texture)?.free();\n }\n /**\n * Get an object containing debug information about the texture manager.\n *\n * @returns\n */\n getDebugInfo() {\n // const textureSet = new Set();\n // for (const texture of this.textureIdCache.values()) {\n // textureSet.add(texture);\n // }\n // for (const texture of this.textureKeyCache.values()) {\n // textureSet.add(texture);\n // }\n // TODO: Output number of bytes used by textures\n return {\n keyCacheSize: this.textureKeyCache.size,\n idCacheSize: this.textureIdCache.size,\n };\n }\n /**\n * Get a CoreContextTexture for the given Texture source.\n *\n * @remarks\n * If the texture source already has an allocated CoreContextTexture, it will be\n * returned from the cache. Otherwise, a new CoreContextTexture will be created\n * and cached.\n *\n * ContextTextures are stored in a WeakMap, so they will be garbage collected\n * when the Texture source is no longer referenced.\n *\n * @param textureSource\n * @returns\n */\n getCtxTexture(textureSource) {\n if (this.ctxTextureCache.has(textureSource)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.ctxTextureCache.get(textureSource);\n }\n const texture = this.renderer.createCtxTexture(textureSource);\n this.ctxTextureCache.set(textureSource, texture);\n return texture;\n }\n}\n//# sourceMappingURL=CoreTextureManager.js.map","export class TextureMemoryManager {\n memUsed = 0;\n textures = new Map();\n threshold;\n /**\n * @param byteThreshold Number of texture bytes to trigger garbage collection\n */\n constructor(byteThreshold) {\n this.threshold = byteThreshold;\n // If the threshold is 0, we disable the memory manager by replacing the\n // setTextureMemUse method with a no-op function.\n if (byteThreshold === 0) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.setTextureMemUse = () => { };\n }\n }\n setTextureMemUse(ctxTexture, byteSize) {\n if (this.textures.has(ctxTexture)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.memUsed -= this.textures.get(ctxTexture);\n }\n if (byteSize === 0) {\n this.textures.delete(ctxTexture);\n return;\n }\n else {\n this.memUsed += byteSize;\n this.textures.set(ctxTexture, byteSize);\n }\n if (this.memUsed > this.threshold) {\n this.gc();\n }\n }\n gc() {\n this.textures.forEach((byteSize, ctxTexture) => {\n if (!ctxTexture.renderable) {\n ctxTexture.free();\n }\n });\n }\n}\n//# sourceMappingURL=TextureMemoryManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { startLoop, getTimeStamp } from './platform.js';\nimport { WebGlCoreRenderer } from './renderers/webgl/WebGlCoreRenderer.js';\nimport { assertTruthy } from '../utils.js';\nimport { AnimationManager } from './animations/AnimationManager.js';\nimport { CoreNode } from './CoreNode.js';\nimport { CoreTextureManager } from './CoreTextureManager.js';\nimport { TrFontManager } from './text-rendering/TrFontManager.js';\nimport { CoreShaderManager } from './CoreShaderManager.js';\nimport { SdfTextRenderer } from './text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js';\nimport { CanvasTextRenderer } from './text-rendering/renderers/CanvasTextRenderer.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { ContextSpy } from './lib/ContextSpy.js';\nimport { TextureMemoryManager } from './TextureMemoryManager.js';\nconst bufferMemory = 2e6;\nconst autoStart = true;\nexport class Stage extends EventEmitter {\n options;\n /// Module Instances\n animationManager;\n txManager;\n txMemManager;\n fontManager;\n textRenderers;\n shManager;\n renderer;\n root;\n boundsMargin;\n /// State\n deltaTime = 0;\n lastFrameTime = 0;\n currentFrameTime = 0;\n fpsNumFrames = 0;\n fpsElapsedTime = 0;\n renderRequested = false;\n /// Debug data\n contextSpy = null;\n /**\n * Stage constructor\n */\n constructor(options) {\n super();\n this.options = options;\n const { canvas, clearColor, rootId, debug, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, txMemByteThreshold, } = options;\n this.txManager = new CoreTextureManager(numImageWorkers);\n this.txMemManager = new TextureMemoryManager(txMemByteThreshold);\n this.shManager = new CoreShaderManager();\n this.animationManager = new AnimationManager();\n this.contextSpy = enableContextSpy ? new ContextSpy() : null;\n let bm = [0, 0, 0, 0];\n if (boundsMargin) {\n bm = Array.isArray(boundsMargin)\n ? boundsMargin\n : [boundsMargin, boundsMargin, boundsMargin, boundsMargin];\n }\n this.boundsMargin = bm;\n if (debug?.monitorTextureCache) {\n setInterval(() => {\n assertTruthy(this.txManager);\n const debugInfo = this.txManager.getDebugInfo();\n console.log('Texture ID Cache Size: ', debugInfo.idCacheSize);\n console.log('Texture Key Cache Size: ', debugInfo.keyCacheSize);\n }, 1000);\n }\n this.renderer = new WebGlCoreRenderer({\n stage: this,\n canvas,\n pixelRatio: options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio,\n clearColor: clearColor ?? 0xff000000,\n bufferMemory,\n txManager: this.txManager,\n txMemManager: this.txMemManager,\n shManager: this.shManager,\n contextSpy: this.contextSpy,\n });\n // Must do this after renderer is created\n this.txManager.renderer = this.renderer;\n this.textRenderers = {\n canvas: new CanvasTextRenderer(this),\n sdf: new SdfTextRenderer(this),\n };\n this.fontManager = new TrFontManager(this.textRenderers);\n // create root node\n const rootNode = new CoreNode(this, {\n id: rootId,\n x: 0,\n y: 0,\n width: appWidth,\n height: appHeight,\n alpha: 1,\n autosize: false,\n clipping: false,\n color: 0x00000000,\n colorTop: 0x00000000,\n colorBottom: 0x00000000,\n colorLeft: 0x00000000,\n colorRight: 0x00000000,\n colorTl: 0x00000000,\n colorTr: 0x00000000,\n colorBl: 0x00000000,\n colorBr: 0x00000000,\n zIndex: 0,\n zIndexLocked: 0,\n scaleX: 1,\n scaleY: 1,\n mountX: 0,\n mountY: 0,\n mount: 0,\n pivot: 0.5,\n pivotX: 0.5,\n pivotY: 0.5,\n rotation: 0,\n parent: null,\n texture: null,\n textureOptions: null,\n shader: null,\n shaderProps: null,\n rtt: false,\n });\n this.root = rootNode;\n // execute platform start loop\n if (autoStart) {\n startLoop(this);\n }\n }\n /**\n * Update animations\n */\n updateAnimations() {\n const { animationManager } = this;\n if (!this.root) {\n return;\n }\n this.lastFrameTime = this.currentFrameTime;\n this.currentFrameTime = getTimeStamp();\n this.deltaTime = !this.lastFrameTime\n ? 100 / 6\n : this.currentFrameTime - this.lastFrameTime;\n this.emit('frameTick', {\n time: this.currentFrameTime,\n delta: this.deltaTime,\n });\n // step animation\n animationManager.update(this.deltaTime);\n }\n /**\n * Check if the scene has updates\n */\n hasSceneUpdates() {\n return !!this.root.updateType || this.renderRequested;\n }\n /**\n * Start a new frame draw\n */\n drawFrame() {\n const { renderer, renderRequested } = this;\n // Update tree if needed\n if (this.root.updateType !== 0) {\n this.root.update(this.deltaTime, this.root.clippingRect);\n }\n // Reset render operations and clear the canvas\n renderer?.reset();\n // If we have RTT nodes draw them first\n // So we can use them as textures in the main scene\n if (renderer.rttNodes.length > 0) {\n renderer.renderRTTNodes();\n }\n // Fill quads buffer\n this.addQuads(this.root);\n // Perform render pass\n renderer?.render();\n this.calculateFps();\n // Reset renderRequested flag if it was set\n if (renderRequested) {\n this.renderRequested = false;\n }\n }\n calculateFps() {\n // If there's an FPS update interval, emit the FPS update event\n // when the specified interval has elapsed.\n const { fpsUpdateInterval } = this.options;\n if (fpsUpdateInterval) {\n this.fpsNumFrames++;\n this.fpsElapsedTime += this.deltaTime;\n if (this.fpsElapsedTime >= fpsUpdateInterval) {\n const fps = Math.round((this.fpsNumFrames * 1000) / this.fpsElapsedTime);\n this.fpsNumFrames = 0;\n this.fpsElapsedTime = 0;\n this.emit('fpsUpdate', {\n fps,\n contextSpyData: this.contextSpy?.getData() ?? null,\n });\n this.contextSpy?.reset();\n }\n }\n }\n addQuads(node) {\n assertTruthy(this.renderer && node.globalTransform);\n if (node.isRenderable) {\n node.renderQuads(this.renderer);\n }\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (!child) {\n continue;\n }\n if (child?.worldAlpha === 0) {\n continue;\n }\n this.addQuads(child);\n }\n }\n /**\n * Request a render pass without forcing an update\n */\n requestRender() {\n this.renderRequested = true;\n }\n /**\n * Given a font name, and possible renderer override, return the best compatible text renderer.\n *\n * @remarks\n * Will always return at least a canvas renderer if no other suitable renderer can be resolved.\n *\n * @param fontFamily\n * @param textRendererOverride\n * @returns\n */\n resolveTextRenderer(trProps, textRendererOverride = null) {\n let rendererId = textRendererOverride;\n let overrideFallback = false;\n // Check if the override is valid (if one is provided)\n if (rendererId) {\n const possibleRenderer = this.textRenderers[rendererId];\n if (!possibleRenderer) {\n console.warn(`Text renderer override '${rendererId}' not found.`);\n rendererId = null;\n overrideFallback = true;\n }\n else if (!possibleRenderer.canRenderFont(trProps)) {\n console.warn(`Cannot use override text renderer '${rendererId}' for font`, trProps);\n rendererId = null;\n overrideFallback = true;\n }\n }\n if (!rendererId) {\n // Iterate through the text renderers and find the first one that can render the font\n for (const [trId, tr] of Object.entries(this.textRenderers)) {\n if (trId === 'canvas') {\n // Canvas is always a fallback\n continue;\n }\n if (tr.canRenderFont(trProps)) {\n rendererId = trId;\n break;\n }\n }\n if (!rendererId) {\n // If no renderer can be found, use the canvas renderer\n rendererId = 'canvas';\n }\n }\n if (overrideFallback) {\n console.warn(`Falling back to text renderer ${String(rendererId)}`);\n }\n // By now we are guaranteed to have a valid rendererId (at least Canvas);\n const resolvedTextRenderer = this.textRenderers[rendererId];\n assertTruthy(resolvedTextRenderer, 'resolvedTextRenderer undefined');\n // Need to explicitly cast to TextRenderer because TS doesn't like\n // the covariant state argument in the setter method map\n return resolvedTextRenderer;\n }\n}\n//# sourceMappingURL=Stage.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreNode, UpdateType } from './CoreNode.js';\nimport { assertTruthy } from '../utils.js';\nimport { Matrix3d } from './lib/Matrix3d.js';\nexport class CoreTextNode extends CoreNode {\n textRenderer;\n trState;\n _textRendererOverride = null;\n constructor(stage, props) {\n super(stage, props);\n this._textRendererOverride = props.textRendererOverride;\n const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState({\n x: this.absX,\n y: this.absY,\n width: props.width,\n height: props.height,\n textAlign: props.textAlign,\n color: props.color,\n zIndex: props.zIndex,\n contain: props.contain,\n scrollable: props.scrollable,\n scrollY: props.scrollY,\n offsetY: props.offsetY,\n letterSpacing: props.letterSpacing,\n debug: props.debug,\n fontFamily: props.fontFamily,\n fontSize: props.fontSize,\n fontStretch: props.fontStretch,\n fontStyle: props.fontStyle,\n fontWeight: props.fontWeight,\n text: props.text,\n lineHeight: props.lineHeight,\n maxLines: props.maxLines,\n textBaseline: props.textBaseline,\n verticalAlign: props.verticalAlign,\n overflowSuffix: props.overflowSuffix,\n });\n this.textRenderer = resolvedTextRenderer;\n this.trState = textRendererState;\n }\n onTextLoaded = () => {\n const { contain } = this;\n const setWidth = this.trState.props.width;\n const setHeight = this.trState.props.height;\n const calcWidth = this.trState.textW || 0;\n const calcHeight = this.trState.textH || 0;\n if (contain === 'both') {\n this.props.width = setWidth;\n this.props.height = setHeight;\n }\n else if (contain === 'width') {\n this.props.width = setWidth;\n this.props.height = calcHeight;\n }\n else if (contain === 'none') {\n this.props.width = calcWidth;\n this.props.height = calcHeight;\n }\n this.updateLocalTransform();\n // Incase the RAF loop has been stopped already before text was loaded,\n // we request a render so it can be drawn.\n this.stage.requestRender();\n this.emit('loaded', {\n type: 'text',\n dimensions: {\n width: this.trState.textW || 0,\n height: this.trState.textH || 0,\n },\n });\n };\n onTextFailed = (target, error) => {\n this.emit('failed', {\n type: 'text',\n error,\n });\n };\n get width() {\n return this.props.width;\n }\n set width(value) {\n this.props.width = value;\n this.textRenderer.set.width(this.trState, value);\n // If not containing, we must update the local transform to account for the\n // new width\n if (this.contain === 'none') {\n this.setUpdateType(UpdateType.Local);\n }\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n this.props.height = value;\n this.textRenderer.set.height(this.trState, value);\n // If not containing in the horizontal direction, we must update the local\n // transform to account for the new height\n if (this.contain !== 'both') {\n this.setUpdateType(UpdateType.Local);\n }\n }\n get color() {\n return this.trState.props.color;\n }\n set color(value) {\n this.textRenderer.set.color(this.trState, value);\n }\n get text() {\n return this.trState.props.text;\n }\n set text(value) {\n this.textRenderer.set.text(this.trState, value);\n }\n get textRendererOverride() {\n return this._textRendererOverride;\n }\n set textRendererOverride(value) {\n this._textRendererOverride = value;\n this.textRenderer.destroyState(this.trState);\n const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState(this.trState.props);\n this.textRenderer = resolvedTextRenderer;\n this.trState = textRendererState;\n }\n get fontSize() {\n return this.trState.props.fontSize;\n }\n set fontSize(value) {\n this.textRenderer.set.fontSize(this.trState, value);\n }\n get fontFamily() {\n return this.trState.props.fontFamily;\n }\n set fontFamily(value) {\n this.textRenderer.set.fontFamily(this.trState, value);\n }\n get fontStretch() {\n return this.trState.props.fontStretch;\n }\n set fontStretch(value) {\n this.textRenderer.set.fontStretch(this.trState, value);\n }\n get fontStyle() {\n return this.trState.props.fontStyle;\n }\n set fontStyle(value) {\n this.textRenderer.set.fontStyle(this.trState, value);\n }\n get fontWeight() {\n return this.trState.props.fontWeight;\n }\n set fontWeight(value) {\n this.textRenderer.set.fontWeight(this.trState, value);\n }\n get textAlign() {\n return this.trState.props.textAlign;\n }\n set textAlign(value) {\n this.textRenderer.set.textAlign(this.trState, value);\n }\n get contain() {\n return this.trState.props.contain;\n }\n set contain(value) {\n this.textRenderer.set.contain(this.trState, value);\n }\n get scrollable() {\n return this.trState.props.scrollable;\n }\n set scrollable(value) {\n this.textRenderer.set.scrollable(this.trState, value);\n }\n get scrollY() {\n return this.trState.props.scrollY;\n }\n set scrollY(value) {\n this.textRenderer.set.scrollY(this.trState, value);\n }\n get offsetY() {\n return this.trState.props.offsetY;\n }\n set offsetY(value) {\n this.textRenderer.set.offsetY(this.trState, value);\n }\n get letterSpacing() {\n return this.trState.props.letterSpacing;\n }\n set letterSpacing(value) {\n this.textRenderer.set.letterSpacing(this.trState, value);\n }\n get lineHeight() {\n return this.trState.props.lineHeight;\n }\n set lineHeight(value) {\n if (this.textRenderer.set.lineHeight) {\n this.textRenderer.set.lineHeight(this.trState, value);\n }\n }\n get maxLines() {\n return this.trState.props.maxLines;\n }\n set maxLines(value) {\n if (this.textRenderer.set.maxLines) {\n this.textRenderer.set.maxLines(this.trState, value);\n }\n }\n get textBaseline() {\n return this.trState.props.textBaseline;\n }\n set textBaseline(value) {\n if (this.textRenderer.set.textBaseline) {\n this.textRenderer.set.textBaseline(this.trState, value);\n }\n }\n get verticalAlign() {\n return this.trState.props.verticalAlign;\n }\n set verticalAlign(value) {\n if (this.textRenderer.set.verticalAlign) {\n this.textRenderer.set.verticalAlign(this.trState, value);\n }\n }\n get overflowSuffix() {\n return this.trState.props.overflowSuffix;\n }\n set overflowSuffix(value) {\n if (this.textRenderer.set.overflowSuffix) {\n this.textRenderer.set.overflowSuffix(this.trState, value);\n }\n }\n get debug() {\n return this.trState.props.debug;\n }\n set debug(value) {\n this.textRenderer.set.debug(this.trState, value);\n }\n update(delta, parentClippingRect) {\n super.update(delta, parentClippingRect);\n assertTruthy(this.globalTransform);\n // globalTransform is updated in super.update(delta)\n this.textRenderer.set.x(this.trState, this.globalTransform.tx);\n this.textRenderer.set.y(this.trState, this.globalTransform.ty);\n }\n checkRenderProps() {\n if (this.trState.props.text !== '') {\n return true;\n }\n return super.checkRenderProps();\n }\n onChangeIsRenderable(isRenderable) {\n super.onChangeIsRenderable(isRenderable);\n this.textRenderer.setIsRenderable(this.trState, isRenderable);\n }\n renderQuads(renderer) {\n assertTruthy(this.globalTransform);\n // Prevent quad rendering if parent has a render texture\n // and this node is not the render texture\n if (this.parentHasRenderTexture) {\n if (!renderer.renderToTextureActive) {\n return;\n }\n // Prevent quad rendering if parent render texture is not the active render texture\n if (this.parentRenderTexture !== renderer.activeRttNode) {\n return;\n }\n }\n if (this.parentHasRenderTexture && this.props.parent?.rtt) {\n this.globalTransform = Matrix3d.identity();\n this.globalTransform.multiply(this.localTransform ?? Matrix3d.identity());\n }\n assertTruthy(this.globalTransform);\n this.textRenderer.renderQuads(this.trState, this.globalTransform, this.clippingRect, this.worldAlpha, this.parentHasRenderTexture, this.framebufferDimensions);\n }\n /**\n * Destroy the node and cleanup all resources\n */\n destroy() {\n super.destroy();\n this.textRenderer.destroyState(this.trState);\n }\n /**\n * Resolve a text renderer and a new state based on the current text renderer props provided\n * @param props\n * @returns\n */\n resolveTextRendererAndState(props) {\n const resolvedTextRenderer = this.stage.resolveTextRenderer(props, this._textRendererOverride);\n const textRendererState = resolvedTextRenderer.createState(props);\n textRendererState.emitter.on('loaded', this.onTextLoaded);\n textRendererState.emitter.on('failed', this.onTextFailed);\n resolvedTextRenderer.scheduleUpdateState(textRendererState);\n return {\n resolvedTextRenderer,\n textRendererState,\n };\n }\n}\n//# sourceMappingURL=CoreTextNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MainOnlyNode, getNewId } from './MainOnlyNode.js';\nimport { CoreTextNode } from '../../core/CoreTextNode.js';\nexport class MainOnlyTextNode extends MainOnlyNode {\n constructor(props, rendererMain, stage) {\n super(props, rendererMain, stage, new CoreTextNode(stage, {\n id: getNewId(),\n x: props.x,\n y: props.y,\n width: props.width,\n height: props.height,\n alpha: props.alpha,\n autosize: props.autosize,\n clipping: props.clipping,\n color: props.color,\n colorTop: props.colorTop,\n colorBottom: props.colorBottom,\n colorLeft: props.colorLeft,\n colorRight: props.colorRight,\n colorTl: props.colorTl,\n colorTr: props.colorTr,\n colorBl: props.colorBl,\n colorBr: props.colorBr,\n zIndex: props.zIndex,\n zIndexLocked: props.zIndexLocked,\n scaleX: props.scaleX,\n scaleY: props.scaleY,\n mountX: props.mountX,\n mountY: props.mountY,\n mount: props.mount,\n pivot: props.pivot,\n pivotX: props.pivotX,\n pivotY: props.pivotY,\n rotation: props.rotation,\n // Text properties\n text: props.text,\n fontSize: props.fontSize,\n fontFamily: props.fontFamily,\n fontWeight: props.fontWeight,\n fontStretch: props.fontStretch,\n fontStyle: props.fontStyle,\n contain: props.contain,\n scrollable: props.scrollable,\n letterSpacing: props.letterSpacing,\n textAlign: props.textAlign,\n scrollY: props.scrollY,\n offsetY: props.offsetY,\n textRendererOverride: props.textRendererOverride,\n lineHeight: props.lineHeight,\n maxLines: props.maxLines,\n textBaseline: props.textBaseline,\n verticalAlign: props.verticalAlign,\n overflowSuffix: props.overflowSuffix,\n debug: props.debug,\n // These properties will get set appropriately in the base MainOnlyNode class\n parent: null,\n texture: null,\n textureOptions: null,\n shader: null,\n shaderProps: null,\n rtt: false,\n parentHasRenderTexture: false,\n }));\n }\n get text() {\n return this.coreNode.text;\n }\n set text(value) {\n this.coreNode.text = value;\n }\n get textRendererOverride() {\n return this.coreNode.textRendererOverride;\n }\n set textRendererOverride(value) {\n this.coreNode.textRendererOverride = value;\n }\n get fontSize() {\n return this.coreNode.fontSize;\n }\n set fontSize(value) {\n this.coreNode.fontSize = value;\n }\n get fontFamily() {\n return this.coreNode.fontFamily;\n }\n set fontFamily(value) {\n this.coreNode.fontFamily = value;\n }\n get fontWeight() {\n return this.coreNode.fontWeight;\n }\n set fontWeight(value) {\n this.coreNode.fontWeight = value;\n }\n get fontStretch() {\n return this.coreNode.fontStretch;\n }\n set fontStretch(value) {\n this.coreNode.fontStretch = value;\n }\n get fontStyle() {\n return this.coreNode.fontStyle;\n }\n set fontStyle(value) {\n this.coreNode.fontStyle = value;\n }\n get textAlign() {\n return this.coreNode.textAlign;\n }\n set textAlign(value) {\n this.coreNode.textAlign = value;\n }\n get contain() {\n return this.coreNode.contain;\n }\n set contain(value) {\n this.coreNode.contain = value;\n }\n get scrollable() {\n return this.coreNode.scrollable;\n }\n set scrollable(value) {\n this.coreNode.scrollable = value;\n }\n get scrollY() {\n return this.coreNode.scrollY;\n }\n set scrollY(value) {\n this.coreNode.scrollY = value;\n }\n get offsetY() {\n return this.coreNode.offsetY;\n }\n set offsetY(value) {\n this.coreNode.offsetY = value;\n }\n get letterSpacing() {\n return this.coreNode.letterSpacing;\n }\n set letterSpacing(value) {\n this.coreNode.letterSpacing = value;\n }\n get lineHeight() {\n return this.coreNode.lineHeight;\n }\n set lineHeight(value) {\n if (value) {\n this.coreNode.lineHeight = value;\n }\n }\n get maxLines() {\n return this.coreNode.maxLines;\n }\n set maxLines(value) {\n if (value) {\n this.coreNode.maxLines = value;\n }\n }\n get textBaseline() {\n return this.coreNode.textBaseline;\n }\n set textBaseline(value) {\n if (value) {\n this.coreNode.textBaseline = value;\n }\n }\n get verticalAlign() {\n return this.coreNode.verticalAlign;\n }\n set verticalAlign(value) {\n if (value) {\n this.coreNode.verticalAlign = value;\n }\n }\n get overflowSuffix() {\n return this.coreNode.overflowSuffix;\n }\n set overflowSuffix(value) {\n if (value) {\n this.coreNode.overflowSuffix = value;\n }\n }\n get debug() {\n return this.coreNode.debug;\n }\n set debug(value) {\n this.coreNode.debug = value;\n }\n}\n//# sourceMappingURL=MainOnlyTextNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { MainOnlyNode, getNewId } from './MainOnlyNode.js';\nimport { Stage, } from '../../core/Stage.js';\nimport { MainOnlyTextNode } from './MainOnlyTextNode.js';\nimport { loadCoreExtension } from '../utils.js';\nexport class MainCoreDriver {\n root = null;\n stage = null;\n rendererMain = null;\n async init(rendererMain, rendererSettings, canvas) {\n this.stage = new Stage({\n rootId: getNewId(),\n appWidth: rendererSettings.appWidth,\n appHeight: rendererSettings.appHeight,\n txMemByteThreshold: rendererSettings.txMemByteThreshold,\n boundsMargin: rendererSettings.boundsMargin,\n deviceLogicalPixelRatio: rendererSettings.deviceLogicalPixelRatio,\n devicePhysicalPixelRatio: rendererSettings.devicePhysicalPixelRatio,\n clearColor: rendererSettings.clearColor,\n canvas,\n fpsUpdateInterval: rendererSettings.fpsUpdateInterval,\n enableContextSpy: rendererSettings.enableContextSpy,\n numImageWorkers: rendererSettings.numImageWorkers,\n debug: {\n monitorTextureCache: false,\n },\n });\n this.rendererMain = rendererMain;\n assertTruthy(this.stage.root);\n const node = new MainOnlyNode(rendererMain.resolveNodeDefaults({}), this.rendererMain, this.stage, this.stage.root);\n this.root = node;\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n // Load the Core Extension Module if one was specified.\n if (rendererSettings.coreExtensionModule) {\n await loadCoreExtension(rendererSettings.coreExtensionModule, this.stage);\n }\n // Forward fpsUpdate events from the stage to RendererMain\n this.stage.on('fpsUpdate', ((stage, fpsData) => {\n this.onFpsUpdate(fpsData);\n }));\n this.stage.on('frameTick', ((stage, frameTickData) => {\n this.onFrameTick(frameTickData);\n }));\n this.stage.on('idle', () => {\n this.onIdle();\n });\n }\n createNode(props) {\n assertTruthy(this.rendererMain);\n assertTruthy(this.stage);\n const node = new MainOnlyNode(props, this.rendererMain, this.stage);\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n return node;\n }\n createTextNode(props) {\n assertTruthy(this.rendererMain);\n assertTruthy(this.stage);\n const node = new MainOnlyTextNode(props, this.rendererMain, this.stage);\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n return node;\n }\n // TODO: Remove?\n destroyNode(node) {\n node.destroy();\n }\n releaseTexture(id) {\n const { stage } = this;\n assertTruthy(stage);\n stage.txManager.removeTextureIdFromCache(id);\n }\n getRootNode() {\n assertTruthy(this.root);\n return this.root;\n }\n //#region Event Methods\n // The implementations for these event methods are provided by RendererMain\n onCreateNode(node) {\n throw new Error('Method not implemented.');\n }\n onBeforeDestroyNode(node) {\n throw new Error('Method not implemented.');\n }\n onFpsUpdate(fpsData) {\n throw new Error('Method not implemented.');\n }\n onFrameTick(frameTickData) {\n throw new Error('Method not implemented.');\n }\n onIdle() {\n throw new Error('Method not implemented.');\n }\n}\n//# sourceMappingURL=MainCoreDriver.js.map","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = (n + m) >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;\n else if (cmp < 0) n = k - 1;\n else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined\n};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned\n ? UNOWNED\n : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);\n else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(\n () => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n },\n undefined,\n false,\n 0\n ),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if ((arguments.length === 2 && typeof pFetcher === \"object\") || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;\n else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v;\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated)\n queueMicrotask(() =>\n options.onHydrated(key, {\n value: v\n })\n );\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);\n else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p =\n initP !== NO_INIT\n ? initP\n : untrack(() =>\n fetcher(lookup, {\n value: value(),\n refetching\n })\n );\n if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"value\" in p) {\n if (p.status === \"success\") loadEnd(pr, p.value, undefined, lookup);\n else loadEnd(pr, undefined, undefined, lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => (scheduled = false));\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(\n v => loadEnd(p, v, undefined, lookup),\n e => loadEnd(p, undefined, castError(e), lookup)\n );\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));\n else load(false);\n return [\n read,\n {\n refetch: load,\n mutate: setValue\n }\n ];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(\n () => {\n if (!t || !t.fn)\n t = requestCallback(\n () => setDeferred(() => node.value),\n timeout !== undefined\n ? {\n timeout\n }\n : undefined\n );\n return source();\n },\n undefined,\n true\n );\n const [deferred, setDeferred] = createSignal(\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n options\n );\n updateComputation(node);\n setDeferred(() =>\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(\n p => {\n const v = source();\n for (const [key, val] of subs.entries())\n if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);\n else Effects.push(c);\n }\n }\n return v;\n },\n undefined,\n true,\n STALE\n );\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if ((l = subs.get(key))) l.add(listener);\n else subs.set(key, (l = new Set([listener])));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(\n key,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null);\n else if (Owner.cleanups === null) Owner.cleanups = [fn];\n else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t =\n Transition ||\n (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => (t.resolve = res)));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/ createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n return Owner && Owner.context && Owner.context[context.id] !== undefined\n ? Owner.context[context.id]\n : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const { factory: oldFactory, untrack: oldUntrack } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);\n else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current =\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || (!isComp && Transition.sources.has(node))) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;\n else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false);\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(\n node,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n time\n );\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null);\n else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];\n else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];\n else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;\n else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);\n else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);\n else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n } else if (sharedConfig.effects) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n setHydrateContext();\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;\n else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount))\n runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;\n else o.state = PENDING;\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;\n else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, (owner && owner.owner) || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects)\n Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });\n else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(\n () =>\n (res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n })),\n undefined\n );\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null);\n else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler =\n typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => (\"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub()));\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n } else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (\n start = 0, end = Math.min(len, newLen);\n start < end && items[start] === newItems[start];\n start++\n );\n for (\n end = len - 1, newEnd = newLen - 1;\n end >= start && newEnd >= start && items[end] === newItems[newEnd];\n end--, newEnd--\n ) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, (len = newLen));\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return (mapped = mapped.slice(0, len));\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || (!!s && $PROXY in s);\n sources[i] = typeof s === \"function\" ? ((proxy = true), createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy(\n {\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++)\n keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n },\n propTraps\n );\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get\n ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind((sourcesMap[key] = [desc.get.bind(source)]))\n }\n : desc.value !== undefined\n ? desc\n : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));\n else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);\n else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n if ($PROXY in props) {\n const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n const res = keys.map(k => {\n return new Proxy(\n {\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n },\n propTraps\n );\n });\n res.push(\n new Proxy(\n {\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n },\n propTraps\n )\n );\n return res;\n }\n const otherObject = {};\n const objects = keys.map(() => ({}));\n for (const propName of Object.getOwnPropertyNames(props)) {\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc =\n !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n let blocked = false;\n let objectIndex = 0;\n for (const k of keys) {\n if (k.includes(propName)) {\n blocked = true;\n isDefaultDesc\n ? (objects[objectIndex][propName] = desc.value)\n : Object.defineProperty(objects[objectIndex], propName, desc);\n }\n ++objectIndex;\n }\n if (!blocked) {\n isDefaultDesc\n ? (otherObject[propName] = desc.value)\n : Object.defineProperty(otherObject, propName, desc);\n }\n }\n return [...objects, otherObject];\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(\n () =>\n (Comp = comp()) &&\n untrack(() => {\n if (false);\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n })\n );\n };\n wrap.preload = () => p || ((p = fn()).then(mod => (comp = () => mod.default)), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => (keyed ? a === b : !a === !b)\n });\n return createMemo(\n () => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n keyed\n ? c\n : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return props.when;\n }\n )\n )\n : child;\n }\n return props.fallback;\n },\n undefined,\n undefined\n );\n}\nfunction Switch(props) {\n let keyed = false;\n const equals = (a, b) => (keyed ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(\n () => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n },\n undefined,\n {\n equals\n }\n );\n return createMemo(\n () => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n return fn\n ? untrack(() =>\n c(\n keyed\n ? when\n : () => {\n if (untrack(evalConditions)[0] !== index) throw narrowedError(\"Match\");\n return cond.when;\n }\n )\n )\n : c;\n },\n undefined,\n undefined\n );\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load)\n err = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count);\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(\n () => {\n let e;\n if ((e = errored())) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n },\n undefined,\n undefined\n );\n}\n\nconst suspenseListEquals = (a, b) =>\n a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(\n prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n { showContent = true, showFallback = true } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || (next && tail === \"collapsed\") ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n },\n {\n inFallback: false\n }\n );\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.status !== \"success\") p = ref;\n else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(\n () => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n },\n err => {\n error = err;\n set();\n }\n );\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return (flicker = undefined);\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n { showContent = true, showFallback = true } = show ? show() : {};\n if ((!inFallback || (p && p !== \"$$f\")) && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport {\n $DEVCOMP,\n $PROXY,\n $TRACK,\n DEV,\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n batch,\n cancelCallback,\n catchError,\n children,\n createComponent,\n createComputed,\n createContext,\n createDeferred,\n createEffect,\n createMemo,\n createReaction,\n createRenderEffect,\n createResource,\n createRoot,\n createSelector,\n createSignal,\n createUniqueId,\n enableExternalSource,\n enableHydration,\n enableScheduling,\n equalFn,\n from,\n getListener,\n getOwner,\n indexArray,\n lazy,\n mapArray,\n mergeProps,\n observable,\n on,\n onCleanup,\n onError,\n onMount,\n requestCallback,\n resetErrorBoundaries,\n runWithOwner,\n sharedConfig,\n splitProps,\n startTransition,\n untrack,\n useContext,\n useTransition\n};\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n MainCoreDriver,\n RendererMain,\n type RendererMainSettings,\n} from '@lightningjs/renderer';\n\nexport let renderer: RendererMain;\nexport let createShader: RendererMain['createShader'];\n\nexport interface SolidRendererOptions extends RendererMainSettings {\n threadXCoreWorkerUrl?: string;\n rootId: string | HTMLElement;\n}\n\nexport function getRenderer(): RendererMain {\n return renderer;\n}\n\nexport function startLightningRenderer(\n options: Partial = {},\n rootId: string | HTMLElement = 'app',\n): RendererMain {\n const driver = new MainCoreDriver();\n renderer = new RendererMain(options, rootId, driver);\n createShader = renderer.createShader.bind(renderer);\n return renderer;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ElementNode, SolidNode } from './index.js';\n\n/**\n * Children class\n */\nexport default class Children extends Array {\n _parent: ElementNode;\n\n constructor(node: ElementNode) {\n super();\n this._parent = node;\n }\n\n get selected(): ElementNode | undefined {\n // For selected Elements should always be an ElementNode\n return this[this._parent.selected || 0] as ElementNode | undefined;\n }\n\n get firstChild() {\n return this[0];\n }\n\n insert(node: SolidNode, beforeNode: SolidNode) {\n if (beforeNode) {\n const index = this.indexOf(beforeNode);\n this.splice(index, 0, node);\n } else {\n this.push(node);\n }\n\n node.parent = this._parent;\n this._parent._isDirty = true;\n }\n\n remove(node: SolidNode) {\n const nodeIndexToRemove = this.indexOf(node);\n if (nodeIndexToRemove >= 0) {\n this.splice(nodeIndexToRemove, 1);\n }\n }\n}\n","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n AnimationSettings,\n RendererMainSettings,\n} from '@lightningjs/renderer';\nimport type { IntrinsicTextNodeStyleProps } from './intrinsicTypes.js';\n\ninterface Config {\n debug: boolean;\n animationSettings: Partial;\n animationsEnabled: boolean;\n fontSettings: Partial;\n rendererOptions?: Partial;\n}\n\nfunction isDevEnv(): boolean {\n return import.meta.env && import.meta.env.DEV;\n}\nexport const isDev = isDevEnv() || false;\n\nexport const config: Config = {\n debug: false,\n animationsEnabled: true,\n animationSettings: {\n duration: 250,\n easing: 'ease-in-out',\n },\n fontSettings: {\n fontFamily: 'Ubuntu',\n fontSize: 100,\n },\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { config, isDev } from '../config.js';\nimport type { SolidNode, SolidStyles } from './node/index.js';\n\nfunction hasDebug(node: any) {\n return isObject(node) && node.debug;\n}\n\nexport function log(msg: string, node: SolidNode, ...args: any[]) {\n if (isDev) {\n if (config.debug || hasDebug(node) || hasDebug(args[0])) {\n console.log(msg, node, ...args);\n }\n }\n}\n\nexport function isFunc(item: unknown): item is (...args: unknown[]) => unknown {\n return typeof item === 'function';\n}\n\nexport function isObject(\n item: unknown,\n): item is Record {\n return typeof item === 'object';\n}\n\nexport function isArray(item: unknown): item is any[] {\n return Array.isArray(item);\n}\n\nexport function isString(item: unknown): item is string {\n return typeof item === 'string';\n}\n\nexport function isNumber(item: unknown): item is number {\n return typeof item === 'number';\n}\n\nexport function isInteger(item: unknown): item is number {\n return Number.isInteger(item);\n}\n\nexport function keyExists(\n obj: Record,\n keys: (string | number | symbol)[],\n) {\n for (const key of keys) {\n if (key in obj) {\n return true;\n }\n }\n return false;\n}\n\nexport function flattenStyles(\n obj: SolidStyles | undefined | (SolidStyles | undefined)[],\n result: Record = {},\n): SolidStyles {\n if (isArray(obj)) {\n obj.forEach((item) => {\n flattenStyles(item, result);\n });\n } else if (obj) {\n // handle the case where the object is not an array\n for (const key in obj) {\n // be careful of 0 values\n if (result[key as keyof SolidStyles] === undefined) {\n result[key as keyof SolidStyles] = obj[key as keyof SolidStyles];\n }\n }\n }\n\n return result;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isArray, isString } from '../utils.js';\n\nexport type NodeStates =\n | string[]\n | string\n | Record;\n\nexport default class States extends Array {\n private onChange: () => void;\n\n constructor(callback: () => void, initialState: NodeStates = {}) {\n if (isArray(initialState)) {\n super(...initialState);\n } else if (isString(initialState)) {\n super(initialState);\n } else {\n super(\n ...Object.entries(initialState)\n .filter(([_key, value]) => value)\n .map(([key]) => key),\n );\n }\n\n this.onChange = callback;\n return this;\n }\n\n has(state: string) {\n return this.indexOf(state) >= 0;\n }\n\n is(state: string) {\n return this.indexOf(state) >= 0;\n }\n\n add(state: string) {\n this.push(state);\n this.onChange();\n }\n\n toggle(state: string) {\n if (this.has(state)) {\n this.remove(state);\n } else {\n this.add(state);\n }\n }\n\n remove(state: string) {\n const stateIndexToRemove = this.indexOf(state);\n if (stateIndexToRemove >= 0) {\n this.splice(stateIndexToRemove, 1);\n this.onChange();\n }\n }\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { assertTruthy } from '@lightningjs/renderer/utils';\nimport type { ElementNode, SolidNode } from './node/index.js';\n\nexport default function (node: ElementNode): boolean {\n const children = [];\n let hasOrder = false;\n for (let i = 0; i < node.children.length; i++) {\n const c = node.children[i]!;\n // Filter empty text nodes which are place holders for and elements missing dimensions\n if (c.name === 'TextNode') {\n continue;\n }\n\n // Skip layout for non flex items\n if (c.flexItem === false) {\n continue;\n }\n\n // text node hasnt loaded yet - skip layout\n if (c.name === 'text' && c.text !== '' && !(c.width || c.height)) {\n return false;\n }\n\n if (c.flexOrder !== undefined) {\n hasOrder = true;\n }\n\n children.push(c);\n }\n\n if (hasOrder) {\n children.sort((a, b) => (a.flexOrder || 0) - (b.flexOrder || 0));\n }\n\n const numChildren = children.length;\n const direction = node.flexDirection || 'row';\n const isRow = direction === 'row';\n const dimension = isRow ? 'width' : 'height';\n const crossDimension = isRow ? 'height' : 'width';\n const marginOne = isRow ? 'marginLeft' : 'marginTop';\n const marginTwo = isRow ? 'marginRight' : 'marginBottom';\n const prop = isRow ? 'x' : 'y';\n const crossProp = isRow ? 'y' : 'x';\n const containerSize = node[dimension] || 0;\n const containerCrossSize = node[crossDimension] || 0;\n const gap = node.gap || 0;\n const justify = node.justifyContent || 'flexStart';\n const align = node.alignItems;\n let itemSize = 0;\n if (['center', 'spaceBetween', 'spaceEvenly'].includes(justify)) {\n itemSize = children.reduce((prev, c) => prev + (c[dimension] || 0), 0);\n }\n\n // Only align children if container has a cross size\n const crossAlignChild =\n containerCrossSize && align\n ? (c: SolidNode) => {\n if (align === 'flexStart') {\n c[crossProp] = 0;\n } else if (align === 'center') {\n c[crossProp] = (containerCrossSize - (c[crossDimension] || 0)) / 2;\n } else if (align === 'flexEnd') {\n c[crossProp] = containerCrossSize - (c[crossDimension] || 0);\n }\n }\n : (c: SolidNode) => c;\n\n if (justify === 'flexStart') {\n let start = 0;\n children.forEach((c) => {\n c[prop] = start + (c[marginOne] || 0);\n start +=\n (c[dimension] || 0) + gap + (c[marginOne] || 0) + (c[marginTwo] || 0);\n crossAlignChild(c);\n });\n // Update container size\n if (node.flexBoundary !== 'fixed') {\n const calculatedSize = start - gap;\n if (calculatedSize !== node[dimension]) {\n node[dimension] = calculatedSize;\n return true;\n }\n }\n } else if (justify === 'flexEnd') {\n let start = containerSize;\n for (let i = numChildren - 1; i >= 0; i--) {\n const c = children[i];\n assertTruthy(c);\n c[prop] = start - (c[dimension] || 0) - (c[marginTwo] || 0);\n start -=\n (c[dimension] || 0) + gap + (c[marginOne] || 0) + (c[marginTwo] || 0);\n crossAlignChild(c);\n }\n } else if (justify === 'center') {\n let start = (containerSize - (itemSize + gap * (numChildren - 1))) / 2;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + gap;\n crossAlignChild(c);\n });\n } else if (justify === 'spaceBetween') {\n const toPad = (containerSize - itemSize) / (numChildren - 1);\n let start = 0;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + toPad;\n crossAlignChild(c);\n });\n } else if (justify === 'spaceEvenly') {\n const toPad = (containerSize - itemSize) / (numChildren + 1);\n let start = toPad;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + toPad;\n crossAlignChild(c);\n });\n }\n\n // Container was not updated\n return false;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createSignal } from 'solid-js';\nimport type { ElementNode } from './node/index.js';\nexport const [activeElement, setActiveElement] = createSignal<\n ElementNode | undefined\n>(undefined);\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { renderer, createShader } from '../lightningInit.js';\nimport {\n type BorderStyleObject,\n type IntrinsicCommonProps,\n type IntrinsicNodeProps,\n type IntrinsicTextProps,\n type NodeStyles,\n type TextStyles,\n} from '../../index.js';\nimport Children from './children.js';\nimport States, { type NodeStates } from './states.js';\nimport calculateFlex from '../flex.js';\nimport {\n log,\n isArray,\n isNumber,\n isFunc,\n keyExists,\n flattenStyles,\n} from '../utils.js';\nimport { config } from '../../config.js';\nimport { setActiveElement } from '../activeElement.js';\nimport type {\n RendererMain,\n INode,\n INodeAnimatableProps,\n INodeWritableProps,\n ShaderRef,\n Dimensions,\n AnimationSettings,\n NodeLoadedPayload,\n} from '@lightningjs/renderer';\nimport { assertTruthy } from '@lightningjs/renderer/utils';\n\nconst { animationSettings: defaultAnimationSettings } = config;\n\nfunction convertEffectsToShader(styleEffects: any) {\n const effects = [];\n\n for (const [type, props] of Object.entries>(\n styleEffects,\n )) {\n effects.push({ type, props });\n }\n return createShader('DynamicShader', { effects: effects as any });\n}\n\nfunction borderAccessor(\n direction: '' | 'Top' | 'Right' | 'Bottom' | 'Left' = '',\n) {\n return {\n set(\n this: ElementNode,\n value: number | { width: number; color: number | string },\n ) {\n // Format: width || { width, color }\n if (isNumber(value)) {\n value = { width: value, color: 0x000000ff };\n }\n this.effects = {\n ...(this.effects || {}),\n ...{ [`border${direction}`]: value },\n };\n this[`_border${direction}`] = value;\n },\n get(this: ElementNode) {\n return this[`_border${direction}`];\n },\n };\n}\n\nconst LightningRendererNumberProps = [\n 'alpha',\n 'color',\n 'colorTop',\n 'colorRight',\n 'colorLeft',\n 'colorBottom',\n 'colorTl',\n 'colorTr',\n 'colorBl',\n 'colorBr',\n 'height',\n 'fontSize',\n 'lineHeight',\n 'mount',\n 'mountX',\n 'mountY',\n 'pivot',\n 'pivotX',\n 'pivotY',\n 'rotation',\n 'scale',\n 'width',\n 'worldX',\n 'worldY',\n 'x',\n 'y',\n 'zIndex',\n 'zIndexLocked',\n];\n\nconst LightningRendererNonAnimatingProps = [\n 'autosize',\n 'clipping',\n 'contain',\n 'fontFamily',\n 'fontStretch',\n 'fontStyle',\n 'fontWeight',\n 'letterSpacing',\n 'maxLines',\n 'offsetY',\n 'overflowSuffix',\n 'rtt',\n 'scrollable',\n 'scrollY',\n 'src',\n 'text',\n 'textAlign',\n 'textBaseline',\n 'textOverflow',\n 'texture',\n 'verticalAlign',\n 'wordWrap',\n];\n\nexport interface TextNode {\n id?: string;\n name: string;\n text: string;\n parent: ElementNode | undefined;\n zIndex?: number;\n states?: States;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n marginLeft?: number;\n marginRight?: number;\n marginTop?: number;\n marginBottom?: number;\n flexItem?: boolean;\n flexOrder?: number;\n _queueDelete?: boolean;\n}\n\nexport type SolidNode = ElementNode | TextNode;\nexport type SolidStyles = NodeStyles | TextStyles;\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport interface ElementNode\n extends Partial>,\n IntrinsicCommonProps {\n [key: string]: unknown;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport class ElementNode extends Object {\n id?: string;\n debug?: boolean;\n name: string;\n lng: INode | undefined;\n renderer?: RendererMain;\n selected?: number;\n autofocus?: boolean;\n flexItem?: boolean;\n flexOrder?: number;\n flexBoundary?: 'contain' | 'fixed'; // default is undefined - contained for flex calculated size\n _queueDelete?: boolean;\n forwardFocus?:\n | number\n | ((this: ElementNode, elm: ElementNode) => boolean | void);\n\n private _undoStyles?: string[];\n private _renderProps?: IntrinsicNodeProps | IntrinsicTextProps;\n private _effects: any;\n private _parent: ElementNode | undefined;\n private _shader?: ShaderRef;\n private _style?: SolidStyles;\n private _states?: States;\n private _events?: Array<\n [string, (target: ElementNode, event?: Event) => void]\n >;\n private _animationSettings?: Partial;\n public _borderRadius?: number;\n public _border?: BorderStyleObject;\n public _borderLeft?: BorderStyleObject;\n public _borderRight?: BorderStyleObject;\n public _borderTop?: BorderStyleObject;\n public _borderBottom?: BorderStyleObject;\n public _autosized?: boolean; // Public but uses _ prefix\n public _isDirty?: boolean; // Public but uses _ prefix\n private _animationQueue: Array<{\n props: Partial;\n animationSettings?: Partial;\n }> = [];\n private _animationQueueSettings: Partial | undefined;\n private _animationRunning: boolean = false;\n children: Children;\n\n constructor(name: string) {\n super();\n this.name = name;\n this._renderProps = {};\n this.children = new Children(this);\n }\n\n get effects() {\n return this._effects;\n }\n\n set effects(v) {\n this._effects = v;\n if (this.lng) {\n this.shader = convertEffectsToShader(v);\n }\n }\n\n get parent() {\n return this._parent;\n }\n\n set parent(p) {\n this._parent = p;\n if (this.lng) {\n this.lng.parent = p?.lng ?? null;\n }\n }\n\n get shader(): ShaderRef | undefined {\n return this._shader;\n }\n\n set shader(v: Parameters | ShaderRef | undefined) {\n if (isArray(v)) {\n this._shader = createShader(...v) as ShaderRef;\n } else {\n this._shader = v;\n }\n this._sendToLightning('shader', this._shader);\n }\n\n _sendToLightningAnimatable(name: string, value: number | string) {\n if (this.lng) {\n if (\n config.animationsEnabled &&\n this.transition &&\n (this.transition === true || this.transition[name])\n ) {\n const animationSettings =\n this.transition === true || this.transition[name] === true\n ? undefined\n : (this.transition[name] as undefined | AnimationSettings);\n\n return this.animate({ [name]: value }, animationSettings).start();\n }\n\n (this.lng[name as keyof INode] as number | string) = value;\n } else {\n this._renderProps![name] = value;\n }\n }\n\n _sendToLightning(name: string, value: unknown) {\n if (this.lng) {\n (this.lng[name as keyof INodeWritableProps] as unknown) = value;\n } else {\n this._renderProps![name] = value;\n }\n }\n\n animate(\n props: Partial,\n animationSettings?: Partial,\n ) {\n assertTruthy(this.lng, 'Node must be rendered before animating');\n return this.lng.animate(props, animationSettings || this.animationSettings);\n }\n\n chain(\n props: Partial,\n animationSettings?: Partial,\n ) {\n if (this._animationRunning) {\n this._animationQueue = [];\n this._animationRunning = false;\n }\n\n if (animationSettings) {\n this._animationQueueSettings = animationSettings;\n } else if (!this._animationQueueSettings) {\n this._animationQueueSettings =\n animationSettings || this.animationSettings;\n }\n animationSettings = animationSettings || this._animationQueueSettings;\n this._animationQueue.push({ props, animationSettings });\n return this;\n }\n\n async start() {\n let animation = this._animationQueue.shift();\n while (animation) {\n this._animationRunning = true;\n await this.animate(animation.props, animation.animationSettings)\n .start()\n .waitUntilStopped();\n animation = this._animationQueue.shift();\n }\n this._animationRunning = false;\n this._animationQueueSettings = undefined;\n }\n\n setFocus() {\n if (this.lng) {\n // can be 0\n if (this.forwardFocus !== undefined) {\n if (isFunc(this.forwardFocus)) {\n if (this.forwardFocus.call(this, this) !== false) {\n return;\n }\n } else {\n const focusedIndex =\n typeof this.forwardFocus === 'number' ? this.forwardFocus : null;\n if (focusedIndex !== null && focusedIndex < this.children.length) {\n const child = this.children[focusedIndex];\n child instanceof ElementNode && child.setFocus();\n return;\n }\n }\n }\n // Delay setting focus so children can render (useful for Row + Column)\n queueMicrotask(() => setActiveElement(this));\n } else {\n this.autofocus = true;\n }\n }\n\n isTextNode() {\n return this.name === 'text';\n }\n\n _resizeOnTextLoad() {\n this.lng!.on('loaded', (_node: INode, loadedPayload: NodeLoadedPayload) => {\n if (loadedPayload.type === 'text') {\n const { dimensions } = loadedPayload;\n this.parent!.updateLayout(this, dimensions);\n }\n });\n }\n\n getText() {\n return this.children.map((c) => c.text).join('');\n }\n\n destroy() {\n if (this._queueDelete) {\n this.lng?.destroy();\n }\n }\n // Must be set before render\n set onEvents(\n events: Array<[string, (target: ElementNode, event?: any) => void]>,\n ) {\n this._events = events;\n }\n\n get onEvents() {\n return this._events || [];\n }\n\n set style(values: SolidStyles | (SolidStyles | undefined)[]) {\n if (isArray(values)) {\n this._style = flattenStyles(values);\n } else {\n this._style = values;\n }\n // Keys set in JSX are more important\n for (const key in this._style) {\n // be careful of 0 values\n if (this[key as keyof SolidStyles] === undefined) {\n this[key as keyof SolidStyles] = this._style[key as keyof SolidStyles];\n }\n }\n }\n\n get style(): SolidStyles {\n return this._style!;\n }\n\n get hasChildren() {\n return this.children.length > 0;\n }\n\n getChildById(id: string) {\n return this.children.find((c) => c.id === id);\n }\n\n searchChildrenById(id: string): SolidNode | undefined {\n // traverse all the childrens children\n for (let i=0; i < this.children.length; i++) {\n const child = this.children[i];\n if (child instanceof ElementNode) {\n if (child.id === id) {\n return child;\n }\n\n const found = child.searchChildrenById(id);\n if (found) {\n return found;\n }\n }\n }\n }\n\n set states(states: NodeStates) {\n this._states = new States(this._stateChanged.bind(this), states);\n if (this.lng) {\n this._stateChanged();\n }\n }\n\n get states(): States {\n this._states = this._states || new States(this._stateChanged.bind(this));\n return this._states;\n }\n\n get animationSettings(): Partial {\n return this._animationSettings || defaultAnimationSettings;\n }\n\n set animationSettings(animationSettings: Partial) {\n this._animationSettings = animationSettings;\n }\n\n updateLayout(child?: ElementNode, dimensions?: Dimensions) {\n if (this.hasChildren) {\n log('Layout: ', this);\n let changedLayout = false;\n if (isFunc(this.onBeforeLayout)) {\n changedLayout = this.onBeforeLayout.call(\n this,\n child,\n dimensions,\n ) as boolean;\n }\n\n if (this.display === 'flex') {\n if (calculateFlex(this) || changedLayout) {\n this.parent?.updateLayout();\n }\n } else if (changedLayout) {\n this.parent?.updateLayout();\n }\n\n isFunc(this.onLayout) && this.onLayout.call(this, child, dimensions);\n }\n }\n\n _stateChanged() {\n log('State Changed: ', this, this.states);\n\n if (this.forwardStates) {\n // apply states to children first\n const states = this.states.slice() as States;\n this.children.forEach((c) => (c.states = states));\n }\n\n const states = this.states;\n\n if (this._undoStyles || (this.style && keyExists(this.style, states))) {\n this._undoStyles = this._undoStyles || [];\n const stylesToUndo: { [key: string]: any } = {};\n\n this._undoStyles.forEach((styleKey) => {\n stylesToUndo[styleKey] = this.style[styleKey];\n });\n\n const newStyles = states.reduce((acc, state) => {\n const styles = this.style[state];\n if (styles) {\n acc = {\n ...acc,\n ...styles,\n };\n }\n return acc;\n }, {});\n\n this._undoStyles = Object.keys(newStyles);\n\n // Apply transition first\n if ((newStyles as any).transition !== undefined) {\n this.transition = (newStyles as any).transition;\n }\n\n // Apply the styles\n Object.assign(this, stylesToUndo, newStyles);\n }\n }\n\n render() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const node = this;\n const parent = this.parent;\n\n if (!parent) {\n console.warn('Parent not set - no node created for: ', this);\n return;\n }\n\n if (!parent.lng) {\n console.warn('Parent not rendered yet: ', this);\n return;\n }\n\n if (this.lng) {\n console.warn('Node already rendered: ', this);\n return;\n }\n\n // Parent is dirty whenever a node is inserted after initial render\n if (parent._isDirty) {\n parent.updateLayout();\n parent._isDirty = false;\n }\n\n if (this.states.length) {\n this._stateChanged();\n }\n\n const props = node._renderProps as IntrinsicNodeProps | IntrinsicTextProps;\n props.x = props.x || 0;\n props.y = props.y || 0;\n\n if (parent.lng) {\n props.parent = parent.lng;\n }\n\n if (node._effects) {\n this.shader = convertEffectsToShader(node._effects);\n }\n\n if (node.isTextNode()) {\n if (config.fontSettings) {\n for (const key in config.fontSettings) {\n if (props[key] === undefined) {\n props[key] = config.fontSettings[key];\n }\n }\n }\n props.text = node.getText();\n\n if (props.contain) {\n if (!props.width) {\n props.width =\n (parent.width || 0) - props.x - (props.marginRight || 0);\n node._autosized = true;\n }\n\n if (props.contain === 'both' && !props.height && !props.maxLines) {\n props.height =\n (parent.height || 0) - props.y - (props.marginBottom || 0);\n node._autosized = true;\n }\n }\n\n log('Rendering: ', this, props);\n node.lng = renderer.createTextNode(props);\n\n if (!props.width || !props.height) {\n node._autosized = true;\n node._resizeOnTextLoad();\n }\n } else {\n // If its not an image or texture apply some defaults\n if (!props.texture) {\n // Set width and height to parent less offset\n if (isNaN(props.width as number)) {\n props.width = (parent.width || 0) - props.x;\n node._autosized = true;\n }\n\n if (isNaN(props.height as number)) {\n props.height = (parent.height || 0) - props.y;\n node._autosized = true;\n }\n\n if (!props.color && !props.src) {\n // Default color to transparent - If you later set a src, you'll need\n // to set color '#ffffffff'\n props.color = 0x00000000;\n }\n }\n\n log('Rendering: ', this, props);\n node.lng = renderer.createNode(props);\n }\n\n if (node.onFail) {\n node.lng.on('failed', node.onFail);\n }\n\n if (node.onLoad) {\n node.lng.on('loaded', node.onLoad);\n }\n\n isFunc(this.onCreate) && this.onCreate.call(this, node);\n\n node.onEvents.forEach(([name, handler]) => {\n node.lng?.on(name, (inode, data) => handler(node, data));\n });\n\n // L3 Inspector adds div to the lng object\n //@ts-expect-error - div is not in the typings\n if (node.lng.div) {\n //@ts-expect-error - div is not in the typings\n node.lng.div.solid = node;\n }\n\n if (node.name !== 'text') {\n node.children.forEach((c) => {\n if ((c as ElementNode).render) {\n (c as ElementNode).render();\n } else if (c.text !== '') {\n // Solid Show uses an empty text node as a placeholder\n console.warn('TextNode outside of : ', c);\n }\n });\n }\n\n node.autofocus && node.setFocus();\n // clean up after first render;\n delete this._renderProps;\n }\n}\n\nfor (const key of LightningRendererNumberProps) {\n Object.defineProperty(ElementNode.prototype, key, {\n get(): number {\n return this.lng ? this.lng[key] : this._renderProps[key];\n },\n set(v: number) {\n this._sendToLightningAnimatable(key, v);\n },\n });\n}\n\nfor (const key of LightningRendererNonAnimatingProps) {\n Object.defineProperty(ElementNode.prototype, key, {\n get() {\n return this.lng ? this.lng[key] : this._renderProps[key];\n },\n set(v) {\n this._sendToLightning(key, v);\n },\n });\n}\n\n// Add Border Helpers\nObject.defineProperties(ElementNode.prototype, {\n borderRadius: {\n set(this: ElementNode, radius) {\n this._borderRadius = radius;\n this.effects = {\n ...(this.effects || {}),\n ...{ radius: { radius } },\n };\n },\n get(this: ElementNode) {\n return this._borderRadius;\n },\n },\n border: borderAccessor(),\n borderLeft: borderAccessor('Left'),\n borderRight: borderAccessor('Right'),\n borderTop: borderAccessor('Top'),\n borderBottom: borderAccessor('Bottom'),\n});\n\nObject.defineProperties(ElementNode.prototype, {\n linearGradient: {\n set(props = {}) {\n this._linearGradient = props;\n this.effects = {\n ...(this.effects || {}),\n ...{ linearGradient: props },\n };\n },\n get() {\n return this._linearGradient;\n },\n },\n});\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { type Component } from \"solid-js\";\nimport type { IntrinsicTextProps } from \"../intrinsicTypes.js\";\n\nexport const Text: Component = (props) => \n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { type Component } from \"solid-js\";\nimport { type IntrinsicNodeProps } from \"../intrinsicTypes.js\";\n\nexport const View: Component = (props) =>\n ;\n","import {\n createRoot,\n createRenderEffect,\n mergeProps,\n createMemo,\n createComponent,\n untrack\n} from \"solid-js\";\n\nfunction createRenderer$1({\n createElement,\n createTextNode,\n isTextNode,\n replaceText,\n insertNode,\n removeNode,\n setProperty,\n getParentNode,\n getFirstChild,\n getNextSibling\n}) {\n function insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n }\n function insertExpression(parent, value, current, marker, unwrapArray) {\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n if (t === \"string\" || t === \"number\") {\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && isTextNode(node)) {\n replaceText(node, value);\n } else node = createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n replaceText(getFirstChild(parent), (current = value));\n } else {\n cleanChildren(parent, current, marker, createTextNode(value));\n current = value;\n }\n }\n } else if (value == null || t === \"boolean\") {\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n if (normalizeIncomingArray(array, value, unwrapArray)) {\n createRenderEffect(\n () => (current = insertExpression(parent, array, current, marker, true))\n );\n return () => current;\n }\n if (array.length === 0) {\n const replacement = cleanChildren(parent, current, marker);\n if (multi) return (current = replacement);\n } else {\n if (Array.isArray(current)) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else if (current == null || current === \"\") {\n appendNodes(parent, array);\n } else {\n reconcileArrays(parent, (multi && current) || [getFirstChild(parent)], array);\n }\n }\n current = array;\n } else {\n if (Array.isArray(current)) {\n if (multi) return (current = cleanChildren(parent, current, marker, value));\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !getFirstChild(parent)) {\n insertNode(parent, value);\n } else replaceNode(parent, value, getFirstChild(parent));\n current = value;\n }\n return current;\n }\n function normalizeIncomingArray(normalized, array, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n t;\n if (item == null || item === true || item === false);\n else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item) || dynamic;\n } else if ((t = typeof item) === \"string\" || t === \"number\") {\n normalized.push(createTextNode(item));\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic =\n normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else normalized.push(item);\n }\n return dynamic;\n }\n function reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = getNextSibling(a[aEnd - 1]),\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node =\n bEnd < bLength ? (bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart]) : after;\n while (bStart < bEnd) insertNode(parentNode, b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) removeNode(parentNode, a[aStart]);\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = getNextSibling(a[--aEnd]);\n insertNode(parentNode, b[bStart++], getNextSibling(a[aStart++]));\n insertNode(parentNode, b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) insertNode(parentNode, b[bStart++], node);\n } else replaceNode(parentNode, b[bStart++], a[aStart++]);\n } else aStart++;\n } else removeNode(parentNode, a[aStart++]);\n }\n }\n }\n function cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) {\n let removed;\n while ((removed = getFirstChild(parent))) removeNode(parent, removed);\n replacement && insertNode(parent, replacement);\n return \"\";\n }\n const node = replacement || createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = getParentNode(el) === parent;\n if (!inserted && !i)\n isParent ? replaceNode(parent, node, el) : insertNode(parent, node, marker);\n else isParent && removeNode(parent, el);\n } else inserted = true;\n }\n } else insertNode(parent, node, marker);\n return [node];\n }\n function appendNodes(parent, array, marker) {\n for (let i = 0, len = array.length; i < len; i++) insertNode(parent, array[i], marker);\n }\n function replaceNode(parent, newNode, oldNode) {\n insertNode(parent, newNode, oldNode);\n removeNode(parent, oldNode);\n }\n function spreadExpression(node, props, prevProps = {}, skipChildren) {\n props || (props = {});\n if (!skipChildren) {\n createRenderEffect(\n () => (prevProps.children = insertExpression(node, props.children, prevProps.children))\n );\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => {\n for (const prop in props) {\n if (prop === \"children\" || prop === \"ref\") continue;\n const value = props[prop];\n if (value === prevProps[prop]) continue;\n setProperty(node, prop, value, prevProps[prop]);\n prevProps[prop] = value;\n }\n });\n return prevProps;\n }\n return {\n render(code, element) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n insert(element, code());\n });\n return disposer;\n },\n insert,\n spread(node, accessor, skipChildren) {\n if (typeof accessor === \"function\") {\n createRenderEffect(current => spreadExpression(node, accessor(), current, skipChildren));\n } else spreadExpression(node, accessor, undefined, skipChildren);\n },\n createElement,\n createTextNode,\n insertNode,\n setProp(node, name, value, prev) {\n setProperty(node, name, value, prev);\n return value;\n },\n mergeProps,\n effect: createRenderEffect,\n memo: createMemo,\n createComponent,\n use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n }\n };\n}\n\nfunction createRenderer(options) {\n const renderer = createRenderer$1(options);\n renderer.mergeProps = mergeProps;\n return renderer;\n}\n\nexport { createRenderer };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { assertTruthy } from '@lightningjs/renderer/utils';\nimport { log } from './utils.js';\nimport { ElementNode, type SolidNode, type TextNode } from './node/index.js';\nimport type { createRenderer } from 'solid-js/universal';\n\nexport type SolidRendererOptions = Parameters<\n typeof createRenderer\n>[0];\n\nexport default {\n createElement(name: string): ElementNode {\n return new ElementNode(name);\n },\n createTextNode(text: string): TextNode {\n // A text node is just a string - not the node\n return { name: 'TextNode', text, parent: undefined };\n },\n replaceText(node: TextNode, value: string): void {\n log('Replace Text: ', node, value);\n node.text = value;\n const parent = node.parent;\n assertTruthy(parent);\n parent.text = parent.getText();\n },\n setProperty(node: ElementNode, name: string, value: any = true): void {\n node[name] = value;\n },\n insertNode(parent: ElementNode, node: SolidNode, anchor: SolidNode): void {\n log('INSERT: ', parent, node, anchor);\n\n parent.children.insert(node, anchor);\n node._queueDelete = false;\n\n if (node instanceof ElementNode) {\n parent.lng && node.render();\n } else if (parent.isTextNode()) {\n // TextNodes can be placed outside of nodes when is used as placeholder\n parent.text = parent.getText();\n }\n },\n isTextNode(node: ElementNode): boolean {\n return node.isTextNode();\n },\n removeNode(parent: ElementNode, node: SolidNode): void {\n log('REMOVE: ', parent, node);\n parent.children.remove(node);\n node._queueDelete = true;\n\n if (node instanceof ElementNode) {\n // Solid replacesNodes to move them (via insert and remove),\n // so we need to wait for the next microtask to destroy the node\n // in the event it gets a new parent.\n queueMicrotask(() => node.destroy());\n }\n },\n getParentNode(node: SolidNode): ElementNode | undefined {\n return node.parent;\n },\n getFirstChild(node: ElementNode): SolidNode | undefined {\n return node.children[0];\n },\n getNextSibling(node: SolidNode): SolidNode | undefined {\n const children = node.parent!.children || [];\n const index = children.indexOf(node) + 1;\n if (index < children.length) {\n return children[index];\n }\n return undefined;\n },\n} satisfies SolidRendererOptions;\n","/* eslint-disable @typescript-eslint/unbound-method */\n/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createRenderer } from 'solid-js/universal';\nimport { config } from '../config.js';\nimport { startLightningRenderer } from './lightningInit.js';\nimport universalLightning from './solidUniversal.js';\nimport { ElementNode, type SolidNode } from './node/index.js';\nimport { splitProps, createMemo, untrack, type JSX } from 'solid-js';\n\nconst solidRenderer = createRenderer(universalLightning);\n\nexport const render = async function (\n code: () => JSX.Element,\n node?: string | HTMLElement | undefined,\n) {\n const renderer = startLightningRenderer(config.rendererOptions, node);\n await renderer.init();\n const rootNode = new ElementNode('App');\n rootNode.lng = renderer.root!;\n // @ts-expect-error - code is jsx element and not SolidElement yet\n const dispose = solidRenderer.render(code, rootNode);\n return {\n dispose,\n rootNode,\n renderer,\n };\n};\n\nexport const {\n effect,\n memo,\n createComponent,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps,\n use,\n} = solidRenderer;\n\n/**\n * renders an arbitrary custom or native component and passes the other props\n * ```typescript\n * \n * ```\n * @description https://www.solidjs.com/docs/latest/api#dynamic\n */\nexport function Dynamic(\n props: T extends Record ? T : never,\n): SolidNode {\n const [p, others] = splitProps(props, ['component']);\n // eslint-disable-next-line @typescript-eslint/ban-types\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case 'function':\n return untrack(() => component(others));\n\n case 'string':\n // eslint-disable-next-line no-case-declarations\n const el = createElement(component);\n spread(el, others);\n return el;\n\n default:\n break;\n }\n }) as unknown as SolidNode;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isInteger } from './core/utils.js';\n\n/**\n * Converts a color string to a color number value.\n */\nexport function hexColor(color: string | number = ''): number {\n if (isInteger(color)) {\n return color;\n }\n\n if (typeof color === 'string') {\n // Renderer expects RGBA values\n if (color.startsWith('#')) {\n return Number(\n color.replace('#', '0x') + (color.length === 7 ? 'ff' : ''),\n );\n }\n\n if (color.startsWith('0x')) {\n return Number(color);\n }\n return Number('0x' + (color.length === 6 ? color + 'ff' : color));\n }\n\n return 0x00000000;\n}\n\n/**\n * Converts degrees to radians\n */\nexport function deg2rad(deg: number) {\n return (deg * Math.PI) / 180;\n}\n","import {\n createRoot,\n sharedConfig,\n createRenderEffect,\n untrack,\n enableHydration,\n getOwner,\n createEffect,\n runWithOwner,\n createMemo,\n createSignal,\n onCleanup,\n splitProps\n} from \"solid-js\";\nexport {\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n createComponent,\n createRenderEffect as effect,\n getOwner,\n createMemo as memo,\n mergeProps,\n untrack\n} from \"solid-js\";\n\nconst booleans = [\n \"allowfullscreen\",\n \"async\",\n \"autofocus\",\n \"autoplay\",\n \"checked\",\n \"controls\",\n \"default\",\n \"disabled\",\n \"formnovalidate\",\n \"hidden\",\n \"indeterminate\",\n \"inert\",\n \"ismap\",\n \"loop\",\n \"multiple\",\n \"muted\",\n \"nomodule\",\n \"novalidate\",\n \"open\",\n \"playsinline\",\n \"readonly\",\n \"required\",\n \"reversed\",\n \"seamless\",\n \"selected\"\n];\nconst Properties = /*#__PURE__*/ new Set([\n \"className\",\n \"value\",\n \"readOnly\",\n \"formNoValidate\",\n \"isMap\",\n \"noModule\",\n \"playsInline\",\n ...booleans\n]);\nconst ChildProperties = /*#__PURE__*/ new Set([\n \"innerHTML\",\n \"textContent\",\n \"innerText\",\n \"children\"\n]);\nconst Aliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: {\n $: \"formNoValidate\",\n BUTTON: 1,\n INPUT: 1\n },\n ismap: {\n $: \"isMap\",\n IMG: 1\n },\n nomodule: {\n $: \"noModule\",\n SCRIPT: 1\n },\n playsinline: {\n $: \"playsInline\",\n VIDEO: 1\n },\n readonly: {\n $: \"readOnly\",\n INPUT: 1,\n TEXTAREA: 1\n }\n});\nfunction getPropAlias(prop, tagName) {\n const a = PropAliases[prop];\n return typeof a === \"object\" ? (a[tagName] ? a[\"$\"] : undefined) : a;\n}\nconst DelegatedEvents = /*#__PURE__*/ new Set([\n \"beforeinput\",\n \"click\",\n \"dblclick\",\n \"contextmenu\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"keydown\",\n \"keyup\",\n \"mousedown\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"mouseup\",\n \"pointerdown\",\n \"pointermove\",\n \"pointerout\",\n \"pointerover\",\n \"pointerup\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\"\n]);\nconst SVGElements = /*#__PURE__*/ new Set([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animate\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"circle\",\n \"clipPath\",\n \"color-profile\",\n \"cursor\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"font\",\n \"font-face\",\n \"font-face-format\",\n \"font-face-name\",\n \"font-face-src\",\n \"font-face-uri\",\n \"foreignObject\",\n \"g\",\n \"glyph\",\n \"glyphRef\",\n \"hkern\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"missing-glyph\",\n \"mpath\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n \"set\",\n \"stop\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n \"tref\",\n \"tspan\",\n \"use\",\n \"view\",\n \"vkern\"\n]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/ new Set([\n \"html\",\n \"base\",\n \"head\",\n \"link\",\n \"meta\",\n \"style\",\n \"title\",\n \"body\",\n \"address\",\n \"article\",\n \"aside\",\n \"footer\",\n \"header\",\n \"main\",\n \"nav\",\n \"section\",\n \"body\",\n \"blockquote\",\n \"dd\",\n \"div\",\n \"dl\",\n \"dt\",\n \"figcaption\",\n \"figure\",\n \"hr\",\n \"li\",\n \"ol\",\n \"p\",\n \"pre\",\n \"ul\",\n \"a\",\n \"abbr\",\n \"b\",\n \"bdi\",\n \"bdo\",\n \"br\",\n \"cite\",\n \"code\",\n \"data\",\n \"dfn\",\n \"em\",\n \"i\",\n \"kbd\",\n \"mark\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"small\",\n \"span\",\n \"strong\",\n \"sub\",\n \"sup\",\n \"time\",\n \"u\",\n \"var\",\n \"wbr\",\n \"area\",\n \"audio\",\n \"img\",\n \"map\",\n \"track\",\n \"video\",\n \"embed\",\n \"iframe\",\n \"object\",\n \"param\",\n \"picture\",\n \"portal\",\n \"source\",\n \"svg\",\n \"math\",\n \"canvas\",\n \"noscript\",\n \"script\",\n \"del\",\n \"ins\",\n \"caption\",\n \"col\",\n \"colgroup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"tr\",\n \"button\",\n \"datalist\",\n \"fieldset\",\n \"form\",\n \"input\",\n \"label\",\n \"legend\",\n \"meter\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"progress\",\n \"select\",\n \"textarea\",\n \"details\",\n \"dialog\",\n \"menu\",\n \"summary\",\n \"details\",\n \"slot\",\n \"template\",\n \"acronym\",\n \"applet\",\n \"basefont\",\n \"bgsound\",\n \"big\",\n \"blink\",\n \"center\",\n \"content\",\n \"dir\",\n \"font\",\n \"frame\",\n \"frameset\",\n \"hgroup\",\n \"image\",\n \"keygen\",\n \"marquee\",\n \"menuitem\",\n \"nobr\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"rb\",\n \"rtc\",\n \"shadow\",\n \"spacer\",\n \"strike\",\n \"tt\",\n \"xmp\",\n \"a\",\n \"abbr\",\n \"acronym\",\n \"address\",\n \"applet\",\n \"area\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"base\",\n \"basefont\",\n \"bdi\",\n \"bdo\",\n \"bgsound\",\n \"big\",\n \"blink\",\n \"blockquote\",\n \"body\",\n \"br\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"center\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"content\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"dir\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"embed\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"font\",\n \"footer\",\n \"form\",\n \"frame\",\n \"frameset\",\n \"head\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"html\",\n \"i\",\n \"iframe\",\n \"image\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"keygen\",\n \"label\",\n \"legend\",\n \"li\",\n \"link\",\n \"main\",\n \"map\",\n \"mark\",\n \"marquee\",\n \"menu\",\n \"menuitem\",\n \"meta\",\n \"meter\",\n \"nav\",\n \"nobr\",\n \"noembed\",\n \"noframes\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"param\",\n \"picture\",\n \"plaintext\",\n \"portal\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rb\",\n \"rp\",\n \"rt\",\n \"rtc\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"shadow\",\n \"slot\",\n \"small\",\n \"source\",\n \"spacer\",\n \"span\",\n \"strike\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"template\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"track\",\n \"tt\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n \"wbr\",\n \"xmp\",\n \"input\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\"\n]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? (bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart]) : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document\n ? code()\n : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, isCE, isSVG) {\n let node;\n const create = () => {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n return isSVG ? t.content.firstChild.firstChild : t.content.firstChild;\n };\n const fn = isCE\n ? () => untrack(() => document.importNode(node || (node = create()), true))\n : () => (node || (node = create())).cloneNode(true);\n fn.cloneNode = fn;\n return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setProperty(node, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n node[name] = value;\n}\nfunction setAttribute(node, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttribute(name);\n else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttributeNS(namespace, name);\n else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttribute(\"class\");\n else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, (handler[0] = e => handlerFn.call(node, handler[1], e)));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return (nodeStyle.cssText = value);\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(\n () => (prevProps.children = insertExpression(node, props.children, prevProps.children))\n );\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = id => globalThis._$HY.r[id];\n sharedConfig.has = id => id in globalThis._$HY.r;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get((key = getHydrationKey())))) {\n return template();\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"$\") count++;\n else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const { completed, events } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++)\n node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp, propAlias, forceProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if (prop.slice(0, 5) === \"attr:\") {\n setAttribute(node, prop.slice(5), value);\n } else if (\n (forceProp = prop.slice(0, 5) === \"prop:\") ||\n (isChildProp = ChildProperties.has(prop)) ||\n (!isSVG &&\n ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop)))) ||\n (isCE = node.nodeName.includes(\"-\"))\n ) {\n if (forceProp) {\n prop = prop.slice(5);\n isProp = true;\n } else if (!!sharedConfig.context && node.isConnected) return value;\n if (prop === \"class\" || prop === \"className\") className(node, value);\n else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;\n else node[propAlias || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);\n else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = (e.composedPath && e.composedPath()[0]) || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n const hydrating = !!sharedConfig.context && parent.isConnected;\n if (hydrating) {\n !current && (current = [...parent.childNodes]);\n let cleaned = [];\n for (let i = 0; i < current.length; i++) {\n const node = current[i];\n if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();\n else cleaned.push(node);\n }\n current = cleaned;\n }\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = (multi && current[0] && current[0].parentNode) || parent;\n if (t === \"string\" || t === \"number\") {\n if (hydrating) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data !== value && (node.data = value);\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (hydrating) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => (current = insertExpression(parent, array, current, marker, true)));\n return () => current;\n }\n if (hydrating) {\n if (!array.length) return current;\n if (marker === undefined) return [...parent.childNodes];\n let node = array[0];\n let nodes = [node];\n while ((node = node.nextSibling) !== marker) nodes.push(node);\n return (current = nodes);\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value.nodeType) {\n if (hydrating && value.parentNode) return (current = multi ? [value] : value);\n if (Array.isArray(current)) {\n if (multi) return (current = cleanChildren(parent, current, marker, value));\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[normalized.length],\n t;\n if (item == null || item === true || item === false);\n else if ((t = typeof item) === \"object\" && item.nodeType) {\n normalized.push(item);\n } else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic =\n normalizeIncomingArray(\n normalized,\n Array.isArray(item) ? item : [item],\n Array.isArray(prev) ? prev : [prev]\n ) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);\n else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return (parent.textContent = \"\");\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i)\n isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);\n else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key))\n sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nconst voidFn = () => undefined;\nconst RequestContext = Symbol();\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst isDev = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const { useShadow } = props,\n marker = document.createTextNode(\"\"),\n mount = () => props.mount || document.body,\n owner = getOwner();\n let content;\n let hydrating = !!sharedConfig.context;\n createEffect(\n () => {\n if (hydrating) getOwner().user = hydrating = false;\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n const el = mount();\n if (el instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(el, () => (!clean() ? content() : dispose()), null));\n onCleanup(cleanup);\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot =\n useShadow && container.attachShadow\n ? container.attachShadow({\n mode: \"open\"\n })\n : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => el.removeChild(container));\n }\n },\n undefined,\n {\n render: !hydrating\n }\n );\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport {\n Aliases,\n voidFn as Assets,\n ChildProperties,\n DOMElements,\n DelegatedEvents,\n Dynamic,\n Hydration,\n voidFn as HydrationScript,\n NoHydration,\n Portal,\n Properties,\n RequestContext,\n SVGElements,\n SVGNamespace,\n addEventListener,\n assign,\n classList,\n className,\n clearDelegatedEvents,\n delegateEvents,\n dynamicProperty,\n escape,\n voidFn as generateHydrationScript,\n voidFn as getAssets,\n getHydrationKey,\n getNextElement,\n getNextMarker,\n getNextMatch,\n getPropAlias,\n voidFn as getRequestEvent,\n hydrate,\n innerHTML,\n insert,\n isDev,\n isServer,\n render,\n renderToStream,\n renderToString,\n renderToStringAsync,\n resolveSSRNode,\n runHydrationEvents,\n setAttribute,\n setAttributeNS,\n setProperty,\n spread,\n ssr,\n ssrAttribute,\n ssrClassList,\n ssrElement,\n ssrHydrationKey,\n ssrSpread,\n ssrStyle,\n style,\n template,\n use,\n voidFn as useAssets\n};\n","import { isServer } from \"solid-js/web\";\nexport function createBeforeLeave() {\n let listeners = new Set();\n function subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }\n let ignore = false;\n function confirm(to, options) {\n if (ignore)\n return !(ignore = false);\n const e = {\n to,\n options,\n defaultPrevented: false,\n preventDefault: () => (e.defaultPrevented = true)\n };\n for (const l of listeners)\n l.listener({\n ...e,\n from: l.location,\n retry: (force) => {\n force && (ignore = true);\n l.navigate(to, { ...options, resolve: false });\n }\n });\n return !e.defaultPrevented;\n }\n return {\n subscribe,\n confirm\n };\n}\n// The following supports browser initiated blocking (eg back/forward)\nlet depth;\nexport function saveCurrentDepth() {\n if (!window.history.state || window.history.state._depth == null) {\n window.history.replaceState({ ...window.history.state, _depth: window.history.length - 1 }, \"\");\n }\n depth = window.history.state._depth;\n}\nif (!isServer) {\n saveCurrentDepth();\n}\nexport function keepDepth(state) {\n return {\n ...state,\n _depth: window.history.state && window.history.state._depth\n };\n}\nexport function notifyIfNotBlocked(notify, block) {\n let ignore = false;\n return () => {\n const prevDepth = depth;\n saveCurrentDepth();\n const delta = prevDepth == null ? null : depth - prevDepth;\n if (ignore) {\n ignore = false;\n return;\n }\n if (delta && block(delta)) {\n ignore = true;\n window.history.go(-delta);\n }\n else {\n notify();\n }\n };\n}\n","import { createMemo, getOwner, runWithOwner } from \"solid-js\";\nconst hasSchemeRegex = /^(?:[a-z0-9]+:)?\\/\\//i;\nconst trimPathRegex = /^\\/+|(\\/)\\/+$/g;\nexport const mockBase = \"http://sr\";\nexport function normalizePath(path, omitSlash = false) {\n const s = path.replace(trimPathRegex, \"$1\");\n return s ? (omitSlash || /^[?#]/.test(s) ? s : \"/\" + s) : \"\";\n}\nexport function resolvePath(base, path, from) {\n if (hasSchemeRegex.test(path)) {\n return undefined;\n }\n const basePath = normalizePath(base);\n const fromPath = from && normalizePath(from);\n let result = \"\";\n if (!fromPath || path.startsWith(\"/\")) {\n result = basePath;\n }\n else if (fromPath.toLowerCase().indexOf(basePath.toLowerCase()) !== 0) {\n result = basePath + fromPath;\n }\n else {\n result = fromPath;\n }\n return (result || \"/\") + normalizePath(path, !result);\n}\nexport function invariant(value, message) {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nexport function joinPaths(from, to) {\n return normalizePath(from).replace(/\\/*(\\*.*)?$/g, \"\") + normalizePath(to);\n}\nexport function extractSearchParams(url) {\n const params = {};\n url.searchParams.forEach((value, key) => {\n params[key] = value;\n });\n return params;\n}\nexport function createMatcher(path, partial, matchFilters) {\n const [pattern, splat] = path.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n const len = segments.length;\n return (location) => {\n const locSegments = location.split(\"/\").filter(Boolean);\n const lenDiff = locSegments.length - len;\n if (lenDiff < 0 || (lenDiff > 0 && splat === undefined && !partial)) {\n return null;\n }\n const match = {\n path: len ? \"\" : \"/\",\n params: {}\n };\n const matchFilter = (s) => matchFilters === undefined ? undefined : matchFilters[s];\n for (let i = 0; i < len; i++) {\n const segment = segments[i];\n const locSegment = locSegments[i];\n const dynamic = segment[0] === \":\";\n const key = dynamic ? segment.slice(1) : segment;\n if (dynamic && matchSegment(locSegment, matchFilter(key))) {\n match.params[key] = locSegment;\n }\n else if (dynamic || !matchSegment(locSegment, segment)) {\n return null;\n }\n match.path += `/${locSegment}`;\n }\n if (splat) {\n const remainder = lenDiff ? locSegments.slice(-lenDiff).join(\"/\") : \"\";\n if (matchSegment(remainder, matchFilter(splat))) {\n match.params[splat] = remainder;\n }\n else {\n return null;\n }\n }\n return match;\n };\n}\nfunction matchSegment(input, filter) {\n const isEqual = (s) => s.localeCompare(input, undefined, { sensitivity: \"base\" }) === 0;\n if (filter === undefined) {\n return true;\n }\n else if (typeof filter === \"string\") {\n return isEqual(filter);\n }\n else if (typeof filter === \"function\") {\n return filter(input);\n }\n else if (Array.isArray(filter)) {\n return filter.some(isEqual);\n }\n else if (filter instanceof RegExp) {\n return filter.test(input);\n }\n return false;\n}\nexport function scoreRoute(route) {\n const [pattern, splat] = route.pattern.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n return segments.reduce((score, segment) => score + (segment.startsWith(\":\") ? 2 : 3), segments.length - (splat === undefined ? 0 : 1));\n}\nexport function createMemoObject(fn) {\n const map = new Map();\n const owner = getOwner();\n return new Proxy({}, {\n get(_, property) {\n if (!map.has(property)) {\n runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property])));\n }\n return map.get(property)();\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n },\n ownKeys() {\n return Reflect.ownKeys(fn());\n }\n });\n}\nexport function mergeSearchString(search, params) {\n const merged = new URLSearchParams(search);\n Object.entries(params).forEach(([key, value]) => {\n if (value == null || value === \"\") {\n merged.delete(key);\n }\n else {\n merged.set(key, String(value));\n }\n });\n const s = merged.toString();\n return s ? `?${s}` : \"\";\n}\nexport function expandOptionals(pattern) {\n let match = /(\\/?\\:[^\\/]+)\\?/.exec(pattern);\n if (!match)\n return [pattern];\n let prefix = pattern.slice(0, match.index);\n let suffix = pattern.slice(match.index + match[0].length);\n const prefixes = [prefix, (prefix += match[1])];\n // This section handles adjacent optional params. We don't actually want all permuations since\n // that will lead to equivalent routes which have the same number of params. For example\n // `/:a?/:b?/:c`? only has the unique expansion: `/`, `/:a`, `/:a/:b`, `/:a/:b/:c` and we can\n // discard `/:b`, `/:c`, `/:b/:c` by building them up in order and not recursing. This also helps\n // ensure predictability where earlier params have precidence.\n while ((match = /^(\\/\\:[^\\/]+)\\?/.exec(suffix))) {\n prefixes.push((prefix += match[1]));\n suffix = suffix.slice(match[0].length);\n }\n return expandOptionals(suffix).reduce((results, expansion) => [...results, ...prefixes.map(p => p + expansion)], []);\n}\n","import { runWithOwner } from \"solid-js\";\nimport { createComponent, createContext, createMemo, createRenderEffect, createSignal, on, onCleanup, untrack, useContext, startTransition, resetErrorBoundaries } from \"solid-js\";\nimport { isServer, getRequestEvent } from \"solid-js/web\";\nimport { createBeforeLeave } from \"./lifecycle.js\";\nimport { mockBase, createMemoObject, extractSearchParams, invariant, resolvePath, createMatcher, joinPaths, scoreRoute, mergeSearchString, expandOptionals } from \"./utils.js\";\nconst MAX_REDIRECTS = 100;\nexport const RouterContextObj = createContext();\nexport const RouteContextObj = createContext();\nexport const useRouter = () => invariant(useContext(RouterContextObj), \" and 'use' router primitives can be only used inside a Route.\");\nlet TempRoute;\nexport const useRoute = () => TempRoute || useContext(RouteContextObj) || useRouter().base;\nexport const useResolvedPath = (path) => {\n const route = useRoute();\n return createMemo(() => route.resolvePath(path()));\n};\nexport const useHref = (to) => {\n const router = useRouter();\n return createMemo(() => {\n const to_ = to();\n return to_ !== undefined ? router.renderPath(to_) : to_;\n });\n};\nexport const useNavigate = () => useRouter().navigatorFactory();\nexport const useLocation = () => useRouter().location;\nexport const useIsRouting = () => useRouter().isRouting;\nexport const useMatch = (path, matchFilters) => {\n const location = useLocation();\n const matchers = createMemo(() => expandOptionals(path()).map(path => createMatcher(path, undefined, matchFilters)));\n return createMemo(() => {\n for (const matcher of matchers()) {\n const match = matcher(location.pathname);\n if (match)\n return match;\n }\n });\n};\nexport const useParams = () => useRouter().params;\nexport const useSearchParams = () => {\n const location = useLocation();\n const navigate = useNavigate();\n const setSearchParams = (params, options) => {\n const searchString = untrack(() => location.pathname + mergeSearchString(location.search, params) + location.hash);\n navigate(searchString, {\n scroll: false,\n resolve: false,\n ...options\n });\n };\n return [location.query, setSearchParams];\n};\nexport const useBeforeLeave = (listener) => {\n const s = useRouter().beforeLeave.subscribe({\n listener,\n location: useLocation(),\n navigate: useNavigate()\n });\n onCleanup(s);\n};\nexport function createRoutes(routeDef, base = \"\") {\n const { component, load, children, info } = routeDef;\n const isLeaf = !children || (Array.isArray(children) && !children.length);\n const shared = {\n key: routeDef,\n component,\n load,\n info\n };\n return asArray(routeDef.path).reduce((acc, path) => {\n for (const originalPath of expandOptionals(path)) {\n const path = joinPaths(base, originalPath);\n let pattern = isLeaf ? path : path.split(\"/*\", 1)[0];\n pattern = pattern\n .split(\"/\")\n .map((s) => {\n return s.startsWith(\":\") || s.startsWith(\"*\") ? s : encodeURIComponent(s);\n })\n .join(\"/\");\n acc.push({\n ...shared,\n originalPath,\n pattern,\n matcher: createMatcher(pattern, !isLeaf, routeDef.matchFilters)\n });\n }\n return acc;\n }, []);\n}\nexport function createBranch(routes, index = 0) {\n return {\n routes,\n score: scoreRoute(routes[routes.length - 1]) * 10000 - index,\n matcher(location) {\n const matches = [];\n for (let i = routes.length - 1; i >= 0; i--) {\n const route = routes[i];\n const match = route.matcher(location);\n if (!match) {\n return null;\n }\n matches.unshift({\n ...match,\n route\n });\n }\n return matches;\n }\n };\n}\nfunction asArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function createBranches(routeDef, base = \"\", stack = [], branches = []) {\n const routeDefs = asArray(routeDef);\n for (let i = 0, len = routeDefs.length; i < len; i++) {\n const def = routeDefs[i];\n if (def && typeof def === \"object\") {\n if (!def.hasOwnProperty(\"path\"))\n def.path = \"\";\n const routes = createRoutes(def, base);\n for (const route of routes) {\n stack.push(route);\n const isEmptyArray = Array.isArray(def.children) && def.children.length === 0;\n if (def.children && !isEmptyArray) {\n createBranches(def.children, route.pattern, stack, branches);\n }\n else {\n const branch = createBranch([...stack], branches.length);\n branches.push(branch);\n }\n stack.pop();\n }\n }\n }\n // Stack will be empty on final return\n return stack.length ? branches : branches.sort((a, b) => b.score - a.score);\n}\nexport function getRouteMatches(branches, location) {\n for (let i = 0, len = branches.length; i < len; i++) {\n const match = branches[i].matcher(location);\n if (match) {\n return match;\n }\n }\n return [];\n}\nexport function createLocation(path, state) {\n const origin = new URL(mockBase);\n const url = createMemo(prev => {\n const path_ = path();\n try {\n return new URL(path_, origin);\n }\n catch (err) {\n console.error(`Invalid path ${path_}`);\n return prev;\n }\n }, origin, {\n equals: (a, b) => a.href === b.href\n });\n const pathname = createMemo(() => url().pathname);\n const search = createMemo(() => url().search, true);\n const hash = createMemo(() => url().hash);\n const key = () => \"\";\n return {\n get pathname() {\n return pathname();\n },\n get search() {\n return search();\n },\n get hash() {\n return hash();\n },\n get state() {\n return state();\n },\n get key() {\n return key();\n },\n query: createMemoObject(on(search, () => extractSearchParams(url())))\n };\n}\nlet intent;\nexport function getIntent() {\n return intent;\n}\nexport function createRouterContext(integration, branches, getContext, options = {}) {\n const { signal: [source, setSource], utils = {} } = integration;\n const parsePath = utils.parsePath || (p => p);\n const renderPath = utils.renderPath || (p => p);\n const beforeLeave = utils.beforeLeave || createBeforeLeave();\n const basePath = resolvePath(\"\", options.base || \"\");\n if (basePath === undefined) {\n throw new Error(`${basePath} is not a valid base path`);\n }\n else if (basePath && !source().value) {\n setSource({ value: basePath, replace: true, scroll: false });\n }\n const [isRouting, setIsRouting] = createSignal(false);\n const start = async (callback) => {\n setIsRouting(true);\n try {\n await startTransition(callback);\n }\n finally {\n setIsRouting(false);\n }\n };\n const [reference, setReference] = createSignal(source().value);\n const [state, setState] = createSignal(source().state);\n const location = createLocation(reference, state);\n const referrers = [];\n const submissions = createSignal(isServer ? initFromFlash() : []);\n const matches = createMemo(() => getRouteMatches(branches(), location.pathname));\n const params = createMemoObject(() => {\n const m = matches();\n const params = {};\n for (let i = 0; i < m.length; i++) {\n Object.assign(params, m[i].params);\n }\n return params;\n });\n const baseRoute = {\n pattern: basePath,\n path: () => basePath,\n outlet: () => null,\n resolvePath(to) {\n return resolvePath(basePath, to);\n }\n };\n createRenderEffect(() => {\n const { value, state } = source();\n // Untrack this whole block so `start` doesn't cause Solid's Listener to be preserved\n untrack(() => {\n if (value !== reference()) {\n start(() => {\n intent = \"native\";\n setReference(value);\n setState(state);\n resetErrorBoundaries();\n submissions[1]([]);\n }).then(() => {\n intent = undefined;\n });\n }\n });\n });\n return {\n base: baseRoute,\n location,\n params,\n isRouting,\n renderPath,\n parsePath,\n navigatorFactory,\n matches,\n beforeLeave,\n preloadRoute,\n singleFlight: options.singleFlight === undefined ? true : options.singleFlight,\n submissions\n };\n function navigateFromRoute(route, to, options) {\n // Untrack in case someone navigates in an effect - don't want to track `reference` or route paths\n untrack(() => {\n if (typeof to === \"number\") {\n if (!to) {\n // A delta of 0 means stay at the current location, so it is ignored\n }\n else if (utils.go) {\n utils.go(to);\n }\n else {\n console.warn(\"Router integration does not support relative routing\");\n }\n return;\n }\n const { replace, resolve, scroll, state: nextState } = {\n replace: false,\n resolve: true,\n scroll: true,\n ...options\n };\n const resolvedTo = resolve ? route.resolvePath(to) : resolvePath(\"\", to);\n if (resolvedTo === undefined) {\n throw new Error(`Path '${to}' is not a routable path`);\n }\n else if (referrers.length >= MAX_REDIRECTS) {\n throw new Error(\"Too many redirects\");\n }\n const current = reference();\n if (resolvedTo !== current || nextState !== state()) {\n if (isServer) {\n const e = getRequestEvent();\n e && (e.response = { status: 302, headers: new Headers({ Location: resolvedTo }) });\n setSource({ value: resolvedTo, replace, scroll, state: nextState });\n }\n else if (beforeLeave.confirm(resolvedTo, options)) {\n const len = referrers.push({ value: current, replace, scroll, state: state() });\n start(() => {\n intent = \"navigate\";\n setReference(resolvedTo);\n setState(nextState);\n resetErrorBoundaries();\n submissions[1]([]);\n }).then(() => {\n if (referrers.length === len) {\n intent = undefined;\n navigateEnd({\n value: resolvedTo,\n state: nextState\n });\n }\n });\n }\n }\n });\n }\n function navigatorFactory(route) {\n // Workaround for vite issue (https://github.com/vitejs/vite/issues/3803)\n route = route || useContext(RouteContextObj) || baseRoute;\n return (to, options) => navigateFromRoute(route, to, options);\n }\n function navigateEnd(next) {\n const first = referrers[0];\n if (first) {\n if (next.value !== first.value || next.state !== first.state) {\n setSource({\n ...next,\n replace: first.replace,\n scroll: first.scroll\n });\n }\n referrers.length = 0;\n }\n }\n function preloadRoute(url, preloadData) {\n const matches = getRouteMatches(branches(), url.pathname);\n const prevIntent = intent;\n intent = \"preload\";\n for (let match in matches) {\n const { route, params } = matches[match];\n route.component &&\n route.component.preload &&\n route.component.preload();\n const { load } = route;\n preloadData &&\n load &&\n runWithOwner(getContext(), () => load({\n params,\n location: {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n query: extractSearchParams(url),\n state: null,\n key: \"\"\n },\n intent: \"preload\"\n }));\n }\n intent = prevIntent;\n }\n function initFromFlash() {\n const e = getRequestEvent();\n return (e && e.router && e.router.submission\n ? [e.router.submission]\n : []);\n }\n}\nexport function createRouteContext(router, parent, outlet, match) {\n const { base, location, params } = router;\n const { pattern, component, load } = match().route;\n const path = createMemo(() => match().path);\n component &&\n component.preload &&\n component.preload();\n const data = load ? load({ params, location, intent: intent || \"initial\" }) : undefined;\n const route = {\n parent,\n pattern,\n path,\n outlet: () => component\n ? createComponent(component, {\n params,\n location,\n data,\n get children() {\n return outlet();\n }\n })\n : outlet(),\n resolvePath(to) {\n return resolvePath(base.path(), to, path());\n }\n };\n return route;\n}\n","/*@refresh skip*/\nimport { getRequestEvent, isServer } from \"solid-js/web\";\nimport { children, createMemo, createRoot, getOwner, mergeProps, on, Show, untrack } from \"solid-js\";\nimport { createBranches, createRouteContext, createRouterContext, getRouteMatches, RouteContextObj, RouterContextObj } from \"../routing.js\";\nexport const createRouterComponent = (router) => (props) => {\n const { base } = props;\n const routeDefs = children(() => props.children);\n const branches = createMemo(() => createBranches(routeDefs(), props.base || \"\"));\n let context;\n const routerState = createRouterContext(router, branches, () => context, {\n base,\n singleFlight: props.singleFlight\n });\n router.create && router.create(routerState);\n return (\n \n {(context = getOwner()) && null}\n \n \n );\n};\nfunction Root(props) {\n const location = props.routerState.location;\n const params = props.routerState.params;\n const data = createMemo(() => props.load && untrack(() => props.load({ params, location, intent: \"preload\" })));\n return (\n {Root => (\n {props.children}\n )}\n );\n}\nfunction Routes(props) {\n if (isServer) {\n const e = getRequestEvent();\n if (e && e.router && e.router.dataOnly) {\n dataOnly(e, props.routerState, props.branches);\n return;\n }\n e &&\n ((e.router || (e.router = {})).matches ||\n (e.router.matches = props.routerState.matches().map(({ route, path, params }) => ({\n path: route.originalPath,\n pattern: route.pattern,\n match: path,\n params,\n info: route.info\n }))));\n }\n const disposers = [];\n let root;\n const routeStates = createMemo(on(props.routerState.matches, (nextMatches, prevMatches, prev) => {\n let equal = prevMatches && nextMatches.length === prevMatches.length;\n const next = [];\n for (let i = 0, len = nextMatches.length; i < len; i++) {\n const prevMatch = prevMatches && prevMatches[i];\n const nextMatch = nextMatches[i];\n if (prev && prevMatch && nextMatch.route.key === prevMatch.route.key) {\n next[i] = prev[i];\n }\n else {\n equal = false;\n if (disposers[i]) {\n disposers[i]();\n }\n createRoot(dispose => {\n disposers[i] = dispose;\n next[i] = createRouteContext(props.routerState, next[i - 1] || props.routerState.base, createOutlet(() => routeStates()[i + 1]), () => props.routerState.matches()[i]);\n });\n }\n }\n disposers.splice(nextMatches.length).forEach(dispose => dispose());\n if (prev && equal) {\n return prev;\n }\n root = next[0];\n return next;\n }));\n return createOutlet(() => routeStates() && root)();\n}\nconst createOutlet = (child) => {\n return () => (\n {child => {child.outlet()}}\n );\n};\nexport const Route = (props) => {\n const childRoutes = children(() => props.children);\n return mergeProps(props, {\n get children() {\n return childRoutes();\n }\n });\n};\n// for data only mode with single flight mutations\nfunction dataOnly(event, routerState, branches) {\n const url = new URL(event.request.url);\n const prevMatches = getRouteMatches(branches, new URL(event.router.previousUrl || event.request.url).pathname);\n const matches = getRouteMatches(branches, url.pathname);\n for (let match = 0; match < matches.length; match++) {\n if (!prevMatches[match] || matches[match].route !== prevMatches[match].route)\n event.router.dataOnly = true;\n const { route, params } = matches[match];\n route.load &&\n route.load({\n params,\n location: routerState.location,\n intent: \"preload\"\n });\n }\n}\n","import { createSignal, onCleanup } from \"solid-js\";\nimport { createRouterComponent } from \"./components.jsx\";\nfunction intercept([value, setValue], get, set) {\n return [get ? () => get(value()) : value, set ? (v) => setValue(set(v)) : setValue];\n}\nfunction querySelector(selector) {\n if (selector === \"#\") {\n return null;\n }\n // Guard against selector being an invalid CSS selector\n try {\n return document.querySelector(selector);\n }\n catch (e) {\n return null;\n }\n}\nexport function createRouter(config) {\n let ignore = false;\n const wrap = (value) => (typeof value === \"string\" ? { value } : value);\n const signal = intercept(createSignal(wrap(config.get()), { equals: (a, b) => a.value === b.value }), undefined, next => {\n !ignore && config.set(next);\n return next;\n });\n config.init &&\n onCleanup(config.init((value = config.get()) => {\n ignore = true;\n signal[1](wrap(value));\n ignore = false;\n }));\n return createRouterComponent({\n signal,\n create: config.create,\n utils: config.utils\n });\n}\nexport function bindEvent(target, type, handler) {\n target.addEventListener(type, handler);\n return () => target.removeEventListener(type, handler);\n}\nexport function scrollToHash(hash, fallbackTop) {\n const el = querySelector(`#${hash}`);\n if (el) {\n el.scrollIntoView();\n }\n else if (fallbackTop) {\n window.scrollTo(0, 0);\n }\n}\n","import { $TRACK, createMemo, createSignal, onCleanup, getOwner } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { useRouter } from \"../routing.js\";\nimport { mockBase } from \"../utils.js\";\nimport { cacheKeyOp, hashKey, revalidate, cache } from \"./cache.js\";\nexport const actions = /* #__PURE__ */ new Map();\nexport function useSubmissions(fn, filter) {\n const router = useRouter();\n const subs = createMemo(() => router.submissions[0]().filter(s => s.url === fn.toString() && (!filter || filter(s.input))));\n return new Proxy([], {\n get(_, property) {\n if (property === $TRACK)\n return subs();\n if (property === \"pending\")\n return subs().some(sub => !sub.result);\n return subs()[property];\n }\n });\n}\nexport function useSubmission(fn, filter) {\n const submissions = useSubmissions(fn, filter);\n return new Proxy({}, {\n get(_, property) {\n return submissions[submissions.length - 1]?.[property];\n }\n });\n}\nexport function useAction(action) {\n const r = useRouter();\n return (...args) => action.apply({ r }, args);\n}\nexport function action(fn, name) {\n function mutate(...variables) {\n const router = this.r;\n const form = this.f;\n const p = (router.singleFlight && fn.withOptions\n ? fn.withOptions({ headers: { \"X-Single-Flight\": \"true\" } })\n : fn)(...variables);\n const [result, setResult] = createSignal();\n let submission;\n function handler(error) {\n return async (res) => {\n const result = await handleResponse(res, error, router.navigatorFactory());\n if (!result)\n return submission.clear();\n setResult(result);\n if (result.error && !form)\n throw result.error;\n return result.data;\n };\n }\n router.submissions[1](s => [\n ...s,\n (submission = {\n input: variables,\n url,\n get result() {\n return result()?.data;\n },\n get error() {\n return result()?.error;\n },\n get pending() {\n return !result();\n },\n clear() {\n router.submissions[1](v => v.filter(i => i.input !== variables));\n },\n retry() {\n setResult(undefined);\n const p = fn(...variables);\n return p.then(handler(), handler(true));\n }\n })\n ]);\n return p.then(handler(), handler(true));\n }\n const url = fn.url ||\n (name && `https://action/${name}`) ||\n (!isServer ? `https://action/${hashString(fn.toString())}` : \"\");\n return toAction(mutate, url);\n}\nfunction toAction(fn, url) {\n fn.toString = () => {\n if (!url)\n throw new Error(\"Client Actions need explicit names if server rendered\");\n return url;\n };\n fn.with = function (...args) {\n const newFn = function (...passedArgs) {\n return fn.call(this, ...args, ...passedArgs);\n };\n const uri = new URL(url, mockBase);\n uri.searchParams.set(\"args\", hashKey(args));\n return toAction(newFn, (uri.origin === \"https://action\" ? uri.origin : \"\") + uri.pathname + uri.search);\n };\n fn.url = url;\n if (!isServer) {\n actions.set(url, fn);\n getOwner() && onCleanup(() => actions.delete(url));\n }\n return fn;\n}\nconst hashString = (s) => s.split(\"\").reduce((a, b) => ((a << 5) - a + b.charCodeAt(0)) | 0, 0);\nasync function handleResponse(response, error, navigate) {\n let data;\n let keys;\n let invalidateKeys;\n if (response instanceof Response) {\n if (response.headers.has(\"X-Revalidate\"))\n keys = invalidateKeys = response.headers.get(\"X-Revalidate\").split(\",\");\n if (response.customBody) {\n data = await response.customBody();\n if (response.headers.has(\"X-Single-Flight\")) {\n keys || (keys = []);\n invalidateKeys || (invalidateKeys = []);\n Object.keys(data).forEach(key => {\n if (key === \"_$value\")\n return;\n keys.push(key);\n cache.set(key, data[key]);\n });\n data = data._$value;\n }\n }\n if (response.headers.has(\"Location\")) {\n const locationUrl = response.headers.get(\"Location\") || \"/\";\n if (locationUrl.startsWith(\"http\")) {\n window.location.href = locationUrl;\n }\n else {\n navigate(locationUrl);\n }\n }\n }\n else if (error)\n return { error: response };\n else\n data = response;\n // invalidate\n cacheKeyOp(invalidateKeys, entry => (entry[0] = 0));\n // trigger revalidation\n await revalidate(keys, false);\n return data != null ? { data } : undefined;\n}\n","import { delegateEvents } from \"solid-js/web\";\nimport { onCleanup } from \"solid-js\";\nimport { actions } from \"./action.js\";\nimport { mockBase } from \"../utils.js\";\nexport function setupNativeEvents(preload = true, explicitLinks = false, actionBase = \"/_server\") {\n return (router) => {\n const basePath = router.base.path();\n const navigateFromRoute = router.navigatorFactory(router.base);\n let preloadTimeout = {};\n function isSvg(el) {\n return el.namespaceURI === \"http://www.w3.org/2000/svg\";\n }\n function handleAnchor(evt) {\n if (evt.defaultPrevented ||\n evt.button !== 0 ||\n evt.metaKey ||\n evt.altKey ||\n evt.ctrlKey ||\n evt.shiftKey)\n return;\n const a = evt\n .composedPath()\n .find(el => el instanceof Node && el.nodeName.toUpperCase() === \"A\");\n if (!a || (explicitLinks && !a.hasAttribute(\"link\")))\n return;\n const svg = isSvg(a);\n const href = svg ? a.href.baseVal : a.href;\n const target = svg ? a.target.baseVal : a.target;\n if (target || (!href && !a.hasAttribute(\"state\")))\n return;\n const rel = (a.getAttribute(\"rel\") || \"\").split(/\\s+/);\n if (a.hasAttribute(\"download\") || (rel && rel.includes(\"external\")))\n return;\n const url = svg ? new URL(href, document.baseURI) : new URL(href);\n if (url.origin !== window.location.origin ||\n (basePath && url.pathname && !url.pathname.toLowerCase().startsWith(basePath.toLowerCase())))\n return;\n return [a, url];\n }\n function handleAnchorClick(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n const to = router.parsePath(url.pathname + url.search + url.hash);\n const state = a.getAttribute(\"state\");\n evt.preventDefault();\n navigateFromRoute(to, {\n resolve: false,\n replace: a.hasAttribute(\"replace\"),\n scroll: !a.hasAttribute(\"noscroll\"),\n state: state && JSON.parse(state)\n });\n }\n function handleAnchorPreload(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n if (!preloadTimeout[url.pathname])\n router.preloadRoute(url, a.getAttribute(\"preload\") !== \"false\");\n }\n function handleAnchorIn(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n if (preloadTimeout[url.pathname])\n return;\n preloadTimeout[url.pathname] = setTimeout(() => {\n router.preloadRoute(url, a.getAttribute(\"preload\") !== \"false\");\n delete preloadTimeout[url.pathname];\n }, 200);\n }\n function handleAnchorOut(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [, url] = res;\n if (preloadTimeout[url.pathname]) {\n clearTimeout(preloadTimeout[url.pathname]);\n delete preloadTimeout[url.pathname];\n }\n }\n function handleFormSubmit(evt) {\n let actionRef = evt.submitter && evt.submitter.hasAttribute(\"formaction\")\n ? evt.submitter.getAttribute(\"formaction\")\n : evt.target.getAttribute(\"action\");\n if (!actionRef)\n return;\n if (!actionRef.startsWith(\"https://action/\")) {\n // normalize server actions\n const url = new URL(actionRef, mockBase);\n actionRef = router.parsePath(url.pathname + url.search);\n if (!actionRef.startsWith(actionBase))\n return;\n }\n if (evt.target.method.toUpperCase() !== \"POST\")\n throw new Error(\"Only POST forms are supported for Actions\");\n const handler = actions.get(actionRef);\n if (handler) {\n evt.preventDefault();\n const data = new FormData(evt.target);\n if (evt.submitter && evt.submitter.name)\n data.append(evt.submitter.name, evt.submitter.value);\n handler.call({ r: router, f: evt.target }, data);\n }\n }\n // ensure delegated event run first\n delegateEvents([\"click\", \"submit\"]);\n document.addEventListener(\"click\", handleAnchorClick);\n if (preload) {\n document.addEventListener(\"mouseover\", handleAnchorIn);\n document.addEventListener(\"mouseout\", handleAnchorOut);\n document.addEventListener(\"focusin\", handleAnchorPreload);\n document.addEventListener(\"touchstart\", handleAnchorPreload);\n }\n document.addEventListener(\"submit\", handleFormSubmit);\n onCleanup(() => {\n document.removeEventListener(\"click\", handleAnchorClick);\n if (preload) {\n document.removeEventListener(\"mouseover\", handleAnchorIn);\n document.removeEventListener(\"mouseout\", handleAnchorOut);\n document.removeEventListener(\"focusin\", handleAnchorPreload);\n document.removeEventListener(\"touchstart\", handleAnchorPreload);\n }\n document.removeEventListener(\"submit\", handleFormSubmit);\n });\n };\n}\n","import { setupNativeEvents } from \"../data/events.js\";\nimport { createRouter, scrollToHash, bindEvent } from \"./createRouter.js\";\nimport { createBeforeLeave, keepDepth, notifyIfNotBlocked, saveCurrentDepth } from \"../lifecycle.js\";\nexport function hashParser(str) {\n const to = str.replace(/^.*?#/, \"\");\n // Hash-only hrefs like `#foo` from plain anchors will come in as `/#foo` whereas a link to\n // `/foo` will be `/#/foo`. Check if the to starts with a `/` and if not append it as a hash\n // to the current path so we can handle these in-page anchors correctly.\n if (!to.startsWith(\"/\")) {\n const [, path = \"/\"] = window.location.hash.split(\"#\", 2);\n return `${path}#${to}`;\n }\n return to;\n}\nexport function HashRouter(props) {\n const getSource = () => window.location.hash.slice(1);\n const beforeLeave = createBeforeLeave();\n return createRouter({\n get: getSource,\n set({ value, replace, scroll, state }) {\n if (replace) {\n window.history.replaceState(keepDepth(state), \"\", \"#\" + value);\n }\n else {\n window.location.hash = value;\n }\n const hashIndex = value.indexOf(\"#\");\n const hash = hashIndex >= 0 ? value.slice(hashIndex + 1) : \"\";\n scrollToHash(hash, scroll);\n saveCurrentDepth();\n },\n init: notify => bindEvent(window, \"hashchange\", notifyIfNotBlocked(notify, delta => !beforeLeave.confirm(delta && delta < 0 ? delta : getSource()))),\n create: setupNativeEvents(props.preload, props.explicitLinks, props.actionBase),\n utils: {\n go: delta => window.history.go(delta),\n renderPath: path => `#${path}`,\n parsePath: hashParser,\n beforeLeave\n }\n })(props);\n}\n","import { DEV, equalFn, untrack, getOwner, onCleanup, createSignal, sharedConfig, onMount } from 'solid-js';\nimport { isServer } from 'solid-js/web';\nexport { isServer } from 'solid-js/web';\n\n// src/index.ts\nvar isClient = !isServer;\nvar isDev = isClient && !!DEV;\nvar isProd = !isDev;\nvar noop = () => void 0;\nvar trueFn = () => true;\nvar falseFn = () => false;\nvar defaultEquals = equalFn;\nvar EQUALS_FALSE_OPTIONS = { equals: false };\nvar INTERNAL_OPTIONS = { internal: true };\nvar ofClass = (v, c) => v instanceof c || v && v.constructor === c;\nfunction isObject(value) {\n return value !== null && (typeof value === \"object\" || typeof value === \"function\");\n}\nvar isNonNullable = (i) => i != null;\nvar filterNonNullable = (arr) => arr.filter(isNonNullable);\nvar compare = (a, b) => a < b ? -1 : a > b ? 1 : 0;\nvar arrayEquals = (a, b) => a === b || a.length === b.length && a.every((e, i) => e === b[i]);\nfunction chain(callbacks) {\n return (...args) => {\n for (const callback of callbacks)\n callback && callback(...args);\n };\n}\nfunction reverseChain(callbacks) {\n return (...args) => {\n for (let i = callbacks.length - 1; i >= 0; i--) {\n const callback = callbacks[i];\n callback && callback(...args);\n }\n };\n}\nvar clamp = (n, min, max) => Math.min(Math.max(n, min), max);\nvar access = (v) => typeof v === \"function\" && !v.length ? v() : v;\nvar asArray = (value) => Array.isArray(value) ? value : value ? [value] : [];\nvar accessArray = (list) => list.map((v) => access(v));\nvar withAccess = (value, fn) => {\n const _value = access(value);\n typeof _value != null && fn(_value);\n};\nvar asAccessor = (v) => typeof v === \"function\" ? v : () => v;\nfunction accessWith(valueOrFn, ...args) {\n return typeof valueOrFn === \"function\" ? valueOrFn(...args) : valueOrFn;\n}\nfunction defer(deps, fn, initialValue) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let shouldDefer = true;\n return (prevValue) => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++)\n input[i] = deps[i]();\n } else\n input = deps();\n if (shouldDefer) {\n shouldDefer = false;\n prevInput = input;\n return initialValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nvar entries = Object.entries;\nvar keys = Object.keys;\nvar tryOnCleanup = isDev ? (fn) => getOwner() ? onCleanup(fn) : fn : onCleanup;\nvar createCallbackStack = () => {\n let stack = [];\n const clear = () => stack = [];\n return {\n push: (...callbacks) => stack.push(...callbacks),\n execute(arg0, arg1, arg2, arg3) {\n stack.forEach((cb) => cb(arg0, arg1, arg2, arg3));\n clear();\n },\n clear\n };\n};\nfunction createMicrotask(fn) {\n let calls = 0;\n let args;\n onCleanup(() => calls = 0);\n return (...a) => {\n args = a, calls++;\n queueMicrotask(() => --calls === 0 && fn(...args));\n };\n}\nfunction createHydratableSignal(serverValue, update, options) {\n if (isServer) {\n return createSignal(serverValue, options);\n }\n if (sharedConfig.context) {\n const [state, setState] = createSignal(serverValue, options);\n onMount(() => setState(() => update()));\n return [state, setState];\n }\n return createSignal(update(), options);\n}\nvar createHydrateSignal = createHydratableSignal;\nfunction handleDiffArray(current, prev, handleAdded, handleRemoved) {\n const currLength = current.length;\n const prevLength = prev.length;\n let i = 0;\n if (!prevLength) {\n for (; i < currLength; i++)\n handleAdded(current[i]);\n return;\n }\n if (!currLength) {\n for (; i < prevLength; i++)\n handleRemoved(prev[i]);\n return;\n }\n for (; i < prevLength; i++) {\n if (prev[i] !== current[i])\n break;\n }\n let prevEl;\n let currEl;\n prev = prev.slice(i);\n current = current.slice(i);\n for (prevEl of prev) {\n if (!current.includes(prevEl))\n handleRemoved(prevEl);\n }\n for (currEl of current) {\n if (!prev.includes(currEl))\n handleAdded(currEl);\n }\n}\n\nexport { EQUALS_FALSE_OPTIONS, INTERNAL_OPTIONS, access, accessArray, accessWith, arrayEquals, asAccessor, asArray, chain, clamp, compare, createCallbackStack, createHydratableSignal, createHydrateSignal, createMicrotask, defaultEquals, defer, entries, falseFn, filterNonNullable, handleDiffArray, isClient, isDev, isNonNullable, isObject, isProd, keys, noop, ofClass, reverseChain, trueFn, tryOnCleanup, withAccess };\n","import { tryOnCleanup, entries, createCallbackStack, asArray, access, keys } from '@solid-primitives/utils';\nimport { createEffect, createRenderEffect, createSignal, onCleanup } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/eventListener.ts\nfunction makeEventListener(target, type, handler, options) {\n target.addEventListener(type, handler, options);\n return tryOnCleanup(target.removeEventListener.bind(target, type, handler, options));\n}\nfunction createEventListener(targets, type, handler, options) {\n if (isServer)\n return;\n const attachListeners = () => {\n asArray(access(targets)).forEach((el) => {\n if (el)\n asArray(access(type)).forEach((type2) => makeEventListener(el, type2, handler, options));\n });\n };\n if (typeof targets === \"function\")\n createEffect(attachListeners);\n else\n createRenderEffect(attachListeners);\n}\nfunction createEventSignal(target, type, options) {\n if (isServer) {\n return () => void 0;\n }\n const [lastEvent, setLastEvent] = createSignal();\n createEventListener(target, type, setLastEvent, options);\n return lastEvent;\n}\nvar eventListener = (target, props) => {\n createEffect(() => {\n const [type, handler, options] = props();\n makeEventListener(target, type, handler, options);\n });\n};\nfunction createEventListenerMap(targets, handlersMap, options) {\n if (isServer) {\n return;\n }\n for (const [eventName, handler] of entries(handlersMap)) {\n if (handler)\n createEventListener(targets, eventName, handler, options);\n }\n}\nvar attachPropListeners = (target, props) => {\n keys(props).forEach((attr) => {\n if (attr.startsWith(\"on\") && typeof props[attr] === \"function\")\n makeEventListener(target, attr.substring(2).toLowerCase(), props[attr]);\n });\n};\nvar WindowEventListener = (props) => {\n if (isServer)\n return null;\n attachPropListeners(window, props);\n};\nvar DocumentEventListener = (props) => {\n if (isServer)\n return null;\n attachPropListeners(document, props);\n};\nfunction makeEventListenerStack(target, options) {\n if (isServer) {\n return [() => () => void 0, () => void 0];\n }\n const { push, execute } = createCallbackStack();\n return [\n (type, handler, overwriteOptions) => {\n const clear = makeEventListener(target, type, handler, overwriteOptions ?? options);\n push(clear);\n return clear;\n },\n onCleanup(execute)\n ];\n}\n\n// src/callbackWrappers.ts\nvar preventDefault = (callback) => (e) => {\n e.preventDefault();\n callback(e);\n};\nvar stopPropagation = (callback) => (e) => {\n e.stopPropagation();\n callback(e);\n};\nvar stopImmediatePropagation = (callback) => (e) => {\n e.stopImmediatePropagation();\n callback(e);\n};\n\nexport { DocumentEventListener, WindowEventListener, createEventListener, createEventListenerMap, createEventSignal, eventListener, makeEventListener, makeEventListenerStack, preventDefault, stopImmediatePropagation, stopPropagation };\n","import { getOwner, createRoot, runWithOwner, onCleanup, sharedConfig, createSignal, batch } from 'solid-js';\nimport { isServer } from 'solid-js/web';\nimport { asArray, access, trueFn, noop, createMicrotask } from '@solid-primitives/utils';\n\n// src/index.ts\nfunction createSubRoot(fn, ...owners) {\n if (owners.length === 0)\n owners = [getOwner()];\n return createRoot((dispose) => {\n asArray(access(owners)).forEach(\n (owner) => owner && runWithOwner(owner, onCleanup.bind(void 0, dispose))\n );\n return fn(dispose);\n }, owners[0]);\n}\nvar createBranch = createSubRoot;\nvar createCallback = (callback, owner = getOwner()) => owner ? (...args) => runWithOwner(owner, () => callback(...args)) : callback;\nfunction createDisposable(fn, ...owners) {\n return createSubRoot(\n (dispose) => {\n fn(dispose);\n return dispose;\n },\n ...owners\n );\n}\nfunction createSingletonRoot(factory, detachedOwner = getOwner()) {\n let listeners = 0, value, disposeRoot;\n return () => {\n listeners++;\n onCleanup(() => {\n listeners--;\n queueMicrotask(() => {\n if (!listeners && disposeRoot) {\n disposeRoot();\n disposeRoot = value = void 0;\n }\n });\n });\n if (!disposeRoot) {\n createRoot((dispose) => value = factory(disposeRoot = dispose), detachedOwner);\n }\n return value;\n };\n}\nvar createSharedRoot = createSingletonRoot;\nfunction createHydratableSingletonRoot(factory) {\n const owner = getOwner();\n const singleton = createSingletonRoot(factory, owner);\n return () => isServer || sharedConfig.context ? createRoot(factory, owner) : singleton();\n}\nfunction createRootPool(factory, options = {}) {\n if (isServer) {\n const owner2 = getOwner();\n return (args) => createRoot((dispose) => factory(() => args, trueFn, dispose), owner2);\n }\n let length = 0;\n const { limit = 100 } = options, pool = new Array(limit), owner = getOwner(), mapRoot = factory.length > 1 ? (dispose, [args, set]) => {\n const [active, setA] = createSignal(true);\n const root = {\n dispose,\n set,\n setA,\n active,\n v: factory(args, active, () => disposeRoot(root))\n };\n return root;\n } : (dispose, [args, set]) => ({\n dispose,\n set,\n setA: trueFn,\n active: trueFn,\n v: factory(args, trueFn, noop)\n }), limitPool = createMicrotask(() => {\n if (length > limit) {\n for (let i = limit; i < length; i++) {\n pool[i].dispose();\n pool[i] = void 0;\n }\n length = limit;\n }\n }), cleanupRoot = (root) => {\n if (root.dispose !== noop) {\n pool[length++] = root;\n root.setA(false);\n limitPool();\n }\n }, disposeRoot = (root) => {\n root.dispose();\n root.dispose = noop;\n if (root.active())\n root.setA(false);\n else {\n pool[pool.indexOf(root)] = pool[--length];\n pool[length] = void 0;\n }\n };\n onCleanup(() => {\n for (let i = 0; i < length; i++)\n pool[i].dispose();\n length = 0;\n });\n return (arg) => {\n let root;\n if (length) {\n root = pool[--length];\n pool[length] = void 0;\n batch(() => {\n root.set(() => arg);\n root.setA(true);\n });\n } else\n root = createRoot((dispose) => mapRoot(dispose, createSignal(arg)), owner);\n onCleanup(() => cleanupRoot(root));\n return root.v;\n };\n}\n\nexport { createBranch, createCallback, createDisposable, createHydratableSingletonRoot, createRootPool, createSharedRoot, createSingletonRoot, createSubRoot };\n","import { makeEventListener } from '@solid-primitives/event-listener';\nimport { createSingletonRoot } from '@solid-primitives/rootless';\nimport { arrayEquals } from '@solid-primitives/utils';\nimport { createSignal, untrack, createMemo, createEffect, on } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nfunction equalsKeyHoldSequence(sequence, model) {\n for (let i = sequence.length - 1; i >= 0; i--) {\n const _model = model.slice(0, i + 1);\n if (!arrayEquals(sequence[i], _model))\n return false;\n }\n return true;\n}\nvar useKeyDownEvent = /* @__PURE__ */ createSingletonRoot(\n () => {\n if (isServer) {\n return () => null;\n }\n const [event, setEvent] = createSignal(null);\n makeEventListener(window, \"keydown\", (e) => {\n setEvent(e);\n setTimeout(() => setEvent(null));\n });\n return event;\n }\n);\nvar useKeyDownList = /* @__PURE__ */ createSingletonRoot(() => {\n if (isServer) {\n const keys = () => [];\n keys[0] = keys;\n keys[1] = { event: () => null };\n keys[Symbol.iterator] = function* () {\n yield keys[0];\n yield keys[1];\n };\n return keys;\n }\n const [pressedKeys, setPressedKeys] = createSignal([]), reset = () => setPressedKeys([]), event = useKeyDownEvent();\n makeEventListener(window, \"keydown\", (e) => {\n if (e.repeat || typeof e.key !== \"string\")\n return;\n const key = e.key.toUpperCase(), currentKeys = pressedKeys();\n if (currentKeys.includes(key))\n return;\n const keys = [...currentKeys, key];\n if (currentKeys.length === 0 && key !== \"ALT\" && key !== \"CONTROL\" && key !== \"META\" && key !== \"SHIFT\") {\n if (e.shiftKey)\n keys.unshift(\"SHIFT\");\n if (e.altKey)\n keys.unshift(\"ALT\");\n if (e.ctrlKey)\n keys.unshift(\"CONTROL\");\n if (e.metaKey)\n keys.unshift(\"META\");\n }\n setPressedKeys(keys);\n });\n makeEventListener(window, \"keyup\", (e) => {\n if (typeof e.key !== \"string\")\n return;\n const key = e.key.toUpperCase();\n setPressedKeys((prev) => prev.filter((_key) => _key !== key));\n });\n makeEventListener(window, \"blur\", reset);\n makeEventListener(window, \"contextmenu\", (e) => {\n e.defaultPrevented || reset();\n });\n pressedKeys[0] = pressedKeys;\n pressedKeys[1] = { event };\n pressedKeys[Symbol.iterator] = function* () {\n yield pressedKeys[0];\n yield pressedKeys[1];\n };\n return pressedKeys;\n});\nvar useCurrentlyHeldKey = /* @__PURE__ */ createSingletonRoot(\n () => {\n if (isServer) {\n return () => null;\n }\n const keys = useKeyDownList();\n let prevKeys = untrack(keys);\n return createMemo(() => {\n const _keys = keys();\n const prev = prevKeys;\n prevKeys = _keys;\n if (prev.length === 0 && _keys.length === 1)\n return _keys[0];\n return null;\n });\n }\n);\nvar useKeyDownSequence = /* @__PURE__ */ createSingletonRoot(() => {\n if (isServer) {\n return () => [];\n }\n const keys = useKeyDownList();\n return createMemo((prev) => {\n if (keys().length === 0)\n return [];\n return [...prev, keys()];\n }, []);\n});\nfunction createKeyHold(key, options = {}) {\n if (isServer) {\n return () => false;\n }\n key = key.toUpperCase();\n const { preventDefault = true } = options, event = useKeyDownEvent(), heldKey = useCurrentlyHeldKey();\n return createMemo(() => heldKey() === key && (preventDefault && event()?.preventDefault(), true));\n}\nfunction createShortcut(keys, callback, options = {}) {\n if (isServer || !keys.length) {\n return;\n }\n keys = keys.map((key) => key.toUpperCase());\n const { preventDefault = true } = options, event = useKeyDownEvent(), sequence = useKeyDownSequence();\n let reset = false;\n const handleSequenceWithReset = (sequence2) => {\n if (!sequence2.length)\n return reset = false;\n if (reset)\n return;\n const e = event();\n if (sequence2.length < keys.length) {\n if (equalsKeyHoldSequence(sequence2, keys.slice(0, sequence2.length))) {\n preventDefault && e && e.preventDefault();\n } else {\n reset = true;\n }\n } else {\n reset = true;\n if (equalsKeyHoldSequence(sequence2, keys)) {\n preventDefault && e && e.preventDefault();\n callback(e);\n }\n }\n };\n const handleSequenceWithoutReset = (sequence2) => {\n const last = sequence2.at(-1);\n if (!last)\n return;\n const e = event();\n if (preventDefault && last.length < keys.length) {\n if (arrayEquals(last, keys.slice(0, keys.length - 1))) {\n e && e.preventDefault();\n }\n return;\n }\n if (arrayEquals(last, keys)) {\n const prev = sequence2.at(-2);\n if (!prev || arrayEquals(prev, keys.slice(0, keys.length - 1))) {\n preventDefault && e && e.preventDefault();\n callback(e);\n }\n }\n };\n createEffect(\n on(sequence, options.requireReset ? handleSequenceWithReset : handleSequenceWithoutReset)\n );\n}\n\nexport { createKeyHold, createShortcut, useCurrentlyHeldKey, useKeyDownEvent, useKeyDownList, useKeyDownSequence };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nexport function isFunc(item) {\n return typeof item === 'function';\n}\nexport function isObject(item) {\n return typeof item === 'object';\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isArray(item) {\n return Array.isArray(item);\n}\nexport function isString(item) {\n return typeof item === 'string';\n}\nexport function isNumber(item) {\n return typeof item === 'number';\n}\nexport function isInteger(item) {\n return Number.isInteger(item);\n}\nexport function keyExists(obj, keys) {\n for (const key of keys) {\n if (key in obj) {\n return true;\n }\n }\n return false;\n}\n/**\n * Asserts a condition is truthy, otherwise throws an error\n *\n * @remarks\n * Useful at the top of functions to ensure certain conditions, arguments and\n * properties are set/met before continuing. When using this function,\n * TypeScript will narrow away falsy types from the condition.\n *\n * @param condition\n * @param message\n * @returns\n */\nexport function assertTruthy(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n//# sourceMappingURL=utils.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { createEffect, on, createSignal, untrack, } from 'solid-js';\nimport { useKeyDownEvent } from '@solid-primitives/keyboard';\nimport { activeElement, ElementNode } from '@lightningjs/solid';\nimport { isFunc, isArray } from './utils.js';\nconst keyMapEntries = {\n ArrowLeft: 'Left',\n ArrowRight: 'Right',\n ArrowUp: 'Up',\n ArrowDown: 'Down',\n Enter: 'Enter',\n l: 'Last',\n ' ': 'Space',\n Backspace: 'Back',\n Escape: 'Escape',\n};\nconst [focusPath, setFocusPath] = createSignal([]);\nexport { focusPath };\nexport const useFocusManager = (userKeyMap) => {\n const keypressEvent = useKeyDownEvent();\n if (userKeyMap) {\n // Flatten the userKeyMap to a hash\n for (const [key, value] of Object.entries(userKeyMap)) {\n if (isArray(value)) {\n value.forEach((v) => {\n keyMapEntries[v] = key;\n });\n }\n else {\n keyMapEntries[value] = key;\n }\n }\n }\n createEffect(on(activeElement, (currentFocusedElm, prevFocusedElm, prevFocusPath = []) => {\n const newFocusedElms = [];\n let current = currentFocusedElm;\n const fp = [];\n while (current) {\n if (!current.states.has('focus')) {\n current.states.add('focus');\n isFunc(current.onFocus) &&\n current.onFocus.call(current, currentFocusedElm, prevFocusedElm);\n newFocusedElms.push(current);\n }\n fp.push(current);\n current = current.parent;\n }\n prevFocusPath.forEach((elm) => {\n if (!fp.includes(elm)) {\n elm.states.remove('focus');\n isFunc(elm.onBlur) &&\n elm.onBlur.call(elm, currentFocusedElm, prevFocusedElm);\n }\n });\n setFocusPath(fp);\n return fp;\n }, { defer: true }));\n createEffect(() => {\n const e = keypressEvent();\n if (e) {\n // Search keyMap for the value of the pressed key or keyCode if value undefined\n const mappedKeyEvent = keyMapEntries[e.key] || keyMapEntries[e.keyCode];\n untrack(() => {\n const fp = focusPath();\n let finalFocusElm = undefined;\n for (const elm of fp) {\n finalFocusElm = finalFocusElm || elm;\n if (mappedKeyEvent) {\n const onKeyHandler = elm[`on${mappedKeyEvent}`];\n if (isFunc(onKeyHandler)) {\n if (onKeyHandler.call(elm, e, elm, finalFocusElm) === true) {\n break;\n }\n }\n }\n else {\n console.log(`Unhandled key event: ${e.key}`);\n }\n if (isFunc(elm.onKeyPress)) {\n if (elm.onKeyPress.call(elm, e, mappedKeyEvent, elm, finalFocusElm) === true) {\n break;\n }\n }\n }\n return false;\n });\n }\n });\n return focusPath;\n};\n//# sourceMappingURL=useFocusManager.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { ElementNode } from '@lightningjs/solid';\n// To use with TS import withPadding and then put withPadding; on the next line to prevent tree shaking\nexport function withPadding(el, padding) {\n const pad = padding();\n let top, left, right, bottom;\n if (Array.isArray(pad)) {\n // top right bottom left\n if (pad.length === 2) {\n top = bottom = pad[0];\n left = right = pad[1];\n }\n else if (pad.length === 3) {\n top = pad[0];\n left = right = pad[1];\n bottom = pad[2];\n }\n else {\n [top, right, bottom, left] = pad;\n }\n }\n else {\n top = right = bottom = left = pad;\n }\n el.onBeforeLayout = (node, size) => {\n if (size) {\n el.width =\n el.children.reduce((acc, c) => {\n return acc + (c.width || 0);\n }, 0) +\n left +\n right;\n const firstChild = el.children[0];\n if (firstChild) {\n // set padding or marginLeft for flex\n firstChild.x = left;\n firstChild.marginLeft = left;\n }\n let maxHeight = 0;\n el.children.forEach((c) => {\n c.y = top;\n c.marginTop = top;\n maxHeight = Math.max(maxHeight, c.height || 0);\n });\n el.height = maxHeight + top + bottom;\n // let flex know we need to re-layout\n return true;\n }\n };\n}\n//# sourceMappingURL=withPadding.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n/* global SpeechSynthesisErrorEvent */\nfunction flattenStrings(series = []) {\n const flattenedSeries = [];\n let i;\n for (i = 0; i < series.length; i++) {\n const s = series[i];\n if (typeof s === 'string' && !s.includes('PAUSE-')) {\n flattenedSeries.push(series[i]);\n }\n else {\n break;\n }\n }\n // add a \"word boundary\" to ensure the Announcer doesn't automatically try to\n // interpret strings that look like dates but are not actually dates\n // for example, if \"Rising Sun\" and \"1993\" are meant to be two separate lines,\n // when read together, \"Sun 1993\" is interpretted as \"Sunday 1993\"\n return [flattenedSeries.join(',\\b ')].concat(series.slice(i));\n}\nfunction delay(pause) {\n return new Promise((resolve) => {\n setTimeout(resolve, pause);\n });\n}\n/**\n * Speak a string\n *\n * @param phrase Phrase to speak\n * @param utterances An array which the new SpeechSynthesisUtterance instance representing this utterance will be appended\n * @param lang Language to speak in\n * @return {Promise} Promise resolved when the utterance has finished speaking, and rejected if there's an error\n */\nfunction speak(phrase, utterances, lang = 'en-US') {\n const synth = window.speechSynthesis;\n return new Promise((resolve, reject) => {\n const utterance = new SpeechSynthesisUtterance(phrase);\n utterance.lang = lang;\n utterance.onend = () => {\n resolve();\n };\n utterance.onerror = (e) => {\n reject(e);\n };\n utterances.push(utterance);\n synth.speak(utterance);\n });\n}\nfunction speakSeries(series, lang, root = true) {\n const synth = window.speechSynthesis;\n const remainingPhrases = flattenStrings(Array.isArray(series) ? series : [series]);\n const nestedSeriesResults = [];\n /*\n We hold this array of SpeechSynthesisUtterances in order to prevent them from being\n garbage collected prematurely on STB hardware which can cause the 'onend' events of\n utterances to not fire consistently.\n */\n const utterances = [];\n let active = true;\n const seriesChain = (async () => {\n try {\n while (active && remainingPhrases.length) {\n const phrase = await Promise.resolve(remainingPhrases.shift());\n if (!active) {\n // Exit\n // Need to check this after the await in case it was cancelled in between\n break;\n }\n else if (typeof phrase === 'string' && phrase.includes('PAUSE-')) {\n // Pause it\n let pause = Number(phrase.split('PAUSE-')[1]) * 1000;\n if (isNaN(pause)) {\n pause = 0;\n }\n await delay(pause);\n }\n else if (typeof phrase === 'string' && phrase.length) {\n // Speak it\n const totalRetries = 3;\n let retriesLeft = totalRetries;\n while (active && retriesLeft > 0) {\n try {\n await speak(phrase, utterances, lang);\n retriesLeft = 0;\n }\n catch (e) {\n // eslint-disable-next-line no-undef\n if (e instanceof SpeechSynthesisErrorEvent) {\n if (e.error === 'network') {\n retriesLeft--;\n console.warn(`Speech synthesis network error. Retries left: ${retriesLeft}`);\n await delay(500 * (totalRetries - retriesLeft));\n }\n else if (e.error === 'canceled' ||\n e.error === 'interrupted') {\n // Cancel or interrupt error (ignore)\n retriesLeft = 0;\n }\n else {\n throw new Error(`SpeechSynthesisErrorEvent: ${e.error}`);\n }\n }\n else {\n throw e;\n }\n }\n }\n }\n else if (typeof phrase === 'function') {\n const seriesResult = speakSeries(phrase(), lang, false);\n nestedSeriesResults.push(seriesResult);\n await seriesResult.series;\n }\n else if (Array.isArray(phrase)) {\n // Speak it (recursively)\n const seriesResult = speakSeries(phrase, lang, false);\n nestedSeriesResults.push(seriesResult);\n await seriesResult.series;\n }\n }\n }\n finally {\n active = false;\n }\n })();\n return {\n series: seriesChain,\n get active() {\n return active;\n },\n append: (toSpeak) => {\n remainingPhrases.push(toSpeak);\n },\n cancel: () => {\n if (!active) {\n return;\n }\n if (root) {\n synth.cancel();\n }\n nestedSeriesResults.forEach((nestedSeriesResults) => {\n nestedSeriesResults.cancel();\n });\n active = false;\n },\n };\n}\nlet currentSeries;\nexport default function (toSpeak, lang = 'en-US') {\n currentSeries && currentSeries.cancel();\n currentSeries = speakSeries(toSpeak, lang);\n return currentSeries;\n}\n//# sourceMappingURL=speech.js.map","import { getOwner, onCleanup, createSignal, getListener } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nvar debounce = (callback, wait) => {\n if (isServer) {\n return Object.assign(() => void 0, { clear: () => void 0 });\n }\n let timeoutId;\n const clear = () => clearTimeout(timeoutId);\n if (getOwner())\n onCleanup(clear);\n const debounced = (...args) => {\n if (timeoutId !== void 0)\n clear();\n timeoutId = setTimeout(() => callback(...args), wait);\n };\n return Object.assign(debounced, { clear });\n};\nvar throttle = (callback, wait) => {\n if (isServer) {\n return Object.assign(() => void 0, { clear: () => void 0 });\n }\n let isThrottled = false, timeoutId, lastArgs;\n const throttled = (...args) => {\n lastArgs = args;\n if (isThrottled)\n return;\n isThrottled = true;\n timeoutId = setTimeout(() => {\n callback(...lastArgs);\n isThrottled = false;\n }, wait);\n };\n const clear = () => {\n clearTimeout(timeoutId);\n isThrottled = false;\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(throttled, { clear });\n};\nvar scheduleIdle = isServer ? () => Object.assign(() => void 0, { clear: () => void 0 }) : (\n // requestIdleCallback is not supported in Safari\n window.requestIdleCallback ? (callback, maxWait) => {\n let isDeferred = false, id, lastArgs;\n const deferred = (...args) => {\n lastArgs = args;\n if (isDeferred)\n return;\n isDeferred = true;\n id = requestIdleCallback(\n () => {\n callback(...lastArgs);\n isDeferred = false;\n },\n { timeout: maxWait }\n );\n };\n const clear = () => {\n cancelIdleCallback(id);\n isDeferred = false;\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(deferred, { clear });\n } : (\n // fallback to setTimeout (throttle)\n (callback) => throttle(callback)\n )\n);\nfunction leading(schedule, callback, wait) {\n if (isServer) {\n let called = false;\n const scheduled2 = (...args) => {\n if (called)\n return;\n called = true;\n callback(...args);\n };\n return Object.assign(scheduled2, { clear: () => void 0 });\n }\n let isScheduled = false;\n const scheduled = schedule(() => isScheduled = false, wait);\n const func = (...args) => {\n if (!isScheduled)\n callback(...args);\n isScheduled = true;\n scheduled();\n };\n const clear = () => {\n isScheduled = false;\n scheduled.clear();\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(func, { clear });\n}\nfunction leadingAndTrailing(schedule, callback, wait) {\n if (isServer) {\n let called = false;\n const scheduled2 = (...args) => {\n if (called)\n return;\n called = true;\n callback(...args);\n };\n return Object.assign(scheduled2, { clear: () => void 0 });\n }\n let State;\n ((State2) => {\n State2[State2[\"Ready\"] = 0] = \"Ready\";\n State2[State2[\"Leading\"] = 1] = \"Leading\";\n State2[State2[\"Trailing\"] = 2] = \"Trailing\";\n })(State || (State = {}));\n let state = 0 /* Ready */;\n const scheduled = schedule((args) => {\n state === 2 /* Trailing */ && callback(...args);\n state = 0 /* Ready */;\n }, wait);\n const fn = (...args) => {\n if (state !== 2 /* Trailing */) {\n if (state === 0 /* Ready */)\n callback(...args);\n state += 1;\n }\n scheduled(args);\n };\n const clear = () => {\n state = 0 /* Ready */;\n scheduled.clear();\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(fn, { clear });\n}\nfunction createScheduled(schedule) {\n let listeners = 0;\n let isDirty = false;\n const [track, dirty] = createSignal(void 0, { equals: false });\n const call = schedule(() => {\n isDirty = true;\n dirty();\n });\n return () => {\n if (!isDirty)\n call(), track();\n if (isDirty) {\n isDirty = !!listeners;\n return true;\n }\n if (getListener()) {\n listeners++;\n onCleanup(() => listeners--);\n }\n return false;\n };\n}\n\nexport { createScheduled, debounce, leading, leadingAndTrailing, scheduleIdle, throttle };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { untrack } from 'solid-js';\nimport SpeechEngine, {} from './speech.js';\nimport { debounce } from '@solid-primitives/scheduled';\nimport { focusPath } from '../useFocusManager.js';\nlet resetFocusPathTimer;\nlet prevFocusPath = [];\nlet currentlySpeaking;\nlet voiceOutDisabled = false;\nconst fiveMinutes = 300000;\nfunction debounceWithFlush(callback, time) {\n const trigger = debounce(callback, time);\n let scopedValue;\n const debounced = (newValue) => {\n scopedValue = newValue;\n trigger(newValue);\n };\n debounced.flush = () => {\n trigger.clear();\n callback(scopedValue);\n };\n debounced.clear = trigger.clear;\n return debounced;\n}\nfunction getElmName(elm) {\n return elm.id || elm.name;\n}\nfunction onFocusChangeCore(focusPath = []) {\n if (!Announcer.onFocusChange || !Announcer.enabled) {\n return;\n }\n const loaded = focusPath.every((elm) => !elm.loading);\n const focusDiff = focusPath.filter((elm) => !prevFocusPath.includes(elm));\n resetFocusPathTimer();\n if (!loaded && Announcer.onFocusChange) {\n Announcer.onFocusChange([]);\n return;\n }\n prevFocusPath = focusPath.slice(0);\n const toAnnounceText = [];\n const toAnnounce = focusDiff.reduce((acc, elm) => {\n if (elm.announce) {\n acc.push([getElmName(elm), 'Announce', elm.announce]);\n toAnnounceText.push(elm.announce);\n }\n else if (elm.title) {\n acc.push([getElmName(elm), 'Title', elm.title]);\n toAnnounceText.push(elm.title);\n }\n else {\n acc.push([getElmName(elm), 'No Announce', '']);\n }\n return acc;\n }, []);\n focusDiff.reverse().reduce((acc, elm) => {\n if (elm.announceContext) {\n acc.push([getElmName(elm), 'Context', elm.announceContext]);\n toAnnounceText.push(elm.announceContext);\n }\n else {\n acc.push([getElmName(elm), 'No Context', '']);\n }\n return acc;\n }, toAnnounce);\n if (Announcer.debug) {\n console.table(toAnnounce);\n }\n if (toAnnounceText.length) {\n return Announcer.speak(toAnnounceText.reduce((acc, val) => acc.concat(val), []));\n }\n}\nfunction textToSpeech(toSpeak) {\n if (voiceOutDisabled) {\n return;\n }\n return (currentlySpeaking = SpeechEngine(toSpeak));\n}\nexport const Announcer = {\n debug: false,\n enabled: true,\n cancel: function () {\n currentlySpeaking && currentlySpeaking.cancel();\n },\n clearPrevFocus: function (depth = 0) {\n prevFocusPath = prevFocusPath.slice(0, depth);\n resetFocusPathTimer();\n },\n speak: function (text, { append = false, notification = false } = {}) {\n if (Announcer.onFocusChange && Announcer.enabled) {\n Announcer.onFocusChange.flush();\n if (append && currentlySpeaking && currentlySpeaking.active) {\n currentlySpeaking.append(text);\n }\n else {\n Announcer.cancel();\n textToSpeech(text);\n }\n if (notification) {\n voiceOutDisabled = true;\n currentlySpeaking?.series\n .finally(() => {\n voiceOutDisabled = false;\n Announcer.refresh();\n })\n .catch(console.error);\n }\n }\n return currentlySpeaking;\n },\n refresh: function (depth = 0) {\n Announcer.clearPrevFocus(depth);\n Announcer.onFocusChange &&\n Announcer.onFocusChange(untrack(() => focusPath()));\n },\n setupTimers: function ({ focusDebounce = 400, focusChangeTimeout = fiveMinutes, } = {}) {\n Announcer.onFocusChange = debounceWithFlush(onFocusChangeCore, focusDebounce);\n resetFocusPathTimer = debounceWithFlush(() => {\n // Reset focus path for full announce\n prevFocusPath = [];\n }, focusChangeTimeout);\n },\n};\n//# sourceMappingURL=announcer.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { createEffect, on } from 'solid-js';\nimport { Announcer } from './announcer.js';\nimport { focusPath } from '../useFocusManager.js';\nexport const useAnnouncer = () => {\n Announcer.setupTimers();\n createEffect(on(focusPath, Announcer.onFocusChange, { defer: true }));\n return Announcer;\n};\n//# sourceMappingURL=index.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { renderer } from '@lightningjs/solid';\nimport {} from '@lightningjs/renderer';\nexport function createSpriteMap(src, subTextures) {\n const spriteMapTexture = renderer.createTexture('ImageTexture', {\n src,\n });\n return subTextures.reduce((acc, t) => {\n const { x, y, width, height } = t;\n acc[t.name] = renderer.createTexture('SubTexture', {\n texture: spriteMapTexture,\n x,\n y,\n width,\n height,\n });\n return acc;\n }, {});\n}\n//# sourceMappingURL=createSpriteMap.js.map","import { createSignal } from \"solid-js\";\nexport const [globalBackground, setGlobalBackground] = createSignal(\"\");\n","export default {\n name: 'Base Lightning TV',\n alpha: {\n primary: 1,\n secondary: 0.7,\n tertiary: 0.1,\n inactive: 0.5,\n full: 1,\n none: 0,\n alpha1: 0.1,\n alpha2: 0.3,\n alpha3: 0.5,\n alpha4: 0.7,\n alpha5: 0.9\n },\n animation: {\n duration: {\n none: 0,\n xfast: 0.1,\n fast: 0.25,\n normal: 0.5,\n slow: 0.75,\n xslow: 0.9\n },\n delay: {\n none: 0,\n xfast: 0.01,\n fast: 0.025,\n normal: 0.05,\n slow: 0.075,\n xslow: 0.09\n },\n expressive: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n expressiveEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n expressiveExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standard: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standardEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standardExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utility: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utilityEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utilityExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n }\n },\n asset: {\n arrowLeft:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAi0lEQVRIDWNgGAWjIfD//38JID5Fk5AAGqwKxPeA+D/VLQCaaQLEr0CGgwBVLQCa5wbEn0EGwwDVLAAaGA3Ev2AGw2iqWAA0rBiI/8EMRaYptgBoWDeygehsci1gIlcjWfqArqZdEMFcBLSEdpGMZAntkimSJbTLaEiW0K6oQLKEdoUdzJJRemiHAAD4n+yzPWCs7QAAAABJRU5ErkJggg==',\n arrowRight:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAg0lEQVRIDWNgGAWjIYArBP7//38KiCVwyVMsDjQcBO4BsSrFhmEzAGw8hHgFpEywqaFIDMkCEPMzELtRZCC6ZjQLQNxfQByNro5sPhYLQEL/gLiYbEORNeKwACbcDVPLBGMMOhrmVDSapkFE00imaTKlaUajaVFB28Ju0CXrUQfhDAEAEgHss6NhpLQAAAAASUVORK5CYII=',\n backspaceOutline:\n 'data:image/png;base64,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',\n check:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAOCAYAAAAi2ky3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACtSURBVHgBvdPdDcIgEAfwoy8Nb45QN3AGF2s36Ahu4gpuIDoBfSgfpdoTlCbEWEMh6T8hFzjyg5AAkBHOcQe5UWqspRx435sDpMYj6IYQwwVSEiJ2MKVUBWuzLSLl2HL+uxmNCGFO8yaL7RHxve6qRZoAuS4hxac8735elWVx7jrtMKL1o0Gcat9jhExHSukN/kUIFZ7MpDRtzE1isDRkAUtDvrA8ZI597FUf8gWH9P0b4gko9wAAAABJRU5ErkJggg=='\n },\n color: {\n palette: {\n 'blue-20': '0xbecffeff',\n 'blue-40': '0x93a9fdff',\n 'blue-90': '0x000033ff',\n 'grey-05': '0xf8f7faff',\n 'grey-40': '0x929096ff',\n 'grey-70': '0x48474bff',\n 'grey-90': '0x181819ff'\n },\n white: '0xffffffff',\n black: '0x000000ff',\n grey: '0x929096ff',\n red: '0xe74c3cff',\n orange: '0xdc7633ff',\n yellow: '0xf7dc6fff',\n green: '0x2ecc71ff',\n blue: '0x93a9fdff',\n purple: '0x663399ff',\n material: '0x181819ff',\n materialBrand: '0x000033ff',\n overlay: '0x181819b3',\n textNeutral: '0xf8f7faff',\n textNeutralSecondary: '0xf8f7fab3',\n textNeutralTertiary: '0xf8f7fa1a',\n textNeutralDisabled: '0xf8f7fa80',\n textInverse: '0x181819ff',\n textInverseSecondary: '0x181819b3',\n textInverseTertiary: '0x1818191a',\n textInverseDisabled: '0x18181980',\n textBrand: '0x93a9fdff',\n textBrandSecondary: '0x93a9fdb3',\n textBrandTertiary: '0x93a9fd1a',\n textBrandDisabled: '0x93a9fd80',\n textPositive: '0x2ecc71ff',\n textNegative: '0xe74c3cff',\n textInfo: '0x93a9fdff',\n textCaution: '0xdc7633ff',\n fillTransparent: '0xffffff0',\n fillNeutral: '0xf8f7faff',\n fillNeutralSecondary: '0xf8f7fab3',\n fillNeutralTertiary: '0xf8f7fa1a',\n fillNeutralDisabled: '0xf8f7fa80',\n fillInverse: '0x181819ff',\n fillInverseSecondary: '0x181819b3',\n fillInverseTertiary: '0x1818191a',\n fillInverseDisabled: '0x18181980',\n fillBrand: '0x93a9fdff',\n fillBrandSecondary: '0x93a9fdb3',\n fillBrandTertiary: '0x93a9fd1a',\n fillBrandDisabled: '0x93a9fd80',\n fillPositive: '0x2ecc71ff',\n fillNegative: '0xe74c3cff',\n fillInfo: '0x93a9fdff',\n fillCaution: '0xdc7633ff',\n strokeNeutral: '0xf8f7faff',\n strokeNeutralSecondary: '0xf8f7fab3',\n strokeNeutralTertiary: '0xf8f7fa1a',\n strokeNeutralDisabled: '0xf8f7fa80',\n strokeInverse: '0x181819ff',\n strokeInverseSecondary: '0x181819b3',\n strokeInverseTertiary: '0x1818191a',\n strokeInverseDisabled: '0x18181980',\n strokeBrand: '0x93a9fdff',\n strokeBrandSecondary: '0x93a9fdb3',\n strokeBrandTertiary: '0x93a9fd1a',\n strokeBrandDisabled: '0x93a9fd80',\n strokePositive: '0x2ecc71ff',\n strokeNegative: '0xe74c3cff',\n strokeInfo: '0x93a9fdff',\n strokeCaution: '0xdc7633ff',\n interactiveNeutral: '0xffffff1a',\n interactiveNeutralFocus: '0xffffffff',\n interactiveNeutralFocusSoft: '0xffffff1a',\n interactiveInverse: '0x48474b1a',\n interactiveInverseFocus: '0x48474bff',\n interactiveInverseFocusSoft: '0x48474b1a',\n interactiveBrand: '0xbecffe1a',\n interactiveBrandFocus: '0xbecffeff',\n interactiveBrandFocusSoft: '0xbecffe1a',\n shadowNeutral: '0x000000b3',\n shadowNeutralFocus: '0x000000b3',\n shadowNeutralFocusSoft: '0x000000b3',\n shadowNeutralText: '0x000000ff',\n shadowInverse: '0x000000b3',\n shadowInverseFocus: '0x000000b3',\n shadowInverseFocusSoft: '0x000000b3',\n shadowInverseText: '0x000000ff',\n shadowBrand: '0x000000b3',\n shadowBrandFocus: '0x000000b3',\n shadowBrandFocusSoft: '0x000000b3',\n shadowBrandText: '0x000000ff'\n },\n font: [],\n layout: {\n columnCount: 10,\n focusScale: 1.2,\n gutterX: 20,\n gutterY: 20,\n marginX: 150,\n marginY: 150,\n safe: 50,\n screenW: 1920,\n screenH: 1080\n },\n radius: { none: 0, xs: 2, sm: 4, md: 8, lg: 16, xl: 24 },\n spacer: {\n none: 0,\n xxs: 2,\n xs: 4,\n sm: 8,\n md: 10,\n lg: 20,\n xl: 30,\n xxl: 40,\n xxxl: 50\n },\n stroke: { none: 0, sm: 2, md: 4, lg: 6, xl: 8 },\n typography: {\n display1: {\n fontFamily: 'Arial',\n fontSize: 75,\n lineHeight: 85,\n fontWeight: 500,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n display2: {\n fontFamily: 'Arial',\n fontSize: 50,\n lineHeight: 60,\n fontWeight: 500,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline1: {\n fontFamily: 'Arial',\n fontSize: 35,\n fontWeight: 500,\n lineHeight: 48,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline2: {\n fontFamily: 'Arial',\n fontSize: 30,\n fontWeight: 500,\n lineHeight: 40,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline3: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 500,\n lineHeight: 36,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body1: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 300,\n lineHeight: 40,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body2: {\n fontFamily: 'Arial',\n fontSize: 22,\n fontWeight: 300,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body3: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 300,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n button1: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n button2: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n callout1: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n caption1: {\n fontFamily: 'Arial',\n fontSize: 15,\n fontWeight: 500,\n lineHeight: 24,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n tag1: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 24,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n footnote1: {\n fontFamily: 'Arial',\n fontSize: 22,\n fontWeight: 300,\n lineHeight: 30,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n }\n },\n componentConfig: {\n Keyboard: {\n base: {\n keyProps: {\n delete: {\n title: null,\n icon: 'data:image/png;base64,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'\n }\n }\n }\n }\n }\n};\n","import { type AnimationSettings } from \"@lightningjs/renderer\";\nimport { globalBackground } from \"../state.js\";\nimport {\n type IntrinsicNodeStyleProps,\n View,\n Text,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { createEffect, on } from \"solid-js\";\nimport theme from \"theme\";\n\nexport default function Background() {\n let bg1, bg2, heroMask;\n let active = 0;\n const alpha = 1;\n const animationSettings = {\n duration: 750,\n easing: \"ease-in-out\",\n } satisfies Partial;\n const bgStyles = {\n alpha,\n color: 0xffffffff,\n } satisfies IntrinsicNodeStyleProps;\n\n function changeBackgrounds(img: string) {\n if (img.startsWith(\"#\")) {\n bg1.color = hexColor(img);\n bg1.src = \"\";\n bg1.alpha = 1;\n active = 1;\n bg2.alpha = 0;\n heroMask.alpha = 0;\n return;\n } else {\n bg1.color = 0xffffffff;\n heroMask.alpha = 1;\n }\n\n if (active === 0) {\n bg1.src = img;\n active = 1;\n return;\n }\n\n if (active === 1) {\n bg2.src = img;\n active = 2;\n bg2.alpha = 0;\n bg2.animate({ alpha }, animationSettings).start();\n bg1.animate({ alpha: 0 }, animationSettings).start();\n return;\n }\n\n if (active === 2) {\n bg1.src = img;\n active = 1;\n bg1.alpha = 0;\n bg1.animate({ alpha }, animationSettings).start();\n bg2.animate({ alpha: 0 }, animationSettings).start();\n }\n }\n\n createEffect(\n on(\n globalBackground,\n (img: string) => {\n changeBackgrounds(img);\n },\n { defer: true }\n )\n );\n\n return (\n <>\n \n \n \n \n \n \n );\n}\n","var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;\nimport { ElementNode, createComponent, View, mergeProps, Text as Text$7, createElement, use, spread, memo, insert, Show, For, hexColor } from \"@lightningjs/solid\";\nimport { createMemo, For as For$1, createSignal } from \"solid-js\";\nimport theme from \"theme\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nfunction objectFromEntries(entries) {\n if (!entries || !entries[Symbol.iterator]) {\n throw new Error(\"objectFromEntries requires a single iterable argument\");\n }\n const obj = {};\n for (const [key2, value] of entries) {\n obj[key2] = value;\n }\n return obj;\n}\nconst defaultModeKeys = [\"focus\", \"disabled\"];\nconst defaultToneKeys = [\"brand\", \"inverse\", \"neutral\"];\nfunction makeComponentStyles({ themeKeys, base, modes, tones, themeStyles: themeStyles2, modeKeys = defaultModeKeys, toneKeys = defaultToneKeys }, debug = false) {\n const makeToneStyles = (tones2, themeComponentStyles, modeStyles) => {\n const toneStyles = toneKeys.map((tone) => {\n const styles2 = {};\n const styleList = new Set(\n [].concat.apply([], [(tones2 == null ? void 0 : tones2[tone]) ?? {}, (themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) ?? {}].map(Object.keys))\n );\n styleList.forEach((styleKey) => {\n var _a2, _b2;\n if (!modeKeys.includes(styleKey)) {\n styles2[styleKey] = ((_a2 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _a2[styleKey]) ?? ((_b2 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _b2[styleKey]);\n }\n });\n modeKeys.forEach((mode) => {\n var _a2, _b2;\n styles2[mode] = {\n ...modeStyles[mode],\n // fallbacks from base.mode\n ...(_a2 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _a2[mode],\n // component configured tone.mode\n ...(_b2 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _b2[mode]\n // theme configure tone.mode\n };\n });\n return [tone, styles2];\n });\n return objectFromEntries(toneStyles);\n };\n const makeModeStyles = (modes2, themeComponentStyles) => {\n const modeStyles = modeKeys.map((mode) => {\n return [mode, { ...modes2 == null ? void 0 : modes2[mode], ...themeComponentStyles == null ? void 0 : themeComponentStyles[mode] }];\n });\n const modeObject = objectFromEntries(modeStyles);\n return modeObject;\n };\n const makeBaseStyles = (base2, themeComponentStyles) => {\n const baseStyles = {\n ...base2,\n ...themeComponentStyles.base\n };\n return baseStyles;\n };\n const mapThemeKeysToSolid = (stylesToMap) => objectFromEntries(\n Object.entries(themeKeys).filter(([_, themeKey]) => stylesToMap[themeKey]).map(([solidKey, themeKey]) => [solidKey, stylesToMap[themeKey]])\n );\n const convertComponentConfig = (themeStyles3) => {\n const convertedThemeStyles = objectFromEntries(\n // iterate through each variant\n Object.entries(themeStyles3).map(([variantName, styles2]) => {\n const convertedStyles = mapThemeKeysToSolid(styles2);\n Object.entries(styles2).filter(([styleName, _]) => modeKeys.includes(styleName)).forEach(([modeName, modeStyles]) => {\n convertedStyles[modeName] = mapThemeKeysToSolid(modeStyles);\n });\n return [variantName, convertedStyles];\n })\n );\n return convertedThemeStyles;\n };\n const generateSolidStylesFromLookupObject = (base2, modes2, tones2) => {\n const themeComponentStyles = convertComponentConfig(themeStyles2);\n debug && console.log(themeComponentStyles);\n const baseStyles = makeBaseStyles(base2, themeComponentStyles);\n debug && console.log(baseStyles);\n const modeStyles = makeModeStyles(modes2, themeComponentStyles);\n debug && console.log(modeStyles);\n const toneStyles = makeToneStyles(tones2, themeComponentStyles, modeStyles);\n debug && console.log(toneStyles);\n return {\n base: {\n ...baseStyles,\n ...modeStyles\n },\n tones: toneStyles\n };\n };\n return generateSolidStylesFromLookupObject(base, modes, tones);\n}\nfunction withScrolling(adjustment = 0) {\n return (componentRef, selectedElement, selected = 0, lastSelected) => {\n if (componentRef.children.length === 0) {\n return;\n }\n const dimension = componentRef.flexDirection === \"row\" ? \"width\" : \"height\";\n const axis = componentRef.flexDirection === \"row\" ? \"x\" : \"y\";\n const gap = componentRef.gap || 0;\n const scroll = componentRef.scroll || \"auto\";\n const [lastItem, containerSize] = updateLastIndex(componentRef);\n let rootPosition = componentRef[axis] ?? 0;\n const selectedPosition = (selectedElement == null ? void 0 : selectedElement[axis]) ?? 0;\n const selectedSize = (selectedElement == null ? void 0 : selectedElement[dimension]) ?? 0;\n const direct = lastSelected === void 0 ? \"none\" : selected > lastSelected ? \"positive\" : \"negative\";\n let next = rootPosition;\n if (scroll === \"auto\") {\n if (componentRef.scrollIndex != void 0 && componentRef.scrollIndex >= 0) {\n if (componentRef.selected >= componentRef.scrollIndex) {\n if (direct === \"positive\") {\n next = rootPosition - selectedSize - gap;\n } else {\n next = rootPosition + selectedSize + gap;\n }\n }\n } else if (Math.abs(rootPosition) + containerSize < lastItem.position + lastItem.size || selectedPosition < Math.abs(rootPosition)) {\n next = -selectedPosition + adjustment;\n }\n } else if (scroll === \"always\" || scroll === \"edge\" && direct === \"negative\" && Math.abs(rootPosition) > selectedPosition) {\n next = -selectedPosition + adjustment;\n } else if (scroll === \"edge\" && direct === \"positive\" && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) {\n next = rootPosition - selectedSize - gap;\n } else if (scroll === \"edge\" && direct === \"none\") {\n let currentChildIndex = 0;\n let currentChild, currentChildSize;\n while (currentChildIndex < componentRef.children.length && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) {\n currentChild = componentRef.children[currentChildIndex++];\n currentChildSize = currentChild[dimension] ?? 0;\n rootPosition -= currentChildSize + gap;\n }\n next = rootPosition;\n }\n if (axis === \"x\" && componentRef.x !== next) {\n componentRef.x = next;\n } else if (axis === \"y\" && componentRef.y !== next) {\n componentRef.y = next;\n }\n };\n}\nfunction updateLastIndex(items) {\n let lastItem, containerSize;\n if (items.flexDirection === \"row\") {\n lastItem = {\n position: items.children[items.children.length - 1].x,\n size: items.children[items.children.length - 1].width\n };\n containerSize = items.width;\n } else {\n lastItem = {\n position: items.children[items.children.length - 1].y,\n size: items.children[items.children.length - 1].height\n };\n containerSize = items.height;\n }\n return [lastItem, containerSize];\n}\nconst useItemLayout = (itemLayout) => {\n if (itemLayout) {\n const width = (theme.layout.screenW - theme.layout.marginX * 2) / itemLayout.upCount - theme.layout.gutterX;\n const height = width / itemLayout.ratioX * itemLayout.ratioY;\n return { width, height };\n }\n return {};\n};\nconst chainFunctions = (...args) => {\n const onlyFunctions = args.filter((func) => typeof func === \"function\");\n if (onlyFunctions.length === 0) {\n return void 0;\n }\n if (onlyFunctions.length === 1) {\n return onlyFunctions[0];\n }\n return function(...innerArgs) {\n let result;\n for (const func of onlyFunctions) {\n result = func.apply(this, innerArgs);\n if (result === true) {\n return result;\n }\n }\n return result;\n };\n};\nfunction assertTruthy(condition, message) {\n return;\n}\nfunction onGridFocus() {\n if (!this || this.selected === void 0 || this.children.length === 0)\n return false;\n let child = this.children[this.selected];\n while (child == null ? void 0 : child.skipFocus) {\n this.selected++;\n child = this.children[this.selected];\n }\n if (!(child instanceof ElementNode))\n return false;\n child.setFocus();\n return true;\n}\nfunction handleNavigation(direction) {\n return function() {\n var _a2, _b2, _c2;\n const numChildren = this.children.length;\n const wrap = this.wrap;\n const lastSelected = this.selected || 0;\n if (numChildren === 0) {\n return false;\n }\n if (direction === \"right\" || direction === \"down\") {\n do {\n this.selected = (this.selected || 0) % numChildren + 1;\n if (this.selected >= numChildren) {\n if (!wrap) {\n this.selected = void 0;\n break;\n }\n this.selected = 0;\n }\n } while ((_a2 = this.children[this.selected]) == null ? void 0 : _a2.skipFocus);\n } else if (direction === \"left\" || direction === \"up\") {\n do {\n this.selected = (this.selected || 0) % numChildren - 1;\n if (this.selected < 0) {\n if (!wrap) {\n this.selected = void 0;\n break;\n }\n this.selected = numChildren - 1;\n }\n } while ((_b2 = this.children[this.selected]) == null ? void 0 : _b2.skipFocus);\n }\n if (this.selected === void 0) {\n this.selected = lastSelected;\n if ((_c2 = this.children[this.selected]) == null ? void 0 : _c2.states.has(\"focus\")) {\n return false;\n }\n }\n const active = this.children[this.selected];\n this.onSelectedChanged && this.onSelectedChanged.call(this, this, active, this.selected, lastSelected);\n if (this.plinko && lastSelected !== void 0) {\n const lastSelectedChild = this.children[lastSelected];\n const num = lastSelectedChild.selected || 0;\n active.selected = num < active.children.length ? num : active.children.length - 1;\n }\n active.setFocus();\n return true;\n };\n}\nfunction scrollToIndex(componentRef, selectedIndex) {\n if (!componentRef || componentRef.selected === void 0 || componentRef.children.length === 0 || componentRef.children.length <= selectedIndex || componentRef.selected === selectedIndex) {\n return false;\n }\n componentRef.selected = selectedIndex;\n if (componentRef.flexDirection === \"row\") {\n componentRef.x = -componentRef.children[selectedIndex].x;\n } else if (componentRef.flexDirection === \"column\") {\n componentRef.y = -componentRef.children[selectedIndex].y;\n }\n}\nfunction getWidthByUpCount$1(theme2, upCount = 1) {\n const screenW = theme2.layout.screenW;\n const columnCount = theme2.layout.columnCount;\n const marginX = theme2.layout.marginX;\n const gutterX = theme2.layout.gutterX;\n if (upCount < 1 || upCount > columnCount) {\n console.error(`Column expects a number between 1 & ${columnCount}. Received ${upCount}`);\n return;\n }\n const columnWidth = screenW - marginX * 2;\n const columnGapTotal = (upCount - 1) * gutterX;\n const totalColumnsWidth = columnWidth - columnGapTotal;\n return totalColumnsWidth / upCount;\n}\nfunction getItemRatioDimensions(ratioX, ratioY, upCount) {\n let w, h;\n if (ratioX && ratioY && upCount) {\n w = Math.round(getWidthByUpCount$1(theme, upCount) ?? 0);\n h = Math.round(w / ratioX * ratioY);\n } else {\n w = 0;\n h = 0;\n }\n return { w, h };\n}\nfunction getDimensions(obj = {}, fallback = {}) {\n const { w, h, ratioX, ratioY, upCount } = obj;\n const fallbackW = fallback.w || 0;\n const fallbackH = fallback.h || 0;\n let dimensions = {};\n if (w && h) {\n dimensions = {\n w,\n h\n };\n } else if (h && ratioX && ratioY) {\n dimensions = {\n w: Math.round(h * ratioX / ratioY),\n h\n };\n } else if (ratioX && ratioY && upCount) {\n dimensions = getItemRatioDimensions(ratioX, ratioY, upCount);\n } else if (h && upCount) {\n dimensions = {\n w: Math.round(getWidthByUpCount(theme, upCount)),\n h\n };\n } else if (h) {\n dimensions = {\n w: fallbackW,\n h\n };\n } else if (w) {\n dimensions = {\n w,\n h: fallbackH\n };\n } else {\n dimensions = {\n w: fallbackW,\n h: fallbackH\n };\n }\n dimensions = {\n ...dimensions,\n ratioX,\n ratioY,\n upCount\n };\n return dimensions;\n}\nconst { Artwork: { defaultTone: defaultTone$f, ...themeStyles$e } = { styles: {} } } = (_a = theme) == null ? void 0 : _a.componentConfig;\nconst container$f = {\n themeKeys: {\n fillColor: \"fillColor\",\n scale: \"imageScale\",\n pivotX: \"imageScalePivotX\",\n pivotY: \"imageScalePivotY\"\n },\n base: {\n fallbackSrc: void 0,\n fillColor: theme.color.overlay,\n gradientColor: theme.color.material,\n pivotX: 0.5,\n pivotY: 0.5,\n scale: void 0\n },\n themeStyles: themeStyles$e\n};\nconst Container$e = makeComponentStyles(container$f);\nconst styles$e = {\n tone: defaultTone$f || \"neutral\",\n Container: Container$e\n};\nconst formatArtwork = (props) => {\n let src = props.src ? props.src : props.fallbackSrc;\n if (src && props.srcCallback && typeof props.srcCallback === \"function\") {\n src = props.srcCallback({\n closestAspectRatio: void 0,\n aspectRatio: void 0,\n src,\n width: props.width,\n height: props.height\n });\n }\n return src;\n};\nconst Artwork = (props) => {\n const formattedArtwork = createMemo(() => formatArtwork(props));\n return createComponent(View, mergeProps(props, {\n get color() {\n var _a2;\n return Boolean(formattedArtwork()) ? void 0 : props.color ?? ((_a2 = styles$e.Container.tones[props.tone ?? styles$e.tone]) == null ? void 0 : _a2.fillColor) ?? styles$e.Container.base.fillColor;\n },\n get style() {\n return [...[props.style].flat(), styles$e.Container.tones[props.tone || styles$e.tone], styles$e.Container.base];\n },\n get src() {\n return formattedArtwork();\n }\n }));\n};\nconst { Badge: { defaultTone: defaultTone$e, ...themeStyles$d } = { styles: {} } } = (_b = theme) == null ? void 0 : _b.componentConfig;\nconst container$e = {\n themeKeys: {\n color: \"backgroundColor\"\n },\n base: {\n color: theme.color.fillInverseSecondary,\n borderRadius: theme.radius.sm,\n // borderRadius must be applied _before_ border to prevent the node from breaking\n border: {\n color: theme.color.strokeInverse,\n width: theme.stroke.sm\n },\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n padding: [\n theme.spacer.md - theme.stroke.sm,\n theme.spacer.xs + theme.stroke.sm,\n theme.spacer.md + theme.stroke.sm,\n theme.spacer.md + theme.stroke.sm\n ]\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutralSecondary,\n borderRadius: theme.radius.sm,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: theme.stroke.sm\n }\n },\n brand: {\n color: theme.color.fillBrand,\n borderRadius: theme.radius.sm,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: theme.stroke.sm\n }\n }\n },\n themeStyles: themeStyles$d\n};\nconst text$7 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.tag1,\n color: theme.color.textNeutral\n },\n tones: {\n inverse: {\n color: theme.color.textInverse\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$d\n};\nconst icon$2 = {\n themeKeys: {\n color: \"iconColor\"\n },\n base: {\n color: theme.color.textNeutral\n },\n tones: {\n inverse: {\n color: theme.color.textInverse\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$d\n};\nconst Container$d = makeComponentStyles(container$e);\nconst Icon$3 = makeComponentStyles(icon$2);\nconst Text$6 = makeComponentStyles(text$7);\nconst styles$d = {\n tone: defaultTone$e || \"neutral\",\n Container: Container$d,\n Icon: Icon$3,\n Text: Text$6\n};\nconst BadgeContainer = (props) => {\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2, _b2;\n return props.padding ?? ((_b2 = (_a2 = styles$d.Container) == null ? void 0 : _a2.tones[props.tone ?? styles$d.tone]) == null ? void 0 : _b2.padding) ?? styles$d.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$d.Container.tones[props.tone || styles$d.tone],\n styles$d.Container.base\n ];\n },\n \"forwardStates\": true\n }), false);\n return _el$;\n })();\n};\nconst Badge = (props) => {\n return createComponent(BadgeContainer, {\n get padding() {\n return props.padding;\n },\n get tone() {\n return props.tone;\n },\n get style() {\n return props.style;\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n return [styles$d.Text.tones[props.tone ?? styles$d.tone], styles$d.Text.base];\n },\n get tone() {\n return props.tone || styles$d.tone;\n },\n get children() {\n return props.title;\n }\n });\n }\n });\n};\nconst { Button: { defaultTone: defaultTone$d, ...themeStyles$c } = { styles: {} } } = (_c = theme) == null ? void 0 : _c.componentConfig;\nconst { Surface: { surfaceDefaultTone, ...surfaceThemeStyles$1 } = { styles: {} } } = (_d = theme) == null ? void 0 : _d.componentConfig;\nconst container$d = {\n themeKeys: {\n textAlign: \"textAlign\",\n borderRadius: \"radius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\"\n },\n base: {\n height: theme.typography.button1.lineHeight + theme.spacer.xl * 2,\n display: \"flex\",\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n color: theme.color.interactiveNeutral,\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm,\n contentColor: theme.color.fillNeutral\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse\n },\n brand: {\n color: theme.color.interactiveBrand,\n focus: {\n color: theme.color.fillNeutral\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst content = {\n themeKeys: {\n color: \"contentColor\"\n },\n base: {\n color: theme.color.textNeutral\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.fillBrand\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst text$6 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.button1\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.fillBrand\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst Container$c = makeComponentStyles(container$d);\nconst Content = makeComponentStyles(content);\nconst Text$5 = makeComponentStyles(text$6);\nconst styles$c = {\n tone: defaultTone$d || surfaceDefaultTone || \"neutral\",\n Container: Container$c,\n Content,\n Text: Text$5\n};\nconst Button = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$c.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$c.tone],\n styles$c.Container.base\n ];\n },\n forwardStates: true,\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n ...[(_a2 = props.style) == null ? void 0 : _a2.Text].flat(),\n //\n styles$c.Text.tones[props.tone ?? styles$c.tone],\n styles$c.Text.base\n ];\n },\n get children() {\n return props.children;\n }\n });\n }\n }));\n};\nconst ButtonContainer = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$c.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$c.tone],\n styles$c.Container.base\n ];\n },\n forwardStates: true\n }));\n};\nconst { Checkbox: { defaultTone: defaultTone$c, ...themeStyles$b } = { styles: {} } } = (_e = theme) == null ? void 0 : _e.componentConfig;\nconst strokeWidth = theme.stroke.sm;\nconst size = theme.spacer.xxl;\nconst container$c = {\n themeKeys: {\n color: \"color\",\n borderRadius: \"borderRadius\",\n border: \"border\",\n justifyContent: \"justifyContent\"\n },\n base: {\n width: size,\n height: size,\n display: \"flex\",\n justifyContent: \"center\",\n color: theme.color.fillNeutral,\n alignItems: \"center\",\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverse,\n width: strokeWidth\n }\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n tones: {\n brand: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutralSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillBrand\n }\n },\n neutral: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillInverseSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutral\n }\n },\n inverse: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutralSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: strokeWidth\n },\n color: theme.color.fillInverse\n }\n }\n },\n modeKeys: [\"focus\", \"disabled\", \"checked\"],\n themeStyles: themeStyles$b\n};\nconst icon$1 = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n width: theme.spacer.lg,\n height: theme.spacer.lg,\n src: theme.asset.check\n },\n tones: {\n neutral: {\n color: theme.color.fillInverse\n },\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillInverse\n }\n },\n themeStyles: themeStyles$b\n};\nconst Container$b = makeComponentStyles(container$c);\nconst Icon$2 = makeComponentStyles(icon$1);\nconst styles$b = {\n tone: defaultTone$c || \"neutral\",\n Container: Container$b,\n Icon: Icon$2\n};\nconst { Icon: { defaultTone: defaultTone$b, ...themeStyles$a } = { styles: {} } } = (_f = theme) == null ? void 0 : _f.componentConfig;\nconst container$b = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n width: 100,\n height: 100,\n color: theme.color.fillInverse\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand\n }\n },\n themeStyles: themeStyles$a\n};\nconst Container$a = makeComponentStyles(container$b);\nconst styles$a = {\n tone: defaultTone$b || \"neutral\",\n Container: Container$a\n};\nconst Icon$1 = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$a.Container.tones) == null ? void 0 : _a2[props.tone || styles$a.tone],\n styles$a.Container.base\n ];\n },\n forwardStates: true\n }));\n};\nconst check = \"/assets/images/check-icon.png\";\nconst Checkbox = (props) => {\n return createComponent(View, mergeProps({\n forwardStates: true\n }, props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$b.Container.tones[props.tone ?? styles$b.tone],\n styles$b.Container.base\n ];\n },\n get states() {\n return {\n checked: props.checked\n };\n },\n get children() {\n return memo(() => !!props.checked)() ? props.children || createComponent(Icon$1, {\n src: check,\n get style() {\n var _a2;\n return [\n ...[(_a2 = props.style) == null ? void 0 : _a2.Icon].flat(),\n //\n styles$b.Icon.tones[props.tone || styles$b.tone],\n styles$b.Icon.base\n ];\n }\n }) : \"\";\n }\n }));\n};\nconst { Column: { defaultTone: defaultTone$a, ...themeStyles$9 } = { styles: {} } } = (_g = theme) == null ? void 0 : _g.componentConfig;\nconst container$a = {\n themeKeys: {\n gap: \"itemSpacing\",\n scrollIndex: \"scrollIndex\",\n itemTransition: \"itemTransition\"\n },\n base: {\n display: \"flex\",\n flexBoundary: \"fixed\",\n flexDirection: \"column\",\n gap: theme.layout.gutterY,\n itemTransition: {\n ...theme.animation.standardEntrance,\n duration: theme.animation.duration.fast\n }\n },\n themeStyles: themeStyles$9\n};\nconst Container$9 = makeComponentStyles(container$a);\nconst styles$9 = {\n tone: defaultTone$a || \"neutral\",\n Container: Container$9\n};\nconst Column = (props) => {\n const onUp = handleNavigation(\"up\");\n const onDown = handleNavigation(\"down\");\n return createComponent(View, mergeProps(props, {\n get onUp() {\n return chainFunctions(props.onUp, onUp);\n },\n get onDown() {\n return chainFunctions(props.onDown, onDown);\n },\n get selected() {\n return props.selected || 0;\n },\n forwardFocus: onGridFocus,\n get onCreate() {\n return chainFunctions((elm) => withScrolling(props.y).call(elm, elm, elm.children[props.selected ?? 0], props.selected ?? 0, void 0), props.onCreate);\n },\n get onSelectedChanged() {\n return chainFunctions(props.onSelectedChanged, props.scroll !== \"none\" ? withScrolling(props.y) : void 0);\n },\n get style() {\n return [...[props.style].flat(), styles$9.Container.tones[props.tone ?? styles$9.tone], styles$9.Container.base];\n }\n }));\n};\nconst { Label: { defaultTone: defaultTone$9, ...themeStyles$8 } = { styles: {} } } = (_h = theme) == null ? void 0 : _h.componentConfig;\nconst container$9 = {\n themeKeys: {\n color: \"backgroundColor\",\n borderRadius: \"radius\"\n },\n base: {\n display: \"flex\",\n justifyContent: \"center\",\n color: theme.color.textNeutral,\n padding: [theme.spacer.md, theme.spacer.lg],\n // TODO themed padding values\n borderRadius: [theme.radius.md, theme.radius.md, theme.radius.md, theme.radius.none],\n height: theme.typography.caption1.lineHeight + theme.spacer.md,\n neutral: {\n backgroundColor: theme.color.fillNeutral\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.orange\n }\n }\n },\n themeStyles: themeStyles$8\n};\nconst text$5 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.caption1,\n color: theme.color.textInverse\n },\n tones: {\n inverse: {\n color: theme.color.textNeutral\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$8\n};\nconst Container$8 = makeComponentStyles(container$9);\nconst Text$4 = makeComponentStyles(text$5);\nconst styles$8 = {\n tone: defaultTone$9 || \"neutral\",\n Container: Container$8,\n Text: Text$4\n};\nconst Label = (props) => {\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2;\n return props.padding ?? ((_a2 = styles$8.Container.tones[props.tone ?? styles$8.tone]) == null ? void 0 : _a2.padding) ?? styles$8.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$8.Container.tones[props.tone || styles$8.tone],\n styles$8.Container.base\n ];\n },\n \"forwardStates\": true\n }), true);\n insert(_el$, createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$8.Text.tones[props.tone || styles$8.tone],\n styles$8.Text.base\n ];\n },\n get children() {\n return props.title;\n }\n }));\n return _el$;\n })();\n};\nconst { Rating: { styles: themeStyles$7, defaultTone: defaultTone$8 } = { styles: {}, defaultTone: \"neutral\" } } = (_i = theme) == null ? void 0 : _i.componentConfig;\nconst container$8 = {\n themeKeys: {\n justifyContent: \"justifyContent\",\n itemSpacing: \"itemSpacing\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n itemSpacing: theme.spacer.sm\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst text$4 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n color: theme.color.textNeutral,\n ...theme.typography.body2\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst icon = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n height: theme.typography.body2.lineHeight,\n width: theme.typography.body2.lineHeight,\n color: theme.color.fillNeutral,\n marginRight: theme.spacer.sm\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst Container$7 = makeComponentStyles(container$8);\nconst Icon = makeComponentStyles(icon);\nconst Text$3 = makeComponentStyles(text$4);\nconst styles$7 = {\n tone: defaultTone$8,\n Container: Container$7,\n Text: Text$3,\n Icon\n};\nconst Rating = (props) => {\n const formatTitle = (title) => {\n if (typeof title !== \"string\" && typeof title !== \"number\" || !String(title).trim().length) {\n return;\n }\n let formatted = title;\n if (!Number.isNaN(title) && Number(title) >= 0 && Number(title) <= 100) {\n formatted += \"%\";\n }\n return formatted;\n };\n const formattedTitle = createMemo(() => formatTitle(props.title));\n return createComponent(View, mergeProps(props, {\n forwardStates: true,\n get style() {\n return [...[props.style].flat(), styles$7.Container.tones[props.tone || styles$7.tone], styles$7.Container.base];\n },\n get children() {\n return [createComponent(Show, {\n get when() {\n return props.src;\n },\n get children() {\n return createComponent(Icon$1, {\n forwardStates: true,\n get src() {\n return props.src;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Icon,\n //\n styles$7.Icon.tones[props.tone || styles$7.tone],\n styles$7.Icon.base\n ];\n }\n });\n }\n }), createComponent(Show, {\n get when() {\n return formattedTitle();\n },\n get children() {\n return createComponent(Text$7, {\n get marginRight() {\n return props.marginRight;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$7.Text.tones[props.tone || styles$7.tone],\n styles$7.Text.base\n ];\n },\n get children() {\n return formattedTitle();\n }\n });\n }\n })];\n }\n }));\n};\nconst { Details: { defaultTone: defaultTone$7, ...themeStyles$6 } = { styles: {} } } = (_j = theme) == null ? void 0 : _j.componentConfig;\nconst container$7 = {\n themeKeys: {\n alignItems: \"alignItems\",\n contentSpacing: \"contentSpacing\",\n badgeContentSpacing: \"badgeContentSpacing\",\n ratingContentSpacing: \"ratingContentSpacing\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n contentSpacing: theme.spacer.lg,\n badgeContentSpacing: theme.spacer.sm,\n ratingContentSpacing: theme.spacer.lg\n },\n themeStyles: themeStyles$6\n};\nconst text$3 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.body2,\n marginRight: theme.spacer.lg,\n color: theme.color.textNeutral\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverse,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutral,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$6\n};\nconst Container$6 = makeComponentStyles(container$7);\nconst Text$2 = makeComponentStyles(text$3);\nconst styles$6 = {\n tone: defaultTone$7 || \"neutral\",\n Container: Container$6,\n Text: Text$2\n};\nconst Details = (props) => {\n return createComponent(View, mergeProps({\n get style() {\n return [...[props.style].flat(), styles$6.Container.tones[props.tone || styles$6.tone], styles$6.Container.base];\n },\n forwardStates: true,\n onBeforeLayout: (node, dimensions) => {\n var _a2;\n if ((dimensions == null ? void 0 : dimensions.height) && node.parent) {\n node.parent.height = dimensions.height;\n (_a2 = node.parent) == null ? void 0 : _a2.updateLayout();\n }\n }\n }, props, {\n get children() {\n return [createComponent(Show, {\n get when() {\n return props.title;\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$6.Text.tones[props.tone || styles$6.tone],\n styles$6.Text.base\n ];\n },\n get children() {\n return props.title;\n }\n });\n }\n }), createComponent(For, {\n get each() {\n return props.badges;\n },\n children: (badge, idx) => createComponent(Badge, mergeProps(badge, {\n get marginRight() {\n var _a2, _b2, _c2, _d2, _e2, _f2, _g2;\n return ((_a2 = props.badges) == null ? void 0 : _a2.length) && idx() === props.badges.length - 1 ? ((_c2 = (_b2 = props.style) == null ? void 0 : _b2.Container) == null ? void 0 : _c2.contentSpacing) ?? ((_d2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _d2.contentSpacing) ?? styles$6.Container.base.contentSpacing : ((_f2 = (_e2 = props.style) == null ? void 0 : _e2.Container) == null ? void 0 : _f2.badgeContentSpacing) ?? ((_g2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _g2.badgeContentSpacing) ?? styles$6.Container.base.badgeContentSpacing;\n }\n }))\n }), createComponent(For, {\n get each() {\n return props.ratings;\n },\n children: (rating, idx) => createComponent(Rating, mergeProps(rating, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$6.Text.tones[props.tone || styles$6.tone],\n styles$6.Text.base\n ];\n },\n forwardStates: true,\n get marginRight() {\n var _a2, _b2, _c2, _d2;\n return ((_a2 = props.ratings) == null ? void 0 : _a2.length) && idx() === props.ratings.length - 1 ? 0 : ((_c2 = (_b2 = props.style) == null ? void 0 : _b2.Container) == null ? void 0 : _c2.ratingContentSpacing) ?? ((_d2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _d2.ratingContentSpacing) ?? styles$6.Container.base.ratingContentSpacing;\n }\n }))\n })];\n }\n }));\n};\nconst { Metadata: { defaultTone: defaultTone$6, ...themeStyles$5 } = { styles: {} } } = (_k = theme) == null ? void 0 : _k.componentConfig;\nconst container$6 = {\n themeKeys: {\n justifyContent: \"justifyContent\",\n alpha: \"alpha\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n alpha: theme.alpha.primary\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n themeStyles: themeStyles$5\n};\nconst titleText = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n maxLines: 1,\n contain: \"width\",\n ...theme.typography.headline3,\n color: theme.color.textNeutral\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverse,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutral,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$5\n};\nconst descriptionText = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n contain: \"width\",\n maxLines: 2,\n ...theme.typography.body2,\n color: theme.color.textNeutralSecondary\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverseSecondary,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutralSecondary,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$5\n};\nconst Container$5 = makeComponentStyles(container$6);\nconst DescriptionText = makeComponentStyles(descriptionText);\nconst TitleText = makeComponentStyles(titleText);\nconst styles$5 = {\n tone: defaultTone$6 || \"neutral\",\n Container: Container$5,\n TitleText,\n DescriptionText\n};\nconst Metadata = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n return [...[props.style].flat(), styles$5.Container.tones[props.tone || styles$5.tone], styles$5.Container.base];\n },\n forwardStates: true,\n get children() {\n return [createComponent(Text$7, {\n get width() {\n return props.width;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.TitleText,\n //\n styles$5.TitleText.tones[props.tone || styles$5.tone],\n styles$5.TitleText.base\n ];\n },\n get children() {\n return props.title;\n }\n }), createComponent(Show, {\n get when() {\n return props.description;\n },\n get children() {\n return createComponent(Text$7, {\n get width() {\n return props.width;\n },\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.DescriptionText, styles$5.DescriptionText.tones[props.tone || styles$5.tone], styles$5.DescriptionText.base];\n },\n get children() {\n return props.description;\n }\n });\n }\n }), createComponent(Details, mergeProps({\n get width() {\n return props.width;\n }\n }, () => props.details, {\n get tone() {\n return props.tone ?? styles$5.tone;\n }\n }))];\n }\n }));\n};\nconst { ProgressBar: { defaultTone: defaultTone$5, ...themeStyles$4 } = { styles: {} } } = (_l = theme) == null ? void 0 : _l.componentConfig;\nconst container$5 = {\n themeKeys: {\n color: \"barColor\",\n borderRadius: \"borderRadius\"\n },\n base: {\n height: theme.spacer.md,\n color: theme.color.fillNeutralTertiary,\n borderRadius: theme.radius.xs\n },\n tones: {\n inverse: {\n color: theme.color.fillInverseTertiary\n }\n },\n themeStyles: themeStyles$4\n};\nconst progress = {\n themeKeys: {\n color: \"progressColor\",\n borderRadius: \"borderRadius\"\n },\n base: {\n borderRadius: theme.radius.xs,\n color: theme.color.fillNeutral\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand\n }\n },\n themeStyles: themeStyles$4\n};\nconst Container$4 = makeComponentStyles(container$5);\nconst ProgressBar$1 = makeComponentStyles(progress);\nconst styles$4 = {\n tone: defaultTone$5 || \"neutral\",\n Container: Container$4,\n ProgressBar: ProgressBar$1\n};\nconst ProgressBar = (props) => {\n return createComponent(View, mergeProps(props, {\n forwardStates: true,\n get style() {\n return [...[props.style].flat(), styles$4.Container.tones[props.tone || styles$4.tone], styles$4.Container.base];\n },\n get children() {\n return createComponent(View, {\n forwardStates: true,\n get animationSettings() {\n return props.animationSettings;\n },\n get width() {\n return props.width * props.progress;\n },\n get color() {\n return props.progressColor;\n },\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.ProgressBar, styles$4.ProgressBar.tones[props.tone || styles$4.tone], styles$4.ProgressBar.base];\n }\n });\n }\n }));\n};\nconst { Row: { defaultTone: defaultTone$4, ...themeStyles$3 } = { styles: {} } } = (_m = theme) == null ? void 0 : _m.componentConfig;\nconst container$4 = {\n themeKeys: {\n gap: \"itemSpacing\",\n scrollIndex: \"scrollIndex\",\n itemTransition: \"itemTransition\"\n },\n base: {\n display: \"flex\",\n flexBoundary: \"fixed\",\n flexDirection: \"row\",\n gap: theme.layout.gutterX,\n itemTransition: {\n ...theme.animation.standardEntrance,\n duration: theme.animation.duration.fast\n }\n },\n themeStyles: themeStyles$3\n};\nconst Container$3 = makeComponentStyles(container$4);\nconst styles$3 = {\n tone: defaultTone$4,\n Container: Container$3\n};\nconst Row = (props) => {\n const onLeft = handleNavigation(\"left\");\n const onRight = handleNavigation(\"right\");\n return createComponent(View, mergeProps(props, {\n get selected() {\n return props.selected || 0;\n },\n get onLeft() {\n return chainFunctions(props.onLeft, onLeft);\n },\n get onRight() {\n return chainFunctions(props.onRight, onRight);\n },\n forwardFocus: onGridFocus,\n get onCreate() {\n return chainFunctions((elm) => withScrolling(props.x).call(elm, elm, elm.children[props.selected ?? 0], props.selected ?? 0, void 0), props.onCreate);\n },\n get onSelectedChanged() {\n return chainFunctions(props.onSelectedChanged, props.scroll !== \"none\" ? withScrolling(props.x) : void 0);\n },\n get tone() {\n return props.tone ?? styles$3.tone;\n },\n get style() {\n return [...[props.style].flat(), styles$3.Container.tones[props.tone || styles$3.tone], styles$3.Container.base];\n },\n get states() {\n return props.tone ?? styles$3.tone;\n }\n }));\n};\nconst { Keyboard: { defaultTone: defaultTone$3, ...themeStyles$2 } = { styles: {} } } = (_n = theme) == null ? void 0 : _n.componentConfig;\nconst container$3 = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n screenW: \"screenW\",\n marginX: \"marginX\"\n },\n base: {\n keySpacing: theme.spacer.md,\n screenW: theme.layout.screenW,\n marginX: theme.layout.marginX,\n height: 100\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst key = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n textAlign: \"textAlign\",\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\",\n baseWidth: \"baseWidth\",\n sizes: \"sizes\",\n contentColor: \"contentColor\"\n // what is this used for\n },\n base: {\n keySpacing: theme.spacer.md,\n height: theme.spacer.md * 9,\n paddingX: theme.spacer.md,\n sizes: {\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n xxl: 5\n },\n contentColor: theme.color.fillNeutral,\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n baseWidth: theme.spacer.md * 7,\n color: theme.color.interactiveNeutral,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled,\n contentColor: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse,\n focus: {\n color: theme.color.interactiveInverseFocus,\n contentColor: theme.color.fillNeutral\n }\n },\n brand: {\n focus: {\n contentColor: theme.color.fillNeutral\n }\n }\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst text$2 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.headline2\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n focus: {\n color: theme.color.textNeutral\n }\n }\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst Container$2 = makeComponentStyles(container$3);\nconst Key$1 = makeComponentStyles(key);\nconst Text$1 = makeComponentStyles(text$2);\nconst styles$2 = {\n tone: defaultTone$3,\n Container: Container$2,\n Key: Key$1,\n // TODO why was this wrapped in {}?\n Text: Text$1\n};\nconst { Key: { defaultTone: defaultTone$2, ...themeStyles$1 } = { styles: {} } } = (_o = theme) == null ? void 0 : _o.componentConfig;\nconst container$2 = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n textAlign: \"textAlign\",\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\",\n baseWidth: \"baseWidth\",\n sizes: \"sizes\",\n contentColor: \"contentColor\"\n },\n base: {\n keySpacing: theme.spacer.md,\n height: theme.spacer.md * 9,\n paddingX: theme.spacer.md,\n contentColor: theme.color.fillNeutral,\n sizes: {\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n xxl: 5\n },\n padding: [theme.spacer.md],\n baseWidth: theme.spacer.md * 7,\n color: theme.color.interactiveNeutral,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled,\n contentColor: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse,\n focus: {\n color: theme.color.interactiveInverseFocus,\n contentColor: theme.color.fillNeutral\n }\n },\n brand: {\n focus: {\n contentColor: theme.color.fillNeutral\n }\n }\n },\n themeStyles: themeStyles$1\n};\nconst text$1 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.headline2\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n focus: {\n color: theme.color.textNeutral\n }\n }\n },\n themeStyles: themeStyles$1\n};\nconst Container$1 = makeComponentStyles(container$2);\nconst Text = makeComponentStyles(text$1);\nconst styles$1 = {\n tone: defaultTone$2 || \"neutral\",\n Container: Container$1,\n Text\n};\nconst Key = (props) => {\n const style1 = (props == null ? void 0 : props.style) ?? styles$1;\n return createComponent(ButtonContainer, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$1.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$1.tone],\n styles$1.Container.base\n ];\n },\n forwardStates: true,\n get width() {\n var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2;\n return (((_d2 = (_c2 = (_b2 = (_a2 = style1.Container) == null ? void 0 : _a2.tones) == null ? void 0 : _b2[props.tone ?? styles$1.tone]) == null ? void 0 : _c2.sizes) == null ? void 0 : _d2[props.size || \"sm\"]) ?? style1.Container.base.sizes[props.size || \"sm\"]) * (((_g2 = (_f2 = (_e2 = style1.Container) == null ? void 0 : _e2.tones) == null ? void 0 : _f2[props.tone ?? styles$1.tone]) == null ? void 0 : _g2.baseWidth) ?? style1.Container.base.baseWidth) + (((_i2 = (_h2 = style1.Container.tones) == null ? void 0 : _h2[props.tone ?? styles$1.tone]) == null ? void 0 : _i2.keySpacing) ?? style1.Container.base.keySpacing) * (((_l2 = (_k2 = (_j2 = style1.Container.tones) == null ? void 0 : _j2[props.tone ?? styles$1.tone]) == null ? void 0 : _k2.sizes) == null ? void 0 : _l2[props.size || \"sm\"]) ?? style1.Container.base.sizes[props.size || \"sm\"] - 1);\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$1.Text.tones[props.tone ?? styles$1.tone],\n styles$1.Text.base\n ];\n },\n get children() {\n return props.title ? props.title : \"\";\n }\n });\n }\n }));\n};\nconst KeyboardSimple = (props) => {\n return createComponent(Column, {\n get autofocus() {\n return props.autofocus;\n },\n scroll: \"none\",\n plinko: true,\n get itemSpacing() {\n var _a2;\n return props.keySpacing ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.keySpacing) ?? styles$2.Container.base.keySpacing;\n },\n get justifyContent() {\n return props.centerKeyboard ? \"center\" : \"flexStart\";\n },\n get width() {\n return props.width;\n },\n get children() {\n return createComponent(For$1, {\n get each() {\n return props.formats;\n },\n children: (row) => createComponent(Row, {\n get width() {\n return props.width;\n },\n get justifyContent() {\n return props.centerKeys ? \"center\" : \"flexStart\";\n },\n get itemSpacing() {\n var _a2;\n return props.keySpacing ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.keySpacing) ?? styles$2.Container.base.keySpacing;\n },\n get height() {\n var _a2;\n return (props == null ? void 0 : props.height) ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.height) ?? styles$2.Container.base.height;\n },\n get wrap() {\n return props.rowWrap;\n },\n get children() {\n return createComponent(For$1, {\n each: row,\n children: (key2) => createComponent(Key, mergeProps({\n get style() {\n var _a2;\n return (_a2 = props.style) == null ? void 0 : _a2.Key;\n }\n }, typeof key2 === \"string\" ? {} : key2, {\n onEnter: () => props.keySignal[1](typeof key2 === \"string\" ? key2 : key2.title ?? \"\"),\n get title() {\n return key2.title || key2.icon ? key2.title : key2;\n }\n }))\n });\n }\n })\n });\n }\n });\n};\nconst Keyboard = (props) => {\n return createComponent(KeyboardSimple, mergeProps(props, {\n get style() {\n return [...[props.style].flat(), styles$2.Container.tones[props.tone ?? styles$2.tone], styles$2.Container.base];\n }\n }));\n};\nconst { Input: { defaultTone: defaultTone$1, ...themeStyles } = { styles: {} } } = (_p = theme) == null ? void 0 : _p.componentConfig;\nconst container$1 = {\n themeKeys: {\n justifyContent: \"justifyContent\"\n },\n base: {\n display: \"flex\",\n justifyContent: \"flexStart\",\n flexDirection: \"column\",\n width: 100,\n height: 100,\n actualTitle: \"\"\n },\n themeStyles\n};\nconst input = {\n themeKeys: {\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\"\n },\n base: {\n width: getWidthByUpCount$1(theme, 4),\n height: 100,\n display: \"flex\",\n flexDirection: \"column\",\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n color: theme.color.interactiveNeutral,\n contentColor: theme.color.fillInverse,\n borderRadius: theme.radius.sm,\n marginX: theme.spacer.xxxl\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus\n },\n disabled: {\n color: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse\n },\n brand: {\n color: theme.color.interactiveBrand,\n focus: {\n color: theme.color.fillNeutral\n }\n }\n },\n themeStyles\n};\nconst text = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.button1\n },\n themeStyles\n};\nmakeComponentStyles(container$1);\nmakeComponentStyles(input);\nmakeComponentStyles(text);\nconst { Tile: { defaultTone, ...tileThemeStyles } = { styles: {} } } = (_q = theme) == null ? void 0 : _q.componentConfig;\nconst { Surface: { defaultSurfaceTone, ...surfaceThemeStyles } = { styles: {} } } = (_r = theme) == null ? void 0 : _r.componentConfig;\nconst container = {\n themeKeys: {\n alpha: \"alpha\",\n paddingYProgress: \"paddingYProgress\"\n },\n base: {\n width: 400,\n height: 240,\n padding: [40, 10],\n // TODO support separate paddingX and paddingY values from theme, possibly formatter\n paddingYProgress: theme.spacer.xl,\n paddingYBetweenContent: theme.spacer.md,\n borderRadius: theme.radius.md,\n alpha: theme.alpha.primary\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n themeStyles: {\n ...surfaceThemeStyles,\n ...tileThemeStyles\n }\n};\nconst insetBottom = {\n themeKeys: {},\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n mountY: 1\n },\n themeStyles: tileThemeStyles\n};\nconst standardBottom = {\n themeKeys: {},\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\"\n },\n themeStyles: tileThemeStyles\n};\nconst logoContainer = {\n themeKeys: {},\n base: {\n width: theme.spacer.lg * 5,\n height: theme.spacer.xxl + theme.spacer.md\n },\n themeStyles: tileThemeStyles\n};\nconst Container = makeComponentStyles(container);\nconst InsetBottom = makeComponentStyles(insetBottom);\nconst StandardBottom = makeComponentStyles(standardBottom);\nconst LogoContainer = makeComponentStyles(logoContainer);\nconst styles = {\n tone: defaultTone || defaultSurfaceTone || \"neutral\",\n Container,\n InsetBottom,\n StandardBottom,\n LogoContainer\n};\nconst Tile = (props) => {\n const [isFocused, setIsFocused] = createSignal(false);\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2;\n return props.padding ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.padding) ?? styles.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n \"onFocus\": () => setIsFocused(true),\n \"onBlur\": () => setIsFocused(false),\n get style() {\n return [...[props.style].flat(), styles.Container.tones[props.tone ?? styles.tone], styles.Container.base];\n }\n }), true);\n insert(_el$, createComponent(Artwork, mergeProps(() => props.artwork, {\n get states() {\n return props.states;\n },\n get style() {\n return props.style;\n },\n get tone() {\n return props.tone ?? styles.tone;\n }\n })), null);\n insert(_el$, createComponent(Show, {\n get when() {\n return props.persistentMetadata || isFocused();\n },\n get children() {\n return [createComponent(View, {\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[1]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[1]) ?? styles.Container.base.padding[1];\n },\n get children() {\n return props.topLeft;\n }\n }), createComponent(View, {\n get x() {\n var _a2, _b2, _c2;\n return ((props == null ? void 0 : props.width) ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[0]) ?? ((_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0]);\n },\n get y() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[1]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[1]) ?? styles.Container.base.padding[1];\n },\n mountX: 1,\n get children() {\n return props.topRight;\n }\n }), createComponent(View, {\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.InsetBottom, styles.InsetBottom.tones[props.tone ?? styles.tone], styles.InsetBottom.base];\n },\n get width() {\n var _a2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - styles.Container.base.padding[0] * 2;\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2, _d2, _e2, _f2;\n return (props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) - (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]) - (((_e2 = props.progressBar) == null ? void 0 : _e2.progress) > 0 ? props.paddingYProgress ?? ((_f2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _f2.paddingYProgress) ?? styles.Container.base.paddingYProgress : 0);\n },\n get children() {\n return props.inset;\n }\n }), createComponent(View, {\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.StandardBottom, styles.StandardBottom.tones[props.tone ?? styles.tone], styles.StandardBottom.base];\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2, _d2;\n return Number(props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) + (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]);\n },\n get width() {\n var _a2, _b2, _c2, _d2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]) * 2;\n },\n get children() {\n return props.bottom;\n }\n })];\n }\n }), null);\n insert(_el$, createComponent(Show, {\n get when() {\n var _a2;\n return ((_a2 = props.progressBar) == null ? void 0 : _a2.progress) ? props.progressBar.progress > 0 : 0;\n },\n get children() {\n return createComponent(ProgressBar, mergeProps(() => props.progressBar, {\n get width() {\n var _a2, _b2, _c2, _d2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[0]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[0]) ?? styles.Container.base.padding[0]) * 2;\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2;\n return (props.height ?? props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) - (props.paddingYProgress ?? ((_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.paddingYProgress) ?? styles.Container.base.paddingYProgress) - (((_c2 = props == null ? void 0 : props.progressBar) == null ? void 0 : _c2.height) || 0);\n }\n }));\n }\n }), null);\n return _el$;\n })();\n};\nconst fpsStyle = {\n color: 255,\n height: 150,\n width: 330,\n x: 1910,\n y: 10,\n mountX: 1,\n alpha: 0.8,\n zIndex: 100\n};\nconst fpsLabel = {\n x: 10,\n fontSize: 22,\n textColor: hexColor(\"#f6f6f6\")\n};\nconst fpsValue = {\n fontSize: 22,\n textColor: hexColor(\"#f6f6f6\")\n};\nconst [fps, setFps] = createSignal(0);\nconst [avgFps, setAvgFps] = createSignal(0);\nconst [minFps, setMinFps] = createSignal(99);\nconst [maxFps, setMaxFps] = createSignal(0);\nconst [isLoadedCount, setIsLoadedCount] = createSignal(0);\nconst [isLoadingCount, setIsLoadingCount] = createSignal(0);\nconst [isFailedCount, setIsFailedCount] = createSignal(0);\nlet count = 0;\nlet totalFps = 0;\nconst resetCounter = () => {\n totalFps = 0;\n count = 0;\n setMinFps(99);\n};\nconst calcFps = (fps2) => {\n if (!fps2)\n return;\n setFps(fps2);\n setMinFps((prev) => Math.min(fps2, prev));\n setMaxFps((prev) => Math.max(fps2, prev));\n totalFps += fps2;\n count++;\n setAvgFps(Math.round(totalFps / count));\n};\nconst calcPerformanceMetrics = (stage) => {\n let isLoadedCount2 = 0;\n let isLoadingCount2 = 0;\n let isFailedCount2 = 0;\n stage.txManager.textureIdCache.forEach((value, key2, map) => {\n if (value.state === \"loaded\") {\n isLoadedCount2++;\n }\n if (value.state === \"loading\") {\n isLoadingCount2++;\n }\n if (value.state === \"failed\") {\n isFailedCount2++;\n }\n });\n setIsLoadedCount(isLoadedCount2);\n setIsLoadingCount(isLoadingCount2);\n setIsFailedCount(isFailedCount2);\n};\nfunction setupFPS(root) {\n root.renderer.on(\"fpsUpdate\", (target, fpsData) => {\n const fps2 = typeof fpsData === \"number\" ? fpsData : fpsData.fps;\n if (fps2 > 5) {\n calcFps(fps2);\n calcPerformanceMetrics(target.root.stage);\n }\n });\n}\nconst FPSCounter = (props) => {\n return createComponent(View, mergeProps(props, {\n style: fpsStyle,\n get children() {\n return [createComponent(View, {\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"FPS:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 90,\n get children() {\n return fps();\n }\n })];\n }\n }), createComponent(View, {\n x: 160,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"AVG:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 100,\n get children() {\n return avgFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 20,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"MIN:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 90,\n get children() {\n return minFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 160,\n y: 20,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"MAX:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 100,\n get children() {\n return maxFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 50,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Loaded Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isLoadedCount();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 80,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Loading Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isLoadingCount();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 110,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Failed Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isFailedCount();\n }\n })];\n }\n })];\n }\n }));\n};\nexport {\n Artwork,\n Badge,\n Button,\n ButtonContainer,\n Checkbox,\n Column,\n FPSCounter,\n Icon$1 as Icon,\n Keyboard,\n Label,\n Metadata,\n ProgressBar,\n Row,\n Tile,\n styles$e as artworkStyles,\n assertTruthy,\n styles$d as badgeStyles,\n styles$c as buttonStyles,\n chainFunctions,\n styles$b as checkboxStyles,\n styles$9 as columnStyles,\n getDimensions,\n getItemRatioDimensions,\n getWidthByUpCount$1 as getWidthByUpCount,\n handleNavigation,\n styles$a as iconStyles,\n styles$2 as keyboardStyles,\n styles$8 as labelStyles,\n makeComponentStyles,\n styles$5 as metadataStyles,\n onGridFocus,\n styles$4 as progressBarStyles,\n resetCounter,\n styles$3 as rowStyles,\n scrollToIndex,\n setupFPS,\n styles as tileStyles,\n useItemLayout,\n withScrolling\n};\n//# sourceMappingURL=index.js.map\n","import { IntrinsicNodeStyleProps, hexColor } from \"@lightningjs/solid\";\nimport theme from \"theme\";\n\nexport default {\n Column: {\n flexDirection: \"column\",\n display: \"flex\",\n width: 320,\n height: 600,\n y: 360,\n gap: 20,\n zIndex: 101,\n transition: {\n x: {\n duration: 250,\n easing: \"ease-in-out\",\n },\n },\n x: 8,\n focus: {\n x: theme.layout.marginX,\n },\n } satisfies IntrinsicNodeStyleProps,\n Gradient: {\n zIndex: 99,\n color: hexColor(\"#000000\"),\n src: \"./assets/sidenav.png\",\n alpha: 0,\n width: 1200,\n height: 1080,\n focus: {\n alpha: 1,\n },\n transition: { alpha: true },\n } satisfies IntrinsicNodeStyleProps,\n NavButton: {\n zIndex: 102,\n height: 70,\n width: 100,\n borderRadius: 8,\n focus: {\n color: hexColor(\"#424242\"),\n },\n active: {\n width: 328,\n height: 70,\n },\n } satisfies IntrinsicNodeStyleProps,\n};\n","import { For, IntrinsicNodeProps, View } from \"@lightningjs/solid\";\nimport { createSpriteMap } from \"@lightningjs/solid-primitives\";\n// Icons from https://uxwing.com/\n\nconst basePath = import.meta.env.BASE_URL;\n\nconst icons = [\n { name: \"experiment\", width: 81, height: 100, x: 0, y: 0 },\n { name: \"trending\", width: 100, height: 56, x: 81, y: 0 },\n { name: \"tv\", width: 100, height: 68, x: 181, y: 0 },\n { name: \"movie\", width: 94, height: 100, x: 282, y: 0 },\n];\n\ninterface IconProps extends IntrinsicNodeProps {\n name: string;\n}\n\nfunction Icon(props: IconProps) {\n const sprite = createSpriteMap(basePath + \"assets/icons_white.png\", icons);\n\n return (\n \n );\n}\n\nexport default Icon;\nexport function PreviewIcons() {\n return (\n <>\n \n \n {(icon, i) => }\n \n \n );\n}\n","import { useMatch, useNavigate } from \"@solidjs/router\";\nimport {\n View,\n Text,\n IntrinsicNodeProps,\n ElementNode,\n} from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport styles from \"./NavDrawer.styles\";\nimport Icon from \"../Icon\";\nimport theme from \"theme\";\n\ninterface NavButtonProps extends IntrinsicNodeProps {\n icon: string;\n children: string;\n}\n\nfunction NavButton(props: NavButtonProps) {\n return (\n \n \n \n \n \n {props.children}\n \n \n );\n}\n\nexport default function NavDrawer(props) {\n let backdrop;\n const navigate = useNavigate();\n function onFocus(this: ElementNode) {\n backdrop.states.add(\"focus\");\n this.children.forEach((c) => c.states!.add(\"active\"));\n this.children.selected!.setFocus();\n }\n\n function onBlur(this: ElementNode) {\n backdrop.states.remove(\"focus\");\n this.selected = 0;\n this.children.forEach((c) => c.states!.remove(\"active\"));\n }\n\n function handleNavigate(page: string) {\n const isOnPage = useMatch(() => page);\n if (isOnPage()) {\n return props.focusPage();\n }\n\n navigate(page);\n }\n\n return (\n <>\n \n \n Built With:\n \n \n \n \n handleNavigate(\"/browse/all\")}\n icon=\"trending\"\n >\n Trending\n \n handleNavigate(\"/browse/movie\")}>\n Movies\n \n handleNavigate(\"/browse/tv\")}>\n TV\n \n handleNavigate(\"/examples\")}\n >\n Examples\n \n \n \n \n );\n}\n","import { useLocation, useNavigate } from \"@solidjs/router\";\nimport { View, activeElement, renderer } from \"@lightningjs/solid\";\nimport { useFocusManager, useAnnouncer } from \"@lightningjs/solid-primitives\";\nimport Background from \"../components/Background\";\nimport NavDrawer from \"../components/NavDrawer/NavDrawer\";\nimport { FPSCounter, setupFPS } from \"@lightningjs/solid-ui\";\nimport { createEffect, createSignal } from \"solid-js\";\n\ndeclare module \"@lightningjs/solid-primitives\" {\n // Augment the FocusManager KeyMap interface with our custom keys\n interface KeyMap {\n Announcer: (string | number)[];\n Menu: (string | number)[];\n Escape: (string | number)[];\n Backspace: (string | number)[];\n }\n}\n\ndeclare module \"@lightningjs/solid\" {\n interface ElementNode {\n heroContent?: boolean;\n backdrop?: any;\n entityInfo?: any;\n href?: string;\n }\n}\n\nconst App = (props) => {\n useFocusManager({\n Announcer: [\"a\"],\n Menu: [\"m\"],\n Escape: [\"Escape\", 27],\n Backspace: [\"Backspace\", 8],\n Left: [\"ArrowLeft\", 37],\n Right: [\"ArrowRight\", 39],\n Up: [\"ArrowUp\", 38],\n Down: [\"ArrowDown\", 40],\n Enter: [\"Enter\", 13],\n });\n const announcer = useAnnouncer();\n announcer.enabled = false;\n const navigate = useNavigate();\n\n let navDrawer, lastFocused;\n\n setupFPS({ renderer });\n\n function focusNavDrawer() {\n if (navDrawer.states.has(\"focus\")) {\n return false;\n }\n lastFocused = activeElement();\n return navDrawer.setFocus();\n }\n\n const [showWidgets, setShowWidgets] = createSignal(true);\n const location = useLocation();\n const showOnPaths = [\"/browse\", \"/entity\"];\n createEffect(() => {\n const currentPath = location.pathname;\n let matchesPartial = showOnPaths.some((path) =>\n currentPath.startsWith(path)\n );\n if (currentPath === \"/\") {\n matchesPartial = true;\n }\n setShowWidgets(matchesPartial);\n });\n\n return (\n (announcer.enabled = !announcer.enabled)}\n onLast={() => history.back()}\n onMenu={() => navigate(\"/\")}\n style={{ width: 1920, height: 1080 }}\n onBackspace={focusNavDrawer}\n onLeft={focusNavDrawer}\n onRight={() => navDrawer.states.has(\"focus\") && lastFocused.setFocus()}\n >\n \n \n\n {props.children}\n lastFocused.setFocus()}\n showWidgets={showWidgets()}\n />\n \n );\n};\n\nexport default App;\n","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n hexColor,\n} from \"@lightningjs/solid\";\nimport theme from \"theme\";\n\n// Augment existing intrinsic style prop interfaces to include our own\n// app-specific states\ndeclare module \"@lightningjs/solid\" {\n interface IntrinsicNodeStyleProps {\n // TODO: Refactor states to use a $ prefix\n active?: IntrinsicNodeStyleProps;\n disabled?: IntrinsicNodeStyleProps;\n }\n\n interface IntrinsicTextNodeStyleProps {\n // TODO: Refactor states to use a $ prefix\n active?: IntrinsicTextNodeStyleProps;\n disabled?: IntrinsicTextNodeStyleProps;\n }\n}\n\nexport default {\n Page: {\n width: 1920,\n height: 1080,\n },\n headlineText: {\n width: 1200,\n height: 240,\n x: 360,\n // lineHeight: 170, // TODO: Add back when lineHeight is supported\n y: 455,\n contain: \"both\",\n fontSize: 66,\n textAlign: \"center\",\n } satisfies IntrinsicTextNodeStyleProps,\n headlineSubText: {\n width: 960,\n height: 170,\n // lineHeight: 170, // TODO: Add back when lineHeight is supported\n x: 530,\n y: 655,\n contain: \"both\",\n fontSize: 48,\n textAlign: \"center\",\n } satisfies IntrinsicTextNodeStyleProps,\n itemsContainer: {\n width: theme.layout.screenW,\n height: 600,\n y: 560,\n x: 0,\n zIndex: 2,\n },\n Thumbnail: {\n borderRadius: 16,\n width: 185,\n height: 278,\n scale: 1,\n zIndex: 2,\n transition: { scale: { duration: 250, easing: \"ease-in-out\" } },\n border: { width: 0, color: 0x00000000 },\n focus: { scale: 1.1, border: { color: 0xffffff66, width: 8 } },\n },\n FocusRing: {\n borderRadius: 16,\n width: 194,\n height: 286,\n y: -5,\n x: -5,\n zIndex: -1,\n },\n FPS: {\n color: 0x000000ff,\n height: 42,\n width: 140,\n x: 20,\n y: 20,\n zIndex: 100,\n } as const,\n FPSLabel: {\n x: 10,\n y: 0,\n fontSize: 36,\n textColor: hexColor(\"#ffffff\"),\n },\n FPSValue: {\n x: 90,\n y: 0,\n fontSize: 36,\n textColor: hexColor(\"#ffffff\"),\n },\n showHeadline: { x: 70, y: 20 },\n headlineBlur: {\n width: 1920,\n height: 150,\n x: 0,\n y: 0,\n zIndex: 14,\n alpha: 0.9,\n color: hexColor(\"#000000\"),\n },\n RowTitle: {\n height: 60,\n width: 300,\n marginBottom: -40,\n fontSize: 36,\n color: hexColor(\"#f0f0f0\"),\n zIndex: 2,\n } satisfies IntrinsicTextNodeStyleProps,\n Row: {\n display: \"flex\",\n justifyContent: \"spaceBetween\",\n height: 300,\n },\n Column: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n gap: 64,\n width: theme.layout.screenW - 2 * theme.layout.marginX,\n x: theme.layout.marginX + theme.layout.gutterX,\n y: 48,\n transition: { y: { duration: 250, easing: \"ease-in-out\" } },\n zIndex: 2,\n },\n Rect: {\n width: 250,\n height: 100,\n y: 10,\n x: 300,\n color: hexColor(\"#0000ff\"),\n },\n peopleBio: {\n ...theme.typography.body1,\n fontFamily: \"Ubuntu\",\n fontWeight: \"normal\",\n contain: \"both\",\n width: 780,\n height: 340,\n } satisfies IntrinsicTextNodeStyleProps,\n} as const;\n\nconst Button = {\n width: 120,\n height: 40,\n color: hexColor(\"#000000\"),\n borderRadius: 8,\n border: { width: 2, color: hexColor(\"#3333ff\") },\n scale: 1,\n focus: {\n scale: 1.1,\n border: { width: 5, color: hexColor(\"#333333\") },\n },\n transition: { scale: true, color: true },\n} satisfies IntrinsicNodeStyleProps;\n\nconst TopBar = {\n color: hexColor(\"#00A699\"),\n height: 8,\n y: 2,\n x: -4,\n width: Button.width + 8,\n} satisfies IntrinsicNodeStyleProps;\n\nconst ButtonText = {\n fontSize: 12,\n y: 12,\n // lineHeight: Button.height, // TODO: Add back when lineHeight is supported\n contain: \"width\",\n textAlign: \"center\",\n color: hexColor(\"#F6F6F9\"),\n height: Button.height,\n width: Button.width,\n} satisfies IntrinsicTextNodeStyleProps;\n\nexport const buttonStyles = {\n container: Button,\n topBar: TopBar,\n text: ButtonText,\n} satisfies Record;\n\nexport const MaterialButton = {\n width: 386,\n height: 136,\n color: hexColor(\"#715cab\"),\n focus: {\n color: hexColor(\"#5a39a2\"),\n },\n disabled: {\n color: hexColor(\"#291d43\"),\n },\n} satisfies IntrinsicNodeStyleProps;\n\nexport const MaterialButtonText = {\n fontSize: 32,\n contain: \"width\",\n textAlign: \"center\",\n mountY: -0.35,\n color: hexColor(\"#FFFFFF\"),\n height: MaterialButton.height,\n width: MaterialButton.width,\n // lineHeight: MaterialButton.height, // TODO: Add back when lineHeight is supported\n focus: {\n fontSize: 40,\n },\n disabled: {\n color: hexColor(\"#909090\"),\n },\n} satisfies IntrinsicTextNodeStyleProps;\n","import { IntrinsicNodeProps, View, Text } from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { For, splitProps } from \"solid-js\";\nimport styles, { buttonStyles } from \"../styles\";\nimport { type Tile } from \"../api/formatters/ItemFormatter\";\n\nexport function Thumbnail(props: IntrinsicNodeProps) {\n return ;\n}\n\nexport function FocusRing(props: IntrinsicNodeProps) {\n return ;\n}\n\nexport interface TileRowProps extends IntrinsicNodeProps {\n items: Tile[];\n}\n\nexport function TileRow(props: TileRowProps) {\n const [local, others] = splitProps(props, [\"items\"]);\n\n return (\n \n {(item) => }\n \n );\n}\n\nexport function Button(props) {\n return (\n \n {props.children}\n \n );\n}\n","export default 'eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIyZDE4YjEwMTA0YjdiZTlkNjFiMWYwYjVlMGEwNzM2OCIsInN1YiI6IjYwZTVjMTdlNGNhNjc2MDA3NTA4Njc3MSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.D_nqH9kd-bhhWzeVsTDPYhHnsUaNAuyAa6YATmKHqsA';\n","import API_KEY_V4 from \"./key\";\nconst API_BASE = \"https://api.themoviedb.org/3\";\nlet tmdbConfig;\nlet baseImageUrl;\nconst basePosterSize = \"w185\";\n\nconst defaultFetchParams = {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + API_KEY_V4,\n },\n};\n\nexport function getImageUrl(path: string, posterSize: string = basePosterSize) {\n return baseImageUrl + posterSize + path;\n}\n\nfunction get(path: string, params: RequestInit = {}) {\n if (tmdbConfig) {\n return _get(path, params);\n } else {\n return loadConfig().then(() => _get(path, params));\n }\n}\n\nfunction _get(path: string, params: RequestInit = {}) {\n return fetch(API_BASE + path, {\n ...defaultFetchParams,\n ...params,\n }).then((r) => r.json());\n}\n\nfunction loadConfig() {\n return _get(\"/configuration\").then((data) => {\n tmdbConfig = data;\n baseImageUrl = data.images?.secure_base_url;\n return data;\n });\n}\n\nexport default {\n get,\n loadConfig,\n};\n","import { getImageUrl } from \"../index\";\n\nfunction truncateString(str: string, maxLength: number): string {\n if (str.length > maxLength) {\n return str.substring(0, maxLength - 3) + \"...\";\n }\n return str;\n}\n\nexport function chunkArray(array: string[], size = 7) {\n let result: string[][] = [];\n for (let i = 0, j = array.length; i < j; i += size) {\n result.push(array.slice(i, i + size));\n }\n return result;\n}\n\nexport interface Tile {\n src: string;\n tileSrc: string;\n backdrop: string;\n href: string;\n shortTitle: string;\n title: string;\n data: unknown;\n entityInfo: {\n type: string;\n id: string;\n };\n heroContent: {\n title: string;\n description: string;\n };\n}\n\n// TODO: Remove `any` type\nexport function convertItemsToTiles(items: any[] = []): Tile[] {\n return items.map((item) => ({\n src: getImageUrl(item.poster_path || item.profile_path),\n tileSrc: getImageUrl(item.backdrop_path || item.profile_path, \"w300\"),\n backdrop: getImageUrl(item.backdrop_path, \"w1280\"),\n href: `/entity/${item.media_type || \"people\"}/${item.id}`,\n shortTitle: truncateString(item.title || item.name, 30),\n title: item.title || item.name,\n data: item,\n entityInfo: {\n type: item.media_type || \"people\",\n id: item.id,\n },\n heroContent: {\n title: item.title || item.name,\n description: item.overview,\n },\n }));\n}\n","import api from \"..\";\nimport { convertItemsToTiles, chunkArray } from \"../formatters/ItemFormatter\";\n\nlet cache = new Map();\nconst leftoverTiles = new Map();\n\nexport default function (filter: string) {\n return (pageIndex: number): Promise => {\n const url = `/trending/${filter}/week?page=${pageIndex}`;\n if (cache.has(url)) {\n return cache.get(url);\n }\n\n let result = api.get(url).then((trending) => {\n let results = trending.results.filter((r) => !r.adult);\n let tiles = (\n leftoverTiles.has(filter) ? leftoverTiles.get(filter) : []\n ).concat(convertItemsToTiles(results));\n let chunks = chunkArray(tiles);\n if (chunks[chunks.length - 1].length < 7) {\n leftoverTiles.set(filter, chunks.pop());\n } else {\n leftoverTiles.delete(filter);\n }\n return chunks;\n });\n\n cache.set(url, result);\n return result;\n };\n}\n","import { createSignal, createComputed, batch, createResource } from \"solid-js\";\n\nexport function createInfiniteScroll(fetcher: (page: number) => Promise) {\n const [pages, setPages] = createSignal([]);\n const [page, setPage] = createSignal(1);\n const [end, setEnd] = createSignal(false);\n\n const [contents] = createResource(page, fetcher);\n\n createComputed(() => {\n const content = contents();\n if (!content) return;\n batch(() => {\n if (content.length === 0) setEnd(true);\n setPages((p) => [...p, ...content]);\n });\n });\n\n return {\n pages,\n page,\n setPage,\n setPages,\n end,\n setEnd,\n };\n}\n","import { View, Text } from \"@lightningjs/solid\";\nimport { For, Show } from \"solid-js\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nimport theme from \"theme\";\nwithPadding;\n\nconst blockWidth = 900;\n\nconst ContentBlockStyle = {\n display: \"flex\",\n flexDirection: \"column\",\n x: 50,\n y: 100,\n width: blockWidth,\n height: 220,\n gap: 16,\n};\n\nconst HeadlineStyles = {\n ...theme.typography.display2,\n fontFamily: \"Ubuntu\",\n fontWeight: 700,\n maxLines: 1,\n width: blockWidth,\n contain: \"width\",\n};\nconst Headline = (props) => ;\n\nconst DescriptionStyles = {\n ...theme.typography.body1,\n fontFamily: \"Ubuntu\",\n fontWeight: 400,\n lineHeight: 32,\n width: blockWidth,\n maxLines: 3,\n contain: \"width\",\n};\n\nconst BadgeStyle = {\n fontSize: 16,\n lineHeight: 20,\n};\n\nconst Description = (props) => (\n \n {props.children}\n \n);\n\nconst Badge = (props) => {\n return (\n \n {props.children}\n \n );\n};\n\nconst MetaTextStyle = {\n ...theme.typography.body2,\n fontFamily: \"Ubuntu\",\n fontWeight: 400,\n};\n\nconst Metadata = (props) => (\n \n \n \n \n \n {props.voteCount} reviews\n {props.metaText}\n {(item) => {item}}\n \n);\n\nconst ContentBlock = (props) => (\n \n {props.title}\n {props.description}\n \n);\n\nexport default ContentBlock;\n","import api, { getImageUrl } from \"..\";\nimport { convertItemsToTiles } from \"../formatters/ItemFormatter\";\n\nexport function minutesToHMM(minutes) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return (\n hours + \"h \" + (remainingMinutes < 10 ? \"0\" : \"\") + remainingMinutes + \"min\"\n );\n}\n\nfunction formatDate(dateString) {\n const parts = dateString.split(\"-\");\n return parts[1] + \"/\" + parts[2] + \"/\" + parts[0];\n}\n\nfunction justYear(dateString) {\n const parts = dateString.split(\"-\");\n return parts[0];\n}\n\nexport function getRecommendations({ type, id }) {\n return api.get(`/${type}/${id}/recommendations`).then(({ results }) => {\n if (results.length) {\n return convertItemsToTiles(results.slice(0, 7));\n }\n return api\n .get(`/trending/${type}/week?page=1`)\n .then(({ results }) => convertItemsToTiles(results.slice(0, 7)));\n });\n}\n\nexport function getCredits({ type, id }) {\n return api\n .get(`/${type}/${id}/credits`)\n .then(({ cast }) => convertItemsToTiles(cast.slice(0, 7)));\n}\n\nexport function getInfo({ type, id }) {\n let rt =\n type === \"movie\"\n ? {\n rtCrit: 86,\n rtFan: 92,\n }\n : {};\n\n return api.get(`/${type}/${id}`).then((data) => ({\n backgroundImage: getImageUrl(data.backdrop_path, \"w1280\"),\n heroContent: {\n title: data.title || data.name,\n description: data.overview,\n badges: [\"HD\", \"CC\"],\n voteAverage: data.vote_average,\n voteCount: data.vote_count,\n metaText:\n type === \"movie\"\n ? minutesToHMM(data.runtime) + \" \" + formatDate(data.release_date)\n : `${justYear(data.first_air_date)} - ${justYear(data.last_air_date)}`,\n reviews: rt,\n },\n ...data,\n }));\n}\n","import {\n createEffect,\n createMemo,\n on,\n createSignal,\n Show,\n createResource,\n createSelector,\n For,\n} from \"solid-js\";\nimport { ElementNode, View, activeElement } from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport { useNavigate, useParams } from \"@solidjs/router\";\nimport { TileRow } from \"../components\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\nimport browseProvider from \"../api/providers/browse\";\nimport { createInfiniteScroll } from \"../components/pagination\";\nimport ContentBlock from \"../components/ContentBlock\";\nimport * as entityProvider from \"../api/providers/entity\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\nimport { debounce } from \"@solid-primitives/scheduled\";\n\nconst Browse = () => {\n const params = useParams();\n const [columnY, setcolumnY] = createSignal(0);\n const [entityInfo, setEntityInfo] = createSignal();\n const [entityData] = createResource(entityInfo, entityProvider.getInfo);\n const [heroContent, setHeroContent] = createSignal({});\n const navigate = useNavigate();\n const isFirst = createSelector(() => {\n return 0;\n });\n\n const provider = createMemo(() => {\n return createInfiniteScroll(browseProvider(params.filter || \"all\"));\n });\n\n const delayedBackgrounds = debounce(\n (img: string) => setGlobalBackground(img),\n 400\n );\n const delayedHero = debounce((content: {}) => setHeroContent(content), 200);\n\n createEffect(\n on(\n activeElement,\n (elm) => {\n if (elm.backdrop) {\n delayedBackgrounds(elm.backdrop);\n }\n\n if (elm.heroContent) {\n delayedHero(elm.heroContent);\n }\n },\n { defer: true }\n )\n );\n\n function onRowFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setcolumnY((this.y || 0) * -1 + 24);\n let numPages = provider().pages().length;\n\n if (\n numPages === 0 ||\n (this.parent.selected && this.parent.selected >= numPages - 2)\n ) {\n provider().setPage((p) => p + 1);\n }\n }\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n return true;\n }\n\n return (\n \n \n \n \n \n {(items, i) => (\n \n )}\n \n \n \n \n );\n};\n\nexport default Browse;\n","import { createSignal, createSelector, For } from \"solid-js\";\nimport { ElementNode, View, Text, activeElement } from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { useNavigate } from \"@solidjs/router\";\nimport styles from \"../styles\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\n\nconst Portal = () => {\n const navigate = useNavigate();\n const isFirst = createSelector(() => {\n return 0;\n });\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.id);\n navigate(\"/\" + entity.id);\n }\n\n const demos = [\n {\n title: \"Flex Row\",\n id: \"flex\",\n description: \"Flex Row Implementation\",\n },\n {\n title: \"Flex Column\",\n id: \"flexcolumn\",\n description: \"Flex Column Implementation\",\n },\n {\n title: \"Flex Row Vertical Align\",\n id: \"flexsize\",\n description: \"Flex Row Vertical Align Implementation\",\n },\n {\n title: \"Flex Column Vertical Align\",\n id: \"flexcolumnsize\",\n description: \"Flex Column Vertical Align Implementation\",\n },\n {\n title: \"Buttons\",\n id: \"buttons\",\n description: \"Demo a few buttons\",\n },\n {\n title: \"Text\",\n id: \"text\",\n description: \"Text layout with flexbox\",\n },\n {\n title: \"Create Elements\",\n id: \"create\",\n description: \"Testing Show + children + inserting text\",\n },\n {\n title: \"Viewport\",\n id: \"viewport\",\n description: \"Events going in and out of viewport\",\n },\n ];\n\n function DemoTile(props) {\n const Container = {\n width: 370,\n height: 320,\n borderRadius: 6,\n scale: 1,\n color: 0x182b44ff,\n transition: { color: true, scale: true },\n focus: {\n scale: 1.1,\n color: 0xffffffff,\n },\n };\n const [color, setColor] = createSignal(0xffffffff);\n\n return (\n setColor(0x000000ff)}\n onBlur={() => setColor(0xffffffff)}\n style={Container}\n >\n \n \n {props.index}\n \n \n {props.title}\n \n \n {props.description}\n \n \n \n );\n }\n\n const [rowX, setRowX] = createSignal(140);\n\n function moveRow(row) {\n setRowX(row.selected * -400 + 140);\n }\n\n return (\n \n \n \n \n Examples\n \n \n \n \n \n {(demo, i) => (\n \n )}\n \n \n \n );\n};\n\nexport default Portal;\n","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst TextPage = () => {\n const OverviewContainer = {\n width: 900,\n height: 500,\n y: 350,\n x: 150,\n gap: 25,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const SublineContainer = {\n width: 900,\n height: 36,\n gap: 6,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const Title = {\n fontSize: 42,\n };\n\n const Overview = {\n width: OverviewContainer.width,\n fontSize: 26,\n contain: \"width\",\n } satisfies IntrinsicTextNodeStyleProps;\n\n const Subline = {\n fontSize: 26,\n };\n\n onMount(() => {\n setGlobalBackground(\"#000000\");\n });\n\n return (\n \n Title of the Page\n \n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel\n tempor tellus. Sed eu leo purus. Vestibulum sollicitudin eget tellus a\n varius. Phasellus est turpis, volutpat sed blandit sit amet, rutrum sit\n amet mauris. In dignissim elit orci, a sollicitudin ipsum faucibus et.\n Quisque vel quam rutrum, faucibus augue sed, scelerisque nunc.\n \n \n Subline Text\n \n More Text\n \n \n );\n};\n\nexport default TextPage;\n","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Show, children, createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst CreatePage = () => {\n const OverviewContainer = {\n width: 900,\n height: 500,\n y: 50,\n x: 150,\n gap: 25,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const SublineContainer = {\n width: 900,\n height: 36,\n gap: 6,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const Title = {\n fontSize: 42,\n };\n\n const Subline = {\n fontSize: 26,\n };\n\n let myBox, childRef;\n onMount(() => {\n setGlobalBackground(\"#000000\");\n myBox.animate({ x: 100 }, { duration: 2000 }).start();\n });\n\n const [insertTest, setInsertTest] = createSignal();\n const [emptyTest, setEmptyTest] = createSignal();\n\n setTimeout(() => {\n setInsertTest(\"- Inserted -\");\n childRef\n .getChildById(\"child1\")\n //.searchChildrenById('subChild') - more expensive version of getChildById\n ?.animate({ x: 600 }, { duration: 2000 })\n .start();\n }, 2000);\n\n const styleChild = {\n width: 400,\n height: 300,\n // Solid blue\n color: hexColor(\"#0000ff\"),\n } as const;\n\n const someOtherStyle = {\n // pretty red\n color: hexColor(\"#f54242\"),\n focus: {\n // pretty blue\n color: hexColor(\"#4287f5\"),\n },\n };\n\n function ChildTest(props) {\n // This causes a parent not rendered error since we're rendering it twice in the template\n const resolved = children(() => props.children);\n return (\n \n \n {resolved()}\n \n {props.title}\n \n \n {resolved()}\n \n \n );\n }\n\n const borderStyles = {\n borderLeft: {\n width: 8,\n color: 0x05b2b626,\n },\n borderTop: {\n width: 8,\n color: 0x25a2bd26,\n },\n borderRight: {\n width: 8,\n color: 0x05b2b626,\n },\n borderBottom: {\n width: 8,\n color: 0xc5b23626,\n },\n } as const;\n\n const childTestPassedStyles = {\n // grey color\n color: hexColor(\"#cccccc\"),\n focus: {\n // black\n color: hexColor(\"#000000\"),\n },\n };\n\n const childTestPassedStyles2 = {\n // white color\n color: hexColor(\"#ffffff\"),\n focus: {\n // white something...\n color: hexColor(\"#f6f6cc\"),\n },\n };\n\n function hasFocus(elm) {\n // This doesnt work yet - need to make states reactive\n return elm.states.has(\"focus\");\n }\n\n return (\n \n Title of the Page\n \n {emptyTest()}\n Sub {insertTest()} Text\n \n \n \n More Text\n \n \n Child Test\n \n \n \n );\n};\n\nexport default CreatePage;\n","import { Text, View, hexColor } from \"@lightningjs/solid\";\nimport { onMount, onCleanup, createSignal } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nexport default () => {\n let ball, invervalTimer;\n\n const [ballStatus, setBallStatus] = createSignal([]);\n\n const styleBall = {\n width: 100,\n height: 100,\n x: -400,\n y: -400,\n rotation: 0,\n borderRadius: 50,\n color: hexColor(\"#4287f5\"),\n transition: {\n x: { duration: 1250, easing: \"linear\" },\n y: { duration: 1250, easing: \"linear\" },\n rotation: { duration: 1400, easing: \"ease-in-out\" },\n },\n } as const;\n\n const Title = {\n fontSize: 32,\n x: 960,\n y: 540,\n mount: 0.5,\n lineheight: 52,\n };\n\n const randomIntBetween = (from, to) =>\n Math.floor(Math.random() * (to - from + 1) + from);\n\n onMount(() => {\n setGlobalBackground(\"#000000\");\n\n ball.x = (1920 - 100) / 2;\n ball.y = (1080 - 100) / 2;\n invervalTimer = setInterval(() => {\n ball.rotation = randomIntBetween(-90, 90);\n ball.x = randomIntBetween(-300, 2220);\n ball.y = randomIntBetween(-300, 1380);\n }, 2500);\n });\n\n function logEvent(name, elm) {\n setBallStatus((prev) => {\n return [...prev, name].slice(-4);\n });\n console.log(name);\n }\n\n onCleanup(() => {\n clearInterval(invervalTimer);\n });\n\n return (\n \n {ballStatus().join(\"\\n\")}\n logEvent(\"inBounds\", elm)],\n [\"outOfBounds\", (elm) => logEvent(\"outOfBounds\", elm)],\n [\"inViewport\", (elm) => logEvent(\"inViewport\", elm)],\n [\"outOfViewport\", (elm) => logEvent(\"outOfViewport\", elm)],\n ]}\n />\n \n );\n};\n","import {\n View,\n Text,\n ElementNode,\n IntrinsicNodeProps,\n hexColor,\n IntrinsicNodeStyleProps,\n} from \"@lightningjs/solid\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { buttonStyles } from \"../styles\";\nwithPadding;\n\nconst ButtonsPage = () => {\n function onEnter(this: ElementNode, event, elm) {\n this.states.toggle(\"disabled\");\n }\n\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1500,\n height: 300,\n color: hexColor(\"00000000\"),\n gap: 26,\n y: 400,\n } satisfies IntrinsicNodeStyleProps;\n\n function Button(props) {\n return (\n \n {props.children}\n \n );\n }\n\n const Badge = (props: IntrinsicNodeProps) => {\n return (\n \n \n {props.children as string}\n \n \n );\n };\n return (\n <>\n \n HD\n PG13\n NC17\n I like bananas\n DOLBY\n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default ButtonsPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1600,\n height: 110,\n color: hexColor(\"#4dabf5\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n marginTop: 25,\n marginBottom: -20,\n skipFocus: true,\n };\n\n function Block(props) {\n const styles = {\n width: 200,\n height: 100,\n y: 5,\n color: 0x1769aaff,\n };\n\n return ;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Flex Start\n \n \n \n \n \n \n \n Flex Start - Margin Left\n \n \n \n \n \n \n \n Flex End\n \n \n \n \n \n \n \n\n Flex End - Margin Right\n \n \n \n \n \n \n \n\n Center - No Margin Support\n \n \n \n \n \n \n \n\n Space Between - No Margin Support\n \n \n \n \n \n \n \n\n Space Evenly - No Margin Support\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexSizePage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1600,\n height: 110,\n color: hexColor(\"#4dabf5\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n marginTop: 25,\n marginBottom: -20,\n skipFocus: true,\n };\n\n function Block(props) {\n const styles = {\n width: 200,\n height: 100,\n y: 5,\n color: 0x1769aaff,\n };\n\n return ;\n }\n\n function randSize() {\n // size 21 to 100\n return Math.floor(Math.random() * 91) + 10;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Flex Start - AlignItems: center\n \n \n \n \n \n \n \n \n Flex Start - Margin Left - AlignItems: flexStart\n \n \n \n \n \n \n \n \n Flex End - AlignItems: flexEnd\n \n \n \n \n \n \n \n\n Flex End - Margin Right\n \n \n \n \n \n \n \n\n Center - No Margin Support\n \n \n \n \n \n \n \n\n Space Between - No Margin Support\n \n \n \n \n \n \n \n\n Space Evenly - No Margin Support\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexSizePage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexColumnPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n width: 1920,\n y: 100,\n height: 880,\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const ColumnStyles = {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"#4dabf5\"),\n height: 850,\n width: 80,\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n y: 20,\n x: 150,\n };\n\n function Block(props) {\n const styles = {\n width: randSize(),\n height: 80,\n x: 5,\n color: hexColor(\"#1769aa\"),\n };\n\n return ;\n }\n\n function randSize() {\n // size 10 to 70\n return Math.floor(Math.random() * 61) + 10;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Start, MarginTop, End, MarginBottom, Center, Between, Evenly\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexColumnPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexColumnPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n width: 1920,\n y: 100,\n height: 880,\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const ColumnStyles = {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"#4dabf5\"),\n height: 850,\n width: 60,\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n y: 20,\n x: 150,\n };\n\n function Block(props) {\n const styles = {\n width: 50,\n height: 80,\n x: 5,\n color: hexColor(\"#1769aa\"),\n };\n\n return ;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Start, MarginTop, End, MarginBottom, Center, Between, Evenly\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexColumnPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\n\nimport { MaterialButtonText } from \"../styles\";\n\nconst MaterialButtonsPage = () => {\n function onEnter(this: ElementNode, event, elm) {\n this.states.toggle(\"disabled\");\n }\n\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1500,\n height: 300,\n color: hexColor(\"00000000\"),\n gap: 26,\n y: 400,\n x: 100,\n } satisfies IntrinsicNodeStyleProps;\n\n const MaterialButton = {\n width: 386,\n height: 136,\n color: \"0x715cabff\",\n focus: {\n color: \"0x5a39a2ff\",\n },\n disabled: {\n color: \"0x291d43ff\",\n },\n };\n const RoundedRectangle = [\"RoundedRectangle\", { radius: 65 }];\n function Button(props) {\n return (\n \n {props.children}\n \n );\n }\n\n return (\n \n \n \n \n \n );\n};\n\nexport default MaterialButtonsPage;\n","// Documentation from Shaka player:\n// https://shaka-player-demo.appspot.com/docs/api/tutorial-basic-usage.html\n\nconst manifestUri =\n \"https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd\";\n\nfunction initApp() {\n // Install built-in polyfills to patch browser incompatibilities.\n shaka.polyfill.installAll();\n\n // Check to see if the browser supports the basic APIs Shaka needs.\n if (shaka.Player.isBrowserSupported()) {\n // Everything looks good!\n initPlayer();\n } else {\n // This browser does not have the minimum set of APIs we need.\n console.error(\"Browser not supported!\");\n }\n}\n\nasync function initPlayer() {\n // Create a Player instance.\n const video = document.getElementById(\"video\");\n const player = new shaka.Player();\n await player.attach(video);\n\n // Attach player to the window to make it easy to access in the JS console.\n window.player = player;\n\n // Listen for error events.\n player.addEventListener(\"error\", onErrorEvent);\n\n // Try to load a manifest.\n // This is an asynchronous process.\n try {\n await player.load(manifestUri);\n // This runs if the asynchronous load is successful.\n console.log(\"The video has now been loaded!\");\n } catch (e) {\n // onError is executed if the asynchronous load fails.\n onError(e);\n }\n}\n\nfunction onErrorEvent(event) {\n // Extract the shaka.util.Error object from the event.\n onError(event.detail);\n}\n\nfunction onError(error) {\n // Log the error.\n console.error(\"Error code\", error.code, \"object\", error);\n}\n\nexport function playVideo() {\n const video = document.getElementById(\"video\");\n video.hidden = false;\n // Needs delay from hidden to play in Chrome\n setTimeout(() => video.play(), 50);\n video.focus();\n return video;\n}\n\nexport function closeVideo() {\n const video = document.getElementById(\"video\");\n video.hidden = true;\n video.pause();\n return video;\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", initApp);\n","import {\n ElementNode,\n Text,\n View,\n Show,\n hexColor,\n setActiveElement,\n} from \"@lightningjs/solid\";\nimport { Column, Button, Row } from \"@lightningjs/solid-ui\";\nimport { useParams } from \"@solidjs/router\";\nimport { createEffect, createResource, on, createSignal } from \"solid-js\";\nimport { TileRow } from \"../components\";\nimport { setGlobalBackground } from \"../state\";\nimport ContentBlock from \"../components/ContentBlock\";\nimport { useNavigate } from \"@solidjs/router\";\nimport styles from \"../styles\";\nimport * as provider from \"../api/providers/entity\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\nimport type { Tile } from \"../api/formatters/ItemFormatter\";\nimport { playVideo, closeVideo } from \"../video\";\n\nconst Entity = () => {\n const params = useParams();\n const navigate = useNavigate();\n\n const [data] = createResource(() => ({ ...params }), provider.getInfo);\n const [credits] = createResource(\n () => ({ ...params }),\n provider.getCredits\n );\n const [recommendations] = createResource(\n () => ({ ...params }),\n provider.getRecommendations\n );\n const [backdropAlpha, setBackdropAlpha] = createSignal(0);\n\n createEffect(\n on(\n data,\n (data) => {\n setGlobalBackground(data.backgroundImage);\n },\n { defer: true }\n )\n );\n\n const columnY = 640;\n\n const Backdrop = {\n color: hexColor(\"#000000\"),\n alpha: 0,\n width: 1900,\n height: 890,\n x: -160,\n y: columnY,\n borderRadius: 30,\n };\n\n function onRowFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n columnRef.y = columnY;\n backdropRef.y = columnY;\n backdropRef.alpha = 0;\n }\n\n function onRowFocusAnimate(this: ElementNode) {\n this.children.selected?.setFocus();\n columnRef.y = 200;\n backdropRef.y = 160;\n backdropRef.alpha = 0.9;\n }\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n }\n\n function onEscape() {\n closeVideo();\n // Set focus back to lightning app\n document.getElementsByTagName(\"canvas\")[0].focus();\n entityActions.setFocus();\n setBackdropAlpha(0);\n }\n\n function onEnterTrailer() {\n const video = playVideo();\n setActiveElement(video);\n setBackdropAlpha(0.9);\n }\n\n let columnRef, backdropRef, entityActions;\n\n return (\n \n entityActions.setFocus()} onEscape={onEscape}>\n \n columnRef.setFocus()}\n onEnter={onEnterTrailer}\n >\n \n \n \n\n \n \n \n Recommendations\n \n \n \n Cast and Crew\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Entity;\n","import api, { getImageUrl } from \"..\";\nimport { convertItemsToTiles } from \"../formatters/ItemFormatter\";\n\nexport function minutesToHMM(minutes) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return (\n hours + \"h \" + (remainingMinutes < 10 ? \"0\" : \"\") + remainingMinutes + \"m\"\n );\n}\n\nfunction justYear(dateString) {\n const parts = dateString.split(\"-\");\n return parts[0];\n}\n\nexport function getCredits({ id }) {\n return api\n .get(`/person/${id}/combined_credits`)\n .then(({ cast }) => convertItemsToTiles(cast.slice(0, 7)));\n}\n\nexport function getInfo({ id }) {\n return api.get(`/person/${id}`).then((data) => ({\n backgroundImage: getImageUrl(data.profile_path, \"original\"),\n heroContent: {\n title: data.title || data.name,\n description: data.biography,\n },\n ...data,\n }));\n}\n","import { ElementNode, Text, View, Show, hexColor } from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport { useParams } from \"@solidjs/router\";\nimport { createResource, onMount } from \"solid-js\";\nimport { TileRow } from \"../components\";\nimport { setGlobalBackground } from \"../state\";\nimport { useNavigate } from \"@solidjs/router\";\nimport theme from \"theme\";\nimport styles from \"../styles\";\nimport * as provider from \"../api/providers/people\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\n\nconst People = () => {\n const params = useParams();\n const navigate = useNavigate();\n\n const [data] = createResource(() => ({ ...params }), provider.getInfo);\n const [credits] = createResource(() => ({ ...params }), provider.getCredits);\n\n const Backdrop = {\n color: hexColor(\"#000000\"),\n alpha: 0.8,\n width: 800,\n height: 440,\n x: 130,\n y: 180,\n borderRadius: 30,\n };\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n return (\n \n \n \n \n {data().name}\n \n \n {data().biography}\n \n \n \n \n \n \n Credits\n \n \n \n \n \n );\n};\n\nexport default People;\n","const NotFound = () => {\n return ;\n};\n\nexport default NotFound;\n","export default import.meta.ROLLUP_FILE_URL_DM04K3OB;","import {\n render,\n Config,\n SolidNode,\n SolidRendererOptions,\n hexColor,\n ElementNode,\n} from \"@lightningjs/solid\";\nimport { HashRouter, Route } from \"@solidjs/router\";\nimport App from \"./pages/App\";\nimport Browse from \"./pages/Browse\";\nimport Portal from \"./pages/Portal\";\nimport TextPage from \"./pages/Text\";\nimport CreatePage from \"./pages/Create\";\nimport ViewportPage from \"./pages/Viewport\";\nimport ButtonsPage from \"./pages/Buttons\";\nimport FlexPage from \"./pages/Flex\";\nimport FlexSizePage from \"./pages/FlexSize\";\nimport FlexColumnSizePage from \"./pages/FlexColumnSize\";\nimport FlexColumnPage from \"./pages/FlexColumn\";\nimport ButtonsMaterialPage from \"./pages/ButtonsMaterial\";\nimport Entity from \"./pages/Entity\";\nimport People from \"./pages/People\";\nimport NotFound from \"./pages/NotFound\";\nimport coreExtensionModuleUrl from \"./AppCoreExtensions.js?importChunkUrl\";\n\nconst logFps = true;\nConfig.debug = false;\nConfig.animationsEnabled = true;\nConfig.fontSettings.fontFamily = \"Ubuntu\";\nConfig.fontSettings.color = hexColor(\"#f6f6f6\");\nConfig.fontSettings.fontSize = 32;\nConfig.rendererOptions = {\n coreExtensionModule: coreExtensionModuleUrl,\n fpsUpdateInterval: logFps ? 200 : 0,\n enableInspector: true,\n // deviceLogicalPixelRatio: 1\n};\n\nrender(() => (\n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n));\n"],"file":"assets/index-By7E3s08.js"} \ No newline at end of file diff --git a/assets/index-CK5NAQdx.js b/assets/index-CK5NAQdx.js new file mode 100644 index 0000000..f5a49f7 --- /dev/null +++ b/assets/index-CK5NAQdx.js @@ -0,0 +1,14833 @@ +var __defProp = Object.defineProperty; +var __defNormalProp = (obj, key2, value) => key2 in obj ? __defProp(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value; +var __publicField = (obj, key2, value) => { + __defNormalProp(obj, typeof key2 !== "symbol" ? key2 + "" : key2, value); + return value; +}; +var _a2; +function __vite_legacy_guard() { + import.meta.url; + import("_").catch(() => 1); + (async function* () { + })().next(); +} +; +import { a as assertTruthy, i as isProductionEnvironment, T as TrFontFace, g as getRgbaString, c as createBound, E as EventEmitter, b as getNormalizedRgbaComponents, d as intersectBound, e as intersectRect, f as getNormalizedAlphaComponent, m as mergeColorAlphaPremultiplied, W as WebGlCoreShader, h as memize, j as Texture, k as isBoundPositive, l as boundsOverlap, S as SdfTrFontFace, B as BufferCollection, n as convertBoundToRect, o as copyRect, p as WebGlCoreRenderOp, q as mergeColorAlpha, C as CoreExtension, r as getTimingFunction, s as mergeColorProgress, t as boundInsideBound, u as ColorTexture, v as SubTexture, R as RenderTexture, w as WebGlCoreRenderer } from "./CoreExtension-BeuvW_LH.js"; +(function polyfill() { + const relList = document.createElement("link").relList; + if (relList && relList.supports && relList.supports("modulepreload")) { + return; + } + for (const link of document.querySelectorAll('link[rel="modulepreload"]')) { + processPreload(link); + } + new MutationObserver((mutations) => { + for (const mutation of mutations) { + if (mutation.type !== "childList") { + continue; + } + for (const node of mutation.addedNodes) { + if (node.tagName === "LINK" && node.rel === "modulepreload") + processPreload(node); + } + } + }).observe(document, { childList: true, subtree: true }); + function getFetchOpts(link) { + const fetchOpts = {}; + if (link.integrity) + fetchOpts.integrity = link.integrity; + if (link.referrerPolicy) + fetchOpts.referrerPolicy = link.referrerPolicy; + if (link.crossOrigin === "use-credentials") + fetchOpts.credentials = "include"; + else if (link.crossOrigin === "anonymous") + fetchOpts.credentials = "omit"; + else + fetchOpts.credentials = "same-origin"; + return fetchOpts; + } + function processPreload(link) { + if (link.ep) + return; + link.ep = true; + const fetchOpts = getFetchOpts(link); + fetch(link.href, fetchOpts); + } +})(); +class TextureUsageTracker { + constructor(releaseCallback) { + __publicField(this, "releaseCallback"); + this.releaseCallback = releaseCallback; + } +} +class ManualCountTextureUsageTracker extends TextureUsageTracker { + constructor(releaseCallback, options) { + var _a3, _b2; + super(releaseCallback); + __publicField(this, "textureMap", /* @__PURE__ */ new Map()); + __publicField(this, "zeroReferenceTextureSet", /* @__PURE__ */ new Set()); + __publicField(this, "options"); + this.options = { + textureCleanupIntervalMs: (_a3 = options.textureCleanupIntervalMs) != null ? _a3 : 1e4, + textureCleanupAgeThreadholdMs: (_b2 = options.textureCleanupAgeThreadholdMs) != null ? _b2 : 6e4 + }; + setInterval(() => { + const now = Date.now(); + const thresholdMs = this.options.textureCleanupAgeThreadholdMs; + for (const textureRefInfo of this.zeroReferenceTextureSet) { + if (now - textureRefInfo.lastUpdate > thresholdMs) { + this.releaseCallback(textureRefInfo.id); + this.textureMap.delete(textureRefInfo.id); + this.zeroReferenceTextureSet.delete(textureRefInfo); + } + } + }, this.options.textureCleanupIntervalMs); + } + registerTexture(texture) { + var _a3; + const textureId = (_a3 = texture.options) == null ? void 0 : _a3.id; + assertTruthy(textureId, "Texture must have an id to be registered"); + if (!this.textureMap.has(textureId)) { + const textureRefInfo = { + id: textureId, + nodeRefCount: 0, + lastUpdate: Date.now() + }; + this.textureMap.set(textureId, textureRefInfo); + this.zeroReferenceTextureSet.add(textureRefInfo); + } + } + incrementTextureRefCount(texture) { + var _a3; + const textureId = (_a3 = texture.options) == null ? void 0 : _a3.id; + assertTruthy(textureId, "Texture must have an id to be registered"); + let textureRefInfo = this.textureMap.get(textureId); + if (!textureRefInfo) { + this.registerTexture(texture); + textureRefInfo = this.textureMap.get(textureId); + } + assertTruthy(textureRefInfo, "Texture must have been registered"); + if (texture.txType === "SubTexture") { + this.incrementTextureRefCount(texture.props.texture); + } + textureRefInfo.nodeRefCount++; + textureRefInfo.lastUpdate = Date.now(); + if (this.zeroReferenceTextureSet.has(textureRefInfo)) { + this.zeroReferenceTextureSet.delete(textureRefInfo); + } + } + decrementTextureRefCount(texture) { + var _a3; + const textureId = (_a3 = texture.options) == null ? void 0 : _a3.id; + assertTruthy(textureId, "Texture must have an id to be registered"); + const textureRefInfo = this.textureMap.get(textureId); + assertTruthy(textureRefInfo, "Texture must have been registered"); + textureRefInfo.nodeRefCount--; + textureRefInfo.lastUpdate = Date.now(); + if (textureRefInfo.nodeRefCount === 0) { + this.zeroReferenceTextureSet.add(textureRefInfo); + } + if (texture.txType === "SubTexture") { + this.decrementTextureRefCount(texture.props.texture); + } + } +} +class FinalizationRegistryTextureUsageTracker extends TextureUsageTracker { + constructor(releaseCallback) { + super(releaseCallback); + __publicField(this, "registry"); + this.registry = new FinalizationRegistry(releaseCallback); + } + registerTexture(texture) { + var _a3, _b2; + assertTruthy((_a3 = texture.options) == null ? void 0 : _a3.id, "Texture must have an ID to be registered"); + this.registry.register(texture, (_b2 = texture.options) == null ? void 0 : _b2.id); + } + incrementTextureRefCount() { + } + decrementTextureRefCount() { + } +} +const stylePropertyMap = { + alpha: (v) => { + if (v === 1) { + return null; + } + return { prop: "opacity", value: "".concat(v) }; + }, + x: (x) => { + return { prop: "left", value: "".concat(x, "px") }; + }, + y: (y) => { + return { prop: "top", value: "".concat(y, "px") }; + }, + width: (w) => { + if (w === 0) { + return null; + } + return { prop: "width", value: "".concat(w, "px") }; + }, + height: (h) => { + if (h === 0) { + return null; + } + return { prop: "height", value: "".concat(h, "px") }; + }, + zIndex: () => "zIndex", + fontFamily: () => "font-family", + fontSize: () => "font-size", + fontStyle: () => "font-style", + fontWeight: () => "font-weight", + fontStretch: () => "font-stretch", + lineHeight: () => "line-height", + letterSpacing: () => "letter-spacing", + textAlign: () => "text-align", + overflowSuffix: () => "overflow-suffix", + maxLines: () => "max-lines", + contain: () => "contain", + verticalAlign: () => "vertical-align", + clipping: (v) => { + if (v === false) { + return null; + } + return { prop: "overflow", value: v ? "hidden" : "visible" }; + }, + rotation: (v) => { + if (v === 0) { + return null; + } + return { prop: "transform", value: "rotate(".concat(v, "rad)") }; + }, + scale: (v) => { + if (v === 1) { + return null; + } + return { prop: "transform", value: "scale(".concat(v, ")") }; + }, + scaleX: (v) => { + if (v === 1) { + return null; + } + return { prop: "transform", value: "scaleX(".concat(v, ")") }; + }, + scaleY: (v) => { + if (v === 1) { + return null; + } + return { prop: "transform", value: "scaleY(".concat(v, ")") }; + }, + color: (v) => { + if (v === 0) { + return null; + } + return { prop: "color", value: convertColorToRgba(v) }; + } +}; +const convertColorToRgba = (color) => { + const a = (color & 255) / 255; + const b = color >> 8 & 255; + const g = color >> 16 & 255; + const r = color >> 24 & 255; + return "rgba(".concat(r, ",").concat(g, ",").concat(b, ",").concat(a, ")"); +}; +const domPropertyMap = { + id: "id" +}; +class Inspector { + constructor(canvas, settings) { + __publicField(this, "root", null); + __publicField(this, "canvas", null); + __publicField(this, "height", 1080); + __publicField(this, "width", 1920); + __publicField(this, "scaleX", 1); + __publicField(this, "scaleY", 1); + var _a3, _b2, _c2, _d2, _e2, _f2; + if (isProductionEnvironment()) + return; + if (!settings) { + throw new Error("settings is required"); + } + this.height = Math.ceil((_b2 = settings.appHeight) != null ? _b2 : 1080 / ((_a3 = settings.deviceLogicalPixelRatio) != null ? _a3 : 1)); + this.width = Math.ceil((_d2 = settings.appWidth) != null ? _d2 : 1900 / ((_c2 = settings.deviceLogicalPixelRatio) != null ? _c2 : 1)); + this.scaleX = (_e2 = settings.deviceLogicalPixelRatio) != null ? _e2 : 1; + this.scaleY = (_f2 = settings.deviceLogicalPixelRatio) != null ? _f2 : 1; + this.canvas = canvas; + this.root = document.createElement("div"); + this.setRootPosition(); + document.body.appendChild(this.root); + const mutationObserver = new MutationObserver(this.setRootPosition.bind(this)); + mutationObserver.observe(canvas, { + attributes: true, + childList: false, + subtree: false + }); + const resizeObserver = new ResizeObserver(this.setRootPosition.bind(this)); + resizeObserver.observe(canvas); + window.addEventListener("resize", this.setRootPosition.bind(this)); + console.warn("Inspector is enabled, this will impact performance"); + } + setRootPosition() { + if (this.root === null || this.canvas === null) { + return; + } + const rect = this.canvas.getBoundingClientRect(); + const top = document.documentElement.scrollTop + rect.top; + const left = document.documentElement.scrollLeft + rect.left; + this.root.id = "root"; + this.root.style.left = "".concat(left, "px"); + this.root.style.top = "".concat(top, "px"); + this.root.style.width = "".concat(this.width, "px"); + this.root.style.height = "".concat(this.height, "px"); + this.root.style.position = "absolute"; + this.root.style.transformOrigin = "0 0 0"; + this.root.style.transform = "scale(".concat(this.scaleX, ", ").concat(this.scaleY, ")"); + this.root.style.overflow = "hidden"; + this.root.style.zIndex = "65534"; + } + createDiv(node, properties) { + const div = document.createElement("div"); + div.style.position = "absolute"; + div.id = node.id.toString(); + for (const key2 in properties) { + this.updateNodeProperty( + div, + // really typescript? really? + key2, + properties[key2] + ); + } + return div; + } + createNode(driver, properties) { + const node = driver.createNode(properties); + const div = this.createDiv(node, properties); + div.node = node; + node.div = div; + return this.createProxy(node, div); + } + createTextNode(driver, properties) { + const node = driver.createTextNode(properties); + const div = this.createDiv(node, properties); + div.node = node; + node.div = div; + return this.createProxy(node, div); + } + createProxy(node, div) { + return new Proxy(node, { + set: (target, property, value) => { + this.updateNodeProperty(div, property, value); + return Reflect.set(target, property, value); + }, + get: (target, property, receiver) => { + if (property === "destroy") { + this.destroyNode(target); + } + if (property === "animate") { + return (props, settings) => { + const anim = target.animate(props, settings); + return new Proxy(anim, { + get: (target2, property2, receiver2) => { + if (property2 === "start") { + this.animateNode(div, node, props, settings); + } + return Reflect.get(target2, property2, receiver2); + } + }); + }; + } + return Reflect.get(target, property, receiver); + } + }); + } + destroyNode(node) { + const div = document.getElementById(node.id.toString()); + div == null ? void 0 : div.remove(); + } + updateNodeProperty(div, property, value) { + var _a3; + if (this.root === null || value === void 0 || value === null) { + return; + } + if (property === "parent") { + const parentId = value.id; + if (parentId === 1) { + this.root.appendChild(div); + return; + } + const parent = document.getElementById(parentId.toString()); + parent == null ? void 0 : parent.appendChild(div); + return; + } + if (property === "text") { + div.innerHTML = String(value); + div.style.visibility = "hidden"; + return; + } + if (property === "src" && value) { + div.setAttribute("data-src", String(value)); + return; + } + if (stylePropertyMap[property]) { + const mappedStyleResponse = (_a3 = stylePropertyMap[property]) == null ? void 0 : _a3.call(stylePropertyMap, value); + if (mappedStyleResponse === null) { + return; + } + if (typeof mappedStyleResponse === "string") { + div.style.setProperty(mappedStyleResponse, String(value)); + return; + } + if (typeof mappedStyleResponse === "object") { + div.style.setProperty(mappedStyleResponse.prop, mappedStyleResponse.value); + } + return; + } + if (domPropertyMap[property]) { + div.setAttribute(String(stylePropertyMap[property]), String(value)); + return; + } + if (property === "data") { + for (const key2 in value) { + div.setAttribute("data-".concat(key2), String(value[key2])); + } + return; + } + } + // simple animation handler + animateNode(div, node, props, settings) { + const { + duration = 1e3, + delay: delay2 = 0 + // easing = 'linear', + // repeat = 0, + // loop = false, + // stopMethod = false, + } = settings; + const { x, y, width, height, alpha = 1, rotation = 0, scale = 1, color } = props; + function animate() { + setTimeout(() => { + div.style.top = "".concat(y, "px"); + div.style.left = "".concat(x, "px"); + div.style.width = "".concat(width, "px"); + div.style.height = "".concat(height, "px"); + div.style.opacity = "".concat(alpha); + div.style.rotate = "".concat(rotation, "rad"); + div.style.scale = "".concat(scale); + div.style.color = convertColorToRgba(color); + }, duration); + } + setTimeout(animate, delay2); + } +} +const scriptRel = "modulepreload"; +const assetsURL = function(dep) { + return "/solid-demo-app/" + dep; +}; +const seen = {}; +const __vitePreload = function preload(baseModule, deps, importerUrl) { + let promise = Promise.resolve(); + if (deps && deps.length > 0) { + const links = document.getElementsByTagName("link"); + const cspNonceMeta = document.querySelector("meta[property=csp-nonce]"); + const cspNonce = (cspNonceMeta == null ? void 0 : cspNonceMeta.nonce) || (cspNonceMeta == null ? void 0 : cspNonceMeta.getAttribute("nonce")); + promise = Promise.all(deps.map((dep) => { + dep = assetsURL(dep); + if (dep in seen) + return; + seen[dep] = true; + const isCss = dep.endsWith(".css"); + const cssSelector = isCss ? '[rel="stylesheet"]' : ""; + const isBaseRelative = !!importerUrl; + if (isBaseRelative) { + for (let i = links.length - 1; i >= 0; i--) { + const link2 = links[i]; + if (link2.href === dep && (!isCss || link2.rel === "stylesheet")) { + return; + } + } + } else if (document.querySelector('link[href="'.concat(dep, '"]').concat(cssSelector))) { + return; + } + const link = document.createElement("link"); + link.rel = isCss ? "stylesheet" : scriptRel; + if (!isCss) { + link.as = "script"; + link.crossOrigin = ""; + } + link.href = dep; + if (cspNonce) { + link.setAttribute("nonce", cspNonce); + } + document.head.appendChild(link); + if (isCss) { + return new Promise((res, rej) => { + link.addEventListener("load", res); + link.addEventListener("error", () => rej(new Error("Unable to preload CSS for ".concat(dep)))); + }); + } + })); + } + return promise.then(() => baseModule()).catch((err) => { + const e = new Event("vite:preloadError", { cancelable: true }); + e.payload = err; + window.dispatchEvent(e); + if (!e.defaultPrevented) { + throw err; + } + }); +}; +class ShaderEffect { + constructor(options) { + __publicField(this, "priority", 1); + __publicField(this, "name", ""); + __publicField(this, "ref"); + __publicField(this, "target"); + __publicField(this, "passParameters", ""); + __publicField(this, "declaredUniforms", ""); + __publicField(this, "uniformInfo", {}); + const { ref, target, props = {} } = options; + this.ref = ref; + this.target = target; + const uniformInfo = {}; + const passParameters = []; + let declaredUniforms = ""; + const uniforms = this.constructor.uniforms || {}; + for (const u in uniforms) { + const unif = uniforms[u]; + const uniType = unif.type; + const uniformName = "".concat(ref, "_").concat(u); + let define = ""; + if (unif.size) { + define = "[".concat(unif.size(props), "]"); + } + passParameters.push(uniformName); + declaredUniforms += "uniform ".concat(uniType, " ").concat(uniformName).concat(define, ";"); + uniformInfo[u] = { name: uniformName, uniform: uniforms[u].method }; + } + this.passParameters = passParameters.join(","); + this.declaredUniforms = declaredUniforms; + this.uniformInfo = uniformInfo; + } + static getEffectKey(props) { + return ""; + } + static getMethodParameters(uniforms, props) { + const res = []; + for (const u in uniforms) { + const uni = uniforms[u]; + let define = ""; + if (uni.size) { + define = "[".concat(uni.size(props), "]"); + } + res.push("".concat(uni.type, " ").concat(u).concat(define)); + } + return res.join(","); + } + static resolveDefaults(props) { + return {}; + } + static makeEffectKey(props) { + return false; + } +} +__publicField(ShaderEffect, "uniforms", {}); +__publicField(ShaderEffect, "methods"); +__publicField(ShaderEffect, "onShaderMask"); +__publicField(ShaderEffect, "onColorize"); +__publicField(ShaderEffect, "onEffectMask"); +const trPropSetterDefaults = { + x: (state, value) => { + state.props.x = value; + }, + y: (state, value) => { + state.props.y = value; + }, + width: (state, value) => { + state.props.width = value; + }, + height: (state, value) => { + state.props.height = value; + }, + color: (state, value) => { + state.props.color = value; + }, + zIndex: (state, value) => { + state.props.zIndex = value; + }, + fontFamily: (state, value) => { + state.props.fontFamily = value; + }, + fontWeight: (state, value) => { + state.props.fontWeight = value; + }, + fontStyle: (state, value) => { + state.props.fontStyle = value; + }, + fontStretch: (state, value) => { + state.props.fontStretch = value; + }, + fontSize: (state, value) => { + state.props.fontSize = value; + }, + text: (state, value) => { + state.props.text = value; + }, + textAlign: (state, value) => { + state.props.textAlign = value; + }, + contain: (state, value) => { + state.props.contain = value; + }, + offsetY: (state, value) => { + state.props.offsetY = value; + }, + scrollable: (state, value) => { + state.props.scrollable = value; + }, + scrollY: (state, value) => { + state.props.scrollY = value; + }, + letterSpacing: (state, value) => { + state.props.letterSpacing = value; + }, + lineHeight: (state, value) => { + state.props.lineHeight = value; + }, + maxLines: (state, value) => { + state.props.maxLines = value; + }, + textBaseline: (state, value) => { + state.props.textBaseline = value; + }, + verticalAlign: (state, value) => { + state.props.verticalAlign = value; + }, + overflowSuffix: (state, value) => { + state.props.overflowSuffix = value; + }, + debug: (state, value) => { + state.props.debug = value; + } +}; +class TextRenderer { + constructor(stage) { + __publicField(this, "stage"); + __publicField(this, "set"); + this.stage = stage; + const propSetters = { + ...trPropSetterDefaults, + ...this.getPropertySetters() + }; + this.set = Object.freeze(Object.fromEntries(Object.entries(propSetters).map(([key2, setter]) => { + return [ + key2, + (state, value) => { + if (state.props[key2] !== value) { + setter(state, value); + this.stage.requestRender(); + } + } + ]; + }))); + } + setStatus(state, status, error) { + if (state.status === status) { + return; + } + state.status = status; + state.emitter.emit(status, error); + } + /** + * Allows the CoreTextNode to communicate changes to the isRenderable state of + * the itself. + * + * @param state + * @param renderable + */ + setIsRenderable(state, renderable) { + state.isRenderable = renderable; + } + /** + * Destroy/Clean up the state object + * + * @remarks + * Opposite of createState(). Frees any event listeners / resources held by + * the state that may not reliably get garbage collected. + * + * @param state + */ + destroyState(state) { + const stateEvents = ["loading", "loaded", "failed"]; + stateEvents.forEach((eventName) => { + state.emitter.off(eventName); + }); + } + /** + * Schedule a state update via queueMicrotask + * + * @remarks + * This method is used to schedule a state update via queueMicrotask. This + * method should be called whenever a state update is needed, and it will + * ensure that the state is only updated once per microtask. + * @param state + * @returns + */ + scheduleUpdateState(state) { + if (state.updateScheduled) { + return; + } + state.updateScheduled = true; + queueMicrotask(() => { + state.updateScheduled = false; + this.updateState(state); + }); + } +} +class WebTrFontFace extends TrFontFace { + constructor(fontFamily, descriptors, fontUrl) { + super(fontFamily, descriptors); + __publicField(this, "fontFace"); + __publicField(this, "fontUrl"); + const fontUrlWithoutParentheses = fontUrl.replace(/\(|\)/g, ""); + const determinedDescriptors = this.descriptors; + const cssDescriptors = { + style: determinedDescriptors.style, + weight: typeof determinedDescriptors.weight === "number" ? "".concat(determinedDescriptors.weight) : determinedDescriptors.weight, + stretch: determinedDescriptors.stretch, + unicodeRange: determinedDescriptors.unicodeRange, + variant: determinedDescriptors.variant, + featureSettings: determinedDescriptors.featureSettings, + display: determinedDescriptors.display + }; + const fontFace = new FontFace(fontFamily, "url(".concat(fontUrlWithoutParentheses, ")"), cssDescriptors); + fontFace.load().then(() => { + this.loaded = true; + this.emit("loaded"); + }).catch(console.error); + this.fontFace = fontFace; + this.fontUrl = fontUrl; + } +} +const MAX_TEXTURE_DIMENSION = 2048; +function calcHeight(textBaseline, fontSize, lineHeight, numLines, offsetY) { + const baselineOffset = textBaseline !== "bottom" ? 0.5 * fontSize : 0; + return lineHeight * (numLines - 1) + baselineOffset + Math.max(lineHeight, fontSize) + (offsetY || 0); +} +class LightningTextTextureRenderer { + constructor(canvas, context) { + __publicField(this, "_canvas"); + __publicField(this, "_context"); + __publicField(this, "_settings"); + __publicField(this, "renderInfo"); + this._canvas = canvas; + this._context = context; + this._settings = this.mergeDefaults({}); + } + set settings(v) { + this._settings = this.mergeDefaults(v); + } + get settings() { + return this._settings; + } + getPrecision() { + return this._settings.precision; + } + setFontProperties() { + this._context.font = this._getFontSetting(); + this._context.textBaseline = this._settings.textBaseline; + } + _getFontSetting() { + const ff = [this._settings.fontFace]; + const ffs = []; + for (let i = 0, n = ff.length; i < n; i++) { + if (ff[i] === "serif" || ff[i] === "sans-serif") { + ffs.push(ff[i]); + } else { + ffs.push('"'.concat(ff[i], '"')); + } + } + return "".concat(this._settings.fontStyle, " ").concat(this._settings.fontSize * this.getPrecision(), "px ").concat(ffs.join(",")); + } + _load() { + if (document.fonts) { + const fontSetting = this._getFontSetting(); + try { + if (!document.fonts.check(fontSetting, this._settings.text)) { + return document.fonts.load(fontSetting, this._settings.text).catch((err) => { + console.warn("[Lightning] Font load error", err, fontSetting); + }).then(() => { + if (!document.fonts.check(fontSetting, this._settings.text)) { + console.warn("[Lightning] Font not found", fontSetting); + } + }); + } + } catch (e) { + console.warn("[Lightning] Can't check font loading for " + fontSetting); + } + } + } + calculateRenderInfo() { + const renderInfo = {}; + const precision = this.getPrecision(); + const paddingLeft = this._settings.paddingLeft * precision; + const paddingRight = this._settings.paddingRight * precision; + const fontSize = this._settings.fontSize * precision; + let offsetY = this._settings.offsetY === null ? null : this._settings.offsetY * precision; + let lineHeight = (this._settings.lineHeight || fontSize) * precision; + const w = this._settings.w * precision; + const h = this._settings.h * precision; + let wordWrapWidth = this._settings.wordWrapWidth * precision; + const cutSx = this._settings.cutSx * precision; + const cutEx = this._settings.cutEx * precision; + const cutSy = this._settings.cutSy * precision; + const cutEy = this._settings.cutEy * precision; + const letterSpacing = (this._settings.letterSpacing || 0) * precision; + const textIndent = this._settings.textIndent * precision; + this.setFontProperties(); + let width = w || 2048 / this.getPrecision(); + let innerWidth = width - paddingLeft; + if (innerWidth < 10) { + width += 10 - innerWidth; + innerWidth = 10; + } + if (!wordWrapWidth) { + wordWrapWidth = innerWidth; + } + if (this._settings.textOverflow && !this._settings.wordWrap) { + let suffix; + switch (this._settings.textOverflow) { + case "clip": + suffix = ""; + break; + case "ellipsis": + suffix = this._settings.overflowSuffix; + break; + default: + suffix = this._settings.textOverflow; + } + this._settings.text = this.wrapWord(this._settings.text, wordWrapWidth - textIndent, suffix); + } + let linesInfo; + if (this._settings.wordWrap) { + linesInfo = this.wrapText(this._settings.text, wordWrapWidth, letterSpacing, textIndent); + } else { + linesInfo = { l: this._settings.text.split(/(?:\r\n|\r|\n)/), n: [] }; + const n = linesInfo.l.length; + for (let i = 0; i < n - 1; i++) { + linesInfo.n.push(i); + } + } + let lines = linesInfo.l; + if (this._settings.maxLines && lines.length > this._settings.maxLines) { + const usedLines = lines.slice(0, this._settings.maxLines); + let otherLines = null; + if (this._settings.overflowSuffix) { + const w2 = this._settings.overflowSuffix ? this.measureText(this._settings.overflowSuffix) : 0; + const al = this.wrapText(usedLines[usedLines.length - 1], wordWrapWidth - w2, letterSpacing, textIndent); + usedLines[usedLines.length - 1] = "".concat(al.l[0]).concat(this._settings.overflowSuffix); + otherLines = [al.l.length > 1 ? al.l[1] : ""]; + } else { + otherLines = [""]; + } + let i; + const n = lines.length; + let j = 0; + const m = linesInfo.n.length; + for (i = this._settings.maxLines; i < n; i++) { + otherLines[j] += "".concat(otherLines[j] ? " " : "").concat(lines[i]); + if (i + 1 < m && linesInfo.n[i + 1]) { + j++; + } + } + renderInfo.remainingText = otherLines.join("\n"); + renderInfo.moreTextLines = true; + lines = usedLines; + } else { + renderInfo.moreTextLines = false; + renderInfo.remainingText = ""; + } + let maxLineWidth = 0; + const lineWidths = []; + for (let i = 0; i < lines.length; i++) { + const lineWidth = this.measureText(lines[i], letterSpacing) + (i === 0 ? textIndent : 0); + lineWidths.push(lineWidth); + maxLineWidth = Math.max(maxLineWidth, lineWidth); + } + renderInfo.lineWidths = lineWidths; + if (!w) { + width = maxLineWidth + paddingLeft + paddingRight; + innerWidth = maxLineWidth; + } + lineHeight = lineHeight || fontSize; + let height; + if (h) { + height = h; + } else { + height = calcHeight(this._settings.textBaseline, fontSize, lineHeight, lines.length, offsetY); + } + if (offsetY === null) { + offsetY = fontSize; + } + renderInfo.w = width; + renderInfo.h = height; + renderInfo.lines = lines; + renderInfo.precision = precision; + if (!width) { + width = 1; + } + if (!height) { + height = 1; + } + if (cutSx || cutEx) { + width = Math.min(width, cutEx - cutSx); + } + if (cutSy || cutEy) { + height = Math.min(height, cutEy - cutSy); + } + renderInfo.width = width; + renderInfo.innerWidth = innerWidth; + renderInfo.height = height; + renderInfo.fontSize = fontSize; + renderInfo.cutSx = cutSx; + renderInfo.cutSy = cutSy; + renderInfo.cutEx = cutEx; + renderInfo.cutEy = cutEy; + renderInfo.lineHeight = lineHeight; + renderInfo.lineWidths = lineWidths; + renderInfo.offsetY = offsetY; + renderInfo.paddingLeft = paddingLeft; + renderInfo.paddingRight = paddingRight; + renderInfo.letterSpacing = letterSpacing; + renderInfo.textIndent = textIndent; + return renderInfo; + } + draw(renderInfo, linesOverride) { + const precision = this.getPrecision(); + const lines = (linesOverride == null ? void 0 : linesOverride.lines) || renderInfo.lines; + const lineWidths = (linesOverride == null ? void 0 : linesOverride.lineWidths) || renderInfo.lineWidths; + const height = linesOverride ? calcHeight(this._settings.textBaseline, renderInfo.fontSize, renderInfo.lineHeight, linesOverride.lines.length, this._settings.offsetY === null ? null : this._settings.offsetY * precision) : renderInfo.height; + this._canvas.width = Math.min(Math.ceil(renderInfo.width + this._settings.textRenderIssueMargin), MAX_TEXTURE_DIMENSION); + this._canvas.height = Math.min(Math.ceil(height), MAX_TEXTURE_DIMENSION); + this.setFontProperties(); + if (renderInfo.fontSize >= 128) { + this._context.globalAlpha = 0.01; + this._context.fillRect(0, 0, 0.01, 0.01); + this._context.globalAlpha = 1; + } + if (renderInfo.cutSx || renderInfo.cutSy) { + this._context.translate(-renderInfo.cutSx, -renderInfo.cutSy); + } + let linePositionX; + let linePositionY; + const drawLines = []; + for (let i = 0, n = lines.length; i < n; i++) { + linePositionX = i === 0 ? renderInfo.textIndent : 0; + linePositionY = i * renderInfo.lineHeight + renderInfo.offsetY; + if (this._settings.verticalAlign == "middle") { + linePositionY += (renderInfo.lineHeight - renderInfo.fontSize) / 2; + } else if (this._settings.verticalAlign == "bottom") { + linePositionY += renderInfo.lineHeight - renderInfo.fontSize; + } + if (this._settings.textAlign === "right") { + linePositionX += renderInfo.innerWidth - lineWidths[i]; + } else if (this._settings.textAlign === "center") { + linePositionX += (renderInfo.innerWidth - lineWidths[i]) / 2; + } + linePositionX += renderInfo.paddingLeft; + drawLines.push({ + text: lines[i], + x: linePositionX, + y: linePositionY, + w: lineWidths[i] + }); + } + if (this._settings.highlight) { + const color = this._settings.highlightColor; + const hlHeight = this._settings.highlightHeight * precision || renderInfo.fontSize * 1.5; + const offset = this._settings.highlightOffset * precision; + const hlPaddingLeft = this._settings.highlightPaddingLeft !== null ? this._settings.highlightPaddingLeft * precision : renderInfo.paddingLeft; + const hlPaddingRight = this._settings.highlightPaddingRight !== null ? this._settings.highlightPaddingRight * precision : renderInfo.paddingRight; + this._context.fillStyle = getRgbaString(color); + for (let i = 0; i < drawLines.length; i++) { + const drawLine = drawLines[i]; + this._context.fillRect(drawLine.x - hlPaddingLeft, drawLine.y - renderInfo.offsetY + offset, drawLine.w + hlPaddingRight + hlPaddingLeft, hlHeight); + } + } + let prevShadowSettings = null; + if (this._settings.shadow) { + prevShadowSettings = [ + this._context.shadowColor, + this._context.shadowOffsetX, + this._context.shadowOffsetY, + this._context.shadowBlur + ]; + this._context.shadowColor = getRgbaString(this._settings.shadowColor); + this._context.shadowOffsetX = this._settings.shadowOffsetX * precision; + this._context.shadowOffsetY = this._settings.shadowOffsetY * precision; + this._context.shadowBlur = this._settings.shadowBlur * precision; + } + this._context.fillStyle = getRgbaString(this._settings.textColor); + for (let i = 0, n = drawLines.length; i < n; i++) { + const drawLine = drawLines[i]; + if (renderInfo.letterSpacing === 0) { + this._context.fillText(drawLine.text, drawLine.x, drawLine.y); + } else { + const textSplit = drawLine.text.split(""); + let x = drawLine.x; + for (let i2 = 0, j = textSplit.length; i2 < j; i2++) { + this._context.fillText(textSplit[i2], x, drawLine.y); + x += this.measureText(textSplit[i2], renderInfo.letterSpacing); + } + } + } + if (prevShadowSettings) { + this._context.shadowColor = prevShadowSettings[0]; + this._context.shadowOffsetX = prevShadowSettings[1]; + this._context.shadowOffsetY = prevShadowSettings[2]; + this._context.shadowBlur = prevShadowSettings[3]; + } + if (renderInfo.cutSx || renderInfo.cutSy) { + this._context.translate(renderInfo.cutSx, renderInfo.cutSy); + } + this.renderInfo = renderInfo; + } + wrapWord(word, wordWrapWidth, suffix) { + const suffixWidth = this._context.measureText(suffix).width; + const wordLen = word.length; + const wordWidth = this._context.measureText(word).width; + if (wordWidth <= wordWrapWidth) { + return word; + } + let cutoffIndex = Math.floor(wordWrapWidth * wordLen / wordWidth); + let truncWordWidth = this._context.measureText(word.substring(0, cutoffIndex)).width + suffixWidth; + if (truncWordWidth > wordWrapWidth) { + while (cutoffIndex > 0) { + truncWordWidth = this._context.measureText(word.substring(0, cutoffIndex)).width + suffixWidth; + if (truncWordWidth > wordWrapWidth) { + cutoffIndex -= 1; + } else { + break; + } + } + } else { + while (cutoffIndex < wordLen) { + truncWordWidth = this._context.measureText(word.substring(0, cutoffIndex)).width + suffixWidth; + if (truncWordWidth < wordWrapWidth) { + cutoffIndex += 1; + } else { + cutoffIndex -= 1; + break; + } + } + } + return word.substring(0, cutoffIndex) + (wordWrapWidth >= suffixWidth ? suffix : ""); + } + /** + * Applies newlines to a string to have it optimally fit into the horizontal + * bounds set by the Text object's wordWrapWidth property. + */ + wrapText(text2, wordWrapWidth, letterSpacing, indent = 0) { + const lines = text2.split(/\r?\n/g); + let allLines = []; + const realNewlines = []; + for (let i = 0; i < lines.length; i++) { + const resultLines = []; + let result = ""; + let spaceLeft = wordWrapWidth - indent; + const words = lines[i].split(" "); + for (let j = 0; j < words.length; j++) { + const wordWidth = this.measureText(words[j], letterSpacing); + const wordWidthWithSpace = wordWidth + this.measureText(" ", letterSpacing); + if (j === 0 || wordWidthWithSpace > spaceLeft) { + if (j > 0) { + resultLines.push(result); + result = ""; + } + result += words[j]; + spaceLeft = wordWrapWidth - wordWidth - (j === 0 ? indent : 0); + } else { + spaceLeft -= wordWidthWithSpace; + result += " ".concat(words[j]); + } + } + resultLines.push(result); + result = ""; + allLines = allLines.concat(resultLines); + if (i < lines.length - 1) { + realNewlines.push(allLines.length); + } + } + return { l: allLines, n: realNewlines }; + } + measureText(word, space = 0) { + if (!space) { + return this._context.measureText(word).width; + } + return word.split("").reduce((acc, char) => { + return acc + this._context.measureText(char).width + space; + }, 0); + } + mergeDefaults(settings) { + return { + text: "", + w: 0, + h: 0, + fontStyle: "normal", + fontSize: 40, + fontFace: null, + wordWrap: true, + wordWrapWidth: 0, + wordBreak: false, + textOverflow: "", + lineHeight: null, + textBaseline: "alphabetic", + textAlign: "left", + verticalAlign: "top", + offsetY: null, + maxLines: 0, + overflowSuffix: "...", + textColor: [1, 1, 1, 1], + paddingLeft: 0, + paddingRight: 0, + shadow: false, + shadowColor: [0, 0, 0, 1], + shadowOffsetX: 0, + shadowOffsetY: 0, + shadowBlur: 5, + highlight: false, + highlightHeight: 0, + highlightColor: [0, 0, 0, 1], + highlightOffset: 0, + highlightPaddingLeft: 0, + highlightPaddingRight: 0, + letterSpacing: 0, + textIndent: 0, + cutSx: 0, + cutEx: 0, + cutSy: 0, + cutEy: 0, + advancedRenderer: false, + fontBaselineRatio: 0, + precision: 1, + textRenderIssueMargin: 0, + ...settings + }; + } +} +const resolvedGlobal = typeof self === "undefined" ? globalThis : self; +const globalFontSet = ((_a2 = resolvedGlobal.document) == null ? void 0 : _a2.fonts) || resolvedGlobal.fonts; +function getFontCssString(props) { + const { fontFamily, fontStyle, fontWeight, fontStretch, fontSize } = props; + return [fontStyle, fontWeight, fontStretch, "".concat(fontSize, "px"), fontFamily].join(" "); +} +const tmpElementBounds = createBound(0, 0, 0, 0); +class CanvasTextRenderer extends TextRenderer { + constructor(stage) { + super(stage); + __publicField(this, "canvas"); + __publicField(this, "context"); + __publicField(this, "rendererBounds"); + if (typeof OffscreenCanvas !== "undefined") { + this.canvas = new OffscreenCanvas(0, 0); + } else { + this.canvas = document.createElement("canvas"); + } + let context = this.canvas.getContext("2d"); + if (!context) { + this.canvas = document.createElement("canvas"); + context = this.canvas.getContext("2d"); + } + assertTruthy(context); + this.context = context; + this.rendererBounds = { + x1: 0, + y1: 0, + x2: this.stage.options.appWidth, + y2: this.stage.options.appHeight + }; + } + //#region Overrides + getPropertySetters() { + return { + fontFamily: (state, value) => { + state.props.fontFamily = value; + state.fontInfo = void 0; + this.invalidateLayoutCache(state); + }, + fontWeight: (state, value) => { + state.props.fontWeight = value; + state.fontInfo = void 0; + this.invalidateLayoutCache(state); + }, + fontStyle: (state, value) => { + state.props.fontStyle = value; + state.fontInfo = void 0; + this.invalidateLayoutCache(state); + }, + fontStretch: (state, value) => { + state.props.fontStretch = value; + state.fontInfo = void 0; + this.invalidateLayoutCache(state); + }, + fontSize: (state, value) => { + state.props.fontSize = value; + state.fontInfo = void 0; + this.invalidateLayoutCache(state); + }, + text: (state, value) => { + state.props.text = value; + this.invalidateLayoutCache(state); + }, + textAlign: (state, value) => { + state.props.textAlign = value; + this.invalidateLayoutCache(state); + }, + color: (state, value) => { + state.props.color = value; + this.invalidateLayoutCache(state); + }, + x: (state, value) => { + state.props.x = value; + this.invalidateVisibleWindowCache(state); + }, + y: (state, value) => { + state.props.y = value; + this.invalidateVisibleWindowCache(state); + }, + contain: (state, value) => { + state.props.contain = value; + this.invalidateLayoutCache(state); + }, + width: (state, value) => { + state.props.width = value; + if (state.props.contain !== "none") { + this.invalidateLayoutCache(state); + } + }, + height: (state, value) => { + state.props.height = value; + if (state.props.contain === "both") { + this.invalidateLayoutCache(state); + } + }, + offsetY: (state, value) => { + state.props.offsetY = value; + this.invalidateLayoutCache(state); + }, + scrollY: (state, value) => { + state.props.scrollY = value; + }, + letterSpacing: (state, value) => { + state.props.letterSpacing = value; + this.invalidateLayoutCache(state); + }, + lineHeight: (state, value) => { + state.props.lineHeight = value; + this.invalidateLayoutCache(state); + }, + maxLines: (state, value) => { + state.props.maxLines = value; + this.invalidateLayoutCache(state); + }, + textBaseline: (state, value) => { + state.props.textBaseline = value; + this.invalidateLayoutCache(state); + }, + verticalAlign: (state, value) => { + state.props.verticalAlign = value; + this.invalidateLayoutCache(state); + }, + overflowSuffix: (state, value) => { + state.props.overflowSuffix = value; + this.invalidateLayoutCache(state); + } + // debug: (state, value) => { + // state.props.debug = value; + // }, + }; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + canRenderFont(props) { + return true; + } + isFontFaceSupported(fontFace) { + return fontFace instanceof WebTrFontFace; + } + addFontFace(fontFace) { + assertTruthy(fontFace instanceof WebTrFontFace); + globalFontSet.add(fontFace.fontFace); + } + createState(props) { + return { + props, + status: "initialState", + updateScheduled: false, + emitter: new EventEmitter(), + canvasPages: void 0, + lightning2TextRenderer: new LightningTextTextureRenderer(this.canvas, this.context), + renderWindow: void 0, + visibleWindow: { + x1: 0, + y1: 0, + x2: 0, + y2: 0, + valid: false + }, + renderInfo: void 0, + forceFullLayoutCalc: false, + textW: 0, + textH: 0, + fontInfo: void 0, + fontFaceLoadedHandler: void 0, + isRenderable: false, + debugData: { + updateCount: 0, + layoutCount: 0, + drawCount: 0, + lastLayoutNumCharacters: 0, + layoutSum: 0, + drawSum: 0, + bufferSize: 0 + } + }; + } + updateState(state) { + var _a3, _b2; + if (state.status === "initialState") { + this.setStatus(state, "loading"); + } + if (!state.fontInfo) { + const cssString = getFontCssString(state.props); + state.fontInfo = { + cssString, + // TODO: For efficiency we would use this here but it's not reliable on WPE -> document.fonts.check(cssString), + loaded: false + }; + if (!state.fontInfo.loaded) { + globalFontSet.load(cssString).then(this.onFontLoaded.bind(this, state, cssString)).catch(this.onFontLoadError.bind(this, state, cssString)); + return; + } + } + if (!state.fontInfo.loaded) { + return; + } + if (!state.renderInfo) { + const maxLines = state.props.maxLines; + const containedMaxLines = state.props.contain === "both" ? Math.floor((state.props.height - state.props.offsetY) / state.props.lineHeight) : 0; + const calcMaxLines = containedMaxLines > 0 && maxLines > 0 ? Math.min(containedMaxLines, maxLines) : Math.max(containedMaxLines, maxLines); + state.lightning2TextRenderer.settings = { + text: state.props.text, + textAlign: state.props.textAlign, + fontFace: state.props.fontFamily, + fontSize: state.props.fontSize, + fontStyle: [ + state.props.fontStretch, + state.props.fontStyle, + state.props.fontWeight + ].join(" "), + textColor: getNormalizedRgbaComponents(state.props.color), + offsetY: state.props.fontSize + state.props.offsetY, + wordWrap: state.props.contain !== "none", + wordWrapWidth: state.props.contain === "none" ? void 0 : state.props.width, + letterSpacing: state.props.letterSpacing, + lineHeight: state.props.lineHeight, + maxLines: calcMaxLines, + textBaseline: state.props.textBaseline, + verticalAlign: state.props.verticalAlign, + overflowSuffix: state.props.overflowSuffix + }; + state.renderInfo = state.lightning2TextRenderer.calculateRenderInfo(); + state.textH = state.renderInfo.lineHeight * state.renderInfo.lines.length; + state.textW = state.renderInfo.width; + state.renderWindow = void 0; + } + const { x, y, width, height, scrollY, contain } = state.props; + const { visibleWindow } = state; + let { renderWindow, canvasPages } = state; + if (!visibleWindow.valid) { + const elementBounds = createBound(x, y, contain !== "none" ? x + width : Infinity, contain === "both" ? y + height : Infinity, tmpElementBounds); + intersectBound(this.rendererBounds, elementBounds, visibleWindow); + visibleWindow.valid = true; + } + const visibleWindowHeight = visibleWindow.y2 - visibleWindow.y1; + const maxLinesPerCanvasPage = Math.ceil(visibleWindowHeight / state.renderInfo.lineHeight); + if (visibleWindowHeight === 0) { + canvasPages = void 0; + renderWindow = void 0; + this.setStatus(state, "loaded"); + return; + } else if (renderWindow && canvasPages) { + const renderWindowScreenX1 = x + renderWindow.x1; + const renderWindowScreenY1 = y - scrollY + renderWindow.y1; + const renderWindowScreenX2 = x + renderWindow.x2; + const renderWindowScreenY2 = y - scrollY + renderWindow.y2; + if (renderWindowScreenX1 <= visibleWindow.x1 && renderWindowScreenX2 >= visibleWindow.x2 && renderWindowScreenY1 <= visibleWindow.y1 && renderWindowScreenY2 >= visibleWindow.y2) { + this.setStatus(state, "loaded"); + return; + } + if (renderWindowScreenY2 < visibleWindow.y2) { + renderWindow.y1 += maxLinesPerCanvasPage * state.renderInfo.lineHeight; + renderWindow.y2 += maxLinesPerCanvasPage * state.renderInfo.lineHeight; + canvasPages.push(canvasPages.shift()); + canvasPages[2].lineNumStart = canvasPages[1].lineNumStart + maxLinesPerCanvasPage; + canvasPages[2].lineNumEnd = canvasPages[2].lineNumStart + maxLinesPerCanvasPage; + canvasPages[2].valid = false; + } else if (renderWindowScreenY1 > visibleWindow.y1) { + renderWindow.y1 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight; + renderWindow.y2 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight; + canvasPages.unshift(canvasPages.pop()); + canvasPages[0].lineNumStart = canvasPages[1].lineNumStart - maxLinesPerCanvasPage; + canvasPages[0].lineNumEnd = canvasPages[0].lineNumStart + maxLinesPerCanvasPage; + canvasPages[0].valid = false; + } + } else { + const pageHeight = state.renderInfo.lineHeight * maxLinesPerCanvasPage; + const page1Block = Math.ceil(scrollY / pageHeight); + const page1LineStart = page1Block * maxLinesPerCanvasPage; + const page0LineStart = page1LineStart - maxLinesPerCanvasPage; + const page2LineStart = page1LineStart + maxLinesPerCanvasPage; + canvasPages = [ + { + texture: canvasPages == null ? void 0 : canvasPages[0].texture, + lineNumStart: page0LineStart, + lineNumEnd: page0LineStart + maxLinesPerCanvasPage, + valid: false + }, + { + texture: canvasPages == null ? void 0 : canvasPages[1].texture, + lineNumStart: page1LineStart, + lineNumEnd: page1LineStart + maxLinesPerCanvasPage, + valid: false + }, + { + texture: canvasPages == null ? void 0 : canvasPages[2].texture, + lineNumStart: page2LineStart, + lineNumEnd: page2LineStart + maxLinesPerCanvasPage, + valid: false + } + ]; + state.canvasPages = canvasPages; + const scrollYNearestPage = page1Block * pageHeight; + renderWindow = { + x1: 0, + y1: scrollYNearestPage - pageHeight, + x2: width, + y2: scrollYNearestPage + pageHeight * 2 + }; + } + state.renderWindow = renderWindow; + performance.now(); + for (const pageInfo of canvasPages) { + if (pageInfo.valid) + continue; + if (pageInfo.lineNumStart < 0) { + (_a3 = pageInfo.texture) == null ? void 0 : _a3.setRenderableOwner(state, false); + pageInfo.texture = this.stage.txManager.loadTexture("ImageTexture", { + src: "" + }); + pageInfo.texture.setRenderableOwner(state, state.isRenderable); + pageInfo.valid = true; + continue; + } + state.lightning2TextRenderer.draw(state.renderInfo, { + lines: state.renderInfo.lines.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd), + lineWidths: state.renderInfo.lineWidths.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd) + }); + if (!(this.canvas.width === 0 || this.canvas.height === 0)) { + (_b2 = pageInfo.texture) == null ? void 0 : _b2.setRenderableOwner(state, false); + pageInfo.texture = this.stage.txManager.loadTexture("ImageTexture", { + src: this.context.getImageData(0, 0, this.canvas.width, this.canvas.height) + }, { + preload: true + }); + pageInfo.texture.setRenderableOwner(state, state.isRenderable); + } + pageInfo.valid = true; + } + this.setStatus(state, "loaded"); + } + renderQuads(state, transform, clippingRect, alpha) { + var _a3, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2; + const { stage } = this; + const { canvasPages, textW = 0, textH = 0, renderWindow } = state; + if (!canvasPages || !renderWindow) + return; + const { + x, + y, + scrollY, + contain, + width, + height + /*, debug*/ + } = state.props; + const elementRect = { + x, + y, + width: contain !== "none" ? width : textW, + height: contain === "both" ? height : textH + }; + intersectRect({ + x: 0, + y: 0, + width: stage.options.appWidth, + height: stage.options.appHeight + }, elementRect); + assertTruthy(canvasPages, "canvasPages is not defined"); + assertTruthy(renderWindow, "renderWindow is not defined"); + const renderWindowHeight = renderWindow.y2 - renderWindow.y1; + const pageSize = renderWindowHeight / 3; + const { zIndex, color } = state.props; + const combinedAlpha = alpha * getNormalizedAlphaComponent(color); + const quadColor = mergeColorAlphaPremultiplied(4294967295, combinedAlpha); + if (canvasPages[0].valid) { + this.stage.renderer.addQuad({ + alpha: combinedAlpha, + clippingRect, + colorBl: quadColor, + colorBr: quadColor, + colorTl: quadColor, + colorTr: quadColor, + width: ((_b2 = (_a3 = canvasPages[0].texture) == null ? void 0 : _a3.dimensions) == null ? void 0 : _b2.width) || 0, + height: ((_d2 = (_c2 = canvasPages[0].texture) == null ? void 0 : _c2.dimensions) == null ? void 0 : _d2.height) || 0, + texture: canvasPages[0].texture, + textureOptions: {}, + shader: null, + shaderProps: null, + zIndex, + tx: transform.tx, + ty: transform.ty - scrollY + renderWindow.y1, + ta: transform.ta, + tb: transform.tb, + tc: transform.tc, + td: transform.td + }); + } + if (canvasPages[1].valid) { + this.stage.renderer.addQuad({ + alpha: combinedAlpha, + clippingRect, + colorBl: quadColor, + colorBr: quadColor, + colorTl: quadColor, + colorTr: quadColor, + width: ((_f2 = (_e2 = canvasPages[1].texture) == null ? void 0 : _e2.dimensions) == null ? void 0 : _f2.width) || 0, + height: ((_h2 = (_g2 = canvasPages[1].texture) == null ? void 0 : _g2.dimensions) == null ? void 0 : _h2.height) || 0, + texture: canvasPages[1].texture, + textureOptions: {}, + shader: null, + shaderProps: null, + zIndex, + tx: transform.tx, + ty: transform.ty - scrollY + renderWindow.y1 + pageSize, + ta: transform.ta, + tb: transform.tb, + tc: transform.tc, + td: transform.td + }); + } + if (canvasPages[2].valid) { + this.stage.renderer.addQuad({ + alpha: combinedAlpha, + clippingRect, + colorBl: quadColor, + colorBr: quadColor, + colorTl: quadColor, + colorTr: quadColor, + width: ((_j2 = (_i2 = canvasPages[2].texture) == null ? void 0 : _i2.dimensions) == null ? void 0 : _j2.width) || 0, + height: ((_l2 = (_k2 = canvasPages[2].texture) == null ? void 0 : _k2.dimensions) == null ? void 0 : _l2.height) || 0, + texture: canvasPages[2].texture, + textureOptions: {}, + shader: null, + shaderProps: null, + zIndex, + tx: transform.tx, + ty: transform.ty - scrollY + renderWindow.y1 + pageSize + pageSize, + ta: transform.ta, + tb: transform.tb, + tc: transform.tc, + td: transform.td + }); + } + } + setIsRenderable(state, renderable) { + var _a3; + super.setIsRenderable(state, renderable); + (_a3 = state.canvasPages) == null ? void 0 : _a3.forEach((pageInfo) => { + var _a4; + (_a4 = pageInfo.texture) == null ? void 0 : _a4.setRenderableOwner(state, renderable); + }); + } + destroyState(state) { + var _a3; + (_a3 = state.canvasPages) == null ? void 0 : _a3.forEach((pageInfo) => { + var _a4; + (_a4 = pageInfo.texture) == null ? void 0 : _a4.setRenderableOwner(state, false); + }); + } + //#endregion Overrides + /** + * Invalidate the visible window stored in the state. This will cause a new + * visible window to be calculated on the next update. + * + * @param state + */ + invalidateVisibleWindowCache(state) { + state.visibleWindow.valid = false; + this.setStatus(state, "loading"); + this.scheduleUpdateState(state); + } + /** + * Invalidate the layout cache stored in the state. This will cause the text + * to be re-layed out on the next update. + * + * @remarks + * This also invalidates the visible window cache. + * + * @param state + */ + invalidateLayoutCache(state) { + state.renderInfo = void 0; + state.visibleWindow.valid = false; + this.setStatus(state, "loading"); + this.scheduleUpdateState(state); + } + onFontLoaded(state, cssString) { + var _a3; + if (cssString !== ((_a3 = state.fontInfo) == null ? void 0 : _a3.cssString) || !state.fontInfo) { + return; + } + state.fontInfo.loaded = true; + this.scheduleUpdateState(state); + } + onFontLoadError(state, cssString, error) { + var _a3; + if (cssString !== ((_a3 = state.fontInfo) == null ? void 0 : _a3.cssString) || !state.fontInfo) { + return; + } + state.fontInfo.loaded = true; + console.error("CanvasTextRenderer: Error loading font '".concat(state.fontInfo.cssString, "'"), error); + this.scheduleUpdateState(state); + } +} +class DefaultShader extends WebGlCoreShader { + constructor(renderer2) { + super({ + renderer: renderer2, + attributes: ["a_position", "a_textureCoordinate", "a_color"], + uniforms: [ + { name: "u_resolution", uniform: "uniform2fv" }, + { name: "u_pixelRatio", uniform: "uniform1f" }, + { name: "u_texture", uniform: "uniform2fv" } + ] + }); + } + bindTextures(textures) { + const { glw } = this; + glw.activeTexture(0); + glw.bindTexture(textures[0].ctxTexture); + } +} +__publicField(DefaultShader, "shaderSources", { + vertex: "\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio;\n vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);\n\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);\n gl_Position.y = -sign(screenSpace.y) * gl_Position.y;\n }\n ", + fragment: "\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate);\n gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoordinate);\n }\n " +}); +class DefaultShaderBatched extends WebGlCoreShader { + constructor(renderer2) { + super({ + renderer: renderer2, + attributes: [ + "a_position", + "a_textureCoordinate", + "a_color", + "a_textureIndex" + ], + uniforms: [ + { name: "u_resolution", uniform: "uniform2fv" }, + { name: "u_pixelRatio", uniform: "uniform1f" }, + { name: "u_textures[0]", uniform: "uniform1iv" } + ] + }); + __publicField(this, "supportsIndexedTextures", true); + } + bindTextures(texture) { + const { renderer: renderer2, glw } = this; + if (texture.length > renderer2.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS) { + throw new Error("DefaultShaderBatched: Cannot bind more than ".concat(renderer2.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS, " textures")); + } + texture.forEach((t, i) => { + glw.activeTexture(i); + glw.bindTexture(t.ctxTexture); + }); + const samplers = Array.from(Array(texture.length).keys()); + this.setUniform("u_textures[0]", samplers); + } +} +__publicField(DefaultShaderBatched, "shaderSources", { + vertex: "\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n ", + fragment: (textureUnits) => "\n #define txUnits ".concat(textureUnits, "\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_image;\n uniform sampler2D u_textures[txUnits];\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n vec4 sampleFromTexture(sampler2D textures[").concat(textureUnits, "], int idx, vec2 uv) {\n ").concat(Array.from(Array(textureUnits).keys()).map((idx) => "\n ".concat(idx !== 0 ? "else " : "", "if (idx == ").concat(idx, ") {\n return texture2D(textures[").concat(idx, "], uv);\n }\n ")).join(""), "\n return texture2D(textures[0], uv);\n }\n\n void main(){\n gl_FragColor = vec4(v_color) * sampleFromTexture(u_textures, int(v_textureIndex), v_textureCoordinate);\n }\n ") +}); +const effectCache = /* @__PURE__ */ new Map(); +const getResolvedEffect = (effects, effectContructors) => { + const key2 = JSON.stringify(effects); + if (effectCache.has(key2)) { + return effectCache.get(key2); + } + const value = (effects != null ? effects : []).map((effect2) => ({ + type: effect2.type, + props: effectContructors[effect2.type].resolveDefaults(effect2.props || {}) + })); + effectCache.set(key2, value); + return value; +}; +const _DynamicShader = class _DynamicShader extends WebGlCoreShader { + constructor(renderer2, props, effectContructors) { + const shader = _DynamicShader.createShader(props, effectContructors); + super({ + renderer: renderer2, + attributes: ["a_position", "a_textureCoordinate", "a_color"], + uniforms: [ + { name: "u_resolution", uniform: "uniform2fv" }, + { name: "u_pixelRatio", uniform: "uniform1f" }, + { name: "u_texture", uniform: "uniform2fv" }, + { name: "u_dimensions", uniform: "uniform2fv" }, + { name: "u_alpha", uniform: "uniform1f" }, + ...shader.uniforms + ], + shaderSources: { + vertex: shader.vertex, + fragment: shader.fragment + } + }); + __publicField(this, "effects", []); + this.effects = shader.effects; + this.calculateProps = memize(this.calculateProps.bind(this)); + } + bindTextures(textures) { + const { glw } = this; + glw.activeTexture(0); + glw.bindTexture(textures[0].ctxTexture); + } + calculateProps(effects) { + const regEffects = this.renderer.shManager.getRegisteredEffects(); + const results = []; + effects == null ? void 0 : effects.forEach((eff, index) => { + var _a3; + const effect2 = this.effects[index]; + const fxClass = regEffects[effect2.name]; + const props = (_a3 = eff.props) != null ? _a3 : {}; + const uniInfo = effect2.uniformInfo; + Object.keys(props).forEach((p) => { + const fxProp = fxClass.uniforms[p]; + const propInfo = uniInfo[p]; + let value = fxProp.validator ? fxProp.validator(props[p], props) : props[p]; + if (Array.isArray(value)) { + value = new Float32Array(value); + } + results.push({ name: propInfo.name, value }); + }); + }); + return results; + } + bindProps(props) { + const results = this.calculateProps(props.effects); + results.forEach((r) => { + this.setUniform(r.name, r.value); + }); + } + canBatchShaderProps(propsA, propsB) { + if (propsA.$dimensions.width !== propsB.$dimensions.width || propsA.$dimensions.height !== propsB.$dimensions.height || propsA.effects.length !== propsB.effects.length) { + return false; + } + const propsEffectsLen = propsA.effects.length; + let i = 0; + for (; i < propsEffectsLen; i++) { + const effectA = propsA.effects[i]; + const effectB = propsB.effects[i]; + if (effectA.type !== effectB.type) { + return false; + } + for (const key2 in effectA.props) { + if (effectB.props && !effectB.props[key2] || effectA.props[key2] !== effectB.props[key2]) { + return false; + } + } + } + return true; + } + static createShader(props, effectContructors) { + const effectNameCount = {}; + const methods = {}; + let declareUniforms = ""; + const uniforms = []; + const uFx = []; + const effects = props.effects.map((effect2) => { + const baseClass = effectContructors[effect2.type]; + const key2 = baseClass.getEffectKey(effect2.props || {}); + effectNameCount[key2] = effectNameCount[key2] ? ++effectNameCount[key2] : 1; + const nr = effectNameCount[key2]; + if (nr === 1) { + uFx.push({ key: key2, type: effect2.type, props: effect2.props }); + } + const fxClass = new baseClass({ + ref: "".concat(key2).concat(nr === 1 ? "" : nr), + target: key2, + props: effect2.props + }); + declareUniforms += fxClass.declaredUniforms; + uniforms.push(...Object.values(fxClass.uniformInfo)); + return fxClass; + }); + let effectMethods = ""; + uFx == null ? void 0 : uFx.forEach((fx) => { + var _a3; + const fxClass = effectContructors[fx.type]; + const fxProps = fxClass.resolveDefaults((_a3 = fx.props) != null ? _a3 : {}); + const remap = []; + for (const m in fxClass.methods) { + let cm = m; + const fxMethod = fxClass.methods[m]; + if (methods[m] && methods[m] !== fxMethod) { + cm = _DynamicShader.resolveMethodDuplicate(m, fxMethod, methods); + } + methods[cm] = fxMethod.replace("function", cm); + remap.push({ m, cm }); + } + let onShaderMask = fxClass.onShaderMask instanceof Function ? fxClass.onShaderMask(fxProps) : fxClass.onShaderMask; + let onColorize = fxClass.onColorize instanceof Function ? fxClass.onColorize(fxProps) : fxClass.onColorize; + let onEffectMask = fxClass.onEffectMask instanceof Function ? fxClass.onEffectMask(fxProps) : fxClass.onEffectMask; + remap.forEach((r) => { + const { m, cm } = r; + const reg = new RegExp("\\$".concat(m), "g"); + if (onShaderMask) { + onShaderMask = onShaderMask.replace(reg, cm); + } + if (onColorize) { + onColorize = onColorize.replace(reg, cm); + } + if (onEffectMask) { + onEffectMask = onEffectMask.replace(reg, cm); + } + }); + const methodParameters = fxClass.getMethodParameters(fxClass.uniforms, fxProps); + const pm = methodParameters.length > 0 ? ", ".concat(methodParameters) : ""; + if (onShaderMask) { + effectMethods += "\n float fx_".concat(fx.key, "_onShaderMask(float shaderMask ").concat(pm, ") {\n ").concat(onShaderMask, "\n }\n "); + } + if (onColorize) { + effectMethods += "\n vec4 fx_".concat(fx.key, "_onColorize(float shaderMask, vec4 maskColor, vec4 shaderColor").concat(pm, ") {\n ").concat(onColorize, "\n }\n "); + } + if (onEffectMask) { + effectMethods += "\n vec4 fx_".concat(fx.key, "_onEffectMask(float shaderMask, vec4 maskColor, vec4 shaderColor").concat(pm, ") {\n ").concat(onEffectMask, "\n }\n "); + } + }); + let sharedMethods = ""; + for (const m in methods) { + sharedMethods += methods[m]; + } + let currentMask = "mix(shaderColor, maskColor, clamp(-(lng_DefaultMask), 0.0, 1.0))"; + let drawEffects = "\n\n "; + for (let i = 0; i < effects.length; i++) { + const current = effects[i]; + const pm = current.passParameters.length > 0 ? ", ".concat(current.passParameters) : ""; + const currentClass = effectContructors[current.name]; + if (currentClass.onShaderMask) { + drawEffects += "\n shaderMask = fx_".concat(current.target, "_onShaderMask(shaderMask ").concat(pm, ");\n "); + } + if (currentClass.onColorize) { + drawEffects += "\n maskColor = fx_".concat(current.target, "_onColorize(shaderMask, maskColor, shaderColor").concat(pm, ");\n "); + } + if (currentClass.onEffectMask) { + currentMask = "fx_".concat(current.target, "_onEffectMask(shaderMask, maskColor, shaderColor").concat(pm, ")"); + } + const next = effects[i + 1]; + if (next === void 0 || effectContructors[next.name].onEffectMask) { + drawEffects += "\n shaderColor = ".concat(currentMask, ";\n "); + } + } + return { + effects, + uniforms, + fragment: _DynamicShader.fragment(declareUniforms, sharedMethods, effectMethods, drawEffects), + vertex: _DynamicShader.vertex() + }; + } + static resolveMethodDuplicate(key2, effectMethod, methodCollection, increment = 0) { + const m = key2 + (increment > 0 ? increment : ""); + if (methodCollection[m] && methodCollection[m] !== effectMethod) { + return this.resolveMethodDuplicate(key2, effectMethod, methodCollection, ++increment); + } + return m; + } + static resolveDefaults(props, effectContructors) { + return { + effects: getResolvedEffect(props.effects, effectContructors), + $dimensions: { + width: 0, + height: 0 + }, + $alpha: 0 + }; + } + static makeCacheKey(props, effectContructors) { + var _a3; + let fx = ""; + (_a3 = props.effects) == null ? void 0 : _a3.forEach((effect2) => { + const baseClass = effectContructors[effect2.type]; + const key2 = baseClass.getEffectKey(effect2.props || {}); + fx += ",".concat(key2); + }); + return "DynamicShader".concat(fx); + } +}; +__publicField(_DynamicShader, "z$__type__Props"); +__publicField(_DynamicShader, "vertex", () => "\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n "); +__publicField(_DynamicShader, "fragment", (uniforms, methods, effectMethods, drawEffects) => "\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n #define PI 3.14159265359\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_alpha;\n uniform float u_radius;\n uniform sampler2D u_texture;\n uniform float u_pixelRatio;\n\n ".concat(uniforms, "\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n ").concat(methods, "\n\n ").concat(effectMethods, "\n\n void main() {\n vec2 p = v_textureCoordinate.xy * u_dimensions - u_dimensions * 0.5;\n vec2 d = abs(p) - (u_dimensions) * 0.5;\n float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n\n vec4 shaderColor = vec4(0.0);\n float shaderMask = lng_DefaultMask;\n\n vec4 maskColor = texture2D(u_texture, v_textureCoordinate) * v_color;\n\n shaderColor = mix(shaderColor, maskColor, clamp(-(lng_DefaultMask + 0.5), 0.0, 1.0));\n\n ").concat(drawEffects, "\n\n gl_FragColor = shaderColor * u_alpha;\n }\n ")); +let DynamicShader = _DynamicShader; +class RoundedRectangle extends WebGlCoreShader { + constructor(renderer2) { + super({ + renderer: renderer2, + attributes: ["a_position", "a_textureCoordinate", "a_color"], + uniforms: [ + { name: "u_resolution", uniform: "uniform2fv" }, + { name: "u_pixelRatio", uniform: "uniform1f" }, + { name: "u_texture", uniform: "uniform2f" }, + { name: "u_dimensions", uniform: "uniform2fv" }, + { name: "u_radius", uniform: "uniform1f" } + ] + }); + } + static resolveDefaults(props) { + return { + radius: props.radius || 10, + $dimensions: { + width: 0, + height: 0 + } + }; + } + bindTextures(textures) { + const { glw } = this; + glw.activeTexture(0); + glw.bindTexture(textures[0].ctxTexture); + } + bindProps(props) { + this.setUniform("u_radius", props.radius); + } + canBatchShaderProps(propsA, propsB) { + return propsA.radius === propsB.radius && propsA.$dimensions.width === propsB.$dimensions.width && propsA.$dimensions.height === propsB.$dimensions.height; + } +} +__publicField(RoundedRectangle, "z$__type__Props"); +__publicField(RoundedRectangle, "shaderSources", { + vertex: "\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n ", + fragment: "\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_radius;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n float boxDist(vec2 p, vec2 size, float radius){\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n\n float fillMask(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color;\n vec2 halfDimensions = u_dimensions * 0.5;\n\n float d = boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);\n gl_FragColor = mix(vec4(0.0), color, fillMask(d));\n }\n " +}); +const IDENTITY_MATRIX_3x3 = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); +const _SdfShader = class _SdfShader extends WebGlCoreShader { + constructor(renderer2) { + super({ + renderer: renderer2, + attributes: ["a_position", "a_textureCoordinate"], + uniforms: [ + { name: "u_resolution", uniform: "uniform2fv" }, + { name: "u_transform", uniform: "uniformMatrix3fv" }, + { name: "u_scrollY", uniform: "uniform1f" }, + { name: "u_pixelRatio", uniform: "uniform1f" }, + { name: "u_texture", uniform: "uniform2f" }, + { name: "u_color", uniform: "uniform4fv" }, + { name: "u_size", uniform: "uniform1f" }, + { name: "u_distanceRange", uniform: "uniform1f" }, + { name: "u_debug", uniform: "uniform1i" } + ] + }); + } + bindTextures(textures) { + const { glw } = this; + glw.activeTexture(0); + glw.bindTexture(textures[0].ctxTexture); + } + bindProps(props) { + const resolvedProps = _SdfShader.resolveDefaults(props); + for (const key2 in resolvedProps) { + if (key2 === "transform") { + this.setUniform("u_transform", false, resolvedProps[key2]); + } else if (key2 === "scrollY") { + this.setUniform("u_scrollY", resolvedProps[key2]); + } else if (key2 === "color") { + const components = getNormalizedRgbaComponents(resolvedProps.color); + this.setUniform("u_color", components); + } else if (key2 === "size") { + this.setUniform("u_size", resolvedProps[key2]); + } else if (key2 === "distanceRange") { + this.setUniform("u_distanceRange", resolvedProps[key2]); + } else if (key2 === "debug") { + this.setUniform("u_debug", resolvedProps[key2] ? 1 : 0); + } + } + } + static resolveDefaults(props = {}) { + var _a3, _b2, _c2, _d2, _e2, _f2; + return { + transform: (_a3 = props.transform) != null ? _a3 : IDENTITY_MATRIX_3x3, + scrollY: (_b2 = props.scrollY) != null ? _b2 : 0, + color: (_c2 = props.color) != null ? _c2 : 4294967295, + size: (_d2 = props.size) != null ? _d2 : 16, + distanceRange: (_e2 = props.distanceRange) != null ? _e2 : 1, + debug: (_f2 = props.debug) != null ? _f2 : false + }; + } +}; +__publicField(_SdfShader, "shaderSources", { + vertex: "\n // an attribute is an input (in) to a vertex shader.\n // It will receive data from a buffer\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n\n uniform vec2 u_resolution;\n uniform mat3 u_transform;\n uniform float u_scrollY;\n uniform float u_pixelRatio;\n uniform float u_size;\n\n varying vec2 v_texcoord;\n\n void main() {\n vec2 scrolledPosition = a_position * u_size - vec2(0, u_scrollY);\n vec2 transformedPosition = (u_transform * vec3(scrolledPosition, 1)).xy;\n\n // Calculate screen space with pixel ratio\n vec2 screenSpace = (transformedPosition * u_pixelRatio / u_resolution * 2.0 - 1.0) * vec2(1, -1);\n\n gl_Position = vec4(screenSpace, 0.0, 1.0);\n v_texcoord = a_textureCoordinate;\n\n }\n ", + fragment: "\n precision highp float;\n\n uniform vec4 u_color;\n uniform sampler2D u_texture;\n uniform float u_distanceRange;\n uniform float u_pixelRatio;\n uniform int u_debug;\n\n varying vec2 v_texcoord;\n\n float median(float r, float g, float b) {\n return max(min(r, g), min(max(r, g), b));\n }\n\n void main() {\n vec3 sample = texture2D(u_texture, v_texcoord).rgb;\n if (u_debug == 1) {\n gl_FragColor = vec4(sample.r, sample.g, sample.b, 1.0);\n return;\n }\n float scaledDistRange = u_distanceRange * u_pixelRatio;\n float sigDist = scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);\n float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_color.a;\n\n // Build the final color.\n // IMPORTANT: We must premultiply the color by the alpha value before returning it.\n gl_FragColor = vec4(u_color.r * opacity, u_color.g * opacity, u_color.b * opacity, opacity);\n }\n " +}); +let SdfShader = _SdfShader; +class RadiusEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "radius"); + } + static getEffectKey() { + return "radius"; + } + static resolveDefaults(props) { + var _a3; + return { + radius: (_a3 = props.radius) != null ? _a3 : 10 + }; + } +} +__publicField(RadiusEffect, "z$__type__Props"); +__publicField(RadiusEffect, "uniforms", { + radius: { + value: 0, + method: "uniform4fv", + type: "vec4", + validator: (value) => { + let r = value; + if (Array.isArray(r)) { + if (r.length === 2) { + r = [r[0], r[1], r[0], r[1]]; + } else if (r.length === 3) { + r = [r[0], r[1], r[2], r[0]]; + } else if (r.length !== 4) { + r = [r[0], r[0], r[0], r[0]]; + } + } else if (typeof r === "number") { + r = [r, r, r, r]; + } + return r; + } + } +}); +__publicField(RadiusEffect, "methods", { + fillMask: "\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ", + boxDist: "\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n " +}); +__publicField(RadiusEffect, "onShaderMask", "\n vec2 halfDimensions = u_dimensions * 0.5;\n float r = radius[0] * step(v_textureCoordinate.x, 0.5) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[1] * step(0.5, v_textureCoordinate.x) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[2] * step(0.5, v_textureCoordinate.x) * step(0.5, v_textureCoordinate.y);\n r = r + radius[3] * step(v_textureCoordinate.x, 0.5) * step(0.5, v_textureCoordinate.y);\n return $boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions, r);\n "); +__publicField(RadiusEffect, "onEffectMask", "\n return mix(vec4(0.0), maskColor, $fillMask(shaderMask));\n "); +class BorderEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "border"); + } + static getEffectKey() { + return "border"; + } + static resolveDefaults(props) { + var _a3, _b2; + return { + width: (_a3 = props.width) != null ? _a3 : 10, + color: (_b2 = props.color) != null ? _b2 : 4294967295 + }; + } +} +__publicField(BorderEffect, "z$__type__Props"); +__publicField(BorderEffect, "uniforms", { + width: { + value: 0, + method: "uniform1f", + type: "float" + }, + color: { + value: 4294967295, + validator: (rgba) => getNormalizedRgbaComponents(rgba), + method: "uniform4fv", + type: "vec4" + } +}); +__publicField(BorderEffect, "onEffectMask", "\n float mask = clamp(shaderMask + width, 0.0, 1.0) - clamp(shaderMask, 0.0, 1.0);\n return mix(shaderColor, mix(shaderColor, maskColor, maskColor.a), mask);\n "); +__publicField(BorderEffect, "onColorize", "\n return color;\n "); +const _LinearGradientEffect = class _LinearGradientEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "linearGradient"); + } + static getEffectKey(props) { + return "linearGradient".concat(props.colors.length); + } + static resolveDefaults(props) { + var _a3, _b2; + const colors = (_a3 = props.colors) != null ? _a3 : [4278190080, 4294967295]; + let stops = props.stops || []; + if (stops.length === 0 || stops.length !== colors.length) { + const colorsL = colors.length; + let i = 0; + const tmp = stops; + for (; i < colorsL; i++) { + if (stops[i]) { + tmp[i] = stops[i]; + if (stops[i - 1] === void 0 && tmp[i - 2] !== void 0) { + tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2; + } + } else { + tmp[i] = i * (1 / (colors.length - 1)); + } + } + stops = tmp; + } + return { + colors, + stops, + angle: (_b2 = props.angle) != null ? _b2 : 0 + }; + } +}; +__publicField(_LinearGradientEffect, "z$__type__Props"); +__publicField(_LinearGradientEffect, "uniforms", { + angle: { + value: 0, + method: "uniform1f", + type: "float" + }, + colors: { + value: 4294967295, + validator: (rgbas) => { + const cols = rgbas.map((rgbas2) => getNormalizedRgbaComponents(rgbas2)); + return cols.reduce((acc, val) => acc.concat(val), []); + }, + size: (props) => props.colors.length, + method: "uniform4fv", + type: "vec4" + }, + stops: { + value: [], + size: (props) => props.colors.length, + method: "uniform1fv", + type: "float" + } +}); +__publicField(_LinearGradientEffect, "methods", { + fromLinear: "\n vec4 function(vec4 linearRGB) {\n vec4 higher = vec4(1.055)*pow(linearRGB, vec4(1.0/2.4)) - vec4(0.055);\n vec4 lower = linearRGB * vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n ", + toLinear: "\n vec4 function(vec4 sRGB) {\n vec4 higher = pow((sRGB + vec4(0.055))/vec4(1.055), vec4(2.4));\n vec4 lower = sRGB/vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n ", + calcPoint: "\n vec2 function(float d, float angle) {\n return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);\n }\n " +}); +__publicField(_LinearGradientEffect, "ColorLoop", (amount) => { + let loop = ""; + for (let i = 2; i < amount; i++) { + loop += "colorOut = mix(colorOut, colors[".concat(i, "], clamp((dist - stops[").concat(i - 1, "]) / (stops[").concat(i, "] - stops[").concat(i - 1, "]), 0.0, 1.0));"); + } + return loop; +}); +__publicField(_LinearGradientEffect, "onColorize", (props) => { + const colors = props.colors.length || 1; + return "\n float a = angle - (PI / 180.0 * 90.0);\n float lineDist = abs(u_dimensions.x * cos(a)) + abs(u_dimensions.y * sin(a));\n vec2 f = $calcPoint(lineDist * 0.5, a);\n vec2 t = $calcPoint(lineDist * 0.5, a + PI);\n vec2 gradVec = t - f;\n float dist = dot(v_textureCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = $fromLinear(mix($toLinear(colors[0]), $toLinear(colors[1]), stopCalc));\n ".concat(_LinearGradientEffect.ColorLoop(colors), "\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n "); +}); +let LinearGradientEffect = _LinearGradientEffect; +class GrayscaleEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "grayscale"); + } + static getEffectKey() { + return "grayscale"; + } + static resolveDefaults(props) { + var _a3; + return { + amount: (_a3 = props.amount) != null ? _a3 : 1 + }; + } +} +__publicField(GrayscaleEffect, "uniforms", { + amount: { + value: 1, + method: "uniform1f", + type: "float" + } +}); +__publicField(GrayscaleEffect, "onColorize", "\n float grayness = 0.2 * maskColor.r + 0.6 * maskColor.g + 0.2 * maskColor.b;\n return vec4(amount * vec3(grayness) + (1.0 - amount) * maskColor.rgb, maskColor.a);\n "); +class BorderRightEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "borderRight"); + } + static getEffectKey() { + return "borderRight"; + } + static resolveDefaults(props) { + var _a3, _b2; + return { + width: (_a3 = props.width) != null ? _a3 : 10, + color: (_b2 = props.color) != null ? _b2 : 4294967295 + }; + } +} +__publicField(BorderRightEffect, "z$__type__Props"); +__publicField(BorderRightEffect, "uniforms", { + width: { + value: 0, + method: "uniform1f", + type: "float" + }, + color: { + value: 4294967295, + validator: (rgba) => getNormalizedRgbaComponents(rgba), + method: "uniform4fv", + type: "vec4" + } +}); +__publicField(BorderRightEffect, "methods", { + fillMask: "\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ", + rectDist: "\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n " +}); +__publicField(BorderRightEffect, "onEffectMask", "\n vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "); +__publicField(BorderRightEffect, "onColorize", "\n return color;\n "); +class BorderTopEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "borderTop"); + } + static getEffectKey() { + return "borderTop"; + } + static resolveDefaults(props) { + var _a3, _b2; + return { + width: (_a3 = props.width) != null ? _a3 : 10, + color: (_b2 = props.color) != null ? _b2 : 4294967295 + }; + } +} +__publicField(BorderTopEffect, "z$__type__Props"); +__publicField(BorderTopEffect, "uniforms", { + width: { + value: 0, + method: "uniform1f", + type: "float" + }, + color: { + value: 4294967295, + validator: (rgba) => getNormalizedRgbaComponents(rgba), + method: "uniform4fv", + type: "vec4" + } +}); +__publicField(BorderTopEffect, "methods", { + fillMask: "\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ", + rectDist: "\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n " +}); +__publicField(BorderTopEffect, "onEffectMask", "\n vec2 pos = vec2(0.0, width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "); +__publicField(BorderTopEffect, "onColorize", "\n return color;\n "); +class BorderBottomEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "borderBottom"); + } + static getEffectKey() { + return "borderBottom"; + } + static resolveDefaults(props) { + var _a3, _b2; + return { + width: (_a3 = props.width) != null ? _a3 : 10, + color: (_b2 = props.color) != null ? _b2 : 4294967295 + }; + } +} +__publicField(BorderBottomEffect, "z$__type__Props"); +__publicField(BorderBottomEffect, "uniforms", { + width: { + value: 0, + method: "uniform1f", + type: "float" + }, + color: { + value: 4294967295, + validator: (rgba) => getNormalizedRgbaComponents(rgba), + method: "uniform4fv", + type: "vec4" + } +}); +__publicField(BorderBottomEffect, "methods", { + fillMask: "\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ", + rectDist: "\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n " +}); +__publicField(BorderBottomEffect, "onEffectMask", "\n vec2 pos = vec2(0.0, u_dimensions.y - width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "); +__publicField(BorderBottomEffect, "onColorize", "\n return color;\n "); +class BorderLeftEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "borderLeft"); + } + static getEffectKey() { + return "borderLeft"; + } + static resolveDefaults(props) { + var _a3, _b2; + return { + width: (_a3 = props.width) != null ? _a3 : 10, + color: (_b2 = props.color) != null ? _b2 : 4294967295 + }; + } +} +__publicField(BorderLeftEffect, "z$__type__Props"); +__publicField(BorderLeftEffect, "uniforms", { + width: { + value: 0, + method: "uniform1f", + type: "float" + }, + color: { + value: 4294967295, + validator: (rgba) => getNormalizedRgbaComponents(rgba), + method: "uniform4fv", + type: "vec4" + } +}); +__publicField(BorderLeftEffect, "methods", { + fillMask: "\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ", + rectDist: "\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n " +}); +__publicField(BorderLeftEffect, "onEffectMask", "\n vec2 pos = vec2(width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "); +__publicField(BorderLeftEffect, "onColorize", "\n return color;\n "); +class GlitchEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "glitch"); + } + static getEffectKey(props) { + return "glitch"; + } + static resolveDefaults(props) { + var _a3, _b2, _c2, _d2, _e2; + return { + amplitude: (_a3 = props.amplitude) != null ? _a3 : 0.2, + narrowness: (_b2 = props.narrowness) != null ? _b2 : 4, + blockiness: (_c2 = props.blockiness) != null ? _c2 : 2, + minimizer: (_d2 = props.minimizer) != null ? _d2 : 8, + time: (_e2 = props.time) != null ? _e2 : Date.now() + }; + } +} +__publicField(GlitchEffect, "z$__type__Props"); +__publicField(GlitchEffect, "uniforms", { + amplitude: { + value: 0, + method: "uniform1f", + type: "float" + }, + narrowness: { + value: 0, + method: "uniform1f", + type: "float" + }, + blockiness: { + value: 0, + method: "uniform1f", + type: "float" + }, + minimizer: { + value: 0, + method: "uniform1f", + type: "float" + }, + time: { + value: 0, + method: "uniform1f", + validator: (value) => { + return (Date.now() - value) % 1e3; + }, + type: "float" + } +}); +__publicField(GlitchEffect, "methods", { + rand: "\n float function(vec2 p, float time) {\n float t = floor(time * 20.) / 10.;\n return fract(sin(dot(p, vec2(t * 12.9898, t * 78.233))) * 43758.5453);\n }\n ", + noise: "\n float function(vec2 uv, float blockiness, float time) {\n vec2 lv = fract(uv);\n vec2 id = floor(uv);\n\n float n1 = rand(id, time);\n float n2 = rand(id+vec2(1,0), time);\n float n3 = rand(id+vec2(0,1), time);\n float n4 = rand(id+vec2(1,1), time);\n vec2 u = smoothstep(0.0, 1.0 + blockiness, lv);\n return mix(mix(n1, n2, u.x), mix(n3, n4, u.x), u.y);\n }\n ", + fbm: "\n float function(vec2 uv, int count, float blockiness, float complexity, float time) {\n float val = 0.0;\n float amp = 0.5;\n const int MAX_ITERATIONS = 10;\n\n for(int i = 0; i < MAX_ITERATIONS; i++) {\n if(i >= count) {break;}\n val += amp * noise(uv, blockiness, time);\n amp *= 0.5;\n uv *= complexity;\n }\n return val;\n }\n " +}); +__publicField(GlitchEffect, "onColorize", "\n vec2 uv = v_textureCoordinate.xy;\n float aspect = u_dimensions.x / u_dimensions.y;\n vec2 a = vec2(uv.x * aspect , uv.y);\n vec2 uv2 = vec2(a.x / u_dimensions.x, exp(a.y));\n\n float shift = amplitude * pow($fbm(uv2, 4, blockiness, narrowness, time), minimizer);\n float colR = texture2D(u_texture, vec2(uv.x + shift, uv.y)).r * (1. - shift);\n float colG = texture2D(u_texture, vec2(uv.x - shift, uv.y)).g * (1. - shift);\n float colB = texture2D(u_texture, vec2(uv.x - shift, uv.y)).b * (1. - shift);\n\n vec3 f = vec3(colR, colG, colB);\n return vec4(f, texture2D(u_texture, vec2(uv.x - shift, uv.y)).a);\n "); +class FadeOutEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "fadeOut"); + } + static getEffectKey() { + return "fadeOut"; + } + static resolveDefaults(props) { + var _a3; + return { + fade: (_a3 = props.fade) != null ? _a3 : 10 + }; + } +} +__publicField(FadeOutEffect, "z$__type__Props"); +__publicField(FadeOutEffect, "uniforms", { + fade: { + value: 0, + method: "uniform4fv", + type: "vec4", + validator: (value) => { + let r = value; + if (Array.isArray(r)) { + if (r.length === 2) { + r = [r[0], r[1], r[0], r[1]]; + } else if (r.length === 3) { + r = [r[0], r[1], r[2], r[0]]; + } else if (r.length !== 4) { + r = [r[0], r[0], r[0], r[0]]; + } + } else if (typeof r === "number") { + r = [r, r, r, r]; + } + return r; + } + } +}); +__publicField(FadeOutEffect, "onColorize", "\n vec2 point = v_textureCoordinate.xy * u_dimensions.xy;\n vec2 pos1;\n vec2 pos2;\n vec2 d;\n float c;\n vec4 result = maskColor;\n\n\n if(fade[0] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x, point.y + fade[0]);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[1] > 0.0) {\n pos1 = vec2(point.x - u_dimensions.x - fade[1], v_textureCoordinate.y);\n pos2 = vec2(point.x - u_dimensions.x, v_textureCoordinate.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[2] > 0.0) {\n pos1 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y - fade[2]);\n pos2 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[3] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x + fade[3], point.y);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n return result;\n "); +const _RadialGradientEffect = class _RadialGradientEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "radialGradient"); + } + static getEffectKey(props) { + return "radialGradient".concat(props.colors.length); + } + static resolveDefaults(props) { + var _a3, _b2, _c2, _d2, _e2; + const colors = (_a3 = props.colors) != null ? _a3 : [4278190080, 4294967295]; + let stops = props.stops || []; + if (stops.length === 0 || stops.length !== colors.length) { + const colorsL = colors.length; + let i = 0; + const tmp = stops; + for (; i < colorsL; i++) { + if (stops[i]) { + tmp[i] = stops[i]; + if (stops[i - 1] === void 0 && tmp[i - 2] !== void 0) { + tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2; + } + } else { + tmp[i] = i * (1 / (colors.length - 1)); + } + } + stops = tmp; + } + return { + colors, + stops, + width: (_b2 = props.width) != null ? _b2 : 0, + height: (_d2 = (_c2 = props.height) != null ? _c2 : props.width) != null ? _d2 : 0, + pivot: (_e2 = props.pivot) != null ? _e2 : [0.5, 0.5] + }; + } +}; +__publicField(_RadialGradientEffect, "z$__type__Props"); +__publicField(_RadialGradientEffect, "uniforms", { + width: { + value: 0, + method: "uniform1f", + type: "float" + }, + height: { + value: 0, + method: "uniform1f", + type: "float" + }, + pivot: { + value: [0.5, 0.5], + method: "uniform2fv", + type: "vec2" + }, + colors: { + value: 4294967295, + validator: (rgbas) => { + const cols = rgbas.map((rgbas2) => getNormalizedRgbaComponents(rgbas2)); + return cols.reduce((acc, val) => acc.concat(val), []); + }, + size: (props) => props.colors.length, + method: "uniform4fv", + type: "vec4" + }, + stops: { + value: [], + size: (props) => props.colors.length, + method: "uniform1fv", + type: "float" + } +}); +__publicField(_RadialGradientEffect, "ColorLoop", (amount) => { + let loop = ""; + for (let i = 2; i < amount; i++) { + loop += "colorOut = mix(colorOut, colors[".concat(i, "], clamp((dist - stops[").concat(i - 1, "]) / (stops[").concat(i, "] - stops[").concat(i - 1, "]), 0.0, 1.0));"); + } + return loop; +}); +__publicField(_RadialGradientEffect, "onColorize", (props) => { + const colors = props.colors.length || 1; + return "\n vec2 point = v_textureCoordinate.xy * u_dimensions;\n vec2 projection = vec2(pivot.x * u_dimensions.x, pivot.y * u_dimensions.y);\n\n float dist = length((point - projection) / vec2(width, height));\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = mix(colors[0], colors[1], stopCalc);\n ".concat(_RadialGradientEffect.ColorLoop(colors), "\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n "); +}); +let RadialGradientEffect = _RadialGradientEffect; +class RadialProgressEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "radialProgress"); + } + static getEffectKey() { + return "radialProgress"; + } + static resolveDefaults(props) { + var _a3, _b2, _c2, _d2, _e2, _f2, _g2; + return { + width: (_a3 = props.width) != null ? _a3 : 10, + progress: (_b2 = props.progress) != null ? _b2 : 0.5, + offset: (_c2 = props.offset) != null ? _c2 : 0, + range: (_d2 = props.range) != null ? _d2 : Math.PI * 2, + rounded: (_e2 = props.rounded) != null ? _e2 : false, + radius: (_f2 = props.radius) != null ? _f2 : 1, + color: (_g2 = props.color) != null ? _g2 : 4294967295 + }; + } +} +__publicField(RadialProgressEffect, "z$__type__Props"); +__publicField(RadialProgressEffect, "uniforms", { + width: { + value: 0, + method: "uniform1f", + type: "float" + }, + progress: { + value: 0.5, + method: "uniform1f", + type: "float" + }, + offset: { + value: 0, + method: "uniform1f", + type: "float" + }, + range: { + value: 0, + method: "uniform1f", + type: "float" + }, + rounded: { + value: 0, + method: "uniform1f", + type: "float", + validator: (value) => { + return value ? 1 : 0; + } + }, + radius: { + value: 1, + method: "uniform1f", + type: "float" + }, + color: { + value: 4294967295, + validator: (rgba) => getNormalizedRgbaComponents(rgba), + method: "uniform4fv", + type: "vec4" + } +}); +__publicField(RadialProgressEffect, "methods", { + rotateUV: "\n vec2 function(vec2 uv, float d) {\n float s = sin(d);\n float c = cos(d);\n mat2 rotMatrix = mat2(c, -s, s, c);\n return uv * rotMatrix;\n }\n ", + drawDot: "\n float function(vec2 uv, vec2 p, float r) {\n uv += p;\n float circle = length(uv) - r;\n return clamp(-circle, 0.0, 1.0);\n }\n " +}); +__publicField(RadialProgressEffect, "onEffectMask", "\n float outerRadius = radius * u_dimensions.y * 0.5;\n\n float endAngle = range * progress - 0.0005;\n\n vec2 uv = v_textureCoordinate.xy * u_dimensions.xy - u_dimensions * 0.5;\n\n uv = $rotateUV(uv, -(offset));\n float linewidth = width * u_pixelRatio;\n float circle = length(uv) - (outerRadius - linewidth) ;\n circle = abs(circle) - linewidth;\n circle = clamp(-circle, 0.0, 1.0);\n\n float angle = (atan(uv.x, -uv.y) / 3.14159265359 * 0.5);\n float p = endAngle / (PI * 2.);\n\n circle *= step(fract(angle), fract(p));\n\n circle = rounded < 1. ? circle : max(circle, $drawDot(uv, vec2(0, outerRadius - linewidth), linewidth));\n circle = rounded < 1. ? circle : max(circle, $drawDot($rotateUV(uv, -(endAngle)), vec2(0, outerRadius - linewidth), linewidth));\n\n return mix(shaderColor, maskColor, circle);\n "); +__publicField(RadialProgressEffect, "onColorize", "\n return color;\n "); +class HolePunchEffect extends ShaderEffect { + constructor() { + super(...arguments); + __publicField(this, "name", "holePunch"); + } + static getEffectKey() { + return "holePunch"; + } + static resolveDefaults(props) { + var _a3; + return { + x: props.x || 0, + y: props.y || 0, + width: props.width || 50, + height: props.height || 50, + radius: (_a3 = props.radius) != null ? _a3 : 0 + }; + } +} +__publicField(HolePunchEffect, "z$__type__Props"); +__publicField(HolePunchEffect, "uniforms", { + x: { + value: 0, + method: "uniform1f", + type: "float" + }, + y: { + value: 0, + method: "uniform1f", + type: "float" + }, + width: { + value: 0, + method: "uniform1f", + type: "float" + }, + height: { + value: 0, + method: "uniform1f", + type: "float" + }, + radius: { + value: 0, + method: "uniform4fv", + type: "vec4", + validator: (value) => { + let r = value; + if (Array.isArray(r)) { + if (r.length === 2) { + r = [r[0], r[1], r[0], r[1]]; + } else if (r.length === 3) { + r = [r[0], r[1], r[2], r[0]]; + } else if (r.length !== 4) { + r = [r[0], r[0], r[0], r[0]]; + } + } else if (typeof r === "number") { + r = [r, r, r, r]; + } + return r; + } + } +}); +__publicField(HolePunchEffect, "methods", { + fillMask: "\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ", + boxDist: "\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n " +}); +__publicField(HolePunchEffect, "onShaderMask", "\n vec2 halfDimensions = u_dimensions * 0.5;\n vec2 size = vec2(width, height) * 0.5;\n vec2 basePos = v_textureCoordinate.xy * u_dimensions.xy - vec2(x, y);\n vec2 pos = basePos - size;\n float r = radius[0] * step(pos.x, 0.5) * step(pos.y, 0.5);\n r = r + radius[1] * step(0.5, pos.x) * step(pos.y, 0.5);\n r = r + radius[2] * step(0.5, pos.x) * step(0.5, pos.y);\n r = r + radius[3] * step(pos.x, 0.5) * step(0.5, pos.y);\n return $boxDist(pos, size, r);\n "); +__publicField(HolePunchEffect, "onEffectMask", "\n return mix(maskColor, vec4(0.0), $fillMask(shaderMask));\n "); +class CoreShaderManager { + constructor() { + __publicField(this, "shCache", /* @__PURE__ */ new Map()); + __publicField(this, "shConstructors", {}); + __publicField(this, "attachedShader", null); + __publicField(this, "effectConstructors", {}); + __publicField(this, "renderer"); + this.registerShaderType("DefaultShader", DefaultShader); + this.registerShaderType("DefaultShaderBatched", DefaultShaderBatched); + this.registerShaderType("RoundedRectangle", RoundedRectangle); + this.registerShaderType("DynamicShader", DynamicShader); + this.registerShaderType("SdfShader", SdfShader); + this.registerEffectType("border", BorderEffect); + this.registerEffectType("borderBottom", BorderBottomEffect); + this.registerEffectType("borderLeft", BorderLeftEffect); + this.registerEffectType("borderRight", BorderRightEffect); + this.registerEffectType("borderTop", BorderTopEffect); + this.registerEffectType("fadeOut", FadeOutEffect); + this.registerEffectType("linearGradient", LinearGradientEffect); + this.registerEffectType("radialGradient", RadialGradientEffect); + this.registerEffectType("grayscale", GrayscaleEffect); + this.registerEffectType("glitch", GlitchEffect); + this.registerEffectType("radius", RadiusEffect); + this.registerEffectType("radialProgress", RadialProgressEffect); + this.registerEffectType("holePunch", HolePunchEffect); + } + registerShaderType(shType, shClass) { + this.shConstructors[shType] = shClass; + } + registerEffectType(effectType, effectClass) { + this.effectConstructors[effectType] = effectClass; + } + getRegisteredEffects() { + return this.effectConstructors; + } + getRegisteredShaders() { + return this.shConstructors; + } + loadShader(shType, props) { + if (!this.renderer) { + throw new Error("Renderer is not been defined"); + } + const ShaderClass = this.shConstructors[shType]; + if (!ShaderClass) { + throw new Error('Shader type "'.concat(shType, '" is not registered')); + } + if (shType === "DynamicShader") { + return this.loadDynamicShader(props); + } + const resolvedProps = ShaderClass.resolveDefaults(props); + const cacheKey = ShaderClass.makeCacheKey(resolvedProps) || ShaderClass.name; + if (cacheKey && this.shCache.has(cacheKey)) { + return { + shader: this.shCache.get(cacheKey), + props: resolvedProps + }; + } + const shader = new ShaderClass(this.renderer, props); + if (cacheKey) { + this.shCache.set(cacheKey, shader); + } + return { + shader, + props: resolvedProps + }; + } + loadDynamicShader(props) { + if (!this.renderer) { + throw new Error("Renderer is not been defined"); + } + const resolvedProps = DynamicShader.resolveDefaults(props, this.effectConstructors); + const cacheKey = DynamicShader.makeCacheKey(resolvedProps, this.effectConstructors); + if (cacheKey && this.shCache.has(cacheKey)) { + return { + shader: this.shCache.get(cacheKey), + props: resolvedProps + }; + } + const shader = new DynamicShader(this.renderer, props, this.effectConstructors); + if (cacheKey) { + this.shCache.set(cacheKey, shader); + } + return { + shader, + props: resolvedProps + }; + } + useShader(shader) { + if (this.attachedShader === shader) { + return; + } + if (this.attachedShader) { + this.attachedShader.detach(); + } + shader.attach(); + this.attachedShader = shader; + } +} +class ContextSpy { + constructor() { + __publicField(this, "data", {}); + } + reset() { + this.data = {}; + } + increment(name) { + if (!this.data[name]) { + this.data[name] = 0; + } + this.data[name]++; + } + getData() { + return { ...this.data }; + } +} +function isCompressedTextureContainer(url) { + return /\.(ktx|pvr)$/.test(url); +} +const loadCompressedTexture = async (url) => { + const response = await fetch(url); + const arrayBuffer = await response.arrayBuffer(); + if (url.indexOf(".ktx") !== -1) { + return loadKTXData(arrayBuffer); + } + return loadPVRData(arrayBuffer); +}; +const loadKTXData = async (buffer) => { + const view = new DataView(buffer); + const littleEndian = view.getUint32(12) === 16909060 ? true : false; + const mipmaps = []; + const data = { + glInternalFormat: view.getUint32(28, littleEndian), + pixelWidth: view.getUint32(36, littleEndian), + pixelHeight: view.getUint32(40, littleEndian), + numberOfMipmapLevels: view.getUint32(56, littleEndian), + bytesOfKeyValueData: view.getUint32(60, littleEndian) + }; + let offset = 64; + offset += data.bytesOfKeyValueData; + for (let i = 0; i < data.numberOfMipmapLevels; i++) { + const imageSize = view.getUint32(offset); + offset += 4; + mipmaps.push(view.buffer.slice(offset, imageSize)); + offset += imageSize; + } + return { + data: { + glInternalFormat: data.glInternalFormat, + mipmaps, + width: data.pixelWidth || 0, + height: data.pixelHeight || 0, + type: "ktx" + }, + premultiplyAlpha: false + }; +}; +const loadPVRData = async (buffer) => { + const pvrHeaderLength = 13; + const pvrFormatEtc1 = 36196; + const pvrWidth = 7; + const pvrHeight = 6; + const pvrMipmapCount = 11; + const pvrMetadata = 12; + const arrayBuffer = buffer; + const header = new Int32Array(arrayBuffer, 0, pvrHeaderLength); + const dataOffset = header[pvrMetadata] + 52; + const pvrtcData = new Uint8Array(arrayBuffer, dataOffset); + const mipmaps = []; + const data = { + pixelWidth: header[pvrWidth], + pixelHeight: header[pvrHeight], + numberOfMipmapLevels: header[pvrMipmapCount] || 0 + }; + let offset = 0; + let width = data.pixelWidth || 0; + let height = data.pixelHeight || 0; + for (let i = 0; i < data.numberOfMipmapLevels; i++) { + const level = (width + 3 >> 2) * (height + 3 >> 2) * 8; + const view = new Uint8Array(arrayBuffer, pvrtcData.byteOffset + offset, level); + mipmaps.push(view); + offset += level; + width = width >> 1; + height = height >> 1; + } + return { + data: { + glInternalFormat: pvrFormatEtc1, + mipmaps, + width: data.pixelWidth || 0, + height: data.pixelHeight || 0, + type: "pvr" + }, + premultiplyAlpha: false + }; +}; +const _ImageTexture = class _ImageTexture extends Texture { + constructor(txManager, props) { + super(txManager); + __publicField(this, "props"); + this.props = _ImageTexture.resolveDefaults(props); + } + hasAlphaChannel(mimeType) { + return mimeType.indexOf("image/png") !== -1; + } + async getTextureData() { + const { src, premultiplyAlpha } = this.props; + if (!src) { + return { + data: null + }; + } + if (src instanceof ImageData) { + return { + data: src, + premultiplyAlpha + }; + } + if (isCompressedTextureContainer(src)) { + return loadCompressedTexture(src); + } + if (this.txManager.imageWorkerManager) { + return await this.txManager.imageWorkerManager.getImage(src, premultiplyAlpha); + } else if (this.txManager.hasCreateImageBitmap) { + const response = await fetch(src); + const blob = await response.blob(); + const hasAlphaChannel = premultiplyAlpha != null ? premultiplyAlpha : this.hasAlphaChannel(blob.type); + return { + data: await createImageBitmap(blob, { + premultiplyAlpha: hasAlphaChannel ? "premultiply" : "none", + colorSpaceConversion: "none", + imageOrientation: "none" + }), + premultiplyAlpha: hasAlphaChannel + }; + } else { + const img = new Image(); + if (!(src.substr(0, 5) == "data:")) { + img.crossOrigin = "Anonymous"; + } + img.src = src; + await new Promise((resolve, reject) => { + img.onload = () => resolve(); + img.onerror = () => reject(new Error("Failed to load image")); + }).catch((e) => { + console.error(e); + }); + return { + data: img, + premultiplyAlpha: premultiplyAlpha != null ? premultiplyAlpha : true + }; + } + } + static makeCacheKey(props) { + const resolvedProps = _ImageTexture.resolveDefaults(props); + if (resolvedProps.src instanceof ImageData) { + return false; + } + return "ImageTexture,".concat(resolvedProps.src, ",").concat(resolvedProps.premultiplyAlpha); + } + static resolveDefaults(props) { + var _a3, _b2; + return { + src: (_a3 = props.src) != null ? _a3 : "", + premultiplyAlpha: (_b2 = props.premultiplyAlpha) != null ? _b2 : true + // null, + }; + } +}; +__publicField(_ImageTexture, "z$__type__Props"); +let ImageTexture = _ImageTexture; +const FLOATS_PER_GLYPH = 24; +function getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH) { + const startLineIndex = Math.min(Math.max(renderWindow.firstLineIdx, 0), lineCache.length); + const sdfStartX = 0; + let sdfVerticalAlignYOffset = 0; + if (verticalAlign === "middle") { + sdfVerticalAlignYOffset = (sdfLineHeight - sdfFontSize) / 2; + } else if (verticalAlign === "bottom") { + sdfVerticalAlignYOffset = sdfLineHeight - sdfFontSize; + } + const sdfOffsetY = offsetY / fontSizeRatio; + const sdfStartY = sdfOffsetY + startLineIndex * sdfLineHeight + sdfVerticalAlignYOffset; + if (textH && sdfStartY >= textH / fontSizeRatio) { + return; + } + return { + sdfX: sdfStartX, + sdfY: sdfStartY, + lineIndex: startLineIndex + }; +} +class PeekableIterator { + constructor(iterator, indexBase = 0) { + __publicField(this, "iterator"); + __publicField(this, "peekBuffer", []); + __publicField(this, "_lastIndex"); + this.iterator = iterator; + this.iterator = iterator; + this._lastIndex = indexBase - 1; + this.peekBuffer = []; + } + next() { + const nextResult = this.peekBuffer.length > 0 ? ( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.peekBuffer.pop() + ) : this.iterator.next(); + if (nextResult.done) { + this._lastIndex = -1; + } else { + this._lastIndex++; + } + return nextResult; + } + peek() { + if (this.peekBuffer.length > 0) { + return this.peekBuffer[0]; + } + const result = this.iterator.next(); + this.peekBuffer.push(result); + return result; + } + get lastIndex() { + return this._lastIndex; + } +} +function* getUnicodeCodepoints(text2, start = 0) { + let i = start; + while (i < text2.length) { + const codePoint = text2.codePointAt(i); + if (codePoint === void 0) { + throw new Error("Invalid Unicode code point"); + } + yield codePoint; + i += codePoint <= 65535 ? 1 : 2; + } +} +function measureText(text2, shaperProps, shaper) { + const glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text2, 0), 0)); + let width = 0; + for (const glyph of glyphs) { + if (glyph.mapped) { + width += glyph.xAdvance; + } + } + return width; +} +function layoutText(curLineIndex, startX, startY, text2, textAlign, width, height, fontSize, lineHeight, letterSpacing, vertexBuffer, contain, lineCache, rwSdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines) { + assertTruthy(trFontFace, "Font face must be loaded"); + assertTruthy(trFontFace.loaded, "Font face must be loaded"); + assertTruthy(trFontFace.data, "Font face must be loaded"); + assertTruthy(trFontFace.shaper, "Font face must be loaded"); + const fontSizeRatio = fontSize / trFontFace.data.info.size; + const vertexLineHeight = lineHeight / fontSizeRatio; + const vertexW = width / fontSizeRatio; + const vertexLSpacing = letterSpacing / fontSizeRatio; + const startingLineCacheEntry = lineCache[curLineIndex]; + const startingCodepointIndex = (startingLineCacheEntry == null ? void 0 : startingLineCacheEntry.codepointIndex) || 0; + const startingMaxX = (startingLineCacheEntry == null ? void 0 : startingLineCacheEntry.maxX) || 0; + const startingMaxY = (startingLineCacheEntry == null ? void 0 : startingLineCacheEntry.maxY) || 0; + let maxX = startingMaxX; + let maxY = startingMaxY; + let curX = startX; + let curY = startY; + let bufferOffset = 0; + const lastWord = { + codepointIndex: -1, + bufferOffset: -1, + xStart: -1 + }; + const shaper = trFontFace.shaper; + const shaperProps = { + letterSpacing: vertexLSpacing + }; + let glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text2, startingCodepointIndex), startingCodepointIndex)); + let glyphResult; + let curLineBufferStart = -1; + const bufferLineInfos = []; + const vertexTruncateHeight = height / fontSizeRatio; + const overflowSuffVertexWidth = measureText(overflowSuffix, shaperProps, shaper); + let moreLines = true; + while (moreLines) { + const nextLineWillFit = (maxLines === 0 || curLineIndex + 1 < maxLines) && (contain !== "both" || scrollable || curY + vertexLineHeight + trFontFace.maxCharHeight <= vertexTruncateHeight); + const lineVertexW = nextLineWillFit ? vertexW : vertexW - overflowSuffVertexWidth; + let xStartLastWordBoundary = 0; + const lineIsBelowWindowTop = curY + vertexLineHeight >= rwSdf.y1; + const lineIsAboveWindowBottom = curY <= rwSdf.y2; + const lineIsWithinWindow = lineIsBelowWindowTop && lineIsAboveWindowBottom; + while ((glyphResult = glyphs.next()) && !glyphResult.done) { + const glyph = glyphResult.value; + if (curLineIndex === lineCache.length) { + lineCache.push({ + codepointIndex: glyph.cluster, + maxY, + maxX + }); + } else if (curLineIndex > lineCache.length) { + throw new Error("Unexpected lineCache length"); + } + if (glyph.codepoint === 32 || glyph.codepoint === 10) { + if (lastWord.codepointIndex !== -1) { + lastWord.codepointIndex = -1; + xStartLastWordBoundary = curX; + } + } else if (lastWord.codepointIndex === -1) { + lastWord.codepointIndex = glyph.cluster; + lastWord.bufferOffset = bufferOffset; + lastWord.xStart = xStartLastWordBoundary; + } + if (glyph.mapped) { + const charEndX = curX + glyph.xOffset + glyph.width; + if ( + // We are containing the text + contain !== "none" && // The current glyph reaches outside the contained width + charEndX >= lineVertexW && // There is a last word that we can break to the next line + lastWord.codepointIndex !== -1 && // Prevents infinite loop when a single word is longer than the width + lastWord.xStart > 0 + ) { + if (nextLineWillFit) { + glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text2, lastWord.codepointIndex), lastWord.codepointIndex)); + bufferOffset = lastWord.bufferOffset; + break; + } else { + glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0)); + curX = lastWord.xStart; + bufferOffset = lastWord.bufferOffset; + contain = "none"; + } + } else { + const quadX = curX + glyph.xOffset; + const quadY = curY + glyph.yOffset; + if (lineIsWithinWindow) { + if (curLineBufferStart === -1) { + curLineBufferStart = bufferOffset; + } + const atlasEntry = trFontFace.getAtlasEntry(glyph.glyphId); + const u = atlasEntry.x / trFontFace.data.common.scaleW; + const v = atlasEntry.y / trFontFace.data.common.scaleH; + const uvWidth = atlasEntry.width / trFontFace.data.common.scaleW; + const uvHeight = atlasEntry.height / trFontFace.data.common.scaleH; + vertexBuffer[bufferOffset++] = quadX; + vertexBuffer[bufferOffset++] = quadY; + vertexBuffer[bufferOffset++] = u; + vertexBuffer[bufferOffset++] = v; + vertexBuffer[bufferOffset++] = quadX + glyph.width; + vertexBuffer[bufferOffset++] = quadY; + vertexBuffer[bufferOffset++] = u + uvWidth; + vertexBuffer[bufferOffset++] = v; + vertexBuffer[bufferOffset++] = quadX; + vertexBuffer[bufferOffset++] = quadY + glyph.height; + vertexBuffer[bufferOffset++] = u; + vertexBuffer[bufferOffset++] = v + uvHeight; + vertexBuffer[bufferOffset++] = quadX + glyph.width; + vertexBuffer[bufferOffset++] = quadY + glyph.height; + vertexBuffer[bufferOffset++] = u + uvWidth; + vertexBuffer[bufferOffset++] = v + uvHeight; + } + maxY = Math.max(maxY, quadY + glyph.height); + maxX = Math.max(maxX, quadX + glyph.width); + curX += glyph.xAdvance; + } + } else { + if (glyph.codepoint === 10) { + if (nextLineWillFit) { + break; + } else { + glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0)); + contain = "none"; + } + } + } + } + if (curLineBufferStart !== -1) { + bufferLineInfos.push({ + bufferStart: curLineBufferStart, + bufferEnd: bufferOffset + }); + curLineBufferStart = -1; + } + curX = 0; + curY += vertexLineHeight; + curLineIndex++; + lastWord.codepointIndex = -1; + xStartLastWordBoundary = 0; + if (!forceFullLayoutCalc && contain === "both" && curY > rwSdf.y2) { + moreLines = false; + } else if (glyphResult && glyphResult.done) { + moreLines = false; + } else if (!nextLineWillFit) { + moreLines = false; + } + } + if (textAlign === "center") { + const vertexTextW = contain === "none" ? maxX : vertexW; + for (let i = 0; i < bufferLineInfos.length; i++) { + const line = bufferLineInfos[i]; + const lineWidth = ( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + vertexBuffer[line.bufferEnd - 4] - vertexBuffer[line.bufferStart] + ); + const xOffset = (vertexTextW - lineWidth) / 2; + for (let j = line.bufferStart; j < line.bufferEnd; j += 4) { + vertexBuffer[j] += xOffset; + } + } + } else if (textAlign === "right") { + const vertexTextW = contain === "none" ? maxX : vertexW; + for (let i = 0; i < bufferLineInfos.length; i++) { + const line = bufferLineInfos[i]; + const lineWidth = line.bufferEnd === line.bufferStart ? 0 : ( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + vertexBuffer[line.bufferEnd - 4] - vertexBuffer[line.bufferStart] + ); + const xOffset = vertexTextW - lineWidth; + for (let j = line.bufferStart; j < line.bufferEnd; j += 4) { + vertexBuffer[j] += xOffset; + } + } + } + assertTruthy(glyphResult); + return { + bufferNumFloats: bufferOffset, + bufferNumQuads: bufferOffset / 16, + layoutNumCharacters: glyphResult.done ? text2.length - startingCodepointIndex : glyphResult.value.cluster - startingCodepointIndex + 1, + fullyProcessed: !!glyphResult.done, + maxX, + maxY + }; +} +function roundUpToMultiple(value, multiple) { + return Math.ceil(value / multiple) * multiple; +} +function roundDownToMultiple(value, multiple) { + return Math.floor(value / multiple) * multiple; +} +function setRenderWindow(outRenderWindow, x, y, scrollY, lineHeight, bufferMargin, visibleWindow, fontSizeRatio) { + const { screen, sdf } = outRenderWindow; + if (!isBoundPositive(visibleWindow)) { + screen.x1 = 0; + screen.y1 = 0; + screen.x2 = 0; + screen.y2 = 0; + sdf.x1 = 0; + sdf.y1 = 0; + sdf.x2 = 0; + sdf.y2 = 0; + outRenderWindow.numLines = 0; + outRenderWindow.firstLineIdx = 0; + } else { + const x1 = visibleWindow.x1 - x; + const x2 = x1 + (visibleWindow.x2 - visibleWindow.x1); + const y1Base = visibleWindow.y1 - y + scrollY; + const y1 = roundDownToMultiple(y1Base - bufferMargin, lineHeight || 1); + const y2 = roundUpToMultiple(y1Base + (visibleWindow.y2 - visibleWindow.y1) + bufferMargin, lineHeight || 1); + screen.x1 = x1; + screen.y1 = y1; + screen.x2 = x2; + screen.y2 = y2; + sdf.x1 = x1 / fontSizeRatio; + sdf.y1 = y1 / fontSizeRatio; + sdf.x2 = x2 / fontSizeRatio; + sdf.y2 = y2 / fontSizeRatio; + outRenderWindow.numLines = Math.ceil((y2 - y1) / lineHeight); + outRenderWindow.firstLineIdx = lineHeight ? Math.floor(y1 / lineHeight) : 0; + } + outRenderWindow.valid = true; +} +const weightConversions = { + normal: 400, + bold: 700, + bolder: 900, + lighter: 100 +}; +const fontWeightToNumber = (weight) => { + if (typeof weight === "number") { + return weight; + } + return weightConversions[weight] || 400; +}; +function rawResolveFontToUse(familyMapsByPriority, family, weightIn, style, stretch) { + let weight = fontWeightToNumber(weightIn); + for (const fontFamiles of familyMapsByPriority) { + const fontFaces = fontFamiles[family]; + if (!fontFaces) { + continue; + } + if (fontFaces.size === 1) { + console.warn("TrFontManager: Only one font face found for family: '".concat(family, "' - will be used for all weights and styles")); + return fontFaces.values().next().value; + } + const weightMap = /* @__PURE__ */ new Map(); + for (const fontFace of fontFaces) { + const fontFamilyWeight = fontWeightToNumber(fontFace.descriptors.weight); + if (fontFamilyWeight === weight && fontFace.descriptors.style === style && fontFace.descriptors.stretch === stretch) { + return fontFace; + } + weightMap.set(fontFamilyWeight, fontFace); + } + const msg = "TrFontManager: No exact match: '".concat(family, " Weight: ").concat(weight, " Style: ").concat(style, " Stretch: ").concat(stretch, "'"); + console.error(msg); + if (weight === 400 && weightMap.has(500)) { + return weightMap.get(500); + } + if (weight === 500 && weightMap.has(400)) { + return weightMap.get(400); + } + if (weight < 400) { + while (weight > 0) { + if (weightMap.has(weight)) { + return weightMap.get(weight); + } + weight -= 100; + } + weight = 600; + } + while (weight < 1e3) { + if (weightMap.has(weight)) { + return weightMap.get(weight); + } + weight += 100; + } + weight = 500; + while (weight > 0) { + if (weightMap.has(weight)) { + return weightMap.get(weight); + } + weight -= 100; + } + } + return; +} +const resolveFontToUse = memize(rawResolveFontToUse); +class TrFontManager { + constructor(textRenderers) { + __publicField(this, "textRenderers"); + this.textRenderers = textRenderers; + } + addFontFace(font) { + for (const trId in this.textRenderers) { + const tr = this.textRenderers[trId]; + if (tr && tr.isFontFaceSupported(font)) { + tr.addFontFace(font); + } + } + } + /** + * Utility method to resolve a single font face from a list of prioritized family maps based on + * a set of font properties. + * + * @remarks + * These are to be used by a text renderer to resolve a font face if needed. + * + * @param familyMapsByPriority + * @param props + * @returns + */ + static resolveFontFace(familyMapsByPriority, props) { + const { fontFamily, fontWeight, fontStyle, fontStretch } = props; + return resolveFontToUse(familyMapsByPriority, fontFamily, fontWeight, fontStyle, fontStretch); + } +} +const tmpRect = { + x: 0, + y: 0, + width: 0, + height: 0 +}; +class SdfTextRenderer extends TextRenderer { + constructor(stage) { + super(stage); + /** + * Map of font family names to a set of font faces. + */ + __publicField(this, "ssdfFontFamilies", {}); + __publicField(this, "msdfFontFamilies", {}); + __publicField(this, "fontFamilyArray", [ + this.ssdfFontFamilies, + this.msdfFontFamilies + ]); + __publicField(this, "sdfShader"); + __publicField(this, "rendererBounds"); + this.sdfShader = this.stage.shManager.loadShader("SdfShader").shader; + this.rendererBounds = { + x1: 0, + y1: 0, + x2: this.stage.options.appWidth, + y2: this.stage.options.appHeight + }; + } + //#region Overrides + getPropertySetters() { + return { + fontFamily: (state, value) => { + state.props.fontFamily = value; + this.releaseFontFace(state); + this.invalidateLayoutCache(state); + }, + fontWeight: (state, value) => { + state.props.fontWeight = value; + this.releaseFontFace(state); + this.invalidateLayoutCache(state); + }, + fontStyle: (state, value) => { + state.props.fontStyle = value; + this.releaseFontFace(state); + this.invalidateLayoutCache(state); + }, + fontStretch: (state, value) => { + state.props.fontStretch = value; + this.releaseFontFace(state); + this.invalidateLayoutCache(state); + }, + fontSize: (state, value) => { + state.props.fontSize = value; + this.invalidateLayoutCache(state); + }, + text: (state, value) => { + state.props.text = value; + this.invalidateLayoutCache(state); + }, + textAlign: (state, value) => { + state.props.textAlign = value; + this.invalidateLayoutCache(state); + }, + color: (state, value) => { + state.props.color = value; + }, + x: (state, value) => { + state.props.x = value; + if (state.elementBounds.valid) { + this.setElementBoundsX(state); + if (!state.renderWindow.valid && boundsOverlap(state.elementBounds, this.rendererBounds)) { + this.scheduleUpdateState(state); + } + } + }, + y: (state, value) => { + state.props.y = value; + if (state.elementBounds.valid) { + this.setElementBoundsY(state); + if (!state.renderWindow.valid && boundsOverlap(state.elementBounds, this.rendererBounds)) { + this.scheduleUpdateState(state); + } + } + }, + contain: (state, value) => { + state.props.contain = value; + this.invalidateLayoutCache(state); + }, + width: (state, value) => { + state.props.width = value; + if (state.props.contain !== "none") { + this.invalidateLayoutCache(state); + } + }, + height: (state, value) => { + state.props.height = value; + if (state.props.contain === "both") { + this.invalidateLayoutCache(state); + } + }, + offsetY: (state, value) => { + state.props.offsetY = value; + this.invalidateLayoutCache(state); + }, + scrollable: (state, value) => { + state.props.scrollable = value; + this.invalidateLayoutCache(state); + }, + scrollY: (state, value) => { + state.props.scrollY = value; + this.scheduleUpdateState(state); + }, + letterSpacing: (state, value) => { + state.props.letterSpacing = value; + this.invalidateLayoutCache(state); + }, + lineHeight: (state, value) => { + state.props.lineHeight = value; + this.invalidateLayoutCache(state); + }, + maxLines: (state, value) => { + state.props.maxLines = value; + this.invalidateLayoutCache(state); + }, + textBaseline: (state, value) => { + state.props.textBaseline = value; + this.invalidateLayoutCache(state); + }, + verticalAlign: (state, value) => { + state.props.verticalAlign = value; + this.invalidateLayoutCache(state); + }, + overflowSuffix: (state, value) => { + state.props.overflowSuffix = value; + this.invalidateLayoutCache(state); + }, + debug: (state, value) => { + state.props.debug = value; + } + }; + } + canRenderFont(props) { + const { fontFamily } = props; + return fontFamily in this.ssdfFontFamilies || fontFamily in this.msdfFontFamilies || fontFamily === "$$SDF_FAILURE_TEST$$"; + } + isFontFaceSupported(fontFace) { + return fontFace instanceof SdfTrFontFace; + } + addFontFace(fontFace) { + assertTruthy(fontFace instanceof SdfTrFontFace); + const familyName = fontFace.fontFamily; + const fontFamiles = fontFace.type === "ssdf" ? this.ssdfFontFamilies : fontFace.type === "msdf" ? this.msdfFontFamilies : void 0; + if (!fontFamiles) { + console.warn("Invalid font face type: ".concat(fontFace.type)); + return; + } + let faceSet = fontFamiles[familyName]; + if (!faceSet) { + faceSet = /* @__PURE__ */ new Set(); + fontFamiles[familyName] = faceSet; + } + faceSet.add(fontFace); + } + createState(props) { + return { + props, + status: "initialState", + updateScheduled: false, + emitter: new EventEmitter(), + lineCache: [], + forceFullLayoutCalc: false, + renderWindow: { + screen: { + x1: 0, + y1: 0, + x2: 0, + y2: 0 + }, + sdf: { + x1: 0, + y1: 0, + x2: 0, + y2: 0 + }, + firstLineIdx: 0, + numLines: 0, + valid: false + }, + elementBounds: { + x1: 0, + y1: 0, + x2: 0, + y2: 0, + valid: false + }, + clippingRect: { + x: 0, + y: 0, + width: 0, + height: 0, + valid: false + }, + bufferNumFloats: 0, + bufferNumQuads: 0, + vertexBuffer: void 0, + webGlBuffers: null, + bufferUploaded: false, + textH: void 0, + textW: void 0, + distanceRange: 0, + trFontFace: void 0, + isRenderable: false, + debugData: { + updateCount: 0, + layoutCount: 0, + lastLayoutNumCharacters: 0, + layoutSum: 0, + drawSum: 0, + drawCount: 0, + bufferSize: 0 + } + }; + } + updateState(state) { + let { trFontFace } = state; + const { textH, lineCache, debugData, forceFullLayoutCalc } = state; + debugData.updateCount++; + if (state.status === "initialState") { + this.setStatus(state, "loading"); + } + if (!trFontFace) { + trFontFace = this.resolveFontFace(state.props); + state.trFontFace = trFontFace; + if (!trFontFace) { + const msg = "SdfTextRenderer: Could not resolve font face for family: '".concat(state.props.fontFamily, "'"); + console.error(msg); + this.setStatus(state, "failed", new Error(msg)); + return; + } + trFontFace.texture.setRenderableOwner(state, state.isRenderable); + } + if (!trFontFace.loaded) { + trFontFace.once("loaded", () => { + this.scheduleUpdateState(state); + }); + return; + } + assertTruthy(trFontFace.data, "Font face data should be loaded"); + const { text: text2, fontSize, x, y, contain, width, height, lineHeight, verticalAlign, scrollable, overflowSuffix, maxLines } = state.props; + const scrollY = contain === "both" && scrollable ? state.props.scrollY : 0; + const { renderWindow } = state; + const sdfFontSize = trFontFace.data.info.size; + const fontSizeRatio = fontSize / sdfFontSize; + const sdfLineHeight = lineHeight / fontSizeRatio; + state.distanceRange = fontSizeRatio * trFontFace.data.distanceField.distanceRange; + const neededLength = text2.length * FLOATS_PER_GLYPH; + let vertexBuffer = state.vertexBuffer; + if (!vertexBuffer || vertexBuffer.length < neededLength) { + vertexBuffer = new Float32Array(neededLength * 2); + } + const elementBounds = state.elementBounds; + if (!elementBounds.valid) { + this.setElementBoundsX(state); + this.setElementBoundsY(state); + elementBounds.valid = true; + } + if (!forceFullLayoutCalc && renderWindow.valid) { + const rwScreen = renderWindow.screen; + if (x + rwScreen.x1 <= elementBounds.x1 && x + rwScreen.x2 >= elementBounds.x2 && y - scrollY + rwScreen.y1 <= elementBounds.y1 && y - scrollY + rwScreen.y2 >= elementBounds.y2) { + this.setStatus(state, "loaded"); + return; + } + renderWindow.valid = false; + this.setStatus(state, "loading"); + } + const { offsetY, textAlign } = state.props; + if (!renderWindow.valid) { + const isPossiblyOnScreen = boundsOverlap(elementBounds, this.rendererBounds); + if (!isPossiblyOnScreen) { + return; + } + setRenderWindow(renderWindow, x, y, scrollY, lineHeight, contain === "both" ? elementBounds.y2 - elementBounds.y1 : 0, elementBounds, fontSizeRatio); + } + const start = getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH); + if (!start) { + this.setStatus(state, "loaded"); + return; + } + const { letterSpacing } = state.props; + const out2 = layoutText(start.lineIndex, start.sdfX, start.sdfY, text2, textAlign, width, height, fontSize, lineHeight, letterSpacing, vertexBuffer, contain, lineCache, renderWindow.sdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines); + state.bufferUploaded = false; + state.bufferNumFloats = out2.bufferNumFloats; + state.bufferNumQuads = out2.bufferNumQuads; + state.vertexBuffer = vertexBuffer; + state.renderWindow = renderWindow; + debugData.lastLayoutNumCharacters = out2.layoutNumCharacters; + debugData.bufferSize = vertexBuffer.byteLength; + if (out2.fullyProcessed) { + state.textW = out2.maxX * fontSizeRatio; + state.textH = out2.maxY * fontSizeRatio; + } + this.setStatus(state, "loaded"); + } + renderQuads(state, transform, clippingRect, alpha, parentHasRenderTexture, framebufferDimensions) { + var _a3, _b2, _c2; + if (!state.vertexBuffer) { + return; + } + const { renderer: renderer2 } = this.stage; + const { fontSize, color, contain, scrollable, zIndex, debug } = state.props; + const scrollY = contain === "both" && scrollable ? state.props.scrollY : 0; + const { textW = 0, textH = 0, distanceRange, vertexBuffer, bufferUploaded, trFontFace, elementBounds } = state; + let { webGlBuffers } = state; + if (!webGlBuffers) { + const glw = renderer2.glw; + const stride = 4 * Float32Array.BYTES_PER_ELEMENT; + const webGlBuffer = glw.createBuffer(); + assertTruthy(webGlBuffer); + state.webGlBuffers = new BufferCollection([ + { + buffer: webGlBuffer, + attributes: { + a_position: { + name: "a_position", + size: 2, + type: glw.FLOAT, + normalized: false, + stride, + offset: 0 + // start at the beginning of the buffer + }, + a_textureCoordinate: { + name: "a_textureCoordinate", + size: 2, + type: glw.FLOAT, + normalized: false, + stride, + offset: 2 * Float32Array.BYTES_PER_ELEMENT + } + } + } + ]); + state.bufferUploaded = false; + assertTruthy(state.webGlBuffers); + webGlBuffers = state.webGlBuffers; + } + if (!bufferUploaded) { + const glw = renderer2.glw; + const buffer = (_a3 = webGlBuffers == null ? void 0 : webGlBuffers.getBuffer("a_textureCoordinate")) != null ? _a3 : null; + glw.arrayBufferData(buffer, vertexBuffer, glw.STATIC_DRAW); + state.bufferUploaded = true; + } + assertTruthy(trFontFace); + if (scrollable && contain === "both") { + assertTruthy(elementBounds.valid); + const elementRect = convertBoundToRect(elementBounds, tmpRect); + if (clippingRect.valid) { + state.clippingRect.valid = true; + clippingRect = intersectRect(clippingRect, elementRect, state.clippingRect); + } else { + state.clippingRect.valid = true; + clippingRect = copyRect(elementRect, state.clippingRect); + } + } + const renderOp = new WebGlCoreRenderOp(renderer2.glw, renderer2.options, webGlBuffers, this.sdfShader, { + transform: transform.data, + // IMPORTANT: The SDF Shader expects the color NOT to be premultiplied + // for the best blending results. Which is why we use `mergeColorAlpha` + // instead of `mergeColorAlphaPremultiplied` here. + color: mergeColorAlpha(color, alpha), + size: fontSize / (((_b2 = trFontFace.data) == null ? void 0 : _b2.info.size) || 0), + scrollY, + distanceRange, + debug: debug.sdfShaderDebug + }, alpha, clippingRect, { height: textH, width: textW }, 0, zIndex, false, parentHasRenderTexture, framebufferDimensions); + const texture = (_c2 = state.trFontFace) == null ? void 0 : _c2.texture; + assertTruthy(texture); + const ctxTexture = this.stage.txManager.getCtxTexture(texture); + renderOp.addTexture(ctxTexture); + renderOp.length = state.bufferNumFloats; + renderOp.numQuads = state.bufferNumQuads; + renderer2.addRenderOp(renderOp); + } + setIsRenderable(state, renderable) { + var _a3; + super.setIsRenderable(state, renderable); + (_a3 = state.trFontFace) == null ? void 0 : _a3.texture.setRenderableOwner(state, renderable); + } + destroyState(state) { + var _a3; + super.destroyState(state); + (_a3 = state.trFontFace) == null ? void 0 : _a3.texture.setRenderableOwner(state, false); + } + //#endregion Overrides + resolveFontFace(props) { + return TrFontManager.resolveFontFace(this.fontFamilyArray, props); + } + /** + * Release the loaded SDF font face + * + * @param state + */ + releaseFontFace(state) { + if (state.trFontFace) { + state.trFontFace.texture.setRenderableOwner(state, false); + state.trFontFace = void 0; + } + } + /** + * Invalidate the layout cache stored in the state. This will cause the text + * to be re-layed out on the next update. + * + * @remarks + * This also invalidates the visible window cache. + * + * @param state + */ + invalidateLayoutCache(state) { + state.renderWindow.valid = false; + state.elementBounds.valid = false; + state.textH = void 0; + state.textW = void 0; + state.lineCache = []; + this.setStatus(state, "loading"); + this.scheduleUpdateState(state); + } + setElementBoundsX(state) { + const { x, contain, width } = state.props; + const { elementBounds } = state; + elementBounds.x1 = x; + elementBounds.x2 = contain !== "none" ? x + width : Infinity; + } + setElementBoundsY(state) { + const { y, contain, height } = state.props; + const { elementBounds } = state; + elementBounds.y1 = y; + elementBounds.y2 = contain === "both" ? y + height : Infinity; + } +} +function classExtendsCoreExtension(Class) { + return Class.prototype instanceof CoreExtension; +} +async function loadCoreExtension(coreExtensionModule, stage) { + let module; + try { + console.log("Loading core extension", coreExtensionModule); + module = await __vitePreload(() => import( + coreExtensionModule + /* @vite-ignore */ + ), true ? [] : void 0); + } catch (e) { + console.error("The core extension module at '".concat(coreExtensionModule, "' could not be loaded.")); + console.error(e); + return; + } + if (!module.default) { + console.error("The core extension module at '".concat(coreExtensionModule, "' does not have a default export.")); + return; + } + const ExtensionClass = module.default; + if (classExtendsCoreExtension(ExtensionClass)) { + const coreExtension = new ExtensionClass(); + try { + await coreExtension.run(stage); + } catch (e) { + console.error("The core extension at '".concat(coreExtensionModule, "' threw an error.")); + console.error(e); + } + } else { + console.error("The core extension at '".concat(coreExtensionModule, "' does not extend CoreExtension.")); + } +} +function santizeCustomDataMap(d) { + const validTypes = { boolean: true, string: true, number: true }; + const keys = Object.keys(d); + for (let i = 0; i < keys.length; i++) { + const key2 = keys[i]; + if (!key2) { + continue; + } + const value = d[key2]; + const valueType = typeof value; + if (valueType === "string" && value.length > 2048) { + console.warn("Custom Data value for ".concat(key2, " is too long, it will be truncated to 2048 characters")); + d[key2] = value.substring(0, 2048); + } + if (!validTypes[valueType]) { + console.warn("Custom Data value for ".concat(key2, " is not a boolean, string, or number, it will be ignored")); + delete d[key2]; + } + } + return d; +} +class RendererMain extends EventEmitter { + /** + * Constructs a new Renderer instance + * + * @param settings Renderer settings + * @param target Element ID or HTMLElement to insert the canvas into + * @param driver Core Driver to use + */ + constructor(settings, target, driver) { + var _a3, _b2, _c2, _d2; + super(); + __publicField(this, "root", null); + __publicField(this, "driver"); + __publicField(this, "canvas"); + __publicField(this, "settings"); + __publicField(this, "inspector", null); + __publicField(this, "nodes", /* @__PURE__ */ new Map()); + __publicField(this, "nextTextureId", 1); + /** + * Texture Usage Tracker for Usage Based Texture Garbage Collection + * + * @remarks + * For internal use only. DO NOT ACCESS. + */ + __publicField(this, "textureTracker"); + const resolvedSettings = { + appWidth: settings.appWidth || 1920, + appHeight: settings.appHeight || 1080, + txMemByteThreshold: settings.txMemByteThreshold || 124e6, + boundsMargin: settings.boundsMargin || 0, + deviceLogicalPixelRatio: settings.deviceLogicalPixelRatio || 1, + devicePhysicalPixelRatio: settings.devicePhysicalPixelRatio || window.devicePixelRatio, + clearColor: (_a3 = settings.clearColor) != null ? _a3 : 0, + coreExtensionModule: settings.coreExtensionModule || null, + experimental_FinalizationRegistryTextureUsageTracker: (_b2 = settings.experimental_FinalizationRegistryTextureUsageTracker) != null ? _b2 : false, + textureCleanupOptions: settings.textureCleanupOptions || {}, + fpsUpdateInterval: settings.fpsUpdateInterval || 0, + numImageWorkers: settings.numImageWorkers !== void 0 ? settings.numImageWorkers : 2, + enableContextSpy: (_c2 = settings.enableContextSpy) != null ? _c2 : false, + enableInspector: (_d2 = settings.enableInspector) != null ? _d2 : false + }; + this.settings = resolvedSettings; + const { appWidth, appHeight, deviceLogicalPixelRatio, devicePhysicalPixelRatio, enableInspector } = resolvedSettings; + const releaseCallback = (textureId) => { + this.driver.releaseTexture(textureId); + }; + const useFinalizationRegistryTracker = resolvedSettings.experimental_FinalizationRegistryTextureUsageTracker && typeof FinalizationRegistry === "function"; + this.textureTracker = useFinalizationRegistryTracker ? new FinalizationRegistryTextureUsageTracker(releaseCallback) : new ManualCountTextureUsageTracker(releaseCallback, this.settings.textureCleanupOptions); + const deviceLogicalWidth = appWidth * deviceLogicalPixelRatio; + const deviceLogicalHeight = appHeight * deviceLogicalPixelRatio; + this.driver = driver; + const canvas = document.createElement("canvas"); + this.canvas = canvas; + canvas.width = deviceLogicalWidth * devicePhysicalPixelRatio; + canvas.height = deviceLogicalHeight * devicePhysicalPixelRatio; + canvas.style.width = "".concat(deviceLogicalWidth, "px"); + canvas.style.height = "".concat(deviceLogicalHeight, "px"); + let targetEl; + if (typeof target === "string") { + targetEl = document.getElementById(target); + } else { + targetEl = target; + } + if (!targetEl) { + throw new Error("Could not find target element"); + } + driver.onCreateNode = (node) => { + this.nodes.set(node.id, node); + }; + driver.onBeforeDestroyNode = (node) => { + this.nodes.delete(node.id); + }; + driver.onFpsUpdate = (fpsData) => { + this.emit("fpsUpdate", fpsData); + }; + driver.onFrameTick = (frameTickData) => { + this.emit("frameTick", frameTickData); + }; + driver.onIdle = () => { + this.emit("idle"); + }; + targetEl.appendChild(canvas); + if (enableInspector && !isProductionEnvironment()) { + this.inspector = new Inspector(canvas, resolvedSettings); + } + } + /** + * Initialize the renderer + * + * @remarks + * This method must be called and resolved asyncronously before any other + * methods are called. + */ + async init() { + await this.driver.init(this, this.settings, this.canvas); + this.root = this.driver.getRootNode(); + } + /** + * Create a new scene graph node + * + * @remarks + * A node is the main graphical building block of the Renderer scene graph. It + * can be a container for other nodes, or it can be a leaf node that renders a + * solid color, gradient, image, or specific texture, using a specific shader. + * + * To create a text node, see {@link createTextNode}. + * + * See {@link INode} for more details. + * + * @param props + * @returns + */ + createNode(props) { + if (this.inspector) { + return this.inspector.createNode(this.driver, this.resolveNodeDefaults(props)); + } + return this.driver.createNode(this.resolveNodeDefaults(props)); + } + /** + * Create a new scene graph text node + * + * @remarks + * A text node is the second graphical building block of the Renderer scene + * graph. It renders text using a specific text renderer that is automatically + * chosen based on the font requested and what type of fonts are installed + * into an app via a CoreExtension. + * + * See {@link ITextNode} for more details. + * + * @param props + * @returns + */ + createTextNode(props) { + var _a3, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2, _m2, _n2, _o2, _p2, _q2, _r2, _s; + const fontSize = (_a3 = props.fontSize) != null ? _a3 : 16; + const data = { + ...this.resolveNodeDefaults(props), + text: (_b2 = props.text) != null ? _b2 : "", + textRendererOverride: (_c2 = props.textRendererOverride) != null ? _c2 : null, + fontSize, + fontFamily: (_d2 = props.fontFamily) != null ? _d2 : "sans-serif", + fontStyle: (_e2 = props.fontStyle) != null ? _e2 : "normal", + fontWeight: (_f2 = props.fontWeight) != null ? _f2 : "normal", + fontStretch: (_g2 = props.fontStretch) != null ? _g2 : "normal", + textAlign: (_h2 = props.textAlign) != null ? _h2 : "left", + contain: (_i2 = props.contain) != null ? _i2 : "none", + scrollable: (_j2 = props.scrollable) != null ? _j2 : false, + scrollY: (_k2 = props.scrollY) != null ? _k2 : 0, + offsetY: (_l2 = props.offsetY) != null ? _l2 : 0, + letterSpacing: (_m2 = props.letterSpacing) != null ? _m2 : 0, + lineHeight: (_n2 = props.lineHeight) != null ? _n2 : fontSize, + maxLines: (_o2 = props.maxLines) != null ? _o2 : 0, + textBaseline: (_p2 = props.textBaseline) != null ? _p2 : "alphabetic", + verticalAlign: (_q2 = props.verticalAlign) != null ? _q2 : "top", + overflowSuffix: (_r2 = props.overflowSuffix) != null ? _r2 : "...", + debug: (_s = props.debug) != null ? _s : {} + }; + if (this.inspector) { + return this.inspector.createTextNode(this.driver, data); + } + return this.driver.createTextNode(data); + } + /** + * Resolves the default property values for a Node + * + * @remarks + * This method is used internally by the RendererMain to resolve the default + * property values for a Node. It is exposed publicly so that it can be used + * by Core Driver implementations. + * + * @param props + * @returns + */ + resolveNodeDefaults(props) { + var _a3, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2, _m2, _n2, _o2, _p2, _q2, _r2, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z; + const color = (_a3 = props.color) != null ? _a3 : 4294967295; + const colorTl = (_d2 = (_c2 = (_b2 = props.colorTl) != null ? _b2 : props.colorTop) != null ? _c2 : props.colorLeft) != null ? _d2 : color; + const colorTr = (_g2 = (_f2 = (_e2 = props.colorTr) != null ? _e2 : props.colorTop) != null ? _f2 : props.colorRight) != null ? _g2 : color; + const colorBl = (_j2 = (_i2 = (_h2 = props.colorBl) != null ? _h2 : props.colorBottom) != null ? _i2 : props.colorLeft) != null ? _j2 : color; + const colorBr = (_m2 = (_l2 = (_k2 = props.colorBr) != null ? _k2 : props.colorBottom) != null ? _l2 : props.colorRight) != null ? _m2 : color; + const data = santizeCustomDataMap((_n2 = props.data) != null ? _n2 : {}); + const parentHasRenderTexture = (_r2 = (_q2 = (_o2 = props.parent) == null ? void 0 : _o2.rtt) != null ? _q2 : (_p2 = props.parent) == null ? void 0 : _p2.parentHasRenderTexture) != null ? _r2 : false; + return { + x: (_s = props.x) != null ? _s : 0, + y: (_t = props.y) != null ? _t : 0, + width: (_u = props.width) != null ? _u : 0, + height: (_v = props.height) != null ? _v : 0, + alpha: (_w = props.alpha) != null ? _w : 1, + autosize: (_x = props.autosize) != null ? _x : false, + clipping: (_y = props.clipping) != null ? _y : false, + color, + colorTop: (_z = props.colorTop) != null ? _z : color, + colorBottom: (_A = props.colorBottom) != null ? _A : color, + colorLeft: (_B = props.colorLeft) != null ? _B : color, + colorRight: (_C = props.colorRight) != null ? _C : color, + colorBl, + colorBr, + colorTl, + colorTr, + zIndex: (_D = props.zIndex) != null ? _D : 0, + zIndexLocked: (_E = props.zIndexLocked) != null ? _E : 0, + parent: (_F = props.parent) != null ? _F : null, + texture: (_G = props.texture) != null ? _G : null, + shader: (_H = props.shader) != null ? _H : null, + // Since setting the `src` will trigger a texture load, we need to set it after + // we set the texture. Otherwise, problems happen. + src: (_I = props.src) != null ? _I : "", + scale: (_J = props.scale) != null ? _J : null, + scaleX: (_L = (_K = props.scaleX) != null ? _K : props.scale) != null ? _L : 1, + scaleY: (_N = (_M = props.scaleY) != null ? _M : props.scale) != null ? _N : 1, + mount: (_O = props.mount) != null ? _O : 0, + mountX: (_Q = (_P = props.mountX) != null ? _P : props.mount) != null ? _Q : 0, + mountY: (_S = (_R = props.mountY) != null ? _R : props.mount) != null ? _S : 0, + pivot: (_T = props.pivot) != null ? _T : 0.5, + pivotX: (_V = (_U = props.pivotX) != null ? _U : props.pivot) != null ? _V : 0.5, + pivotY: (_X = (_W = props.pivotY) != null ? _W : props.pivot) != null ? _X : 0.5, + rotation: (_Y = props.rotation) != null ? _Y : 0, + rtt: (_Z = props.rtt) != null ? _Z : false, + parentHasRenderTexture, + data + }; + } + /** + * Destroy a node + * + * @remarks + * This method destroys a node but does not destroy its children. + * + * @param node + * @returns + */ + destroyNode(node) { + if (this.inspector) { + this.inspector.destroyNode(node); + } + return this.driver.destroyNode(node); + } + /** + * Create a new texture reference + * + * @remarks + * This method creates a new reference to a texture. The texture is not + * loaded until it is used on a node. + * + * It can be assigned to a node's `texture` property, or it can be used + * when creating a SubTexture. + * + * @param textureType + * @param props + * @param options + * @returns + */ + createTexture(textureType, props, options) { + const id = this.nextTextureId++; + const desc = { + descType: "texture", + txType: textureType, + props, + options: { + ...options, + // This ID is used to identify the texture in the CoreTextureManager's + // ID Texture Map cache. + id + } + }; + this.textureTracker.registerTexture(desc); + return desc; + } + /** + * Create a new shader reference + * + * @remarks + * This method creates a new reference to a shader. The shader is not + * loaded until it is used on a Node. + * + * It can be assigned to a Node's `shader` property. + * + * @param shaderType + * @param props + * @returns + */ + createShader(shaderType, props) { + return { + descType: "shader", + shType: shaderType, + props + }; + } + /** + * Get a Node by its ID + * + * @param id + * @returns + */ + getNodeById(id) { + return this.nodes.get(id) || null; + } + toggleFreeze() { + throw new Error("Not implemented"); + } + advanceFrame() { + throw new Error("Not implemented"); + } + /** + * Re-render the current frame without advancing any running animations. + * + * @remarks + * Any state changes will be reflected in the re-rendered frame. Useful for + * debugging. + * + * May not do anything if the render loop is running on a separate worker. + */ + rerender() { + throw new Error("Not implemented"); + } +} +class CoreAnimation extends EventEmitter { + //fixme - aint got not time for this + constructor(node, props, settings) { + super(); + __publicField(this, "node"); + __publicField(this, "props"); + __publicField(this, "settings"); + __publicField(this, "propStartValues", {}); + __publicField(this, "restoreValues", {}); + __publicField(this, "progress", 0); + __publicField(this, "delayFor", 0); + __publicField(this, "timingFunction"); + __publicField(this, "propsList"); + this.node = node; + this.props = props; + this.settings = settings; + this.propStartValues = {}; + this.propsList = Object.keys(props); + this.propsList.forEach((propName) => { + this.propStartValues[propName] = node[propName]; + }); + this.timingFunction = (t) => t; + if (settings.easing && typeof settings.easing === "string") { + this.timingFunction = getTimingFunction(settings.easing); + } + this.delayFor = settings.delay || 0; + } + reset() { + this.progress = 0; + this.delayFor = this.settings.delay || 0; + this.update(0); + } + restore() { + this.reset(); + Object.keys(this.props).forEach((propName) => { + this.node[propName] = this.propStartValues[propName]; + }); + } + reverse() { + this.progress = 0; + Object.keys(this.props).forEach((propName) => { + const startValue = this.props[propName]; + const endValue = this.propStartValues[propName]; + this.props[propName] = endValue; + this.propStartValues[propName] = startValue; + }); + if (!this.settings.loop) { + this.settings.stopMethod = false; + } + } + applyEasing(p, s, e) { + return (this.timingFunction(p) || p) * (e - s) + s; + } + update(dt) { + const { duration, loop, easing, stopMethod } = this.settings; + if (!duration) { + this.emit("finished", {}); + return; + } + if (this.delayFor > 0) { + this.delayFor -= dt; + return; + } + if (this.delayFor <= 0 && this.progress === 0) { + this.emit("start", {}); + } + this.progress += dt / duration; + if (this.progress > 1) { + this.progress = loop ? 0 : 1; + if (stopMethod) { + this.emit("finished", {}); + return; + } + } + for (let i = 0; i < this.propsList.length; i++) { + const propName = this.propsList[i]; + const propValue = this.props[propName]; + const startValue = this.propStartValues[propName]; + const endValue = propValue; + if (propName.indexOf("color") !== -1) { + if (startValue === endValue) { + this.node[propName] = startValue; + continue; + } + if (easing) { + const easingProgressValue = this.timingFunction(this.progress) || this.progress; + const easingColorValue = mergeColorProgress(startValue, endValue, easingProgressValue); + this.node[propName] = easingColorValue; + continue; + } + this.node[propName] = mergeColorProgress(startValue, endValue, this.progress); + continue; + } + if (easing) { + this.node[propName] = this.applyEasing(this.progress, startValue, endValue); + continue; + } + this.node[propName] = startValue + (endValue - startValue) * this.progress; + } + if (this.progress === 1) { + this.emit("finished", {}); + } + } +} +class CoreAnimationController { + constructor(manager, animation) { + __publicField(this, "manager"); + __publicField(this, "animation"); + __publicField(this, "startedPromise", null); + /** + * If this is null, then the animation hasn't started yet. + */ + __publicField(this, "startedResolve", null); + __publicField(this, "stoppedPromise", null); + /** + * If this is null, then the animation is in a finished / stopped state. + */ + __publicField(this, "stoppedResolve", null); + __publicField(this, "state"); + this.manager = manager; + this.animation = animation; + this.state = "stopped"; + } + start() { + this.makeStartedPromise(); + this.animation.once("start", this.started.bind(this)); + this.makeStoppedPromise(); + this.animation.once("finished", this.finished.bind(this)); + if (!this.manager.activeAnimations.has(this.animation)) { + this.manager.registerAnimation(this.animation); + } + this.state = "running"; + return this; + } + stop() { + this.manager.unregisterAnimation(this.animation); + if (this.stoppedResolve !== null) { + this.stoppedResolve(); + this.stoppedResolve = null; + } + this.animation.reset(); + this.state = "stopped"; + return this; + } + pause() { + this.manager.unregisterAnimation(this.animation); + this.state = "paused"; + return this; + } + restore() { + this.stoppedResolve = null; + this.animation.restore(); + return this; + } + waitUntilStarted() { + this.makeStartedPromise(); + const promise = this.startedPromise; + assertTruthy(promise); + return promise; + } + waitUntilStopped() { + this.makeStoppedPromise(); + const promise = this.stoppedPromise; + assertTruthy(promise); + return promise; + } + makeStartedPromise() { + if (this.startedResolve === null) { + this.startedPromise = new Promise((resolve) => { + this.startedResolve = resolve; + }); + } + } + makeStoppedPromise() { + if (this.stoppedResolve === null) { + this.stoppedPromise = new Promise((resolve) => { + this.stoppedResolve = resolve; + }); + } + } + started() { + assertTruthy(this.startedResolve); + this.startedResolve(this); + this.startedResolve = null; + } + finished() { + assertTruthy(this.stoppedResolve); + const { loop, stopMethod } = this.animation.settings; + if (stopMethod === "reverse") { + this.animation.reverse(); + this.start(); + return; + } + this.stoppedResolve(); + this.stoppedResolve = null; + if (loop) { + return; + } + this.manager.unregisterAnimation(this.animation); + } +} +const m0 = 0; +const m1 = 3; +const m2 = 6; +const m3 = 1; +const m4 = 4; +const m5 = 7; +const m6 = 2; +const m7 = 5; +const m8 = 8; +class Matrix3d { + /** + * Creates a new 3x3 matrix. + * + * @param entries Row-major 3x3 matrix + */ + constructor(entries) { + __publicField(this, "data"); + if (entries) { + this.data = new Float32Array(9); + this.data[m0] = entries[0]; + this.data[m1] = entries[3]; + this.data[m2] = entries[6]; + this.data[m3] = entries[1]; + this.data[m4] = entries[4]; + this.data[m5] = entries[7]; + this.data[m6] = entries[2]; + this.data[m7] = entries[5]; + this.data[m8] = entries[8]; + } else { + this.data = new Float32Array(9); + } + } + /** + * Returns a temporary matrix that can be used for calculations. + * + * @remarks + * This is useful for avoiding allocations in tight loops. + * + * The matrix is not guaranteed to be the same between calls. + * + * @returns + */ + static get temp() { + return tempMatrix; + } + static multiply(a, b, out) { + const e0 = a.data[m0] * b.data[m0] + a.data[m1] * b.data[m3] + a.data[m2] * b.data[m6]; + const e1 = a.data[m0] * b.data[m1] + a.data[m1] * b.data[m4] + a.data[m2] * b.data[m7]; + const e2 = a.data[m0] * b.data[m2] + a.data[m1] * b.data[m5] + a.data[m2] * b.data[m8]; + const e3 = a.data[m3] * b.data[m0] + a.data[m4] * b.data[m3] + a.data[m5] * b.data[m6]; + const e4 = a.data[m3] * b.data[m1] + a.data[m4] * b.data[m4] + a.data[m5] * b.data[m7]; + const e5 = a.data[m3] * b.data[m2] + a.data[m4] * b.data[m5] + a.data[m5] * b.data[m8]; + const e6 = a.data[m6] * b.data[m0] + a.data[m7] * b.data[m3] + a.data[m8] * b.data[m6]; + const e7 = a.data[m6] * b.data[m1] + a.data[m7] * b.data[m4] + a.data[m8] * b.data[m7]; + const e8 = a.data[m6] * b.data[m2] + a.data[m7] * b.data[m5] + a.data[m8] * b.data[m8]; + if (!out) { + out = new Matrix3d(); + } + out.data[m0] = e0; + out.data[m1] = e1; + out.data[m2] = e2; + out.data[m3] = e3; + out.data[m4] = e4; + out.data[m5] = e5; + out.data[m6] = e6; + out.data[m7] = e7; + out.data[m8] = e8; + return out; + } + static identity(out) { + if (!out) { + out = new Matrix3d(); + } + out.data[m0] = 1; + out.data[m1] = 0; + out.data[m2] = 0; + out.data[m3] = 0; + out.data[m4] = 1; + out.data[m5] = 0; + out.data[m6] = 0; + out.data[m7] = 0; + out.data[m8] = 1; + return out; + } + static translate(x, y, out) { + if (!out) { + out = new Matrix3d(); + } + out.data[m0] = 1; + out.data[m1] = 0; + out.data[m2] = x; + out.data[m3] = 0; + out.data[m4] = 1; + out.data[m5] = y; + out.data[m6] = 0; + out.data[m7] = 0; + out.data[m8] = 1; + return out; + } + static scale(sx, sy, out) { + if (!out) { + out = new Matrix3d(); + } + out.data[m0] = sx; + out.data[m1] = 0; + out.data[m2] = 0; + out.data[m3] = 0; + out.data[m4] = sy; + out.data[m5] = 0; + out.data[m6] = 0; + out.data[m7] = 0; + out.data[m8] = 1; + return out; + } + static rotate(angle, out) { + const cos = Math.cos(angle); + const sin = Math.sin(angle); + if (!out) { + out = new Matrix3d(); + } + out.data[m0] = cos; + out.data[m1] = -sin; + out.data[m2] = 0; + out.data[m3] = sin; + out.data[m4] = cos; + out.data[m5] = 0; + out.data[m6] = 0; + out.data[m7] = 0; + out.data[m8] = 1; + return out; + } + static copy(src, dst, transpose) { + if (!dst) { + dst = new Matrix3d(); + } + dst.data[0] = src.data[0]; + dst.data[1] = src.data[1]; + dst.data[2] = src.data[2]; + dst.data[3] = src.data[3]; + dst.data[4] = src.data[4]; + dst.data[5] = src.data[5]; + dst.data[6] = src.data[6]; + dst.data[7] = src.data[7]; + dst.data[8] = src.data[8]; + return dst; + } + translate(x, y) { + this.data[m2] = this.data[m0] * x + this.data[m1] * y + this.data[m2]; + this.data[m5] = this.data[m3] * x + this.data[m4] * y + this.data[m5]; + return this; + } + scale(sx, sy) { + this.data[m0] = this.data[m0] * sx; + this.data[m1] = this.data[m1] * sy; + this.data[m3] = this.data[m3] * sx; + this.data[m4] = this.data[m4] * sy; + return this; + } + rotate(angle) { + if (angle === 0 || !(angle % Math.PI * 2)) { + return this; + } + const cos = Math.cos(angle); + const sin = Math.sin(angle); + const e0 = this.data[m0] * cos + this.data[m1] * sin; + const e1 = this.data[m1] * cos - this.data[m0] * sin; + const e3 = this.data[m3] * cos + this.data[m4] * sin; + const e4 = this.data[m4] * cos - this.data[m3] * sin; + this.data[m0] = e0; + this.data[m1] = e1; + this.data[m3] = e3; + this.data[m4] = e4; + return this; + } + multiply(other) { + return Matrix3d.multiply(this, other, this); + } + get tx() { + return this.data[m2]; + } + get ty() { + return this.data[m5]; + } + get ta() { + return this.data[m0]; + } + get tb() { + return this.data[m1]; + } + get tc() { + return this.data[m3]; + } + get td() { + return this.data[m4]; + } + transformPoint(x, y) { + return [ + this.data[m0] * x + this.data[m1] * y + this.data[m2], + this.data[m3] * x + this.data[m4] * y + this.data[m3] + ]; + } +} +const tempMatrix = new Matrix3d(); +const rx1 = 0; +const rx2 = 2; +const rx3 = 4; +const rx4 = 6; +const ry1 = 1; +const ry2 = 3; +const ry3 = 5; +const ry4 = 7; +class RenderCoords { + constructor(entries) { + __publicField(this, "data"); + this.data = new Float32Array(8); + if (entries) { + this.data[rx1] = entries[rx1]; + this.data[rx2] = entries[rx2]; + this.data[rx3] = entries[rx3]; + this.data[rx4] = entries[rx4]; + this.data[ry1] = entries[ry1]; + this.data[ry2] = entries[ry2]; + this.data[ry3] = entries[ry3]; + this.data[ry4] = entries[ry4]; + } + } + static translate(x1, y1, x2, y2, x3, y3, x4, y4, out) { + if (!out) { + out = new RenderCoords(); + } + out.data[rx1] = x1; + out.data[rx2] = x2; + out.data[rx3] = x3; + out.data[rx4] = x4; + out.data[ry1] = y1; + out.data[ry2] = y2; + out.data[ry3] = y3; + out.data[ry4] = y4; + return out; + } + get x1() { + return this.data[rx1]; + } + get x2() { + return this.data[rx2]; + } + get x3() { + return this.data[rx3]; + } + get x4() { + return this.data[rx4]; + } + get y1() { + return this.data[ry1]; + } + get y2() { + return this.data[ry2]; + } + get y3() { + return this.data[ry3]; + } + get y4() { + return this.data[ry4]; + } +} +var CoreNodeRenderState; +(function(CoreNodeRenderState2) { + CoreNodeRenderState2[CoreNodeRenderState2["Init"] = 0] = "Init"; + CoreNodeRenderState2[CoreNodeRenderState2["OutOfBounds"] = 2] = "OutOfBounds"; + CoreNodeRenderState2[CoreNodeRenderState2["InBounds"] = 4] = "InBounds"; + CoreNodeRenderState2[CoreNodeRenderState2["InViewport"] = 8] = "InViewport"; +})(CoreNodeRenderState || (CoreNodeRenderState = {})); +const CoreNodeRenderStateMap = /* @__PURE__ */ new Map(); +CoreNodeRenderStateMap.set(CoreNodeRenderState.Init, "init"); +CoreNodeRenderStateMap.set(CoreNodeRenderState.OutOfBounds, "outOfBounds"); +CoreNodeRenderStateMap.set(CoreNodeRenderState.InBounds, "inBounds"); +CoreNodeRenderStateMap.set(CoreNodeRenderState.InViewport, "inViewport"); +var UpdateType; +(function(UpdateType2) { + UpdateType2[UpdateType2["Children"] = 1] = "Children"; + UpdateType2[UpdateType2["ScaleRotate"] = 2] = "ScaleRotate"; + UpdateType2[UpdateType2["Local"] = 4] = "Local"; + UpdateType2[UpdateType2["Global"] = 8] = "Global"; + UpdateType2[UpdateType2["Clipping"] = 16] = "Clipping"; + UpdateType2[UpdateType2["CalculatedZIndex"] = 32] = "CalculatedZIndex"; + UpdateType2[UpdateType2["ZIndexSortedChildren"] = 64] = "ZIndexSortedChildren"; + UpdateType2[UpdateType2["PremultipliedColors"] = 128] = "PremultipliedColors"; + UpdateType2[UpdateType2["WorldAlpha"] = 256] = "WorldAlpha"; + UpdateType2[UpdateType2["RenderState"] = 512] = "RenderState"; + UpdateType2[UpdateType2["IsRenderable"] = 1024] = "IsRenderable"; + UpdateType2[UpdateType2["None"] = 0] = "None"; + UpdateType2[UpdateType2["All"] = 2047] = "All"; +})(UpdateType || (UpdateType = {})); +class CoreNode extends EventEmitter { + constructor(stage, props) { + super(); + __publicField(this, "stage"); + __publicField(this, "children", []); + __publicField(this, "props"); + __publicField(this, "updateType", UpdateType.All); + __publicField(this, "globalTransform"); + __publicField(this, "scaleRotateTransform"); + __publicField(this, "localTransform"); + __publicField(this, "renderCoords"); + __publicField(this, "renderBound"); + __publicField(this, "strictBound"); + __publicField(this, "preloadBound"); + __publicField(this, "clippingRect", { + x: 0, + y: 0, + width: 0, + height: 0, + valid: false + }); + __publicField(this, "isRenderable", false); + __publicField(this, "renderState", CoreNodeRenderState.Init); + __publicField(this, "worldAlpha", 1); + __publicField(this, "premultipliedColorTl", 0); + __publicField(this, "premultipliedColorTr", 0); + __publicField(this, "premultipliedColorBl", 0); + __publicField(this, "premultipliedColorBr", 0); + __publicField(this, "calcZIndex", 0); + __publicField(this, "hasRTTupdates", false); + __publicField(this, "onTextureLoaded", (target, dimensions) => { + this.autosizeNode(dimensions); + if (this.parentHasRenderTexture) { + this.setRTTUpdates(1); + } + this.emit("loaded", { + type: "texture", + dimensions + }); + queueMicrotask(() => { + this.stage.requestRender(); + }); + }); + __publicField(this, "onTextureFailed", (target, error) => { + this.emit("failed", { + type: "texture", + error + }); + }); + __publicField(this, "onTextureFreed", (target) => { + this.emit("freed", { + type: "texture" + }); + }); + this.stage = stage; + this.props = { + ...props, + parent: null, + // Assign a default value to parentHasRenderTexture + parentHasRenderTexture: false + }; + this.parent = props.parent; + this.rtt = props.rtt; + this.updateScaleRotateTransform(); + } + //#region Textures + loadTexture(textureType, props, options = null) { + if (this.props.texture) { + this.unloadTexture(); + } + const { txManager } = this.stage; + const texture = txManager.loadTexture(textureType, props, options); + this.props.texture = texture; + this.props.textureOptions = options; + this.setUpdateType(UpdateType.IsRenderable); + queueMicrotask(() => { + if (texture.state === "loaded") { + this.onTextureLoaded(texture, texture.dimensions); + } else if (texture.state === "failed") { + this.onTextureFailed(texture, texture.error); + } else if (texture.state === "freed") { + this.onTextureFreed(texture); + } + texture.on("loaded", this.onTextureLoaded); + texture.on("failed", this.onTextureFailed); + texture.on("freed", this.onTextureFreed); + }); + } + unloadTexture() { + if (this.props.texture) { + const { texture } = this.props; + texture.off("loaded", this.onTextureLoaded); + texture.off("failed", this.onTextureFailed); + texture.off("freed", this.onTextureFreed); + texture.setRenderableOwner(this, false); + } + this.props.texture = null; + this.props.textureOptions = null; + this.setUpdateType(UpdateType.IsRenderable); + } + autosizeNode(dimensions) { + if (this.autosize) { + this.width = dimensions.width; + this.height = dimensions.height; + } + } + //#endregion Textures + loadShader(shaderType, props) { + const shManager = this.stage.renderer.getShaderManager(); + assertTruthy(shManager); + const { shader, props: p } = shManager.loadShader(shaderType, props); + this.props.shader = shader; + this.props.shaderProps = p; + this.setUpdateType(UpdateType.IsRenderable); + } + /** + * Change types types is used to determine the scope of the changes being applied + * + * @remarks + * See {@link UpdateType} for more information on each type + * + * @param type + */ + setUpdateType(type) { + this.updateType |= type; + const parent = this.props.parent; + if (parent && !(parent.updateType & UpdateType.Children)) { + parent.setUpdateType(UpdateType.Children); + } + if (this.parentHasRenderTexture) { + this.setRTTUpdates(type); + } + } + sortChildren() { + this.children.sort((a, b) => a.calcZIndex - b.calcZIndex); + } + updateScaleRotateTransform() { + this.scaleRotateTransform = Matrix3d.rotate(this.props.rotation, this.scaleRotateTransform).scale(this.props.scaleX, this.props.scaleY); + } + updateLocalTransform() { + assertTruthy(this.scaleRotateTransform); + const pivotTranslateX = this.props.pivotX * this.props.width; + const pivotTranslateY = this.props.pivotY * this.props.height; + const mountTranslateX = this.props.mountX * this.props.width; + const mountTranslateY = this.props.mountY * this.props.height; + this.localTransform = Matrix3d.translate(pivotTranslateX - mountTranslateX + this.props.x, pivotTranslateY - mountTranslateY + this.props.y, this.localTransform).multiply(this.scaleRotateTransform).translate(-pivotTranslateX, -pivotTranslateY); + this.setUpdateType(UpdateType.Global); + } + /** + * @todo: test for correct calculation flag + * @param delta + */ + update(delta, parentClippingRect) { + var _a3; + if (this.updateType & UpdateType.ScaleRotate) { + this.updateScaleRotateTransform(); + this.setUpdateType(UpdateType.Local); + } + if (this.updateType & UpdateType.Local) { + this.updateLocalTransform(); + this.setUpdateType(UpdateType.Global); + } + const parent = this.props.parent; + let childUpdateType = UpdateType.None; + if (this.updateType & UpdateType.Global) { + assertTruthy(this.localTransform); + this.globalTransform = Matrix3d.copy((parent == null ? void 0 : parent.globalTransform) || this.localTransform, this.globalTransform); + if (this.parentHasRenderTexture && ((_a3 = this.props.parent) == null ? void 0 : _a3.rtt)) { + this.globalTransform = Matrix3d.identity(); + } + if (parent) { + this.globalTransform.multiply(this.localTransform); + } + this.calculateRenderCoords(); + this.updateBoundingRect(); + this.setUpdateType(UpdateType.Clipping | UpdateType.RenderState | UpdateType.Children); + childUpdateType |= UpdateType.Global; + } + if (this.updateType & UpdateType.Clipping) { + this.calculateClippingRect(parentClippingRect); + this.setUpdateType(UpdateType.Children); + childUpdateType |= UpdateType.Clipping; + } + if (this.updateType & UpdateType.WorldAlpha) { + if (parent) { + this.worldAlpha = parent.worldAlpha * this.props.alpha; + } else { + this.worldAlpha = this.props.alpha; + } + this.setUpdateType(UpdateType.Children | UpdateType.PremultipliedColors | UpdateType.IsRenderable); + childUpdateType |= UpdateType.WorldAlpha; + } + if (this.updateType & UpdateType.PremultipliedColors) { + this.premultipliedColorTl = mergeColorAlphaPremultiplied(this.props.colorTl, this.worldAlpha, true); + if (this.props.colorTl === this.props.colorTr && this.props.colorBl === this.props.colorBr && this.props.colorTl === this.props.colorBl) { + this.premultipliedColorTr = this.premultipliedColorBl = this.premultipliedColorBr = this.premultipliedColorTl; + } else { + this.premultipliedColorTr = mergeColorAlphaPremultiplied(this.props.colorTr, this.worldAlpha, true); + this.premultipliedColorBl = mergeColorAlphaPremultiplied(this.props.colorBl, this.worldAlpha, true); + this.premultipliedColorBr = mergeColorAlphaPremultiplied(this.props.colorBr, this.worldAlpha, true); + } + } + if (this.updateType & UpdateType.RenderState) { + this.updateRenderState(parentClippingRect); + this.setUpdateType(UpdateType.IsRenderable); + } + if (this.updateType & UpdateType.IsRenderable) { + this.updateIsRenderable(); + } + if (parent && this.updateType & UpdateType.CalculatedZIndex) { + this.calculateZIndex(); + parent.setUpdateType(UpdateType.ZIndexSortedChildren); + } + if (this.updateType & UpdateType.Children && this.children.length && !this.rtt) { + this.children.forEach((child) => { + child.setUpdateType(childUpdateType); + if (child.updateType === 0) { + return; + } + child.update(delta, this.clippingRect); + }); + } + if (this.updateType & UpdateType.ZIndexSortedChildren) { + this.sortChildren(); + } + this.updateType = 0; + } + //check if CoreNode is renderable based on props + checkRenderProps() { + if (this.props.texture) { + return true; + } + if (!this.props.width || !this.props.height) { + return false; + } + if (this.props.shader) { + return true; + } + if (this.props.clipping) { + return true; + } + if (this.props.color !== 0) { + return true; + } + if (this.props.colorTop !== 0) { + return true; + } + if (this.props.colorBottom !== 0) { + return true; + } + if (this.props.colorLeft !== 0) { + return true; + } + if (this.props.colorRight !== 0) { + return true; + } + if (this.props.colorTl !== 0) { + return true; + } + if (this.props.colorTr !== 0) { + return true; + } + if (this.props.colorBl !== 0) { + return true; + } + if (this.props.colorBr !== 0) { + return true; + } + return false; + } + checkRenderBounds(parentClippingRect) { + assertTruthy(this.renderBound); + const rectW = parentClippingRect.width || this.stage.root.width; + const rectH = parentClippingRect.height || this.stage.root.height; + this.strictBound = createBound(parentClippingRect.x, parentClippingRect.y, parentClippingRect.x + rectW, parentClippingRect.y + rectH, this.strictBound); + const renderM = this.stage.boundsMargin; + this.preloadBound = createBound(parentClippingRect.x - renderM[3], parentClippingRect.y - renderM[0], parentClippingRect.x + rectW + renderM[1], parentClippingRect.y + rectH + renderM[2], this.preloadBound); + if (boundInsideBound(this.renderBound, this.strictBound)) { + return CoreNodeRenderState.InViewport; + } + if (boundInsideBound(this.renderBound, this.preloadBound)) { + return CoreNodeRenderState.InBounds; + } + return CoreNodeRenderState.OutOfBounds; + } + updateRenderState(parentClippingRect) { + const renderState = this.checkRenderBounds(parentClippingRect); + if (renderState !== this.renderState) { + let previous = this.renderState; + this.renderState = renderState; + if (previous === CoreNodeRenderState.InViewport) { + this.emit("outOfViewport", { + previous, + current: renderState + }); + } + if (previous < CoreNodeRenderState.InBounds && renderState === CoreNodeRenderState.InViewport) { + this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), { + previous, + current: renderState + }); + previous = CoreNodeRenderState.InBounds; + } else if (previous > CoreNodeRenderState.InBounds && renderState === CoreNodeRenderState.OutOfBounds) { + this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), { + previous, + current: renderState + }); + previous = CoreNodeRenderState.InBounds; + } + const event = CoreNodeRenderStateMap.get(renderState); + assertTruthy(event); + this.emit(event, { + previous, + current: renderState + }); + } + } + setRenderState(state) { + if (state !== this.renderState) { + this.renderState = state; + this.emit(CoreNodeRenderState[state]); + } + } + /** + * This function updates the `isRenderable` property based on certain conditions. + * + * @returns + */ + updateIsRenderable() { + let newIsRenderable; + if (this.worldAlpha === 0 || !this.checkRenderProps()) { + newIsRenderable = false; + } else { + newIsRenderable = this.renderState > CoreNodeRenderState.OutOfBounds; + } + if (this.isRenderable !== newIsRenderable) { + this.isRenderable = newIsRenderable; + this.onChangeIsRenderable(newIsRenderable); + } + } + onChangeIsRenderable(isRenderable) { + var _a3; + (_a3 = this.props.texture) == null ? void 0 : _a3.setRenderableOwner(this, isRenderable); + } + calculateRenderCoords() { + const { width, height, globalTransform: transform } = this; + assertTruthy(transform); + const { tx, ty, ta, tb, tc, td } = transform; + if (tb === 0 && tc === 0) { + const minX = tx; + const maxX = tx + width * ta; + const minY = ty; + const maxY = ty + height * td; + this.renderCoords = RenderCoords.translate( + //top-left + minX, + minY, + //top-right + maxX, + minY, + //bottom-right + maxX, + maxY, + //bottom-left + minX, + maxY, + this.renderCoords + ); + } else { + this.renderCoords = RenderCoords.translate( + //top-left + tx, + ty, + //top-right + tx + width * ta, + ty + width * tc, + //bottom-right + tx + width * ta + height * tb, + ty + width * tc + height * td, + //bottom-left + tx + height * tb, + ty + height * td, + this.renderCoords + ); + } + } + updateBoundingRect() { + const { renderCoords, globalTransform: transform } = this; + assertTruthy(transform); + assertTruthy(renderCoords); + const { tb, tc } = transform; + const { x1, y1, x3, y3 } = renderCoords; + if (tb === 0 || tc === 0) { + this.renderBound = createBound(x1, y1, x3, y3, this.renderBound); + } else { + const { x2, x4, y2, y4 } = renderCoords; + this.renderBound = createBound(Math.min(x1, x2, x3, x4), Math.min(y1, y2, y3, y4), Math.max(x1, x2, x3, x4), Math.max(y1, y2, y3, y4), this.renderBound); + } + } + /** + * This function calculates the clipping rectangle for a node. + * + * The function then checks if the node is rotated. If the node requires clipping and is not rotated, a new clipping rectangle is created based on the node's global transform and dimensions. + * If a parent clipping rectangle exists, it is intersected with the node's clipping rectangle (if it exists), or replaces the node's clipping rectangle. + * + * Finally, the node's parentClippingRect and clippingRect properties are updated. + */ + calculateClippingRect(parentClippingRect) { + assertTruthy(this.globalTransform); + const { clippingRect, props, globalTransform: gt } = this; + const { clipping } = props; + const isRotated = gt.tb !== 0 || gt.tc !== 0; + if (clipping && !isRotated) { + clippingRect.x = gt.tx; + clippingRect.y = gt.ty; + clippingRect.width = this.width * gt.ta; + clippingRect.height = this.height * gt.td; + clippingRect.valid = true; + } else { + clippingRect.valid = false; + } + if (parentClippingRect.valid && clippingRect.valid) { + intersectRect(parentClippingRect, clippingRect, clippingRect); + } else if (parentClippingRect.valid) { + copyRect(parentClippingRect, clippingRect); + clippingRect.valid = true; + } + } + calculateZIndex() { + var _a3, _b2; + const props = this.props; + const z = props.zIndex || 0; + const p = ((_a3 = props.parent) == null ? void 0 : _a3.zIndex) || 0; + let zIndex = z; + if ((_b2 = props.parent) == null ? void 0 : _b2.zIndexLocked) { + zIndex = z < p ? z : p; + } + this.calcZIndex = zIndex; + } + /** + * Destroy the node and cleanup all resources + */ + destroy() { + this.unloadTexture(); + this.clippingRect.valid = false; + this.isRenderable = false; + delete this.renderCoords; + delete this.renderBound; + delete this.strictBound; + delete this.preloadBound; + delete this.globalTransform; + delete this.scaleRotateTransform; + delete this.localTransform; + this.props.texture = null; + this.props.shader = null; + this.removeAllListeners(); + this.parent = null; + } + renderQuads(renderer2) { + const { width, height, texture, textureOptions, shader, shaderProps, rtt, parentHasRenderTexture } = this.props; + if (parentHasRenderTexture) { + if (!renderer2.renderToTextureActive) { + return; + } + if (this.parentRenderTexture !== renderer2.activeRttNode) { + return; + } + } + const { premultipliedColorTl, premultipliedColorTr, premultipliedColorBl, premultipliedColorBr } = this; + const { zIndex, worldAlpha, globalTransform: gt, clippingRect } = this; + assertTruthy(gt); + renderer2.addQuad({ + width, + height, + colorTl: premultipliedColorTl, + colorTr: premultipliedColorTr, + colorBl: premultipliedColorBl, + colorBr: premultipliedColorBr, + texture, + textureOptions, + zIndex, + shader, + shaderProps, + alpha: worldAlpha, + clippingRect, + tx: gt.tx, + ty: gt.ty, + ta: gt.ta, + tb: gt.tb, + tc: gt.tc, + td: gt.td, + rtt, + parentHasRenderTexture, + framebufferDimensions: this.framebufferDimensions + }); + } + //#region Properties + get id() { + return this.props.id; + } + get x() { + return this.props.x; + } + set x(value) { + if (this.props.x !== value) { + this.props.x = value; + this.setUpdateType(UpdateType.Local); + } + } + get absX() { + var _a3, _b2, _c2; + return this.props.x + (((_a3 = this.props.parent) == null ? void 0 : _a3.absX) || ((_c2 = (_b2 = this.props.parent) == null ? void 0 : _b2.globalTransform) == null ? void 0 : _c2.tx) || 0); + } + get absY() { + var _a3, _b2; + return this.props.y + ((_b2 = (_a3 = this.props.parent) == null ? void 0 : _a3.absY) != null ? _b2 : 0); + } + get y() { + return this.props.y; + } + set y(value) { + if (this.props.y !== value) { + this.props.y = value; + this.setUpdateType(UpdateType.Local); + } + } + get width() { + return this.props.width; + } + set width(value) { + if (this.props.width !== value) { + this.props.width = value; + this.setUpdateType(UpdateType.Local); + } + } + get height() { + return this.props.height; + } + set height(value) { + if (this.props.height !== value) { + this.props.height = value; + this.setUpdateType(UpdateType.Local); + } + } + get scale() { + return this.scaleX; + } + set scale(value) { + this.scaleX = value; + this.scaleY = value; + } + get scaleX() { + return this.props.scaleX; + } + set scaleX(value) { + if (this.props.scaleX !== value) { + this.props.scaleX = value; + this.setUpdateType(UpdateType.ScaleRotate); + } + } + get scaleY() { + return this.props.scaleY; + } + set scaleY(value) { + if (this.props.scaleY !== value) { + this.props.scaleY = value; + this.setUpdateType(UpdateType.ScaleRotate); + } + } + get mount() { + return this.props.mount; + } + set mount(value) { + if (this.props.mountX !== value || this.props.mountY !== value) { + this.props.mountX = value; + this.props.mountY = value; + this.props.mount = value; + this.setUpdateType(UpdateType.Local); + } + } + get mountX() { + return this.props.mountX; + } + set mountX(value) { + if (this.props.mountX !== value) { + this.props.mountX = value; + this.setUpdateType(UpdateType.Local); + } + } + get mountY() { + return this.props.mountY; + } + set mountY(value) { + if (this.props.mountY !== value) { + this.props.mountY = value; + this.setUpdateType(UpdateType.Local); + } + } + get pivot() { + return this.props.pivot; + } + set pivot(value) { + if (this.props.pivotX !== value || this.props.pivotY !== value) { + this.props.pivotX = value; + this.props.pivotY = value; + this.props.pivot = value; + this.setUpdateType(UpdateType.Local); + } + } + get pivotX() { + return this.props.pivotX; + } + set pivotX(value) { + if (this.props.pivotX !== value) { + this.props.pivotX = value; + this.setUpdateType(UpdateType.Local); + } + } + get pivotY() { + return this.props.pivotY; + } + set pivotY(value) { + if (this.props.pivotY !== value) { + this.props.pivotY = value; + this.setUpdateType(UpdateType.Local); + } + } + get rotation() { + return this.props.rotation; + } + set rotation(value) { + if (this.props.rotation !== value) { + this.props.rotation = value; + this.setUpdateType(UpdateType.ScaleRotate); + } + } + get alpha() { + return this.props.alpha; + } + set alpha(value) { + this.props.alpha = value; + this.setUpdateType(UpdateType.PremultipliedColors | UpdateType.WorldAlpha); + } + get autosize() { + return this.props.autosize; + } + set autosize(value) { + this.props.autosize = value; + } + get clipping() { + return this.props.clipping; + } + set clipping(value) { + this.props.clipping = value; + this.setUpdateType(UpdateType.Clipping); + } + get color() { + return this.props.color; + } + set color(value) { + if (this.props.colorTl !== value || this.props.colorTr !== value || this.props.colorBl !== value || this.props.colorBr !== value) { + this.colorTl = value; + this.colorTr = value; + this.colorBl = value; + this.colorBr = value; + } + this.props.color = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorTop() { + return this.props.colorTop; + } + set colorTop(value) { + if (this.props.colorTl !== value || this.props.colorTr !== value) { + this.colorTl = value; + this.colorTr = value; + } + this.props.colorTop = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorBottom() { + return this.props.colorBottom; + } + set colorBottom(value) { + if (this.props.colorBl !== value || this.props.colorBr !== value) { + this.colorBl = value; + this.colorBr = value; + } + this.props.colorBottom = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorLeft() { + return this.props.colorLeft; + } + set colorLeft(value) { + if (this.props.colorTl !== value || this.props.colorBl !== value) { + this.colorTl = value; + this.colorBl = value; + } + this.props.colorLeft = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorRight() { + return this.props.colorRight; + } + set colorRight(value) { + if (this.props.colorTr !== value || this.props.colorBr !== value) { + this.colorTr = value; + this.colorBr = value; + } + this.props.colorRight = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorTl() { + return this.props.colorTl; + } + set colorTl(value) { + this.props.colorTl = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorTr() { + return this.props.colorTr; + } + set colorTr(value) { + this.props.colorTr = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorBl() { + return this.props.colorBl; + } + set colorBl(value) { + this.props.colorBl = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorBr() { + return this.props.colorBr; + } + set colorBr(value) { + this.props.colorBr = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + // we're only interested in parent zIndex to test + // if we should use node zIndex is higher then parent zIndex + get zIndexLocked() { + return this.props.zIndexLocked || 0; + } + set zIndexLocked(value) { + this.props.zIndexLocked = value; + this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children); + this.children.forEach((child) => { + child.setUpdateType(UpdateType.CalculatedZIndex); + }); + } + get zIndex() { + return this.props.zIndex; + } + set zIndex(value) { + this.props.zIndex = value; + this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children); + this.children.forEach((child) => { + child.setUpdateType(UpdateType.CalculatedZIndex); + }); + } + get parent() { + return this.props.parent; + } + set parent(newParent) { + const oldParent = this.props.parent; + if (oldParent === newParent) { + return; + } + this.props.parent = newParent; + if (oldParent) { + const index = oldParent.children.indexOf(this); + assertTruthy(index !== -1, "CoreNode.parent: Node not found in old parent's children!"); + oldParent.children.splice(index, 1); + oldParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren); + } + if (newParent) { + newParent.children.push(this); + this.setUpdateType(UpdateType.All); + newParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren); + if (newParent.rtt || newParent.parentHasRenderTexture) { + this.setRTTUpdates(UpdateType.All); + } + } + this.parentHasRenderTexture = (newParent == null ? void 0 : newParent.rtt) || (newParent == null ? void 0 : newParent.parentHasRenderTexture); + this.updateScaleRotateTransform(); + } + get rtt() { + return this.props.rtt; + } + set rtt(value) { + var _a3; + if (!value) { + return; + } + this.props.rtt = true; + this.hasRTTupdates = true; + (_a3 = this.stage.renderer) == null ? void 0 : _a3.renderToTexture(this); + } + set parentHasRenderTexture(value) { + this.props.parentHasRenderTexture = !!value; + } + get parentHasRenderTexture() { + return this.props.parentHasRenderTexture; + } + /** + * Returns the framebuffer dimensions of the node. + * If the node has a render texture, the dimensions are the same as the node's dimensions. + * If the node does not have a render texture, the dimensions are inherited from the parent. + * If the node parent has a render texture and the node is a render texture, the nodes dimensions are used. + */ + get framebufferDimensions() { + var _a3; + if (this.parentHasRenderTexture && !this.rtt) { + return (_a3 = this.parent) == null ? void 0 : _a3.framebufferDimensions; + } + return { width: this.width, height: this.height }; + } + /** + * Returns the parent render texture node if it exists. + */ + get parentRenderTexture() { + let parent = this.parent; + while (parent) { + if (parent.rtt) { + return parent; + } + parent = parent.parent; + } + return null; + } + get texture() { + return this.props.texture; + } + setRTTUpdates(type) { + var _a3; + this.hasRTTupdates = true; + (_a3 = this.parent) == null ? void 0 : _a3.setRTTUpdates(type); + } +} +let nextId = 1; +function getNewId() { + return nextId++; +} +class MainOnlyNode extends EventEmitter { + constructor(props, rendererMain, stage, coreNode) { + var _a3; + super(); + __publicField(this, "rendererMain"); + __publicField(this, "stage"); + __publicField(this, "id"); + __publicField(this, "coreNode"); + // Prop stores + __publicField(this, "_children", []); + __publicField(this, "_src", ""); + __publicField(this, "_parent", null); + __publicField(this, "_texture", null); + __publicField(this, "_shader", null); + __publicField(this, "_data", {}); + __publicField(this, "onTextureLoaded", (target, payload) => { + this.emit("loaded", payload); + }); + __publicField(this, "onTextureFailed", (target, payload) => { + this.emit("failed", payload); + }); + __publicField(this, "onTextureFreed", (target, payload) => { + this.emit("freed", payload); + }); + __publicField(this, "onOutOfBounds", (target, payload) => { + this.emit("outOfBounds", payload); + }); + __publicField(this, "onInBounds", (target, payload) => { + this.emit("inBounds", payload); + }); + __publicField(this, "onOutOfViewport", (target, payload) => { + this.emit("outOfViewport", payload); + }); + __publicField(this, "onInViewport", (target, payload) => { + this.emit("inViewport", payload); + }); + this.rendererMain = rendererMain; + this.stage = stage; + this.id = (_a3 = coreNode == null ? void 0 : coreNode.id) != null ? _a3 : getNewId(); + this.coreNode = coreNode || new CoreNode(this.stage, { + id: this.id, + x: props.x, + y: props.y, + width: props.width, + height: props.height, + alpha: props.alpha, + autosize: props.autosize, + clipping: props.clipping, + color: props.color, + colorTop: props.colorTop, + colorBottom: props.colorBottom, + colorLeft: props.colorLeft, + colorRight: props.colorRight, + colorTl: props.colorTl, + colorTr: props.colorTr, + colorBl: props.colorBl, + colorBr: props.colorBr, + zIndex: props.zIndex, + zIndexLocked: props.zIndexLocked, + scaleX: props.scaleX, + scaleY: props.scaleY, + mountX: props.mountX, + mountY: props.mountY, + mount: props.mount, + pivot: props.pivot, + pivotX: props.pivotX, + pivotY: props.pivotY, + rotation: props.rotation, + parent: null, + shader: null, + shaderProps: null, + texture: null, + textureOptions: null, + rtt: props.rtt, + parentHasRenderTexture: props.parentHasRenderTexture + }); + this.coreNode.on("loaded", this.onTextureLoaded); + this.coreNode.on("failed", this.onTextureFailed); + this.coreNode.on("freed", this.onTextureFreed); + this.coreNode.on("outOfBounds", this.onOutOfBounds); + this.coreNode.on("inBounds", this.onInBounds); + this.coreNode.on("outOfViewport", this.onOutOfViewport); + this.coreNode.on("inViewport", this.onInViewport); + this.parent = props.parent; + this.shader = props.shader; + this.texture = props.texture; + this.src = props.src; + this.rtt = props.rtt; + this._data = props.data; + } + get x() { + return this.coreNode.x; + } + set x(value) { + this.coreNode.x = value; + } + get y() { + return this.coreNode.y; + } + set y(value) { + this.coreNode.y = value; + } + get width() { + return this.coreNode.width; + } + set width(value) { + this.coreNode.width = value; + } + get height() { + return this.coreNode.height; + } + set height(value) { + this.coreNode.height = value; + } + get alpha() { + return this.coreNode.alpha; + } + set alpha(value) { + this.coreNode.alpha = value; + } + get autosize() { + return this.coreNode.autosize; + } + set autosize(value) { + this.coreNode.autosize = value; + } + get clipping() { + return this.coreNode.clipping; + } + set clipping(value) { + this.coreNode.clipping = value; + } + get color() { + return this.coreNode.color; + } + set color(value) { + this.coreNode.color = value; + } + get colorTop() { + return this.coreNode.colorTop; + } + set colorTop(value) { + this.coreNode.colorTop = value; + } + get colorBottom() { + return this.coreNode.colorBottom; + } + set colorBottom(value) { + this.coreNode.colorBottom = value; + } + get colorLeft() { + return this.coreNode.colorLeft; + } + set colorLeft(value) { + this.coreNode.colorLeft = value; + } + get colorRight() { + return this.coreNode.colorRight; + } + set colorRight(value) { + this.coreNode.colorRight = value; + } + get colorTl() { + return this.coreNode.colorTl; + } + set colorTl(value) { + this.coreNode.colorTl = value; + } + get colorTr() { + return this.coreNode.colorTr; + } + set colorTr(value) { + this.coreNode.colorTr = value; + } + get colorBl() { + return this.coreNode.colorBl; + } + set colorBl(value) { + this.coreNode.colorBl = value; + } + get colorBr() { + return this.coreNode.colorBr; + } + set colorBr(value) { + this.coreNode.colorBr = value; + } + get scale() { + if (this.scaleX !== this.scaleY) { + return null; + } + return this.coreNode.scaleX; + } + set scale(value) { + if (value === null) { + return; + } + this.coreNode.scaleX = value; + this.coreNode.scaleY = value; + } + get scaleX() { + return this.coreNode.scaleX; + } + set scaleX(value) { + this.coreNode.scaleX = value; + } + get scaleY() { + return this.coreNode.scaleY; + } + set scaleY(value) { + this.coreNode.scaleY = value; + } + get mount() { + return this.coreNode.mount; + } + set mount(value) { + this.coreNode.mount = value; + } + get mountX() { + return this.coreNode.mountX; + } + set mountX(value) { + this.coreNode.mountX = value; + } + get mountY() { + return this.coreNode.mountY; + } + set mountY(value) { + this.coreNode.mountY = value; + } + get pivot() { + return this.coreNode.pivot; + } + set pivot(value) { + this.coreNode.pivot = value; + } + get pivotX() { + return this.coreNode.pivotX; + } + set pivotX(value) { + this.coreNode.pivotX = value; + } + get pivotY() { + return this.coreNode.pivotY; + } + set pivotY(value) { + this.coreNode.pivotY = value; + } + get rotation() { + return this.coreNode.rotation; + } + set rotation(value) { + this.coreNode.rotation = value; + } + get parent() { + return this._parent; + } + set parent(newParent) { + var _a3; + const oldParent = this._parent; + this._parent = newParent; + this.coreNode.parent = (_a3 = newParent == null ? void 0 : newParent.coreNode) != null ? _a3 : null; + if (oldParent) { + const index = oldParent.children.indexOf(this); + assertTruthy(index !== -1, "MainOnlyNode.parent: Node not found in old parent's children!"); + oldParent.children.splice(index, 1); + } + if (newParent) { + newParent.children.push(this); + } + } + get children() { + return this._children; + } + get zIndex() { + return this.coreNode.zIndex; + } + set zIndex(value) { + this.coreNode.zIndex = value; + } + get zIndexLocked() { + return this.coreNode.zIndexLocked; + } + set zIndexLocked(value) { + this.coreNode.zIndexLocked = value; + } + get src() { + return this._src; + } + set src(imageUrl) { + if (this._src === imageUrl) { + return; + } + this._src = imageUrl; + if (!imageUrl) { + this.texture = null; + return; + } + this.texture = this.rendererMain.createTexture("ImageTexture", { + src: imageUrl + }); + } + //#region Texture + get texture() { + return this._texture; + } + set texture(texture) { + if (this._texture === texture) { + return; + } + if (this._texture) { + this.rendererMain.textureTracker.decrementTextureRefCount(this._texture); + } + if (texture) { + this.rendererMain.textureTracker.incrementTextureRefCount(texture); + } + this._texture = texture; + if (texture) { + this.coreNode.loadTexture(texture.txType, texture.props, texture.options); + } else { + this.coreNode.unloadTexture(); + } + } + get rtt() { + return this.coreNode.rtt; + } + set rtt(value) { + if (value) { + this.texture = this.rendererMain.createTexture("RenderTexture", { + width: this.width, + height: this.height + }, { preload: true, flipY: true }); + } + this.coreNode.rtt = value; + } + get parentHasRenderTexture() { + return this.coreNode.parentHasRenderTexture; + } + set parentHasRenderTexture(value) { + this.coreNode.parentHasRenderTexture = value; + } + //#endregion Texture + get shader() { + return this._shader; + } + set shader(shader) { + if (this._shader === shader) { + return; + } + this._shader = shader; + if (shader) { + this.coreNode.loadShader(shader.shType, shader.props); + } + } + get data() { + return this._data; + } + set data(d) { + this._data = santizeCustomDataMap(d); + } + destroy() { + this.emit("beforeDestroy", {}); + let child = this.children[0]; + while (child) { + child.destroy(); + child = this.children[0]; + } + this.coreNode.destroy(); + this.parent = null; + this.texture = null; + this.emit("afterDestroy", {}); + this.removeAllListeners(); + } + flush() { + } + animate(props, settings) { + const animation = new CoreAnimation(this.coreNode, props, settings); + const controller = new CoreAnimationController(this.stage.animationManager, animation); + return controller; + } +} +const startLoop = (stage) => { + let isIdle = false; + const runLoop = () => { + stage.updateAnimations(); + if (!stage.hasSceneUpdates()) { + stage.calculateFps(); + setTimeout(runLoop, 16.666666666666668); + if (!isIdle) { + stage.emit("idle"); + isIdle = true; + } + return; + } + isIdle = false; + stage.drawFrame(); + requestAnimationFrame(runLoop); + }; + requestAnimationFrame(runLoop); +}; +const getTimeStamp = () => { + return performance ? performance.now() : Date.now(); +}; +class AnimationManager { + constructor() { + __publicField(this, "activeAnimations", /* @__PURE__ */ new Set()); + } + registerAnimation(animation) { + this.activeAnimations.add(animation); + } + unregisterAnimation(animation) { + this.activeAnimations.delete(animation); + } + update(dt) { + this.activeAnimations.forEach((animation) => { + animation.update(dt); + }); + } +} +class ImageWorkerManager { + constructor(numImageWorkers) { + __publicField(this, "imageWorkersEnabled", true); + __publicField(this, "messageManager", {}); + __publicField(this, "workers", []); + __publicField(this, "workerIndex", 0); + this.workers = this.createWorkers(numImageWorkers); + this.workers.forEach((worker) => { + worker.onmessage = this.handleMessage.bind(this); + }); + } + handleMessage(event) { + const { src, data, error } = event.data; + const msg = this.messageManager[src]; + if (msg) { + const [resolve, reject] = msg; + delete this.messageManager[src]; + if (error) { + reject(new Error(error)); + } else { + resolve(data); + } + } + } + createWorkers(numWorkers = 1) { + const workerCode = "\n function hasAlphaChannel(mimeType) {\n return (mimeType.indexOf(\"image/png\") !== -1);\n }\n\n function getImage(src, premultiplyAlpha) {\n return new Promise(function(resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', src, true);\n xhr.responseType = 'blob';\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n var blob = xhr.response;\n var hasAlphaChannel = premultiplyAlpha !== undefined ? premultiplyAlpha : hasAlphaChannel(blob.type);\n\n createImageBitmap(blob, {\n premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',\n colorSpaceConversion: 'none',\n imageOrientation: 'none'\n }).then(function(data) {\n resolve({ data: data, premultiplyAlpha: premultiplyAlpha });\n }).catch(function(error) {\n reject(error);\n });\n } else {\n reject(new Error('Failed to load image: ' + xhr.statusText));\n }\n };\n\n xhr.onerror = function() {\n reject(new Error('Network error occurred while trying to fetch the image.'));\n };\n\n xhr.send();\n });\n }\n\n self.onmessage = (event) => {\n var src = event.data.src;\n var premultiplyAlpha = event.data.premultiplyAlpha;\n\n getImage(src, premultiplyAlpha)\n .then(function(data) {\n self.postMessage({ src: src, data: data }, [data.data]);\n })\n .catch(function(error) {\n self.postMessage({ src: src, error: error.message });\n });\n };\n "; + const blob = new Blob([workerCode.replace('"use strict";', "")], { + type: "application/javascript" + }); + const blobURL = (self.URL ? URL : webkitURL).createObjectURL(blob); + const workers = []; + for (let i = 0; i < numWorkers; i++) { + workers.push(new Worker(blobURL)); + } + return workers; + } + getNextWorker() { + const worker = this.workers[this.workerIndex]; + this.workerIndex = (this.workerIndex + 1) % this.workers.length; + return worker; + } + convertUrlToAbsolute(url) { + const absoluteUrl = new URL(url, self.location.href); + return absoluteUrl.href; + } + getImage(src, premultiplyAlpha) { + return new Promise((resolve, reject) => { + try { + if (this.workers) { + const absoluteSrcUrl = this.convertUrlToAbsolute(src); + this.messageManager[absoluteSrcUrl] = [resolve, reject]; + this.getNextWorker().postMessage({ + src: absoluteSrcUrl, + premultiplyAlpha + }); + } + } catch (error) { + reject(error); + } + }); + } +} +const _NoiseTexture = class _NoiseTexture extends Texture { + constructor(txManager, props) { + super(txManager); + __publicField(this, "props"); + this.props = _NoiseTexture.resolveDefaults(props); + } + async getTextureData() { + const { width, height } = this.props; + const size2 = width * height * 4; + const pixelData8 = new Uint8ClampedArray(size2); + for (let i = 0; i < size2; i += 4) { + const v = Math.floor(Math.random() * 256); + pixelData8[i] = v; + pixelData8[i + 1] = v; + pixelData8[i + 2] = v; + pixelData8[i + 3] = 255; + } + return { + data: new ImageData(pixelData8, width, height) + }; + } + static makeCacheKey(props) { + const resolvedProps = _NoiseTexture.resolveDefaults(props); + return "NoiseTexture,".concat(resolvedProps.width, ",").concat(resolvedProps.height, ",").concat(resolvedProps.cacheId); + } + static resolveDefaults(props) { + var _a3, _b2, _c2; + return { + width: (_a3 = props.width) != null ? _a3 : 128, + height: (_b2 = props.height) != null ? _b2 : 128, + cacheId: (_c2 = props.cacheId) != null ? _c2 : 0 + }; + } +}; +__publicField(_NoiseTexture, "z$__type__Props"); +let NoiseTexture = _NoiseTexture; +class CoreTextureManager { + constructor(numImageWorkers) { + /** + * Amount of used memory defined in pixels + */ + __publicField(this, "usedMemory", 0); + __publicField(this, "txConstructors", {}); + __publicField(this, "textureKeyCache", /* @__PURE__ */ new Map()); + __publicField(this, "textureIdCache", /* @__PURE__ */ new Map()); + __publicField(this, "ctxTextureCache", /* @__PURE__ */ new WeakMap()); + __publicField(this, "textureRefCountMap", /* @__PURE__ */ new WeakMap()); + __publicField(this, "imageWorkerManager", null); + __publicField(this, "hasCreateImageBitmap", !!self.createImageBitmap); + __publicField(this, "hasWorker", !!self.Worker); + /** + * Renderer that this texture manager is associated with + * + * @remarks + * This MUST be set before the texture manager is used. Otherwise errors + * will occur when using the texture manager. + */ + __publicField(this, "renderer"); + if (this.hasCreateImageBitmap && this.hasWorker) { + this.imageWorkerManager = new ImageWorkerManager(numImageWorkers); + } + if (!this.hasCreateImageBitmap) { + console.warn("[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower."); + } + this.registerTextureType("ImageTexture", ImageTexture); + this.registerTextureType("ColorTexture", ColorTexture); + this.registerTextureType("NoiseTexture", NoiseTexture); + this.registerTextureType("SubTexture", SubTexture); + this.registerTextureType("RenderTexture", RenderTexture); + } + registerTextureType(textureType, textureClass) { + this.txConstructors[textureType] = textureClass; + } + loadTexture(textureType, props, options = null) { + var _a3; + const TextureClass = this.txConstructors[textureType]; + if (!TextureClass) { + throw new Error('Texture type "'.concat(textureType, '" is not registered')); + } + let texture; + if ((options == null ? void 0 : options.id) !== void 0 && this.textureIdCache.has(options.id)) { + texture = this.textureIdCache.get(options.id); + } + if (!texture) { + const descId = options == null ? void 0 : options.id; + const cacheKey = (_a3 = options == null ? void 0 : options.cacheKey) != null ? _a3 : TextureClass.makeCacheKey(props); + if (cacheKey && this.textureKeyCache.has(cacheKey)) { + texture = this.textureKeyCache.get(cacheKey); + } else { + texture = new TextureClass(this, props); + } + if (descId) { + this.addTextureIdToCache(descId, cacheKey, texture); + } + } + if (options == null ? void 0 : options.preload) { + const ctxTx = this.getCtxTexture(texture); + ctxTx.load(); + } + return texture; + } + /** + * Add a `Texture` to the texture cache by its texture desc ID and cache key + * + * @remarks + * This is used internally by the `CoreTextureManager` to cache textures + * when they are created. + * + * It handles updating the texture ID cache, texture key cache, and texture + * reference count map. + * + * @param textureDescId + * @param cacheKey + * @param texture + */ + addTextureIdToCache(textureDescId, cacheKey, texture) { + const { textureIdCache, textureRefCountMap } = this; + textureIdCache.set(textureDescId, texture); + if (textureRefCountMap.has(texture)) { + textureRefCountMap.get(texture).count++; + } else { + textureRefCountMap.set(texture, { cacheKey, count: 1 }); + if (cacheKey) { + this.textureKeyCache.set(cacheKey, texture); + } + } + } + /** + * Remove a `Texture` from the texture cache by its texture desc ID + * + * @remarks + * This is called externally by when we know (at least reasonably well) that + * the `TextureRef` in the Main API space has been is no longer used. This + * allows us to remove the `Texture` from the Usage Cache so that it can be + * garbage collected as well. + * + * @param textureDescId + */ + removeTextureIdFromCache(textureDescId) { + var _a3; + const { textureIdCache, textureRefCountMap } = this; + const texture = textureIdCache.get(textureDescId); + if (!texture) { + return; + } + textureIdCache.delete(textureDescId); + if (textureRefCountMap.has(texture)) { + const refCountObj = textureRefCountMap.get(texture); + assertTruthy(refCountObj); + refCountObj.count--; + if (refCountObj.count === 0) { + textureRefCountMap.delete(texture); + if (refCountObj.cacheKey) { + this.textureKeyCache.delete(refCountObj.cacheKey); + } + } + } + (_a3 = this.ctxTextureCache.get(texture)) == null ? void 0 : _a3.free(); + } + /** + * Get an object containing debug information about the texture manager. + * + * @returns + */ + getDebugInfo() { + return { + keyCacheSize: this.textureKeyCache.size, + idCacheSize: this.textureIdCache.size + }; + } + /** + * Get a CoreContextTexture for the given Texture source. + * + * @remarks + * If the texture source already has an allocated CoreContextTexture, it will be + * returned from the cache. Otherwise, a new CoreContextTexture will be created + * and cached. + * + * ContextTextures are stored in a WeakMap, so they will be garbage collected + * when the Texture source is no longer referenced. + * + * @param textureSource + * @returns + */ + getCtxTexture(textureSource) { + if (this.ctxTextureCache.has(textureSource)) { + return this.ctxTextureCache.get(textureSource); + } + const texture = this.renderer.createCtxTexture(textureSource); + this.ctxTextureCache.set(textureSource, texture); + return texture; + } +} +class TextureMemoryManager { + /** + * @param byteThreshold Number of texture bytes to trigger garbage collection + */ + constructor(byteThreshold) { + __publicField(this, "memUsed", 0); + __publicField(this, "textures", /* @__PURE__ */ new Map()); + __publicField(this, "threshold"); + this.threshold = byteThreshold; + if (byteThreshold === 0) { + this.setTextureMemUse = () => { + }; + } + } + setTextureMemUse(ctxTexture, byteSize) { + if (this.textures.has(ctxTexture)) { + this.memUsed -= this.textures.get(ctxTexture); + } + if (byteSize === 0) { + this.textures.delete(ctxTexture); + return; + } else { + this.memUsed += byteSize; + this.textures.set(ctxTexture, byteSize); + } + if (this.memUsed > this.threshold) { + this.gc(); + } + } + gc() { + this.textures.forEach((byteSize, ctxTexture) => { + if (!ctxTexture.renderable) { + ctxTexture.free(); + } + }); + } +} +const bufferMemory = 2e6; +class Stage extends EventEmitter { + /** + * Stage constructor + */ + constructor(options) { + super(); + __publicField(this, "options"); + /// Module Instances + __publicField(this, "animationManager"); + __publicField(this, "txManager"); + __publicField(this, "txMemManager"); + __publicField(this, "fontManager"); + __publicField(this, "textRenderers"); + __publicField(this, "shManager"); + __publicField(this, "renderer"); + __publicField(this, "root"); + __publicField(this, "boundsMargin"); + /// State + __publicField(this, "deltaTime", 0); + __publicField(this, "lastFrameTime", 0); + __publicField(this, "currentFrameTime", 0); + __publicField(this, "fpsNumFrames", 0); + __publicField(this, "fpsElapsedTime", 0); + __publicField(this, "renderRequested", false); + /// Debug data + __publicField(this, "contextSpy", null); + this.options = options; + const { canvas, clearColor, rootId, debug, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, txMemByteThreshold } = options; + this.txManager = new CoreTextureManager(numImageWorkers); + this.txMemManager = new TextureMemoryManager(txMemByteThreshold); + this.shManager = new CoreShaderManager(); + this.animationManager = new AnimationManager(); + this.contextSpy = enableContextSpy ? new ContextSpy() : null; + let bm = [0, 0, 0, 0]; + if (boundsMargin) { + bm = Array.isArray(boundsMargin) ? boundsMargin : [boundsMargin, boundsMargin, boundsMargin, boundsMargin]; + } + this.boundsMargin = bm; + if (debug == null ? void 0 : debug.monitorTextureCache) { + setInterval(() => { + assertTruthy(this.txManager); + const debugInfo = this.txManager.getDebugInfo(); + console.log("Texture ID Cache Size: ", debugInfo.idCacheSize); + console.log("Texture Key Cache Size: ", debugInfo.keyCacheSize); + }, 1e3); + } + this.renderer = new WebGlCoreRenderer({ + stage: this, + canvas, + pixelRatio: options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio, + clearColor: clearColor != null ? clearColor : 4278190080, + bufferMemory, + txManager: this.txManager, + txMemManager: this.txMemManager, + shManager: this.shManager, + contextSpy: this.contextSpy + }); + this.txManager.renderer = this.renderer; + this.textRenderers = { + canvas: new CanvasTextRenderer(this), + sdf: new SdfTextRenderer(this) + }; + this.fontManager = new TrFontManager(this.textRenderers); + const rootNode = new CoreNode(this, { + id: rootId, + x: 0, + y: 0, + width: appWidth, + height: appHeight, + alpha: 1, + autosize: false, + clipping: false, + color: 0, + colorTop: 0, + colorBottom: 0, + colorLeft: 0, + colorRight: 0, + colorTl: 0, + colorTr: 0, + colorBl: 0, + colorBr: 0, + zIndex: 0, + zIndexLocked: 0, + scaleX: 1, + scaleY: 1, + mountX: 0, + mountY: 0, + mount: 0, + pivot: 0.5, + pivotX: 0.5, + pivotY: 0.5, + rotation: 0, + parent: null, + texture: null, + textureOptions: null, + shader: null, + shaderProps: null, + rtt: false + }); + this.root = rootNode; + { + startLoop(this); + } + } + /** + * Update animations + */ + updateAnimations() { + const { animationManager } = this; + if (!this.root) { + return; + } + this.lastFrameTime = this.currentFrameTime; + this.currentFrameTime = getTimeStamp(); + this.deltaTime = !this.lastFrameTime ? 100 / 6 : this.currentFrameTime - this.lastFrameTime; + this.emit("frameTick", { + time: this.currentFrameTime, + delta: this.deltaTime + }); + animationManager.update(this.deltaTime); + } + /** + * Check if the scene has updates + */ + hasSceneUpdates() { + return !!this.root.updateType || this.renderRequested; + } + /** + * Start a new frame draw + */ + drawFrame() { + const { renderer: renderer2, renderRequested } = this; + if (this.root.updateType !== 0) { + this.root.update(this.deltaTime, this.root.clippingRect); + } + renderer2 == null ? void 0 : renderer2.reset(); + if (renderer2.rttNodes.length > 0) { + renderer2.renderRTTNodes(); + } + this.addQuads(this.root); + renderer2 == null ? void 0 : renderer2.render(); + this.calculateFps(); + if (renderRequested) { + this.renderRequested = false; + } + } + calculateFps() { + var _a3, _b2, _c2; + const { fpsUpdateInterval } = this.options; + if (fpsUpdateInterval) { + this.fpsNumFrames++; + this.fpsElapsedTime += this.deltaTime; + if (this.fpsElapsedTime >= fpsUpdateInterval) { + const fps2 = Math.round(this.fpsNumFrames * 1e3 / this.fpsElapsedTime); + this.fpsNumFrames = 0; + this.fpsElapsedTime = 0; + this.emit("fpsUpdate", { + fps: fps2, + contextSpyData: (_b2 = (_a3 = this.contextSpy) == null ? void 0 : _a3.getData()) != null ? _b2 : null + }); + (_c2 = this.contextSpy) == null ? void 0 : _c2.reset(); + } + } + } + addQuads(node) { + assertTruthy(this.renderer && node.globalTransform); + if (node.isRenderable) { + node.renderQuads(this.renderer); + } + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (!child) { + continue; + } + if ((child == null ? void 0 : child.worldAlpha) === 0) { + continue; + } + this.addQuads(child); + } + } + /** + * Request a render pass without forcing an update + */ + requestRender() { + this.renderRequested = true; + } + /** + * Given a font name, and possible renderer override, return the best compatible text renderer. + * + * @remarks + * Will always return at least a canvas renderer if no other suitable renderer can be resolved. + * + * @param fontFamily + * @param textRendererOverride + * @returns + */ + resolveTextRenderer(trProps, textRendererOverride = null) { + let rendererId = textRendererOverride; + let overrideFallback = false; + if (rendererId) { + const possibleRenderer = this.textRenderers[rendererId]; + if (!possibleRenderer) { + console.warn("Text renderer override '".concat(rendererId, "' not found.")); + rendererId = null; + overrideFallback = true; + } else if (!possibleRenderer.canRenderFont(trProps)) { + console.warn("Cannot use override text renderer '".concat(rendererId, "' for font"), trProps); + rendererId = null; + overrideFallback = true; + } + } + if (!rendererId) { + for (const [trId, tr] of Object.entries(this.textRenderers)) { + if (trId === "canvas") { + continue; + } + if (tr.canRenderFont(trProps)) { + rendererId = trId; + break; + } + } + if (!rendererId) { + rendererId = "canvas"; + } + } + if (overrideFallback) { + console.warn("Falling back to text renderer ".concat(String(rendererId))); + } + const resolvedTextRenderer = this.textRenderers[rendererId]; + assertTruthy(resolvedTextRenderer, "resolvedTextRenderer undefined"); + return resolvedTextRenderer; + } +} +class CoreTextNode extends CoreNode { + constructor(stage, props) { + super(stage, props); + __publicField(this, "textRenderer"); + __publicField(this, "trState"); + __publicField(this, "_textRendererOverride", null); + __publicField(this, "onTextLoaded", () => { + const { contain } = this; + const setWidth = this.trState.props.width; + const setHeight = this.trState.props.height; + const calcWidth = this.trState.textW || 0; + const calcHeight2 = this.trState.textH || 0; + if (contain === "both") { + this.props.width = setWidth; + this.props.height = setHeight; + } else if (contain === "width") { + this.props.width = setWidth; + this.props.height = calcHeight2; + } else if (contain === "none") { + this.props.width = calcWidth; + this.props.height = calcHeight2; + } + this.updateLocalTransform(); + this.stage.requestRender(); + this.emit("loaded", { + type: "text", + dimensions: { + width: this.trState.textW || 0, + height: this.trState.textH || 0 + } + }); + }); + __publicField(this, "onTextFailed", (target, error) => { + this.emit("failed", { + type: "text", + error + }); + }); + this._textRendererOverride = props.textRendererOverride; + const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState({ + x: this.absX, + y: this.absY, + width: props.width, + height: props.height, + textAlign: props.textAlign, + color: props.color, + zIndex: props.zIndex, + contain: props.contain, + scrollable: props.scrollable, + scrollY: props.scrollY, + offsetY: props.offsetY, + letterSpacing: props.letterSpacing, + debug: props.debug, + fontFamily: props.fontFamily, + fontSize: props.fontSize, + fontStretch: props.fontStretch, + fontStyle: props.fontStyle, + fontWeight: props.fontWeight, + text: props.text, + lineHeight: props.lineHeight, + maxLines: props.maxLines, + textBaseline: props.textBaseline, + verticalAlign: props.verticalAlign, + overflowSuffix: props.overflowSuffix + }); + this.textRenderer = resolvedTextRenderer; + this.trState = textRendererState; + } + get width() { + return this.props.width; + } + set width(value) { + this.props.width = value; + this.textRenderer.set.width(this.trState, value); + if (this.contain === "none") { + this.setUpdateType(UpdateType.Local); + } + } + get height() { + return this.props.height; + } + set height(value) { + this.props.height = value; + this.textRenderer.set.height(this.trState, value); + if (this.contain !== "both") { + this.setUpdateType(UpdateType.Local); + } + } + get color() { + return this.trState.props.color; + } + set color(value) { + this.textRenderer.set.color(this.trState, value); + } + get text() { + return this.trState.props.text; + } + set text(value) { + this.textRenderer.set.text(this.trState, value); + } + get textRendererOverride() { + return this._textRendererOverride; + } + set textRendererOverride(value) { + this._textRendererOverride = value; + this.textRenderer.destroyState(this.trState); + const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState(this.trState.props); + this.textRenderer = resolvedTextRenderer; + this.trState = textRendererState; + } + get fontSize() { + return this.trState.props.fontSize; + } + set fontSize(value) { + this.textRenderer.set.fontSize(this.trState, value); + } + get fontFamily() { + return this.trState.props.fontFamily; + } + set fontFamily(value) { + this.textRenderer.set.fontFamily(this.trState, value); + } + get fontStretch() { + return this.trState.props.fontStretch; + } + set fontStretch(value) { + this.textRenderer.set.fontStretch(this.trState, value); + } + get fontStyle() { + return this.trState.props.fontStyle; + } + set fontStyle(value) { + this.textRenderer.set.fontStyle(this.trState, value); + } + get fontWeight() { + return this.trState.props.fontWeight; + } + set fontWeight(value) { + this.textRenderer.set.fontWeight(this.trState, value); + } + get textAlign() { + return this.trState.props.textAlign; + } + set textAlign(value) { + this.textRenderer.set.textAlign(this.trState, value); + } + get contain() { + return this.trState.props.contain; + } + set contain(value) { + this.textRenderer.set.contain(this.trState, value); + } + get scrollable() { + return this.trState.props.scrollable; + } + set scrollable(value) { + this.textRenderer.set.scrollable(this.trState, value); + } + get scrollY() { + return this.trState.props.scrollY; + } + set scrollY(value) { + this.textRenderer.set.scrollY(this.trState, value); + } + get offsetY() { + return this.trState.props.offsetY; + } + set offsetY(value) { + this.textRenderer.set.offsetY(this.trState, value); + } + get letterSpacing() { + return this.trState.props.letterSpacing; + } + set letterSpacing(value) { + this.textRenderer.set.letterSpacing(this.trState, value); + } + get lineHeight() { + return this.trState.props.lineHeight; + } + set lineHeight(value) { + if (this.textRenderer.set.lineHeight) { + this.textRenderer.set.lineHeight(this.trState, value); + } + } + get maxLines() { + return this.trState.props.maxLines; + } + set maxLines(value) { + if (this.textRenderer.set.maxLines) { + this.textRenderer.set.maxLines(this.trState, value); + } + } + get textBaseline() { + return this.trState.props.textBaseline; + } + set textBaseline(value) { + if (this.textRenderer.set.textBaseline) { + this.textRenderer.set.textBaseline(this.trState, value); + } + } + get verticalAlign() { + return this.trState.props.verticalAlign; + } + set verticalAlign(value) { + if (this.textRenderer.set.verticalAlign) { + this.textRenderer.set.verticalAlign(this.trState, value); + } + } + get overflowSuffix() { + return this.trState.props.overflowSuffix; + } + set overflowSuffix(value) { + if (this.textRenderer.set.overflowSuffix) { + this.textRenderer.set.overflowSuffix(this.trState, value); + } + } + get debug() { + return this.trState.props.debug; + } + set debug(value) { + this.textRenderer.set.debug(this.trState, value); + } + update(delta, parentClippingRect) { + super.update(delta, parentClippingRect); + assertTruthy(this.globalTransform); + this.textRenderer.set.x(this.trState, this.globalTransform.tx); + this.textRenderer.set.y(this.trState, this.globalTransform.ty); + } + checkRenderProps() { + if (this.trState.props.text !== "") { + return true; + } + return super.checkRenderProps(); + } + onChangeIsRenderable(isRenderable) { + super.onChangeIsRenderable(isRenderable); + this.textRenderer.setIsRenderable(this.trState, isRenderable); + } + renderQuads(renderer2) { + var _a3, _b2; + assertTruthy(this.globalTransform); + if (this.parentHasRenderTexture) { + if (!renderer2.renderToTextureActive) { + return; + } + if (this.parentRenderTexture !== renderer2.activeRttNode) { + return; + } + } + if (this.parentHasRenderTexture && ((_a3 = this.props.parent) == null ? void 0 : _a3.rtt)) { + this.globalTransform = Matrix3d.identity(); + this.globalTransform.multiply((_b2 = this.localTransform) != null ? _b2 : Matrix3d.identity()); + } + assertTruthy(this.globalTransform); + this.textRenderer.renderQuads(this.trState, this.globalTransform, this.clippingRect, this.worldAlpha, this.parentHasRenderTexture, this.framebufferDimensions); + } + /** + * Destroy the node and cleanup all resources + */ + destroy() { + super.destroy(); + this.textRenderer.destroyState(this.trState); + } + /** + * Resolve a text renderer and a new state based on the current text renderer props provided + * @param props + * @returns + */ + resolveTextRendererAndState(props) { + const resolvedTextRenderer = this.stage.resolveTextRenderer(props, this._textRendererOverride); + const textRendererState = resolvedTextRenderer.createState(props); + textRendererState.emitter.on("loaded", this.onTextLoaded); + textRendererState.emitter.on("failed", this.onTextFailed); + resolvedTextRenderer.scheduleUpdateState(textRendererState); + return { + resolvedTextRenderer, + textRendererState + }; + } +} +class MainOnlyTextNode extends MainOnlyNode { + constructor(props, rendererMain, stage) { + super(props, rendererMain, stage, new CoreTextNode(stage, { + id: getNewId(), + x: props.x, + y: props.y, + width: props.width, + height: props.height, + alpha: props.alpha, + autosize: props.autosize, + clipping: props.clipping, + color: props.color, + colorTop: props.colorTop, + colorBottom: props.colorBottom, + colorLeft: props.colorLeft, + colorRight: props.colorRight, + colorTl: props.colorTl, + colorTr: props.colorTr, + colorBl: props.colorBl, + colorBr: props.colorBr, + zIndex: props.zIndex, + zIndexLocked: props.zIndexLocked, + scaleX: props.scaleX, + scaleY: props.scaleY, + mountX: props.mountX, + mountY: props.mountY, + mount: props.mount, + pivot: props.pivot, + pivotX: props.pivotX, + pivotY: props.pivotY, + rotation: props.rotation, + // Text properties + text: props.text, + fontSize: props.fontSize, + fontFamily: props.fontFamily, + fontWeight: props.fontWeight, + fontStretch: props.fontStretch, + fontStyle: props.fontStyle, + contain: props.contain, + scrollable: props.scrollable, + letterSpacing: props.letterSpacing, + textAlign: props.textAlign, + scrollY: props.scrollY, + offsetY: props.offsetY, + textRendererOverride: props.textRendererOverride, + lineHeight: props.lineHeight, + maxLines: props.maxLines, + textBaseline: props.textBaseline, + verticalAlign: props.verticalAlign, + overflowSuffix: props.overflowSuffix, + debug: props.debug, + // These properties will get set appropriately in the base MainOnlyNode class + parent: null, + texture: null, + textureOptions: null, + shader: null, + shaderProps: null, + rtt: false, + parentHasRenderTexture: false + })); + } + get text() { + return this.coreNode.text; + } + set text(value) { + this.coreNode.text = value; + } + get textRendererOverride() { + return this.coreNode.textRendererOverride; + } + set textRendererOverride(value) { + this.coreNode.textRendererOverride = value; + } + get fontSize() { + return this.coreNode.fontSize; + } + set fontSize(value) { + this.coreNode.fontSize = value; + } + get fontFamily() { + return this.coreNode.fontFamily; + } + set fontFamily(value) { + this.coreNode.fontFamily = value; + } + get fontWeight() { + return this.coreNode.fontWeight; + } + set fontWeight(value) { + this.coreNode.fontWeight = value; + } + get fontStretch() { + return this.coreNode.fontStretch; + } + set fontStretch(value) { + this.coreNode.fontStretch = value; + } + get fontStyle() { + return this.coreNode.fontStyle; + } + set fontStyle(value) { + this.coreNode.fontStyle = value; + } + get textAlign() { + return this.coreNode.textAlign; + } + set textAlign(value) { + this.coreNode.textAlign = value; + } + get contain() { + return this.coreNode.contain; + } + set contain(value) { + this.coreNode.contain = value; + } + get scrollable() { + return this.coreNode.scrollable; + } + set scrollable(value) { + this.coreNode.scrollable = value; + } + get scrollY() { + return this.coreNode.scrollY; + } + set scrollY(value) { + this.coreNode.scrollY = value; + } + get offsetY() { + return this.coreNode.offsetY; + } + set offsetY(value) { + this.coreNode.offsetY = value; + } + get letterSpacing() { + return this.coreNode.letterSpacing; + } + set letterSpacing(value) { + this.coreNode.letterSpacing = value; + } + get lineHeight() { + return this.coreNode.lineHeight; + } + set lineHeight(value) { + if (value) { + this.coreNode.lineHeight = value; + } + } + get maxLines() { + return this.coreNode.maxLines; + } + set maxLines(value) { + if (value) { + this.coreNode.maxLines = value; + } + } + get textBaseline() { + return this.coreNode.textBaseline; + } + set textBaseline(value) { + if (value) { + this.coreNode.textBaseline = value; + } + } + get verticalAlign() { + return this.coreNode.verticalAlign; + } + set verticalAlign(value) { + if (value) { + this.coreNode.verticalAlign = value; + } + } + get overflowSuffix() { + return this.coreNode.overflowSuffix; + } + set overflowSuffix(value) { + if (value) { + this.coreNode.overflowSuffix = value; + } + } + get debug() { + return this.coreNode.debug; + } + set debug(value) { + this.coreNode.debug = value; + } +} +class MainCoreDriver { + constructor() { + __publicField(this, "root", null); + __publicField(this, "stage", null); + __publicField(this, "rendererMain", null); + } + async init(rendererMain, rendererSettings, canvas) { + this.stage = new Stage({ + rootId: getNewId(), + appWidth: rendererSettings.appWidth, + appHeight: rendererSettings.appHeight, + txMemByteThreshold: rendererSettings.txMemByteThreshold, + boundsMargin: rendererSettings.boundsMargin, + deviceLogicalPixelRatio: rendererSettings.deviceLogicalPixelRatio, + devicePhysicalPixelRatio: rendererSettings.devicePhysicalPixelRatio, + clearColor: rendererSettings.clearColor, + canvas, + fpsUpdateInterval: rendererSettings.fpsUpdateInterval, + enableContextSpy: rendererSettings.enableContextSpy, + numImageWorkers: rendererSettings.numImageWorkers, + debug: { + monitorTextureCache: false + } + }); + this.rendererMain = rendererMain; + assertTruthy(this.stage.root); + const node = new MainOnlyNode(rendererMain.resolveNodeDefaults({}), this.rendererMain, this.stage, this.stage.root); + this.root = node; + node.once("beforeDestroy", this.onBeforeDestroyNode.bind(this, node)); + this.onCreateNode(node); + if (rendererSettings.coreExtensionModule) { + await loadCoreExtension(rendererSettings.coreExtensionModule, this.stage); + } + this.stage.on("fpsUpdate", (stage, fpsData) => { + this.onFpsUpdate(fpsData); + }); + this.stage.on("frameTick", (stage, frameTickData) => { + this.onFrameTick(frameTickData); + }); + this.stage.on("idle", () => { + this.onIdle(); + }); + } + createNode(props) { + assertTruthy(this.rendererMain); + assertTruthy(this.stage); + const node = new MainOnlyNode(props, this.rendererMain, this.stage); + node.once("beforeDestroy", this.onBeforeDestroyNode.bind(this, node)); + this.onCreateNode(node); + return node; + } + createTextNode(props) { + assertTruthy(this.rendererMain); + assertTruthy(this.stage); + const node = new MainOnlyTextNode(props, this.rendererMain, this.stage); + node.once("beforeDestroy", this.onBeforeDestroyNode.bind(this, node)); + this.onCreateNode(node); + return node; + } + // TODO: Remove? + destroyNode(node) { + node.destroy(); + } + releaseTexture(id) { + const { stage } = this; + assertTruthy(stage); + stage.txManager.removeTextureIdFromCache(id); + } + getRootNode() { + assertTruthy(this.root); + return this.root; + } + //#region Event Methods + // The implementations for these event methods are provided by RendererMain + onCreateNode(node) { + throw new Error("Method not implemented."); + } + onBeforeDestroyNode(node) { + throw new Error("Method not implemented."); + } + onFpsUpdate(fpsData) { + throw new Error("Method not implemented."); + } + onFrameTick(frameTickData) { + throw new Error("Method not implemented."); + } + onIdle() { + throw new Error("Method not implemented."); + } +} +const equalFn = (a, b) => a === b; +const $PROXY = Symbol("solid-proxy"); +const $TRACK = Symbol("solid-track"); +const signalOptions = { + equals: equalFn +}; +let runEffects = runQueue; +const STALE = 1; +const PENDING = 2; +const UNOWNED = { + owned: null, + cleanups: null, + context: null, + owner: null +}; +const NO_INIT = {}; +var Owner = null; +let Transition = null; +let ExternalSourceConfig = null; +let Listener = null; +let Updates = null; +let Effects = null; +let ExecCount = 0; +function createRoot(fn, detachedOwner) { + const listener = Listener, owner = Owner, unowned = fn.length === 0, current = detachedOwner === void 0 ? owner : detachedOwner, root = unowned ? UNOWNED : { + owned: null, + cleanups: null, + context: current ? current.context : null, + owner: current + }, updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root))); + Owner = root; + Listener = null; + try { + return runUpdates(updateFn, true); + } finally { + Listener = listener; + Owner = owner; + } +} +function createSignal(value, options) { + options = options ? Object.assign({}, signalOptions, options) : signalOptions; + const s = { + value, + observers: null, + observerSlots: null, + comparator: options.equals || void 0 + }; + const setter = (value2) => { + if (typeof value2 === "function") { + value2 = value2(s.value); + } + return writeSignal(s, value2); + }; + return [readSignal.bind(s), setter]; +} +function createComputed(fn, value, options) { + const c = createComputation(fn, value, true, STALE); + updateComputation(c); +} +function createRenderEffect(fn, value, options) { + const c = createComputation(fn, value, false, STALE); + updateComputation(c); +} +function createEffect(fn, value, options) { + runEffects = runUserEffects; + const c = createComputation(fn, value, false, STALE); + if (!options || !options.render) + c.user = true; + Effects ? Effects.push(c) : updateComputation(c); +} +function createMemo(fn, value, options) { + options = options ? Object.assign({}, signalOptions, options) : signalOptions; + const c = createComputation(fn, value, true, 0); + c.observers = null; + c.observerSlots = null; + c.comparator = options.equals || void 0; + updateComputation(c); + return readSignal.bind(c); +} +function isPromise(v) { + return v && typeof v === "object" && "then" in v; +} +function createResource(pSource, pFetcher, pOptions) { + let source; + let fetcher; + let options; + if (arguments.length === 2 && typeof pFetcher === "object" || arguments.length === 1) { + source = true; + fetcher = pSource; + options = pFetcher || {}; + } else { + source = pSource; + fetcher = pFetcher; + options = pOptions || {}; + } + let pr = null, initP = NO_INIT, scheduled = false, resolved = "initialValue" in options, dynamic = typeof source === "function" && createMemo(source); + const contexts = /* @__PURE__ */ new Set(), [value, setValue] = (options.storage || createSignal)(options.initialValue), [error, setError] = createSignal(void 0), [track, trigger] = createSignal(void 0, { + equals: false + }), [state, setState] = createSignal(resolved ? "ready" : "unresolved"); + function loadEnd(p, v, error2, key2) { + if (pr === p) { + pr = null; + key2 !== void 0 && (resolved = true); + if ((p === initP || v === initP) && options.onHydrated) + queueMicrotask( + () => options.onHydrated(key2, { + value: v + }) + ); + initP = NO_INIT; + completeLoad(v, error2); + } + return v; + } + function completeLoad(v, err) { + runUpdates(() => { + if (err === void 0) + setValue(() => v); + setState(err !== void 0 ? "errored" : resolved ? "ready" : "unresolved"); + setError(err); + for (const c of contexts.keys()) + c.decrement(); + contexts.clear(); + }, false); + } + function read() { + const c = SuspenseContext, v = value(), err = error(); + if (err !== void 0 && !pr) + throw err; + if (Listener && !Listener.user && c) { + createComputed(() => { + track(); + if (pr) { + if (c.resolved) + ; + else if (!contexts.has(c)) { + c.increment(); + contexts.add(c); + } + } + }); + } + return v; + } + function load(refetching = true) { + if (refetching !== false && scheduled) + return; + scheduled = false; + const lookup = dynamic ? dynamic() : source; + if (lookup == null || lookup === false) { + loadEnd(pr, untrack(value)); + return; + } + const p = initP !== NO_INIT ? initP : untrack( + () => fetcher(lookup, { + value: value(), + refetching + }) + ); + if (!isPromise(p)) { + loadEnd(pr, p, void 0, lookup); + return p; + } + pr = p; + if ("value" in p) { + if (p.status === "success") + loadEnd(pr, p.value, void 0, lookup); + else + loadEnd(pr, void 0, void 0, lookup); + return p; + } + scheduled = true; + queueMicrotask(() => scheduled = false); + runUpdates(() => { + setState(resolved ? "refreshing" : "pending"); + trigger(); + }, false); + return p.then( + (v) => loadEnd(p, v, void 0, lookup), + (e) => loadEnd(p, void 0, castError(e), lookup) + ); + } + Object.defineProperties(read, { + state: { + get: () => state() + }, + error: { + get: () => error() + }, + loading: { + get() { + const s = state(); + return s === "pending" || s === "refreshing"; + } + }, + latest: { + get() { + if (!resolved) + return read(); + const err = error(); + if (err && !pr) + throw err; + return value(); + } + } + }); + if (dynamic) + createComputed(() => load(false)); + else + load(false); + return [ + read, + { + refetch: load, + mutate: setValue + } + ]; +} +function createSelector(source, fn = equalFn, options) { + const subs = /* @__PURE__ */ new Map(); + const node = createComputation( + (p) => { + const v = source(); + for (const [key2, val] of subs.entries()) + if (fn(key2, v) !== fn(key2, p)) { + for (const c of val.values()) { + c.state = STALE; + if (c.pure) + Updates.push(c); + else + Effects.push(c); + } + } + return v; + }, + void 0, + true, + STALE + ); + updateComputation(node); + return (key2) => { + const listener = Listener; + if (listener) { + let l; + if (l = subs.get(key2)) + l.add(listener); + else + subs.set(key2, l = /* @__PURE__ */ new Set([listener])); + onCleanup(() => { + l.delete(listener); + !l.size && subs.delete(key2); + }); + } + return fn( + key2, + node.value + ); + }; +} +function batch(fn) { + return runUpdates(fn, false); +} +function untrack(fn) { + if (Listener === null) + return fn(); + const listener = Listener; + Listener = null; + try { + if (ExternalSourceConfig) + ; + return fn(); + } finally { + Listener = listener; + } +} +function on(deps, fn, options) { + const isArray2 = Array.isArray(deps); + let prevInput; + let defer = options && options.defer; + return (prevValue) => { + let input2; + if (isArray2) { + input2 = Array(deps.length); + for (let i = 0; i < deps.length; i++) + input2[i] = deps[i](); + } else + input2 = deps(); + if (defer) { + defer = false; + return prevValue; + } + const result = untrack(() => fn(input2, prevInput, prevValue)); + prevInput = input2; + return result; + }; +} +function onMount(fn) { + createEffect(() => untrack(fn)); +} +function onCleanup(fn) { + if (Owner === null) + ; + else if (Owner.cleanups === null) + Owner.cleanups = [fn]; + else + Owner.cleanups.push(fn); + return fn; +} +function getOwner() { + return Owner; +} +function runWithOwner(o, fn) { + const prev = Owner; + const prevListener = Listener; + Owner = o; + Listener = null; + try { + return runUpdates(fn, true); + } catch (err) { + handleError(err); + } finally { + Owner = prev; + Listener = prevListener; + } +} +function startTransition(fn) { + const l = Listener; + const o = Owner; + return Promise.resolve().then(() => { + Listener = l; + Owner = o; + let t; + runUpdates(fn, false); + Listener = Owner = null; + return t ? t.done : void 0; + }); +} +function createContext(defaultValue, options) { + const id = Symbol("context"); + return { + id, + Provider: createProvider(id), + defaultValue + }; +} +function useContext(context) { + return Owner && Owner.context && Owner.context[context.id] !== void 0 ? Owner.context[context.id] : context.defaultValue; +} +function children(fn) { + const children2 = createMemo(fn); + const memo2 = createMemo(() => resolveChildren(children2())); + memo2.toArray = () => { + const c = memo2(); + return Array.isArray(c) ? c : c != null ? [c] : []; + }; + return memo2; +} +let SuspenseContext; +function readSignal() { + if (this.sources && this.state) { + if (this.state === STALE) + updateComputation(this); + else { + const updates = Updates; + Updates = null; + runUpdates(() => lookUpstream(this), false); + Updates = updates; + } + } + if (Listener) { + const sSlot = this.observers ? this.observers.length : 0; + if (!Listener.sources) { + Listener.sources = [this]; + Listener.sourceSlots = [sSlot]; + } else { + Listener.sources.push(this); + Listener.sourceSlots.push(sSlot); + } + if (!this.observers) { + this.observers = [Listener]; + this.observerSlots = [Listener.sources.length - 1]; + } else { + this.observers.push(Listener); + this.observerSlots.push(Listener.sources.length - 1); + } + } + return this.value; +} +function writeSignal(node, value, isComp) { + let current = node.value; + if (!node.comparator || !node.comparator(current, value)) { + node.value = value; + if (node.observers && node.observers.length) { + runUpdates(() => { + for (let i = 0; i < node.observers.length; i += 1) { + const o = node.observers[i]; + const TransitionRunning = Transition && Transition.running; + if (TransitionRunning && Transition.disposed.has(o)) + ; + if (TransitionRunning ? !o.tState : !o.state) { + if (o.pure) + Updates.push(o); + else + Effects.push(o); + if (o.observers) + markDownstream(o); + } + if (!TransitionRunning) + o.state = STALE; + } + if (Updates.length > 1e6) { + Updates = []; + if (false) + ; + throw new Error(); + } + }, false); + } + } + return value; +} +function updateComputation(node) { + if (!node.fn) + return; + cleanNode(node); + const time = ExecCount; + runComputation( + node, + node.value, + time + ); +} +function runComputation(node, value, time) { + let nextValue; + const owner = Owner, listener = Listener; + Listener = Owner = node; + try { + nextValue = node.fn(value); + } catch (err) { + if (node.pure) { + { + node.state = STALE; + node.owned && node.owned.forEach(cleanNode); + node.owned = null; + } + } + node.updatedAt = time + 1; + return handleError(err); + } finally { + Listener = listener; + Owner = owner; + } + if (!node.updatedAt || node.updatedAt <= time) { + if (node.updatedAt != null && "observers" in node) { + writeSignal(node, nextValue); + } else + node.value = nextValue; + node.updatedAt = time; + } +} +function createComputation(fn, init, pure, state = STALE, options) { + const c = { + fn, + state, + updatedAt: null, + owned: null, + sources: null, + sourceSlots: null, + cleanups: null, + value: init, + owner: Owner, + context: Owner ? Owner.context : null, + pure + }; + if (Owner === null) + ; + else if (Owner !== UNOWNED) { + { + if (!Owner.owned) + Owner.owned = [c]; + else + Owner.owned.push(c); + } + } + return c; +} +function runTop(node) { + if (node.state === 0) + return; + if (node.state === PENDING) + return lookUpstream(node); + if (node.suspense && untrack(node.suspense.inFallback)) + return node.suspense.effects.push(node); + const ancestors = [node]; + while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) { + if (node.state) + ancestors.push(node); + } + for (let i = ancestors.length - 1; i >= 0; i--) { + node = ancestors[i]; + if (node.state === STALE) { + updateComputation(node); + } else if (node.state === PENDING) { + const updates = Updates; + Updates = null; + runUpdates(() => lookUpstream(node, ancestors[0]), false); + Updates = updates; + } + } +} +function runUpdates(fn, init) { + if (Updates) + return fn(); + let wait = false; + if (!init) + Updates = []; + if (Effects) + wait = true; + else + Effects = []; + ExecCount++; + try { + const res = fn(); + completeUpdates(wait); + return res; + } catch (err) { + if (!wait) + Effects = null; + Updates = null; + handleError(err); + } +} +function completeUpdates(wait) { + if (Updates) { + runQueue(Updates); + Updates = null; + } + if (wait) + return; + const e = Effects; + Effects = null; + if (e.length) + runUpdates(() => runEffects(e), false); +} +function runQueue(queue) { + for (let i = 0; i < queue.length; i++) + runTop(queue[i]); +} +function runUserEffects(queue) { + let i, userLength = 0; + for (i = 0; i < queue.length; i++) { + const e = queue[i]; + if (!e.user) + runTop(e); + else + queue[userLength++] = e; + } + for (i = 0; i < userLength; i++) + runTop(queue[i]); +} +function lookUpstream(node, ignore) { + node.state = 0; + for (let i = 0; i < node.sources.length; i += 1) { + const source = node.sources[i]; + if (source.sources) { + const state = source.state; + if (state === STALE) { + if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) + runTop(source); + } else if (state === PENDING) + lookUpstream(source, ignore); + } + } +} +function markDownstream(node) { + for (let i = 0; i < node.observers.length; i += 1) { + const o = node.observers[i]; + if (!o.state) { + o.state = PENDING; + if (o.pure) + Updates.push(o); + else + Effects.push(o); + o.observers && markDownstream(o); + } + } +} +function cleanNode(node) { + let i; + if (node.sources) { + while (node.sources.length) { + const source = node.sources.pop(), index = node.sourceSlots.pop(), obs = source.observers; + if (obs && obs.length) { + const n = obs.pop(), s = source.observerSlots.pop(); + if (index < obs.length) { + n.sourceSlots[s] = index; + obs[index] = n; + source.observerSlots[index] = s; + } + } + } + } + if (node.owned) { + for (i = node.owned.length - 1; i >= 0; i--) + cleanNode(node.owned[i]); + node.owned = null; + } + if (node.cleanups) { + for (i = node.cleanups.length - 1; i >= 0; i--) + node.cleanups[i](); + node.cleanups = null; + } + node.state = 0; +} +function castError(err) { + if (err instanceof Error) + return err; + return new Error(typeof err === "string" ? err : "Unknown error", { + cause: err + }); +} +function handleError(err, owner = Owner) { + const error = castError(err); + throw error; +} +function resolveChildren(children2) { + if (typeof children2 === "function" && !children2.length) + return resolveChildren(children2()); + if (Array.isArray(children2)) { + const results = []; + for (let i = 0; i < children2.length; i++) { + const result = resolveChildren(children2[i]); + Array.isArray(result) ? results.push.apply(results, result) : results.push(result); + } + return results; + } + return children2; +} +function createProvider(id, options) { + return function provider(props) { + let res; + createRenderEffect( + () => res = untrack(() => { + Owner.context = { + ...Owner.context, + [id]: props.value + }; + return children(() => props.children); + }), + void 0 + ); + return res; + }; +} +const FALLBACK = Symbol("fallback"); +function dispose(d) { + for (let i = 0; i < d.length; i++) + d[i](); +} +function mapArray(list, mapFn, options = {}) { + let items = [], mapped = [], disposers = [], len = 0, indexes = mapFn.length > 1 ? [] : null; + onCleanup(() => dispose(disposers)); + return () => { + let newItems = list() || [], i, j; + newItems[$TRACK]; + return untrack(() => { + let newLen = newItems.length, newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item; + if (newLen === 0) { + if (len !== 0) { + dispose(disposers); + disposers = []; + items = []; + mapped = []; + len = 0; + indexes && (indexes = []); + } + if (options.fallback) { + items = [FALLBACK]; + mapped[0] = createRoot((disposer) => { + disposers[0] = disposer; + return options.fallback(); + }); + len = 1; + } + } else if (len === 0) { + mapped = new Array(newLen); + for (j = 0; j < newLen; j++) { + items[j] = newItems[j]; + mapped[j] = createRoot(mapper); + } + len = newLen; + } else { + temp = new Array(newLen); + tempdisposers = new Array(newLen); + indexes && (tempIndexes = new Array(newLen)); + for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++) + ; + for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) { + temp[newEnd] = mapped[end]; + tempdisposers[newEnd] = disposers[end]; + indexes && (tempIndexes[newEnd] = indexes[end]); + } + newIndices = /* @__PURE__ */ new Map(); + newIndicesNext = new Array(newEnd + 1); + for (j = newEnd; j >= start; j--) { + item = newItems[j]; + i = newIndices.get(item); + newIndicesNext[j] = i === void 0 ? -1 : i; + newIndices.set(item, j); + } + for (i = start; i <= end; i++) { + item = items[i]; + j = newIndices.get(item); + if (j !== void 0 && j !== -1) { + temp[j] = mapped[i]; + tempdisposers[j] = disposers[i]; + indexes && (tempIndexes[j] = indexes[i]); + j = newIndicesNext[j]; + newIndices.set(item, j); + } else + disposers[i](); + } + for (j = start; j < newLen; j++) { + if (j in temp) { + mapped[j] = temp[j]; + disposers[j] = tempdisposers[j]; + if (indexes) { + indexes[j] = tempIndexes[j]; + indexes[j](j); + } + } else + mapped[j] = createRoot(mapper); + } + mapped = mapped.slice(0, len = newLen); + items = newItems.slice(0); + } + return mapped; + }); + function mapper(disposer) { + disposers[j] = disposer; + if (indexes) { + const [s, set] = createSignal(j); + indexes[j] = set; + return mapFn(newItems[j], s); + } + return mapFn(newItems[j]); + } + }; +} +function createComponent$1(Comp, props) { + return untrack(() => Comp(props || {})); +} +function trueFn() { + return true; +} +const propTraps = { + get(_, property, receiver) { + if (property === $PROXY) + return receiver; + return _.get(property); + }, + has(_, property) { + if (property === $PROXY) + return true; + return _.has(property); + }, + set: trueFn, + deleteProperty: trueFn, + getOwnPropertyDescriptor(_, property) { + return { + configurable: true, + enumerable: true, + get() { + return _.get(property); + }, + set: trueFn, + deleteProperty: trueFn + }; + }, + ownKeys(_) { + return _.keys(); + } +}; +function resolveSource(s) { + return !(s = typeof s === "function" ? s() : s) ? {} : s; +} +function resolveSources() { + for (let i = 0, length = this.length; i < length; ++i) { + const v = this[i](); + if (v !== void 0) + return v; + } +} +function mergeProps$1(...sources) { + let proxy = false; + for (let i = 0; i < sources.length; i++) { + const s = sources[i]; + proxy = proxy || !!s && $PROXY in s; + sources[i] = typeof s === "function" ? (proxy = true, createMemo(s)) : s; + } + if (proxy) { + return new Proxy( + { + get(property) { + for (let i = sources.length - 1; i >= 0; i--) { + const v = resolveSource(sources[i])[property]; + if (v !== void 0) + return v; + } + }, + has(property) { + for (let i = sources.length - 1; i >= 0; i--) { + if (property in resolveSource(sources[i])) + return true; + } + return false; + }, + keys() { + const keys = []; + for (let i = 0; i < sources.length; i++) + keys.push(...Object.keys(resolveSource(sources[i]))); + return [...new Set(keys)]; + } + }, + propTraps + ); + } + const sourcesMap = {}; + const defined = /* @__PURE__ */ Object.create(null); + for (let i = sources.length - 1; i >= 0; i--) { + const source = sources[i]; + if (!source) + continue; + const sourceKeys = Object.getOwnPropertyNames(source); + for (let i2 = sourceKeys.length - 1; i2 >= 0; i2--) { + const key2 = sourceKeys[i2]; + if (key2 === "__proto__" || key2 === "constructor") + continue; + const desc = Object.getOwnPropertyDescriptor(source, key2); + if (!defined[key2]) { + defined[key2] = desc.get ? { + enumerable: true, + configurable: true, + get: resolveSources.bind(sourcesMap[key2] = [desc.get.bind(source)]) + } : desc.value !== void 0 ? desc : void 0; + } else { + const sources2 = sourcesMap[key2]; + if (sources2) { + if (desc.get) + sources2.push(desc.get.bind(source)); + else if (desc.value !== void 0) + sources2.push(() => desc.value); + } + } + } + } + const target = {}; + const definedKeys = Object.keys(defined); + for (let i = definedKeys.length - 1; i >= 0; i--) { + const key2 = definedKeys[i], desc = defined[key2]; + if (desc && desc.get) + Object.defineProperty(target, key2, desc); + else + target[key2] = desc ? desc.value : void 0; + } + return target; +} +function splitProps(props, ...keys) { + if ($PROXY in props) { + const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]); + const res = keys.map((k) => { + return new Proxy( + { + get(property) { + return k.includes(property) ? props[property] : void 0; + }, + has(property) { + return k.includes(property) && property in props; + }, + keys() { + return k.filter((property) => property in props); + } + }, + propTraps + ); + }); + res.push( + new Proxy( + { + get(property) { + return blocked.has(property) ? void 0 : props[property]; + }, + has(property) { + return blocked.has(property) ? false : property in props; + }, + keys() { + return Object.keys(props).filter((k) => !blocked.has(k)); + } + }, + propTraps + ) + ); + return res; + } + const otherObject = {}; + const objects = keys.map(() => ({})); + for (const propName of Object.getOwnPropertyNames(props)) { + const desc = Object.getOwnPropertyDescriptor(props, propName); + const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable; + let blocked = false; + let objectIndex = 0; + for (const k of keys) { + if (k.includes(propName)) { + blocked = true; + isDefaultDesc ? objects[objectIndex][propName] = desc.value : Object.defineProperty(objects[objectIndex], propName, desc); + } + ++objectIndex; + } + if (!blocked) { + isDefaultDesc ? otherObject[propName] = desc.value : Object.defineProperty(otherObject, propName, desc); + } + } + return [...objects, otherObject]; +} +const narrowedError = (name) => "Stale read from <".concat(name, ">."); +function For(props) { + const fallback = "fallback" in props && { + fallback: () => props.fallback + }; + return createMemo(mapArray(() => props.each, props.children, fallback || void 0)); +} +function Show(props) { + const keyed = props.keyed; + const condition = createMemo(() => props.when, void 0, { + equals: (a, b) => keyed ? a === b : !a === !b + }); + return createMemo( + () => { + const c = condition(); + if (c) { + const child = props.children; + const fn = typeof child === "function" && child.length > 0; + return fn ? untrack( + () => child( + keyed ? c : () => { + if (!untrack(condition)) + throw narrowedError("Show"); + return props.when; + } + ) + ) : child; + } + return props.fallback; + }, + void 0, + void 0 + ); +} +function resetErrorBoundaries() { +} +const DEV = void 0; +let renderer; +let createShader; +function startLightningRenderer(options = {}, rootId = "app") { + const driver = new MainCoreDriver(); + renderer = new RendererMain(options, rootId, driver); + createShader = renderer.createShader.bind(renderer); + return renderer; +} +class Children extends Array { + constructor(node) { + super(); + __publicField(this, "_parent"); + this._parent = node; + } + get selected() { + return this[this._parent.selected || 0]; + } + get firstChild() { + return this[0]; + } + insert(node, beforeNode) { + if (beforeNode) { + const index = this.indexOf(beforeNode); + this.splice(index, 0, node); + } else { + this.push(node); + } + node.parent = this._parent; + this._parent._isDirty = true; + } + remove(node) { + const nodeIndexToRemove = this.indexOf(node); + if (nodeIndexToRemove >= 0) { + this.splice(nodeIndexToRemove, 1); + } + } +} +function isDevEnv() { + return { "BASE_URL": "/solid-demo-app/", "MODE": "production", "DEV": false, "PROD": true, "SSR": false, "LEGACY": false } && false; +} +const isDev$1 = isDevEnv() || false; +const config = { + debug: false, + animationsEnabled: true, + animationSettings: { + duration: 250, + easing: "ease-in-out" + }, + fontSettings: { + fontFamily: "Ubuntu", + fontSize: 100 + } +}; +function hasDebug(node) { + return isObject(node) && node.debug; +} +function log(msg, node, ...args) { + if (isDev$1) { + if (config.debug || hasDebug(node) || hasDebug(args[0])) { + console.log(msg, node, ...args); + } + } +} +function isFunc$1(item) { + return typeof item === "function"; +} +function isObject(item) { + return typeof item === "object"; +} +function isArray$1(item) { + return Array.isArray(item); +} +function isString(item) { + return typeof item === "string"; +} +function isNumber(item) { + return typeof item === "number"; +} +function isInteger(item) { + return Number.isInteger(item); +} +function keyExists(obj, keys) { + for (const key2 of keys) { + if (key2 in obj) { + return true; + } + } + return false; +} +function flattenStyles(obj, result = {}) { + if (isArray$1(obj)) { + obj.forEach((item) => { + flattenStyles(item, result); + }); + } else if (obj) { + for (const key2 in obj) { + if (result[key2] === void 0) { + result[key2] = obj[key2]; + } + } + } + return result; +} +class States extends Array { + constructor(callback, initialState = {}) { + var __super = (...args) => { + super(...args); + __publicField(this, "onChange"); + return this; + }; + if (isArray$1(initialState)) { + __super(...initialState); + } else if (isString(initialState)) { + __super(initialState); + } else { + __super( + ...Object.entries(initialState).filter(([_key, value]) => value).map(([key2]) => key2) + ); + } + this.onChange = callback; + return this; + } + has(state) { + return this.indexOf(state) >= 0; + } + is(state) { + return this.indexOf(state) >= 0; + } + add(state) { + this.push(state); + this.onChange(); + } + toggle(state) { + if (this.has(state)) { + this.remove(state); + } else { + this.add(state); + } + } + remove(state) { + const stateIndexToRemove = this.indexOf(state); + if (stateIndexToRemove >= 0) { + this.splice(stateIndexToRemove, 1); + this.onChange(); + } + } +} +function calculateFlex(node) { + const children2 = []; + let hasOrder = false; + for (let i = 0; i < node.children.length; i++) { + const c = node.children[i]; + if (c.name === "TextNode") { + continue; + } + if (c.flexItem === false) { + continue; + } + if (c.name === "text" && c.text !== "" && !(c.width || c.height)) { + return false; + } + if (c.flexOrder !== void 0) { + hasOrder = true; + } + children2.push(c); + } + if (hasOrder) { + children2.sort((a, b) => (a.flexOrder || 0) - (b.flexOrder || 0)); + } + const numChildren = children2.length; + const direction = node.flexDirection || "row"; + const isRow = direction === "row"; + const dimension = isRow ? "width" : "height"; + const crossDimension = isRow ? "height" : "width"; + const marginOne = isRow ? "marginLeft" : "marginTop"; + const marginTwo = isRow ? "marginRight" : "marginBottom"; + const prop = isRow ? "x" : "y"; + const crossProp = isRow ? "y" : "x"; + const containerSize = node[dimension] || 0; + const containerCrossSize = node[crossDimension] || 0; + const gap = node.gap || 0; + const justify = node.justifyContent || "flexStart"; + const align = node.alignItems; + let itemSize = 0; + if (["center", "spaceBetween", "spaceEvenly"].includes(justify)) { + itemSize = children2.reduce((prev, c) => prev + (c[dimension] || 0), 0); + } + const crossAlignChild = containerCrossSize && align ? (c) => { + if (align === "flexStart") { + c[crossProp] = 0; + } else if (align === "center") { + c[crossProp] = (containerCrossSize - (c[crossDimension] || 0)) / 2; + } else if (align === "flexEnd") { + c[crossProp] = containerCrossSize - (c[crossDimension] || 0); + } + } : (c) => c; + if (justify === "flexStart") { + let start = 0; + children2.forEach((c) => { + c[prop] = start + (c[marginOne] || 0); + start += (c[dimension] || 0) + gap + (c[marginOne] || 0) + (c[marginTwo] || 0); + crossAlignChild(c); + }); + if (node.flexBoundary !== "fixed") { + const calculatedSize = start - gap; + if (calculatedSize !== node[dimension]) { + node[dimension] = calculatedSize; + return true; + } + } + } else if (justify === "flexEnd") { + let start = containerSize; + for (let i = numChildren - 1; i >= 0; i--) { + const c = children2[i]; + assertTruthy(c); + c[prop] = start - (c[dimension] || 0) - (c[marginTwo] || 0); + start -= (c[dimension] || 0) + gap + (c[marginOne] || 0) + (c[marginTwo] || 0); + crossAlignChild(c); + } + } else if (justify === "center") { + let start = (containerSize - (itemSize + gap * (numChildren - 1))) / 2; + children2.forEach((c) => { + c[prop] = start; + start += (c[dimension] || 0) + gap; + crossAlignChild(c); + }); + } else if (justify === "spaceBetween") { + const toPad = (containerSize - itemSize) / (numChildren - 1); + let start = 0; + children2.forEach((c) => { + c[prop] = start; + start += (c[dimension] || 0) + toPad; + crossAlignChild(c); + }); + } else if (justify === "spaceEvenly") { + const toPad = (containerSize - itemSize) / (numChildren + 1); + let start = toPad; + children2.forEach((c) => { + c[prop] = start; + start += (c[dimension] || 0) + toPad; + crossAlignChild(c); + }); + } + return false; +} +const [activeElement, setActiveElement] = createSignal(void 0); +const { animationSettings: defaultAnimationSettings } = config; +function convertEffectsToShader(styleEffects) { + const effects = []; + for (const [type, props] of Object.entries( + styleEffects + )) { + effects.push({ type, props }); + } + return createShader("DynamicShader", { effects }); +} +function borderAccessor(direction = "") { + return { + set(value) { + if (isNumber(value)) { + value = { width: value, color: 255 }; + } + this.effects = { + ...this.effects || {}, + ...{ ["border".concat(direction)]: value } + }; + this["_border".concat(direction)] = value; + }, + get() { + return this["_border".concat(direction)]; + } + }; +} +const LightningRendererNumberProps = [ + "alpha", + "color", + "colorTop", + "colorRight", + "colorLeft", + "colorBottom", + "colorTl", + "colorTr", + "colorBl", + "colorBr", + "height", + "fontSize", + "lineHeight", + "mount", + "mountX", + "mountY", + "pivot", + "pivotX", + "pivotY", + "rotation", + "scale", + "width", + "worldX", + "worldY", + "x", + "y", + "zIndex", + "zIndexLocked" +]; +const LightningRendererNonAnimatingProps = [ + "autosize", + "clipping", + "contain", + "fontFamily", + "fontStretch", + "fontStyle", + "fontWeight", + "letterSpacing", + "maxLines", + "offsetY", + "overflowSuffix", + "rtt", + "scrollable", + "scrollY", + "src", + "text", + "textAlign", + "textBaseline", + "textOverflow", + "texture", + "verticalAlign", + "wordWrap" +]; +class ElementNode extends Object { + constructor(name) { + super(); + __publicField(this, "id"); + __publicField(this, "debug"); + __publicField(this, "name"); + __publicField(this, "lng"); + __publicField(this, "renderer"); + __publicField(this, "selected"); + __publicField(this, "autofocus"); + __publicField(this, "flexItem"); + __publicField(this, "flexOrder"); + __publicField(this, "flexBoundary"); + // default is undefined - contained for flex calculated size + __publicField(this, "_queueDelete"); + __publicField(this, "forwardFocus"); + __publicField(this, "_undoStyles"); + __publicField(this, "_renderProps"); + __publicField(this, "_effects"); + __publicField(this, "_parent"); + __publicField(this, "_shader"); + __publicField(this, "_style"); + __publicField(this, "_states"); + __publicField(this, "_events"); + __publicField(this, "_animationSettings"); + __publicField(this, "_borderRadius"); + __publicField(this, "_border"); + __publicField(this, "_borderLeft"); + __publicField(this, "_borderRight"); + __publicField(this, "_borderTop"); + __publicField(this, "_borderBottom"); + __publicField(this, "_autosized"); + // Public but uses _ prefix + __publicField(this, "_isDirty"); + // Public but uses _ prefix + __publicField(this, "_animationQueue", []); + __publicField(this, "_animationQueueSettings"); + __publicField(this, "_animationRunning", false); + __publicField(this, "children"); + this.name = name; + this._renderProps = {}; + this.children = new Children(this); + } + get effects() { + return this._effects; + } + set effects(v) { + this._effects = v; + if (this.lng) { + this.shader = convertEffectsToShader(v); + } + } + get parent() { + return this._parent; + } + set parent(p) { + var _a3; + this._parent = p; + if (this.lng) { + this.lng.parent = (_a3 = p == null ? void 0 : p.lng) != null ? _a3 : null; + } + } + get shader() { + return this._shader; + } + set shader(v) { + if (isArray$1(v)) { + this._shader = createShader(...v); + } else { + this._shader = v; + } + this._sendToLightning("shader", this._shader); + } + _sendToLightningAnimatable(name, value) { + if (this.lng) { + if (config.animationsEnabled && this.transition && (this.transition === true || this.transition[name])) { + const animationSettings = this.transition === true || this.transition[name] === true ? void 0 : this.transition[name]; + return this.animate({ [name]: value }, animationSettings).start(); + } + this.lng[name] = value; + } else { + this._renderProps[name] = value; + } + } + _sendToLightning(name, value) { + if (this.lng) { + this.lng[name] = value; + } else { + this._renderProps[name] = value; + } + } + animate(props, animationSettings) { + assertTruthy(this.lng, "Node must be rendered before animating"); + return this.lng.animate(props, animationSettings || this.animationSettings); + } + chain(props, animationSettings) { + if (this._animationRunning) { + this._animationQueue = []; + this._animationRunning = false; + } + if (animationSettings) { + this._animationQueueSettings = animationSettings; + } else if (!this._animationQueueSettings) { + this._animationQueueSettings = animationSettings || this.animationSettings; + } + animationSettings = animationSettings || this._animationQueueSettings; + this._animationQueue.push({ props, animationSettings }); + return this; + } + async start() { + let animation = this._animationQueue.shift(); + while (animation) { + this._animationRunning = true; + await this.animate(animation.props, animation.animationSettings).start().waitUntilStopped(); + animation = this._animationQueue.shift(); + } + this._animationRunning = false; + this._animationQueueSettings = void 0; + } + setFocus() { + if (this.lng) { + if (this.forwardFocus !== void 0) { + if (isFunc$1(this.forwardFocus)) { + if (this.forwardFocus.call(this, this) !== false) { + return; + } + } else { + const focusedIndex = typeof this.forwardFocus === "number" ? this.forwardFocus : null; + if (focusedIndex !== null && focusedIndex < this.children.length) { + const child = this.children[focusedIndex]; + child instanceof ElementNode && child.setFocus(); + return; + } + } + } + queueMicrotask(() => setActiveElement(this)); + } else { + this.autofocus = true; + } + } + isTextNode() { + return this.name === "text"; + } + _resizeOnTextLoad() { + this.lng.on("loaded", (_node, loadedPayload) => { + if (loadedPayload.type === "text") { + const { dimensions } = loadedPayload; + this.parent.updateLayout(this, dimensions); + } + }); + } + getText() { + return this.children.map((c) => c.text).join(""); + } + destroy() { + var _a3; + if (this._queueDelete) { + (_a3 = this.lng) == null ? void 0 : _a3.destroy(); + } + } + // Must be set before render + set onEvents(events) { + this._events = events; + } + get onEvents() { + return this._events || []; + } + set style(values) { + if (isArray$1(values)) { + this._style = flattenStyles(values); + } else { + this._style = values; + } + for (const key2 in this._style) { + if (this[key2] === void 0) { + this[key2] = this._style[key2]; + } + } + } + get style() { + return this._style; + } + get hasChildren() { + return this.children.length > 0; + } + getChildById(id) { + return this.children.find((c) => c.id === id); + } + searchChildrenById(id) { + for (let i = 0; i < this.children.length; i++) { + const child = this.children[i]; + if (child instanceof ElementNode) { + if (child.id === id) { + return child; + } + const found = child.searchChildrenById(id); + if (found) { + return found; + } + } + } + } + set states(states) { + this._states = new States(this._stateChanged.bind(this), states); + if (this.lng) { + this._stateChanged(); + } + } + get states() { + this._states = this._states || new States(this._stateChanged.bind(this)); + return this._states; + } + get animationSettings() { + return this._animationSettings || defaultAnimationSettings; + } + set animationSettings(animationSettings) { + this._animationSettings = animationSettings; + } + updateLayout(child, dimensions) { + var _a3, _b2; + if (this.hasChildren) { + log("Layout: ", this); + let changedLayout = false; + if (isFunc$1(this.onBeforeLayout)) { + changedLayout = this.onBeforeLayout.call( + this, + child, + dimensions + ); + } + if (this.display === "flex") { + if (calculateFlex(this) || changedLayout) { + (_a3 = this.parent) == null ? void 0 : _a3.updateLayout(); + } + } else if (changedLayout) { + (_b2 = this.parent) == null ? void 0 : _b2.updateLayout(); + } + isFunc$1(this.onLayout) && this.onLayout.call(this, child, dimensions); + } + } + _stateChanged() { + log("State Changed: ", this, this.states); + if (this.forwardStates) { + const states2 = this.states.slice(); + this.children.forEach((c) => c.states = states2); + } + const states = this.states; + if (this._undoStyles || this.style && keyExists(this.style, states)) { + this._undoStyles = this._undoStyles || []; + const stylesToUndo = {}; + this._undoStyles.forEach((styleKey) => { + stylesToUndo[styleKey] = this.style[styleKey]; + }); + const newStyles = states.reduce((acc, state) => { + const styles2 = this.style[state]; + if (styles2) { + acc = { + ...acc, + ...styles2 + }; + } + return acc; + }, {}); + this._undoStyles = Object.keys(newStyles); + if (newStyles.transition !== void 0) { + this.transition = newStyles.transition; + } + Object.assign(this, stylesToUndo, newStyles); + } + } + render() { + const node = this; + const parent = this.parent; + if (!parent) { + console.warn("Parent not set - no node created for: ", this); + return; + } + if (!parent.lng) { + console.warn("Parent not rendered yet: ", this); + return; + } + if (this.lng) { + console.warn("Node already rendered: ", this); + return; + } + if (parent._isDirty) { + parent.updateLayout(); + parent._isDirty = false; + } + if (this.states.length) { + this._stateChanged(); + } + const props = node._renderProps; + props.x = props.x || 0; + props.y = props.y || 0; + if (parent.lng) { + props.parent = parent.lng; + } + if (node._effects) { + this.shader = convertEffectsToShader(node._effects); + } + if (node.isTextNode()) { + if (config.fontSettings) { + for (const key2 in config.fontSettings) { + if (props[key2] === void 0) { + props[key2] = config.fontSettings[key2]; + } + } + } + props.text = node.getText(); + if (props.contain) { + if (!props.width) { + props.width = (parent.width || 0) - props.x - (props.marginRight || 0); + node._autosized = true; + } + if (props.contain === "both" && !props.height && !props.maxLines) { + props.height = (parent.height || 0) - props.y - (props.marginBottom || 0); + node._autosized = true; + } + } + log("Rendering: ", this, props); + node.lng = renderer.createTextNode(props); + if (!props.width || !props.height) { + node._autosized = true; + node._resizeOnTextLoad(); + } + } else { + if (!props.texture) { + if (isNaN(props.width)) { + props.width = (parent.width || 0) - props.x; + node._autosized = true; + } + if (isNaN(props.height)) { + props.height = (parent.height || 0) - props.y; + node._autosized = true; + } + if (!props.color && !props.src) { + props.color = 0; + } + } + log("Rendering: ", this, props); + node.lng = renderer.createNode(props); + } + if (node.onFail) { + node.lng.on("failed", node.onFail); + } + if (node.onLoad) { + node.lng.on("loaded", node.onLoad); + } + isFunc$1(this.onCreate) && this.onCreate.call(this, node); + node.onEvents.forEach(([name, handler]) => { + var _a3; + (_a3 = node.lng) == null ? void 0 : _a3.on(name, (inode, data) => handler(node, data)); + }); + if (node.lng.div) { + node.lng.div.solid = node; + } + if (node.name !== "text") { + node.children.forEach((c) => { + if (c.render) { + c.render(); + } else if (c.text !== "") { + console.warn("TextNode outside of : ", c); + } + }); + } + node.autofocus && node.setFocus(); + delete this._renderProps; + } +} +for (const key2 of LightningRendererNumberProps) { + Object.defineProperty(ElementNode.prototype, key2, { + get() { + return this.lng ? this.lng[key2] : this._renderProps[key2]; + }, + set(v) { + this._sendToLightningAnimatable(key2, v); + } + }); +} +for (const key2 of LightningRendererNonAnimatingProps) { + Object.defineProperty(ElementNode.prototype, key2, { + get() { + return this.lng ? this.lng[key2] : this._renderProps[key2]; + }, + set(v) { + this._sendToLightning(key2, v); + } + }); +} +Object.defineProperties(ElementNode.prototype, { + borderRadius: { + set(radius) { + this._borderRadius = radius; + this.effects = { + ...this.effects || {}, + ...{ radius: { radius } } + }; + }, + get() { + return this._borderRadius; + } + }, + border: borderAccessor(), + borderLeft: borderAccessor("Left"), + borderRight: borderAccessor("Right"), + borderTop: borderAccessor("Top"), + borderBottom: borderAccessor("Bottom") +}); +Object.defineProperties(ElementNode.prototype, { + linearGradient: { + set(props = {}) { + this._linearGradient = props; + this.effects = { + ...this.effects || {}, + ...{ linearGradient: props } + }; + }, + get() { + return this._linearGradient; + } + } +}); +const Text = (props) => (() => { + var _el$ = createElement("text"); + spread(_el$, props, false); + return _el$; +})(); +const View = (props) => (() => { + var _el$ = createElement("node"); + spread(_el$, props, false); + return _el$; +})(); +function createRenderer$1({ + createElement: createElement2, + createTextNode: createTextNode2, + isTextNode, + replaceText, + insertNode: insertNode2, + removeNode, + setProperty, + getParentNode, + getFirstChild, + getNextSibling +}) { + function insert2(parent, accessor, marker, initial) { + if (marker !== void 0 && !initial) + initial = []; + if (typeof accessor !== "function") + return insertExpression(parent, accessor, initial, marker); + createRenderEffect((current) => insertExpression(parent, accessor(), current, marker), initial); + } + function insertExpression(parent, value, current, marker, unwrapArray) { + while (typeof current === "function") + current = current(); + if (value === current) + return current; + const t = typeof value, multi = marker !== void 0; + if (t === "string" || t === "number") { + if (t === "number") + value = value.toString(); + if (multi) { + let node = current[0]; + if (node && isTextNode(node)) { + replaceText(node, value); + } else + node = createTextNode2(value); + current = cleanChildren(parent, current, marker, node); + } else { + if (current !== "" && typeof current === "string") { + replaceText(getFirstChild(parent), current = value); + } else { + cleanChildren(parent, current, marker, createTextNode2(value)); + current = value; + } + } + } else if (value == null || t === "boolean") { + current = cleanChildren(parent, current, marker); + } else if (t === "function") { + createRenderEffect(() => { + let v = value(); + while (typeof v === "function") + v = v(); + current = insertExpression(parent, v, current, marker); + }); + return () => current; + } else if (Array.isArray(value)) { + const array = []; + if (normalizeIncomingArray(array, value, unwrapArray)) { + createRenderEffect( + () => current = insertExpression(parent, array, current, marker, true) + ); + return () => current; + } + if (array.length === 0) { + const replacement = cleanChildren(parent, current, marker); + if (multi) + return current = replacement; + } else { + if (Array.isArray(current)) { + if (current.length === 0) { + appendNodes(parent, array, marker); + } else + reconcileArrays(parent, current, array); + } else if (current == null || current === "") { + appendNodes(parent, array); + } else { + reconcileArrays(parent, multi && current || [getFirstChild(parent)], array); + } + } + current = array; + } else { + if (Array.isArray(current)) { + if (multi) + return current = cleanChildren(parent, current, marker, value); + cleanChildren(parent, current, null, value); + } else if (current == null || current === "" || !getFirstChild(parent)) { + insertNode2(parent, value); + } else + replaceNode(parent, value, getFirstChild(parent)); + current = value; + } + return current; + } + function normalizeIncomingArray(normalized, array, unwrap) { + let dynamic = false; + for (let i = 0, len = array.length; i < len; i++) { + let item = array[i], t; + if (item == null || item === true || item === false) + ; + else if (Array.isArray(item)) { + dynamic = normalizeIncomingArray(normalized, item) || dynamic; + } else if ((t = typeof item) === "string" || t === "number") { + normalized.push(createTextNode2(item)); + } else if (t === "function") { + if (unwrap) { + while (typeof item === "function") + item = item(); + dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic; + } else { + normalized.push(item); + dynamic = true; + } + } else + normalized.push(item); + } + return dynamic; + } + function reconcileArrays(parentNode, a, b) { + let bLength = b.length, aEnd = a.length, bEnd = bLength, aStart = 0, bStart = 0, after = getNextSibling(a[aEnd - 1]), map = null; + while (aStart < aEnd || bStart < bEnd) { + if (a[aStart] === b[bStart]) { + aStart++; + bStart++; + continue; + } + while (a[aEnd - 1] === b[bEnd - 1]) { + aEnd--; + bEnd--; + } + if (aEnd === aStart) { + const node = bEnd < bLength ? bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart] : after; + while (bStart < bEnd) + insertNode2(parentNode, b[bStart++], node); + } else if (bEnd === bStart) { + while (aStart < aEnd) { + if (!map || !map.has(a[aStart])) + removeNode(parentNode, a[aStart]); + aStart++; + } + } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) { + const node = getNextSibling(a[--aEnd]); + insertNode2(parentNode, b[bStart++], getNextSibling(a[aStart++])); + insertNode2(parentNode, b[--bEnd], node); + a[aEnd] = b[bEnd]; + } else { + if (!map) { + map = /* @__PURE__ */ new Map(); + let i = bStart; + while (i < bEnd) + map.set(b[i], i++); + } + const index = map.get(a[aStart]); + if (index != null) { + if (bStart < index && index < bEnd) { + let i = aStart, sequence = 1, t; + while (++i < aEnd && i < bEnd) { + if ((t = map.get(a[i])) == null || t !== index + sequence) + break; + sequence++; + } + if (sequence > index - bStart) { + const node = a[aStart]; + while (bStart < index) + insertNode2(parentNode, b[bStart++], node); + } else + replaceNode(parentNode, b[bStart++], a[aStart++]); + } else + aStart++; + } else + removeNode(parentNode, a[aStart++]); + } + } + } + function cleanChildren(parent, current, marker, replacement) { + if (marker === void 0) { + let removed; + while (removed = getFirstChild(parent)) + removeNode(parent, removed); + replacement && insertNode2(parent, replacement); + return ""; + } + const node = replacement || createTextNode2(""); + if (current.length) { + let inserted = false; + for (let i = current.length - 1; i >= 0; i--) { + const el = current[i]; + if (node !== el) { + const isParent = getParentNode(el) === parent; + if (!inserted && !i) + isParent ? replaceNode(parent, node, el) : insertNode2(parent, node, marker); + else + isParent && removeNode(parent, el); + } else + inserted = true; + } + } else + insertNode2(parent, node, marker); + return [node]; + } + function appendNodes(parent, array, marker) { + for (let i = 0, len = array.length; i < len; i++) + insertNode2(parent, array[i], marker); + } + function replaceNode(parent, newNode, oldNode) { + insertNode2(parent, newNode, oldNode); + removeNode(parent, oldNode); + } + function spreadExpression(node, props, prevProps = {}, skipChildren) { + props || (props = {}); + if (!skipChildren) { + createRenderEffect( + () => prevProps.children = insertExpression(node, props.children, prevProps.children) + ); + } + createRenderEffect(() => props.ref && props.ref(node)); + createRenderEffect(() => { + for (const prop in props) { + if (prop === "children" || prop === "ref") + continue; + const value = props[prop]; + if (value === prevProps[prop]) + continue; + setProperty(node, prop, value, prevProps[prop]); + prevProps[prop] = value; + } + }); + return prevProps; + } + return { + render(code, element) { + let disposer; + createRoot((dispose2) => { + disposer = dispose2; + insert2(element, code()); + }); + return disposer; + }, + insert: insert2, + spread(node, accessor, skipChildren) { + if (typeof accessor === "function") { + createRenderEffect((current) => spreadExpression(node, accessor(), current, skipChildren)); + } else + spreadExpression(node, accessor, void 0, skipChildren); + }, + createElement: createElement2, + createTextNode: createTextNode2, + insertNode: insertNode2, + setProp(node, name, value, prev) { + setProperty(node, name, value, prev); + return value; + }, + mergeProps: mergeProps$1, + effect: createRenderEffect, + memo: createMemo, + createComponent: createComponent$1, + use(fn, element, arg) { + return untrack(() => fn(element, arg)); + } + }; +} +function createRenderer(options) { + const renderer2 = createRenderer$1(options); + renderer2.mergeProps = mergeProps$1; + return renderer2; +} +const universalLightning = { + createElement(name) { + return new ElementNode(name); + }, + createTextNode(text2) { + return { name: "TextNode", text: text2, parent: void 0 }; + }, + replaceText(node, value) { + log("Replace Text: ", node, value); + node.text = value; + const parent = node.parent; + assertTruthy(parent); + parent.text = parent.getText(); + }, + setProperty(node, name, value = true) { + node[name] = value; + }, + insertNode(parent, node, anchor) { + log("INSERT: ", parent, node, anchor); + parent.children.insert(node, anchor); + node._queueDelete = false; + if (node instanceof ElementNode) { + parent.lng && node.render(); + } else if (parent.isTextNode()) { + parent.text = parent.getText(); + } + }, + isTextNode(node) { + return node.isTextNode(); + }, + removeNode(parent, node) { + log("REMOVE: ", parent, node); + parent.children.remove(node); + node._queueDelete = true; + if (node instanceof ElementNode) { + queueMicrotask(() => node.destroy()); + } + }, + getParentNode(node) { + return node.parent; + }, + getFirstChild(node) { + return node.children[0]; + }, + getNextSibling(node) { + const children2 = node.parent.children || []; + const index = children2.indexOf(node) + 1; + if (index < children2.length) { + return children2[index]; + } + return void 0; + } +}; +const solidRenderer = createRenderer(universalLightning); +const render = async function(code, node) { + const renderer2 = startLightningRenderer(config.rendererOptions, node); + await renderer2.init(); + const rootNode = new ElementNode("App"); + rootNode.lng = renderer2.root; + const dispose2 = solidRenderer.render(code, rootNode); + return { + dispose: dispose2, + rootNode, + renderer: renderer2 + }; +}; +const { + effect, + memo, + createComponent, + createElement, + createTextNode, + insertNode, + insert, + spread, + setProp, + mergeProps, + use +} = solidRenderer; +function hexColor(color = "") { + if (isInteger(color)) { + return color; + } + if (typeof color === "string") { + if (color.startsWith("#")) { + return Number( + color.replace("#", "0x") + (color.length === 7 ? "ff" : "") + ); + } + if (color.startsWith("0x")) { + return Number(color); + } + return Number("0x" + (color.length === 6 ? color + "ff" : color)); + } + return 0; +} +const $$EVENTS = "_$DX_DELEGATE"; +function delegateEvents(eventNames, document2 = window.document) { + const e = document2[$$EVENTS] || (document2[$$EVENTS] = /* @__PURE__ */ new Set()); + for (let i = 0, l = eventNames.length; i < l; i++) { + const name = eventNames[i]; + if (!e.has(name)) { + e.add(name); + document2.addEventListener(name, eventHandler); + } + } +} +function eventHandler(e) { + const key2 = "$$".concat(e.type); + let node = e.composedPath && e.composedPath()[0] || e.target; + if (e.target !== node) { + Object.defineProperty(e, "target", { + configurable: true, + value: node + }); + } + Object.defineProperty(e, "currentTarget", { + configurable: true, + get() { + return node || document; + } + }); + while (node) { + const handler = node[key2]; + if (handler && !node.disabled) { + const data = node["".concat(key2, "Data")]; + data !== void 0 ? handler.call(node, data, e) : handler.call(node, e); + if (e.cancelBubble) + return; + } + node = node._$host || node.parentNode || node.host; + } +} +const voidFn = () => void 0; +const isServer = false; +function createBeforeLeave() { + let listeners = /* @__PURE__ */ new Set(); + function subscribe(listener) { + listeners.add(listener); + return () => listeners.delete(listener); + } + let ignore = false; + function confirm(to, options) { + if (ignore) + return !(ignore = false); + const e = { + to, + options, + defaultPrevented: false, + preventDefault: () => e.defaultPrevented = true + }; + for (const l of listeners) + l.listener({ + ...e, + from: l.location, + retry: (force) => { + force && (ignore = true); + l.navigate(to, { ...options, resolve: false }); + } + }); + return !e.defaultPrevented; + } + return { + subscribe, + confirm + }; +} +let depth; +function saveCurrentDepth() { + if (!window.history.state || window.history.state._depth == null) { + window.history.replaceState({ ...window.history.state, _depth: window.history.length - 1 }, ""); + } + depth = window.history.state._depth; +} +{ + saveCurrentDepth(); +} +function keepDepth(state) { + return { + ...state, + _depth: window.history.state && window.history.state._depth + }; +} +function notifyIfNotBlocked(notify, block) { + let ignore = false; + return () => { + const prevDepth = depth; + saveCurrentDepth(); + const delta = prevDepth == null ? null : depth - prevDepth; + if (ignore) { + ignore = false; + return; + } + if (delta && block(delta)) { + ignore = true; + window.history.go(-delta); + } else { + notify(); + } + }; +} +const hasSchemeRegex = /^(?:[a-z0-9]+:)?\/\//i; +const trimPathRegex = /^\/+|(\/)\/+$/g; +const mockBase = "http://sr"; +function normalizePath(path, omitSlash = false) { + const s = path.replace(trimPathRegex, "$1"); + return s ? omitSlash || /^[?#]/.test(s) ? s : "/" + s : ""; +} +function resolvePath(base, path, from) { + if (hasSchemeRegex.test(path)) { + return void 0; + } + const basePath2 = normalizePath(base); + const fromPath = from && normalizePath(from); + let result = ""; + if (!fromPath || path.startsWith("/")) { + result = basePath2; + } else if (fromPath.toLowerCase().indexOf(basePath2.toLowerCase()) !== 0) { + result = basePath2 + fromPath; + } else { + result = fromPath; + } + return (result || "/") + normalizePath(path, !result); +} +function invariant(value, message) { + if (value == null) { + throw new Error(message); + } + return value; +} +function joinPaths(from, to) { + return normalizePath(from).replace(/\/*(\*.*)?$/g, "") + normalizePath(to); +} +function extractSearchParams(url) { + const params = {}; + url.searchParams.forEach((value, key2) => { + params[key2] = value; + }); + return params; +} +function createMatcher(path, partial, matchFilters) { + const [pattern, splat] = path.split("/*", 2); + const segments = pattern.split("/").filter(Boolean); + const len = segments.length; + return (location) => { + const locSegments = location.split("/").filter(Boolean); + const lenDiff = locSegments.length - len; + if (lenDiff < 0 || lenDiff > 0 && splat === void 0 && !partial) { + return null; + } + const match = { + path: len ? "" : "/", + params: {} + }; + const matchFilter = (s) => matchFilters === void 0 ? void 0 : matchFilters[s]; + for (let i = 0; i < len; i++) { + const segment = segments[i]; + const locSegment = locSegments[i]; + const dynamic = segment[0] === ":"; + const key2 = dynamic ? segment.slice(1) : segment; + if (dynamic && matchSegment(locSegment, matchFilter(key2))) { + match.params[key2] = locSegment; + } else if (dynamic || !matchSegment(locSegment, segment)) { + return null; + } + match.path += "/".concat(locSegment); + } + if (splat) { + const remainder = lenDiff ? locSegments.slice(-lenDiff).join("/") : ""; + if (matchSegment(remainder, matchFilter(splat))) { + match.params[splat] = remainder; + } else { + return null; + } + } + return match; + }; +} +function matchSegment(input2, filter) { + const isEqual = (s) => s.localeCompare(input2, void 0, { sensitivity: "base" }) === 0; + if (filter === void 0) { + return true; + } else if (typeof filter === "string") { + return isEqual(filter); + } else if (typeof filter === "function") { + return filter(input2); + } else if (Array.isArray(filter)) { + return filter.some(isEqual); + } else if (filter instanceof RegExp) { + return filter.test(input2); + } + return false; +} +function scoreRoute(route) { + const [pattern, splat] = route.pattern.split("/*", 2); + const segments = pattern.split("/").filter(Boolean); + return segments.reduce((score, segment) => score + (segment.startsWith(":") ? 2 : 3), segments.length - (splat === void 0 ? 0 : 1)); +} +function createMemoObject(fn) { + const map = /* @__PURE__ */ new Map(); + const owner = getOwner(); + return new Proxy({}, { + get(_, property) { + if (!map.has(property)) { + runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property]))); + } + return map.get(property)(); + }, + getOwnPropertyDescriptor() { + return { + enumerable: true, + configurable: true + }; + }, + ownKeys() { + return Reflect.ownKeys(fn()); + } + }); +} +function expandOptionals(pattern) { + let match = /(\/?\:[^\/]+)\?/.exec(pattern); + if (!match) + return [pattern]; + let prefix = pattern.slice(0, match.index); + let suffix = pattern.slice(match.index + match[0].length); + const prefixes = [prefix, prefix += match[1]]; + while (match = /^(\/\:[^\/]+)\?/.exec(suffix)) { + prefixes.push(prefix += match[1]); + suffix = suffix.slice(match[0].length); + } + return expandOptionals(suffix).reduce((results, expansion) => [...results, ...prefixes.map((p) => p + expansion)], []); +} +const MAX_REDIRECTS = 100; +const RouterContextObj = createContext(); +const RouteContextObj = createContext(); +const useRouter = () => invariant(useContext(RouterContextObj), " and 'use' router primitives can be only used inside a Route."); +const useNavigate = () => useRouter().navigatorFactory(); +const useLocation = () => useRouter().location; +const useMatch = (path, matchFilters) => { + const location = useLocation(); + const matchers = createMemo(() => expandOptionals(path()).map((path2) => createMatcher(path2, void 0, matchFilters))); + return createMemo(() => { + for (const matcher of matchers()) { + const match = matcher(location.pathname); + if (match) + return match; + } + }); +}; +const useParams = () => useRouter().params; +function createRoutes(routeDef, base = "") { + const { component, load, children: children2, info } = routeDef; + const isLeaf = !children2 || Array.isArray(children2) && !children2.length; + const shared = { + key: routeDef, + component, + load, + info + }; + return asArray(routeDef.path).reduce((acc, path) => { + for (const originalPath of expandOptionals(path)) { + const path2 = joinPaths(base, originalPath); + let pattern = isLeaf ? path2 : path2.split("/*", 1)[0]; + pattern = pattern.split("/").map((s) => { + return s.startsWith(":") || s.startsWith("*") ? s : encodeURIComponent(s); + }).join("/"); + acc.push({ + ...shared, + originalPath, + pattern, + matcher: createMatcher(pattern, !isLeaf, routeDef.matchFilters) + }); + } + return acc; + }, []); +} +function createBranch(routes, index = 0) { + return { + routes, + score: scoreRoute(routes[routes.length - 1]) * 1e4 - index, + matcher(location) { + const matches = []; + for (let i = routes.length - 1; i >= 0; i--) { + const route = routes[i]; + const match = route.matcher(location); + if (!match) { + return null; + } + matches.unshift({ + ...match, + route + }); + } + return matches; + } + }; +} +function asArray(value) { + return Array.isArray(value) ? value : [value]; +} +function createBranches(routeDef, base = "", stack = [], branches = []) { + const routeDefs = asArray(routeDef); + for (let i = 0, len = routeDefs.length; i < len; i++) { + const def = routeDefs[i]; + if (def && typeof def === "object") { + if (!def.hasOwnProperty("path")) + def.path = ""; + const routes = createRoutes(def, base); + for (const route of routes) { + stack.push(route); + const isEmptyArray = Array.isArray(def.children) && def.children.length === 0; + if (def.children && !isEmptyArray) { + createBranches(def.children, route.pattern, stack, branches); + } else { + const branch = createBranch([...stack], branches.length); + branches.push(branch); + } + stack.pop(); + } + } + } + return stack.length ? branches : branches.sort((a, b) => b.score - a.score); +} +function getRouteMatches(branches, location) { + for (let i = 0, len = branches.length; i < len; i++) { + const match = branches[i].matcher(location); + if (match) { + return match; + } + } + return []; +} +function createLocation(path, state) { + const origin = new URL(mockBase); + const url = createMemo((prev) => { + const path_ = path(); + try { + return new URL(path_, origin); + } catch (err) { + console.error("Invalid path ".concat(path_)); + return prev; + } + }, origin, { + equals: (a, b) => a.href === b.href + }); + const pathname = createMemo(() => url().pathname); + const search = createMemo(() => url().search, true); + const hash = createMemo(() => url().hash); + const key2 = () => ""; + return { + get pathname() { + return pathname(); + }, + get search() { + return search(); + }, + get hash() { + return hash(); + }, + get state() { + return state(); + }, + get key() { + return key2(); + }, + query: createMemoObject(on(search, () => extractSearchParams(url()))) + }; +} +let intent; +function createRouterContext(integration, branches, getContext, options = {}) { + const { signal: [source, setSource], utils = {} } = integration; + const parsePath = utils.parsePath || ((p) => p); + const renderPath = utils.renderPath || ((p) => p); + const beforeLeave = utils.beforeLeave || createBeforeLeave(); + const basePath2 = resolvePath("", options.base || ""); + if (basePath2 === void 0) { + throw new Error("".concat(basePath2, " is not a valid base path")); + } else if (basePath2 && !source().value) { + setSource({ value: basePath2, replace: true, scroll: false }); + } + const [isRouting, setIsRouting] = createSignal(false); + const start = async (callback) => { + setIsRouting(true); + try { + await startTransition(callback); + } finally { + setIsRouting(false); + } + }; + const [reference, setReference] = createSignal(source().value); + const [state, setState] = createSignal(source().state); + const location = createLocation(reference, state); + const referrers = []; + const submissions = createSignal([]); + const matches = createMemo(() => getRouteMatches(branches(), location.pathname)); + const params = createMemoObject(() => { + const m = matches(); + const params2 = {}; + for (let i = 0; i < m.length; i++) { + Object.assign(params2, m[i].params); + } + return params2; + }); + const baseRoute = { + pattern: basePath2, + path: () => basePath2, + outlet: () => null, + resolvePath(to) { + return resolvePath(basePath2, to); + } + }; + createRenderEffect(() => { + const { value, state: state2 } = source(); + untrack(() => { + if (value !== reference()) { + start(() => { + intent = "native"; + setReference(value); + setState(state2); + resetErrorBoundaries(); + submissions[1]([]); + }).then(() => { + intent = void 0; + }); + } + }); + }); + return { + base: baseRoute, + location, + params, + isRouting, + renderPath, + parsePath, + navigatorFactory, + matches, + beforeLeave, + preloadRoute, + singleFlight: options.singleFlight === void 0 ? true : options.singleFlight, + submissions + }; + function navigateFromRoute(route, to, options2) { + untrack(() => { + if (typeof to === "number") { + if (!to) { + } else if (utils.go) { + utils.go(to); + } else { + console.warn("Router integration does not support relative routing"); + } + return; + } + const { replace, resolve, scroll, state: nextState } = { + replace: false, + resolve: true, + scroll: true, + ...options2 + }; + const resolvedTo = resolve ? route.resolvePath(to) : resolvePath("", to); + if (resolvedTo === void 0) { + throw new Error("Path '".concat(to, "' is not a routable path")); + } else if (referrers.length >= MAX_REDIRECTS) { + throw new Error("Too many redirects"); + } + const current = reference(); + if (resolvedTo !== current || nextState !== state()) { + if (isServer) + ; + else if (beforeLeave.confirm(resolvedTo, options2)) { + const len = referrers.push({ value: current, replace, scroll, state: state() }); + start(() => { + intent = "navigate"; + setReference(resolvedTo); + setState(nextState); + resetErrorBoundaries(); + submissions[1]([]); + }).then(() => { + if (referrers.length === len) { + intent = void 0; + navigateEnd({ + value: resolvedTo, + state: nextState + }); + } + }); + } + } + }); + } + function navigatorFactory(route) { + route = route || useContext(RouteContextObj) || baseRoute; + return (to, options2) => navigateFromRoute(route, to, options2); + } + function navigateEnd(next) { + const first = referrers[0]; + if (first) { + if (next.value !== first.value || next.state !== first.state) { + setSource({ + ...next, + replace: first.replace, + scroll: first.scroll + }); + } + referrers.length = 0; + } + } + function preloadRoute(url, preloadData) { + const matches2 = getRouteMatches(branches(), url.pathname); + const prevIntent = intent; + intent = "preload"; + for (let match in matches2) { + const { route, params: params2 } = matches2[match]; + route.component && route.component.preload && route.component.preload(); + const { load } = route; + preloadData && load && runWithOwner(getContext(), () => load({ + params: params2, + location: { + pathname: url.pathname, + search: url.search, + hash: url.hash, + query: extractSearchParams(url), + state: null, + key: "" + }, + intent: "preload" + })); + } + intent = prevIntent; + } +} +function createRouteContext(router, parent, outlet, match) { + const { base, location, params } = router; + const { pattern, component, load } = match().route; + const path = createMemo(() => match().path); + component && component.preload && component.preload(); + const data = load ? load({ params, location, intent: intent || "initial" }) : void 0; + const route = { + parent, + pattern, + path, + outlet: () => component ? createComponent$1(component, { + params, + location, + data, + get children() { + return outlet(); + } + }) : outlet(), + resolvePath(to) { + return resolvePath(base.path(), to, path()); + } + }; + return route; +} +const createRouterComponent = (router) => (props) => { + const { + base + } = props; + const routeDefs = children(() => props.children); + const branches = createMemo(() => createBranches(routeDefs(), props.base || "")); + let context; + const routerState = createRouterContext(router, branches, () => context, { + base, + singleFlight: props.singleFlight + }); + router.create && router.create(routerState); + return createComponent(RouterContextObj.Provider, { + value: routerState, + get children() { + return createComponent(Root, { + routerState, + get root() { + return props.root; + }, + get load() { + return props.rootLoad; + }, + get children() { + return [memo(() => (context = getOwner()) && null), createComponent(Routes, { + routerState, + get branches() { + return branches(); + } + })]; + } + }); + } + }); +}; +function Root(props) { + const location = props.routerState.location; + const params = props.routerState.params; + const data = createMemo(() => props.load && untrack(() => props.load({ + params, + location, + intent: "preload" + }))); + return createComponent(Show, { + get when() { + return props.root; + }, + keyed: true, + get fallback() { + return props.children; + }, + children: (Root2) => createComponent(Root2, { + params, + location, + get data() { + return data(); + }, + get children() { + return props.children; + } + }) + }); +} +function Routes(props) { + const disposers = []; + let root; + const routeStates = createMemo(on(props.routerState.matches, (nextMatches, prevMatches, prev) => { + let equal = prevMatches && nextMatches.length === prevMatches.length; + const next = []; + for (let i = 0, len = nextMatches.length; i < len; i++) { + const prevMatch = prevMatches && prevMatches[i]; + const nextMatch = nextMatches[i]; + if (prev && prevMatch && nextMatch.route.key === prevMatch.route.key) { + next[i] = prev[i]; + } else { + equal = false; + if (disposers[i]) { + disposers[i](); + } + createRoot((dispose2) => { + disposers[i] = dispose2; + next[i] = createRouteContext(props.routerState, next[i - 1] || props.routerState.base, createOutlet(() => routeStates()[i + 1]), () => props.routerState.matches()[i]); + }); + } + } + disposers.splice(nextMatches.length).forEach((dispose2) => dispose2()); + if (prev && equal) { + return prev; + } + root = next[0]; + return next; + })); + return createOutlet(() => routeStates() && root)(); +} +const createOutlet = (child) => { + return () => createComponent(Show, { + get when() { + return child(); + }, + keyed: true, + children: (child2) => createComponent(RouteContextObj.Provider, { + value: child2, + get children() { + return child2.outlet(); + } + }) + }); +}; +const Route = (props) => { + const childRoutes = children(() => props.children); + return mergeProps$1(props, { + get children() { + return childRoutes(); + } + }); +}; +function intercept([value, setValue], get2, set) { + return [get2 ? () => get2(value()) : value, set ? (v) => setValue(set(v)) : setValue]; +} +function querySelector(selector) { + if (selector === "#") { + return null; + } + try { + return document.querySelector(selector); + } catch (e) { + return null; + } +} +function createRouter(config2) { + let ignore = false; + const wrap = (value) => typeof value === "string" ? { value } : value; + const signal = intercept(createSignal(wrap(config2.get()), { equals: (a, b) => a.value === b.value }), void 0, (next) => { + !ignore && config2.set(next); + return next; + }); + config2.init && onCleanup(config2.init((value = config2.get()) => { + ignore = true; + signal[1](wrap(value)); + ignore = false; + })); + return createRouterComponent({ + signal, + create: config2.create, + utils: config2.utils + }); +} +function bindEvent(target, type, handler) { + target.addEventListener(type, handler); + return () => target.removeEventListener(type, handler); +} +function scrollToHash(hash, fallbackTop) { + const el = querySelector("#".concat(hash)); + if (el) { + el.scrollIntoView(); + } else if (fallbackTop) { + window.scrollTo(0, 0); + } +} +const actions = /* @__PURE__ */ new Map(); +function setupNativeEvents(preload2 = true, explicitLinks = false, actionBase = "/_server") { + return (router) => { + const basePath2 = router.base.path(); + const navigateFromRoute = router.navigatorFactory(router.base); + let preloadTimeout = {}; + function isSvg(el) { + return el.namespaceURI === "http://www.w3.org/2000/svg"; + } + function handleAnchor(evt) { + if (evt.defaultPrevented || evt.button !== 0 || evt.metaKey || evt.altKey || evt.ctrlKey || evt.shiftKey) + return; + const a = evt.composedPath().find((el) => el instanceof Node && el.nodeName.toUpperCase() === "A"); + if (!a || explicitLinks && !a.hasAttribute("link")) + return; + const svg = isSvg(a); + const href = svg ? a.href.baseVal : a.href; + const target = svg ? a.target.baseVal : a.target; + if (target || !href && !a.hasAttribute("state")) + return; + const rel = (a.getAttribute("rel") || "").split(/\s+/); + if (a.hasAttribute("download") || rel && rel.includes("external")) + return; + const url = svg ? new URL(href, document.baseURI) : new URL(href); + if (url.origin !== window.location.origin || basePath2 && url.pathname && !url.pathname.toLowerCase().startsWith(basePath2.toLowerCase())) + return; + return [a, url]; + } + function handleAnchorClick(evt) { + const res = handleAnchor(evt); + if (!res) + return; + const [a, url] = res; + const to = router.parsePath(url.pathname + url.search + url.hash); + const state = a.getAttribute("state"); + evt.preventDefault(); + navigateFromRoute(to, { + resolve: false, + replace: a.hasAttribute("replace"), + scroll: !a.hasAttribute("noscroll"), + state: state && JSON.parse(state) + }); + } + function handleAnchorPreload(evt) { + const res = handleAnchor(evt); + if (!res) + return; + const [a, url] = res; + if (!preloadTimeout[url.pathname]) + router.preloadRoute(url, a.getAttribute("preload") !== "false"); + } + function handleAnchorIn(evt) { + const res = handleAnchor(evt); + if (!res) + return; + const [a, url] = res; + if (preloadTimeout[url.pathname]) + return; + preloadTimeout[url.pathname] = setTimeout(() => { + router.preloadRoute(url, a.getAttribute("preload") !== "false"); + delete preloadTimeout[url.pathname]; + }, 200); + } + function handleAnchorOut(evt) { + const res = handleAnchor(evt); + if (!res) + return; + const [, url] = res; + if (preloadTimeout[url.pathname]) { + clearTimeout(preloadTimeout[url.pathname]); + delete preloadTimeout[url.pathname]; + } + } + function handleFormSubmit(evt) { + let actionRef = evt.submitter && evt.submitter.hasAttribute("formaction") ? evt.submitter.getAttribute("formaction") : evt.target.getAttribute("action"); + if (!actionRef) + return; + if (!actionRef.startsWith("https://action/")) { + const url = new URL(actionRef, mockBase); + actionRef = router.parsePath(url.pathname + url.search); + if (!actionRef.startsWith(actionBase)) + return; + } + if (evt.target.method.toUpperCase() !== "POST") + throw new Error("Only POST forms are supported for Actions"); + const handler = actions.get(actionRef); + if (handler) { + evt.preventDefault(); + const data = new FormData(evt.target); + if (evt.submitter && evt.submitter.name) + data.append(evt.submitter.name, evt.submitter.value); + handler.call({ r: router, f: evt.target }, data); + } + } + delegateEvents(["click", "submit"]); + document.addEventListener("click", handleAnchorClick); + if (preload2) { + document.addEventListener("mouseover", handleAnchorIn); + document.addEventListener("mouseout", handleAnchorOut); + document.addEventListener("focusin", handleAnchorPreload); + document.addEventListener("touchstart", handleAnchorPreload); + } + document.addEventListener("submit", handleFormSubmit); + onCleanup(() => { + document.removeEventListener("click", handleAnchorClick); + if (preload2) { + document.removeEventListener("mouseover", handleAnchorIn); + document.removeEventListener("mouseout", handleAnchorOut); + document.removeEventListener("focusin", handleAnchorPreload); + document.removeEventListener("touchstart", handleAnchorPreload); + } + document.removeEventListener("submit", handleFormSubmit); + }); + }; +} +function hashParser(str) { + const to = str.replace(/^.*?#/, ""); + if (!to.startsWith("/")) { + const [, path = "/"] = window.location.hash.split("#", 2); + return "".concat(path, "#").concat(to); + } + return to; +} +function HashRouter(props) { + const getSource = () => window.location.hash.slice(1); + const beforeLeave = createBeforeLeave(); + return createRouter({ + get: getSource, + set({ value, replace, scroll, state }) { + if (replace) { + window.history.replaceState(keepDepth(state), "", "#" + value); + } else { + window.location.hash = value; + } + const hashIndex = value.indexOf("#"); + const hash = hashIndex >= 0 ? value.slice(hashIndex + 1) : ""; + scrollToHash(hash, scroll); + saveCurrentDepth(); + }, + init: (notify) => bindEvent(window, "hashchange", notifyIfNotBlocked(notify, (delta) => !beforeLeave.confirm(delta && delta < 0 ? delta : getSource()))), + create: setupNativeEvents(props.preload, props.explicitLinks, props.actionBase), + utils: { + go: (delta) => window.history.go(delta), + renderPath: (path) => "#".concat(path), + parsePath: hashParser, + beforeLeave + } + })(props); +} +var isDev = !!DEV; +var tryOnCleanup = isDev ? (fn) => getOwner() ? onCleanup(fn) : fn : onCleanup; +function makeEventListener(target, type, handler, options) { + target.addEventListener(type, handler, options); + return tryOnCleanup(target.removeEventListener.bind(target, type, handler, options)); +} +function createSingletonRoot(factory, detachedOwner = getOwner()) { + let listeners = 0, value, disposeRoot; + return () => { + listeners++; + onCleanup(() => { + listeners--; + queueMicrotask(() => { + if (!listeners && disposeRoot) { + disposeRoot(); + disposeRoot = value = void 0; + } + }); + }); + if (!disposeRoot) { + createRoot((dispose2) => value = factory(disposeRoot = dispose2), detachedOwner); + } + return value; + }; +} +var useKeyDownEvent = /* @__PURE__ */ createSingletonRoot( + () => { + const [event, setEvent] = createSignal(null); + makeEventListener(window, "keydown", (e) => { + setEvent(e); + setTimeout(() => setEvent(null)); + }); + return event; + } +); +function isFunc(item) { + return typeof item === "function"; +} +function isArray(item) { + return Array.isArray(item); +} +const keyMapEntries = { + ArrowLeft: "Left", + ArrowRight: "Right", + ArrowUp: "Up", + ArrowDown: "Down", + Enter: "Enter", + l: "Last", + " ": "Space", + Backspace: "Back", + Escape: "Escape" +}; +const [focusPath, setFocusPath] = createSignal([]); +const useFocusManager = (userKeyMap) => { + const keypressEvent = useKeyDownEvent(); + if (userKeyMap) { + for (const [key2, value] of Object.entries(userKeyMap)) { + if (isArray(value)) { + value.forEach((v) => { + keyMapEntries[v] = key2; + }); + } else { + keyMapEntries[value] = key2; + } + } + } + createEffect(on(activeElement, (currentFocusedElm, prevFocusedElm, prevFocusPath2 = []) => { + let current = currentFocusedElm; + const fp = []; + while (current) { + if (!current.states.has("focus")) { + current.states.add("focus"); + isFunc(current.onFocus) && current.onFocus.call(current, currentFocusedElm, prevFocusedElm); + } + fp.push(current); + current = current.parent; + } + prevFocusPath2.forEach((elm) => { + if (!fp.includes(elm)) { + elm.states.remove("focus"); + isFunc(elm.onBlur) && elm.onBlur.call(elm, currentFocusedElm, prevFocusedElm); + } + }); + setFocusPath(fp); + return fp; + }, { defer: true })); + createEffect(() => { + const e = keypressEvent(); + if (e) { + const mappedKeyEvent = keyMapEntries[e.key] || keyMapEntries[e.keyCode]; + untrack(() => { + const fp = focusPath(); + let finalFocusElm = void 0; + for (const elm of fp) { + finalFocusElm = finalFocusElm || elm; + if (mappedKeyEvent) { + const onKeyHandler = elm["on".concat(mappedKeyEvent)]; + if (isFunc(onKeyHandler)) { + if (onKeyHandler.call(elm, e, elm, finalFocusElm) === true) { + break; + } + } + } else { + console.log("Unhandled key event: ".concat(e.key)); + } + if (isFunc(elm.onKeyPress)) { + if (elm.onKeyPress.call(elm, e, mappedKeyEvent, elm, finalFocusElm) === true) { + break; + } + } + } + return false; + }); + } + }); + return focusPath; +}; +function withPadding(el, padding) { + const pad = padding(); + let top, left, right, bottom; + if (Array.isArray(pad)) { + if (pad.length === 2) { + top = bottom = pad[0]; + left = right = pad[1]; + } else if (pad.length === 3) { + top = pad[0]; + left = right = pad[1]; + bottom = pad[2]; + } else { + [top, right, bottom, left] = pad; + } + } else { + top = right = bottom = left = pad; + } + el.onBeforeLayout = (node, size2) => { + if (size2) { + el.width = el.children.reduce((acc, c) => { + return acc + (c.width || 0); + }, 0) + left + right; + const firstChild = el.children[0]; + if (firstChild) { + firstChild.x = left; + firstChild.marginLeft = left; + } + let maxHeight = 0; + el.children.forEach((c) => { + c.y = top; + c.marginTop = top; + maxHeight = Math.max(maxHeight, c.height || 0); + }); + el.height = maxHeight + top + bottom; + return true; + } + }; +} +function flattenStrings(series = []) { + const flattenedSeries = []; + let i; + for (i = 0; i < series.length; i++) { + const s = series[i]; + if (typeof s === "string" && !s.includes("PAUSE-")) { + flattenedSeries.push(series[i]); + } else { + break; + } + } + return [flattenedSeries.join(",\b ")].concat(series.slice(i)); +} +function delay(pause) { + return new Promise((resolve) => { + setTimeout(resolve, pause); + }); +} +function speak(phrase, utterances, lang = "en-US") { + const synth = window.speechSynthesis; + return new Promise((resolve, reject) => { + const utterance = new SpeechSynthesisUtterance(phrase); + utterance.lang = lang; + utterance.onend = () => { + resolve(); + }; + utterance.onerror = (e) => { + reject(e); + }; + utterances.push(utterance); + synth.speak(utterance); + }); +} +function speakSeries(series, lang, root = true) { + const synth = window.speechSynthesis; + const remainingPhrases = flattenStrings(Array.isArray(series) ? series : [series]); + const nestedSeriesResults = []; + const utterances = []; + let active = true; + const seriesChain = (async () => { + try { + while (active && remainingPhrases.length) { + const phrase = await Promise.resolve(remainingPhrases.shift()); + if (!active) { + break; + } else if (typeof phrase === "string" && phrase.includes("PAUSE-")) { + let pause = Number(phrase.split("PAUSE-")[1]) * 1e3; + if (isNaN(pause)) { + pause = 0; + } + await delay(pause); + } else if (typeof phrase === "string" && phrase.length) { + const totalRetries = 3; + let retriesLeft = totalRetries; + while (active && retriesLeft > 0) { + try { + await speak(phrase, utterances, lang); + retriesLeft = 0; + } catch (e) { + if (e instanceof SpeechSynthesisErrorEvent) { + if (e.error === "network") { + retriesLeft--; + console.warn("Speech synthesis network error. Retries left: ".concat(retriesLeft)); + await delay(500 * (totalRetries - retriesLeft)); + } else if (e.error === "canceled" || e.error === "interrupted") { + retriesLeft = 0; + } else { + throw new Error("SpeechSynthesisErrorEvent: ".concat(e.error)); + } + } else { + throw e; + } + } + } + } else if (typeof phrase === "function") { + const seriesResult = speakSeries(phrase(), lang, false); + nestedSeriesResults.push(seriesResult); + await seriesResult.series; + } else if (Array.isArray(phrase)) { + const seriesResult = speakSeries(phrase, lang, false); + nestedSeriesResults.push(seriesResult); + await seriesResult.series; + } + } + } finally { + active = false; + } + })(); + return { + series: seriesChain, + get active() { + return active; + }, + append: (toSpeak) => { + remainingPhrases.push(toSpeak); + }, + cancel: () => { + if (!active) { + return; + } + if (root) { + synth.cancel(); + } + nestedSeriesResults.forEach((nestedSeriesResults2) => { + nestedSeriesResults2.cancel(); + }); + active = false; + } + }; +} +let currentSeries; +function SpeechEngine(toSpeak, lang = "en-US") { + currentSeries && currentSeries.cancel(); + currentSeries = speakSeries(toSpeak, lang); + return currentSeries; +} +var debounce = (callback, wait) => { + let timeoutId; + const clear = () => clearTimeout(timeoutId); + if (getOwner()) + onCleanup(clear); + const debounced = (...args) => { + if (timeoutId !== void 0) + clear(); + timeoutId = setTimeout(() => callback(...args), wait); + }; + return Object.assign(debounced, { clear }); +}; +let resetFocusPathTimer; +let prevFocusPath = []; +let currentlySpeaking; +let voiceOutDisabled = false; +const fiveMinutes = 3e5; +function debounceWithFlush(callback, time) { + const trigger = debounce(callback, time); + let scopedValue; + const debounced = (newValue) => { + scopedValue = newValue; + trigger(newValue); + }; + debounced.flush = () => { + trigger.clear(); + callback(scopedValue); + }; + debounced.clear = trigger.clear; + return debounced; +} +function getElmName(elm) { + return elm.id || elm.name; +} +function onFocusChangeCore(focusPath2 = []) { + if (!Announcer.onFocusChange || !Announcer.enabled) { + return; + } + const loaded = focusPath2.every((elm) => !elm.loading); + const focusDiff = focusPath2.filter((elm) => !prevFocusPath.includes(elm)); + resetFocusPathTimer(); + if (!loaded && Announcer.onFocusChange) { + Announcer.onFocusChange([]); + return; + } + prevFocusPath = focusPath2.slice(0); + const toAnnounceText = []; + const toAnnounce = focusDiff.reduce((acc, elm) => { + if (elm.announce) { + acc.push([getElmName(elm), "Announce", elm.announce]); + toAnnounceText.push(elm.announce); + } else if (elm.title) { + acc.push([getElmName(elm), "Title", elm.title]); + toAnnounceText.push(elm.title); + } else { + acc.push([getElmName(elm), "No Announce", ""]); + } + return acc; + }, []); + focusDiff.reverse().reduce((acc, elm) => { + if (elm.announceContext) { + acc.push([getElmName(elm), "Context", elm.announceContext]); + toAnnounceText.push(elm.announceContext); + } else { + acc.push([getElmName(elm), "No Context", ""]); + } + return acc; + }, toAnnounce); + if (Announcer.debug) { + console.table(toAnnounce); + } + if (toAnnounceText.length) { + return Announcer.speak(toAnnounceText.reduce((acc, val) => acc.concat(val), [])); + } +} +function textToSpeech(toSpeak) { + if (voiceOutDisabled) { + return; + } + return currentlySpeaking = SpeechEngine(toSpeak); +} +const Announcer = { + debug: false, + enabled: true, + cancel: function() { + currentlySpeaking && currentlySpeaking.cancel(); + }, + clearPrevFocus: function(depth2 = 0) { + prevFocusPath = prevFocusPath.slice(0, depth2); + resetFocusPathTimer(); + }, + speak: function(text2, { append = false, notification = false } = {}) { + if (Announcer.onFocusChange && Announcer.enabled) { + Announcer.onFocusChange.flush(); + if (append && currentlySpeaking && currentlySpeaking.active) { + currentlySpeaking.append(text2); + } else { + Announcer.cancel(); + textToSpeech(text2); + } + if (notification) { + voiceOutDisabled = true; + currentlySpeaking == null ? void 0 : currentlySpeaking.series.finally(() => { + voiceOutDisabled = false; + Announcer.refresh(); + }).catch(console.error); + } + } + return currentlySpeaking; + }, + refresh: function(depth2 = 0) { + Announcer.clearPrevFocus(depth2); + Announcer.onFocusChange && Announcer.onFocusChange(untrack(() => focusPath())); + }, + setupTimers: function({ focusDebounce = 400, focusChangeTimeout = fiveMinutes } = {}) { + Announcer.onFocusChange = debounceWithFlush(onFocusChangeCore, focusDebounce); + resetFocusPathTimer = debounceWithFlush(() => { + prevFocusPath = []; + }, focusChangeTimeout); + } +}; +const useAnnouncer = () => { + Announcer.setupTimers(); + createEffect(on(focusPath, Announcer.onFocusChange, { defer: true })); + return Announcer; +}; +function createSpriteMap(src, subTextures) { + const spriteMapTexture = renderer.createTexture("ImageTexture", { + src + }); + return subTextures.reduce((acc, t) => { + const { x, y, width, height } = t; + acc[t.name] = renderer.createTexture("SubTexture", { + texture: spriteMapTexture, + x, + y, + width, + height + }); + return acc; + }, {}); +} +const [globalBackground, setGlobalBackground] = createSignal(""); +const theme = { + name: "Base Lightning TV", + alpha: { + primary: 1, + secondary: 0.7, + tertiary: 0.1, + inactive: 0.5, + full: 1, + none: 0, + alpha1: 0.1, + alpha2: 0.3, + alpha3: 0.5, + alpha4: 0.7, + alpha5: 0.9 + }, + animation: { + duration: { + none: 0, + xfast: 0.1, + fast: 0.25, + normal: 0.5, + slow: 0.75, + xslow: 0.9 + }, + delay: { + none: 0, + xfast: 0.01, + fast: 0.025, + normal: 0.05, + slow: 0.075, + xslow: 0.09 + }, + expressive: { + timingFunction: "cubic-bezier(0, 0, 1, 1)", + delay: 0, + duration: 0.25 + }, + expressiveEntrance: { + timingFunction: "cubic-bezier(0, 0, 1, 1)", + delay: 0, + duration: 0.25 + }, + expressiveExit: { + timingFunction: "cubic-bezier(0, 0, 1, 1)", + delay: 0, + duration: 0.25 + }, + standard: { + timingFunction: "cubic-bezier(0, 0, 1, 1)", + delay: 0, + duration: 0.25 + }, + standardEntrance: { + timingFunction: "cubic-bezier(0, 0, 1, 1)", + delay: 0, + duration: 0.25 + }, + standardExit: { + timingFunction: "cubic-bezier(0, 0, 1, 1)", + delay: 0, + duration: 0.25 + }, + utility: { + timingFunction: "cubic-bezier(0, 0, 1, 1)", + delay: 0, + duration: 0.25 + }, + utilityEntrance: { + timingFunction: "cubic-bezier(0, 0, 1, 1)", + delay: 0, + duration: 0.25 + }, + utilityExit: { + timingFunction: "cubic-bezier(0, 0, 1, 1)", + delay: 0, + duration: 0.25 + } + }, + asset: { + arrowLeft: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAi0lEQVRIDWNgGAWjIfD//38JID5Fk5AAGqwKxPeA+D/VLQCaaQLEr0CGgwBVLQCa5wbEn0EGwwDVLAAaGA3Ev2AGw2iqWAA0rBiI/8EMRaYptgBoWDeygehsci1gIlcjWfqArqZdEMFcBLSEdpGMZAntkimSJbTLaEiW0K6oQLKEdoUdzJJRemiHAAD4n+yzPWCs7QAAAABJRU5ErkJggg==", + arrowRight: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAg0lEQVRIDWNgGAWjIYArBP7//38KiCVwyVMsDjQcBO4BsSrFhmEzAGw8hHgFpEywqaFIDMkCEPMzELtRZCC6ZjQLQNxfQByNro5sPhYLQEL/gLiYbEORNeKwACbcDVPLBGMMOhrmVDSapkFE00imaTKlaUajaVFB28Ju0CXrUQfhDAEAEgHss6NhpLQAAAAASUVORK5CYII=", + backspaceOutline: "data:image/png;base64,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", + check: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAOCAYAAAAi2ky3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACtSURBVHgBvdPdDcIgEAfwoy8Nb45QN3AGF2s36Ahu4gpuIDoBfSgfpdoTlCbEWEMh6T8hFzjyg5AAkBHOcQe5UWqspRx435sDpMYj6IYQwwVSEiJ2MKVUBWuzLSLl2HL+uxmNCGFO8yaL7RHxve6qRZoAuS4hxac8735elWVx7jrtMKL1o0Gcat9jhExHSukN/kUIFZ7MpDRtzE1isDRkAUtDvrA8ZI597FUf8gWH9P0b4gko9wAAAABJRU5ErkJggg==" + }, + color: { + palette: { + "blue-20": "0xbecffeff", + "blue-40": "0x93a9fdff", + "blue-90": "0x000033ff", + "grey-05": "0xf8f7faff", + "grey-40": "0x929096ff", + "grey-70": "0x48474bff", + "grey-90": "0x181819ff" + }, + white: "0xffffffff", + black: "0x000000ff", + grey: "0x929096ff", + red: "0xe74c3cff", + orange: "0xdc7633ff", + yellow: "0xf7dc6fff", + green: "0x2ecc71ff", + blue: "0x93a9fdff", + purple: "0x663399ff", + material: "0x181819ff", + materialBrand: "0x000033ff", + overlay: "0x181819b3", + textNeutral: "0xf8f7faff", + textNeutralSecondary: "0xf8f7fab3", + textNeutralTertiary: "0xf8f7fa1a", + textNeutralDisabled: "0xf8f7fa80", + textInverse: "0x181819ff", + textInverseSecondary: "0x181819b3", + textInverseTertiary: "0x1818191a", + textInverseDisabled: "0x18181980", + textBrand: "0x93a9fdff", + textBrandSecondary: "0x93a9fdb3", + textBrandTertiary: "0x93a9fd1a", + textBrandDisabled: "0x93a9fd80", + textPositive: "0x2ecc71ff", + textNegative: "0xe74c3cff", + textInfo: "0x93a9fdff", + textCaution: "0xdc7633ff", + fillTransparent: "0xffffff0", + fillNeutral: "0xf8f7faff", + fillNeutralSecondary: "0xf8f7fab3", + fillNeutralTertiary: "0xf8f7fa1a", + fillNeutralDisabled: "0xf8f7fa80", + fillInverse: "0x181819ff", + fillInverseSecondary: "0x181819b3", + fillInverseTertiary: "0x1818191a", + fillInverseDisabled: "0x18181980", + fillBrand: "0x93a9fdff", + fillBrandSecondary: "0x93a9fdb3", + fillBrandTertiary: "0x93a9fd1a", + fillBrandDisabled: "0x93a9fd80", + fillPositive: "0x2ecc71ff", + fillNegative: "0xe74c3cff", + fillInfo: "0x93a9fdff", + fillCaution: "0xdc7633ff", + strokeNeutral: "0xf8f7faff", + strokeNeutralSecondary: "0xf8f7fab3", + strokeNeutralTertiary: "0xf8f7fa1a", + strokeNeutralDisabled: "0xf8f7fa80", + strokeInverse: "0x181819ff", + strokeInverseSecondary: "0x181819b3", + strokeInverseTertiary: "0x1818191a", + strokeInverseDisabled: "0x18181980", + strokeBrand: "0x93a9fdff", + strokeBrandSecondary: "0x93a9fdb3", + strokeBrandTertiary: "0x93a9fd1a", + strokeBrandDisabled: "0x93a9fd80", + strokePositive: "0x2ecc71ff", + strokeNegative: "0xe74c3cff", + strokeInfo: "0x93a9fdff", + strokeCaution: "0xdc7633ff", + interactiveNeutral: "0xffffff1a", + interactiveNeutralFocus: "0xffffffff", + interactiveNeutralFocusSoft: "0xffffff1a", + interactiveInverse: "0x48474b1a", + interactiveInverseFocus: "0x48474bff", + interactiveInverseFocusSoft: "0x48474b1a", + interactiveBrand: "0xbecffe1a", + interactiveBrandFocus: "0xbecffeff", + interactiveBrandFocusSoft: "0xbecffe1a", + shadowNeutral: "0x000000b3", + shadowNeutralFocus: "0x000000b3", + shadowNeutralFocusSoft: "0x000000b3", + shadowNeutralText: "0x000000ff", + shadowInverse: "0x000000b3", + shadowInverseFocus: "0x000000b3", + shadowInverseFocusSoft: "0x000000b3", + shadowInverseText: "0x000000ff", + shadowBrand: "0x000000b3", + shadowBrandFocus: "0x000000b3", + shadowBrandFocusSoft: "0x000000b3", + shadowBrandText: "0x000000ff" + }, + font: [], + layout: { + columnCount: 10, + focusScale: 1.2, + gutterX: 20, + gutterY: 20, + marginX: 150, + marginY: 150, + safe: 50, + screenW: 1920, + screenH: 1080 + }, + radius: { none: 0, xs: 2, sm: 4, md: 8, lg: 16, xl: 24 }, + spacer: { + none: 0, + xxs: 2, + xs: 4, + sm: 8, + md: 10, + lg: 20, + xl: 30, + xxl: 40, + xxxl: 50 + }, + stroke: { none: 0, sm: 2, md: 4, lg: 6, xl: 8 }, + typography: { + display1: { + fontFamily: "Arial", + fontSize: 75, + lineHeight: 85, + fontWeight: 500, + verticalAlign: "middle", + textBaseline: "bottom" + }, + display2: { + fontFamily: "Arial", + fontSize: 50, + lineHeight: 60, + fontWeight: 500, + verticalAlign: "middle", + textBaseline: "bottom" + }, + headline1: { + fontFamily: "Arial", + fontSize: 35, + fontWeight: 500, + lineHeight: 48, + verticalAlign: "middle", + textBaseline: "bottom" + }, + headline2: { + fontFamily: "Arial", + fontSize: 30, + fontWeight: 500, + lineHeight: 40, + verticalAlign: "middle", + textBaseline: "bottom" + }, + headline3: { + fontFamily: "Arial", + fontSize: 25, + fontWeight: 500, + lineHeight: 36, + verticalAlign: "middle", + textBaseline: "bottom" + }, + body1: { + fontFamily: "Arial", + fontSize: 25, + fontWeight: 300, + lineHeight: 40, + verticalAlign: "middle", + textBaseline: "bottom" + }, + body2: { + fontFamily: "Arial", + fontSize: 22, + fontWeight: 300, + lineHeight: 32, + verticalAlign: "middle", + textBaseline: "bottom" + }, + body3: { + fontFamily: "Arial", + fontSize: 20, + fontWeight: 300, + lineHeight: 32, + verticalAlign: "middle", + textBaseline: "bottom" + }, + button1: { + fontFamily: "Arial", + fontSize: 25, + fontWeight: 500, + lineHeight: 32, + verticalAlign: "middle", + textBaseline: "bottom" + }, + button2: { + fontFamily: "Arial", + fontSize: 20, + fontWeight: 500, + lineHeight: 32, + verticalAlign: "middle", + textBaseline: "bottom" + }, + callout1: { + fontFamily: "Arial", + fontSize: 20, + fontWeight: 500, + lineHeight: 32, + verticalAlign: "middle", + textBaseline: "bottom" + }, + caption1: { + fontFamily: "Arial", + fontSize: 15, + fontWeight: 500, + lineHeight: 24, + verticalAlign: "middle", + textBaseline: "bottom" + }, + tag1: { + fontFamily: "Arial", + fontSize: 20, + fontWeight: 500, + lineHeight: 24, + verticalAlign: "middle", + textBaseline: "bottom" + }, + footnote1: { + fontFamily: "Arial", + fontSize: 22, + fontWeight: 300, + lineHeight: 30, + verticalAlign: "middle", + textBaseline: "bottom" + } + }, + componentConfig: { + Keyboard: { + base: { + keyProps: { + delete: { + title: null, + icon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAACmpJREFUeF7tnVmoZUcVhv/feY4gBEVEH/KgCCZxCK2itNo4xQQH+kUN0TjEiDGKKBqnaExwBjUaR6KY+NQgiQkOMSYhYEScIopGJOqDE2hHjfP0y4p1Oqdv33v2qr32Prv2Paug6Ye7Vu2qv75TtWvtGohMqUBAAQZ80zUVQAKUEIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypfPsAJJ0NYC92XRHKPB3AAfLv18BuBLAFSR/NKZWswJI0vkA3jCmILsw75sAvIfkR8eo22wAknQSgMvGEGFD8vwxgFeQvGrI+s4CIEnHAPgugHsMWfkNzevDAM4i+Z8h6t88QJLuXOB5yBAVzjxuVeBaAM8ieXNUjzkAdAmA50Yrmv5HKPATACeQ/GNEm6YBkvRyANblZhpHAXsfekpkOGsWIEmPAHA9gDuOo13mWhS4gOSZfdVoEiBJ9wFwA4D7961Y+lUpsK/v7KxVgL4K4ElOCS4l+Uyn7a41k3Q0gMcC2ANgH4CHV1T2OyStx69OzQEk6TwAZztr8lMAx5P8s9N+Y8wk2cTjfQDu66z080h+zml7yKwpgCSdCOByZyX+BuBRJH/otN84M0kWN/s0gOc4Kv8Nko922B1m0gxAkh4I4AcVwcL9JA/UVnjT7CXdHYD9yEzfVUkAjib5uxqNmgCoBAu/CeBhzsJ/kORZTtuNN5Nk70bXAZ0Hy59G8qIawVoB6LMAnu8suE3tH0/y3077NAMg6esAuoaoC0la7M2dJgdI0ssAXOgs8W8BHEvS/s9UoYCkdwN4bYfL5STto7U7TQpQZbDQehzreawHylSpgKSTAVza4XYDyeNqsp4MoB7BwteQfH9N5dL2NgWK3l0vyAdJWhDXnSYBSNLtANh3GO/KwgMk97trlYbbKiDJPpzea5U8JKuYqDIeql0kvQPAG5352ZLMR5L8q9M+zXZQYFcAJOnJAL7sbGWLMFuk2SLOmYIKzB6gEiz8HoB7O7U4meQXnLZp1qGApD8BuOcsh7AewcL3kuyadg4OjSSbhRxH0j4BjJok2Ufga0j+YdQHlcznDlBNsPAa+xpP8r/rEHbxjAKPbRuyHvKFY0Ik6QUALOprPfIT1gHRbAGSdDoA77aSX5Zg4e8nhGfx6FEgWoJn8Zy1QCTplq5vjc3NwnoEC/eQ/HYD8IwC0TbwrA2i2QHUI1h4JskLGoJnUIhWwLMWiGYFkCSLMX2t5WDhlneeLm5Dw5kDntEhkmRhEVvesWNqZgiTdC6AN3W1Svn72oOFkuxF+WcVIQUrai+IKuA5BBHJ453auc1mA1AJFn7Jsf7EKj9ZsLBHw1ZDtI5neAmaBUBzCxaO2cBj5u2FZtlO0l8A3K3ZIaxHsPB8kt5vYn00c/mM0dBj5OmqzAqjOQDUfLBwJ32HbPAh84pCM5seSNJLAHzcWeFJgoVdZRui4YfIo6ucff8uyVY03LW5IawyWPgvW5u77mChV/QIABFfb/kidk0CVKbDth3Huw35dJLeniqiV2/fniDYx1f7vlWTeoUFah6wZQhrqwcqwUKbrtsaH0+6mOQpHsOpbXpCVFPstcJjBZNkmzHv0swQJultAN7iVO375TyafzjtJzcbEaK1w9McQJXBQlvvYmtsfjE5FZUFGAGiSeBpCqDKYKFtmX0qya9Utl0z5gNCNBk8BSA7CtiODNwxjf4trEew8BySNtTNOg0A0aTwtARQTbDQeh3rfawXmn0KQDQ5PC0B9EkAL3LSkAD9X6hWALIJzJ3mNoSdS9I7U3NyuX6zQO+zKOzkEEmaHqDSFdpZM97tOfkSfRvvk0LUDEAFIgseetf85DS+AYgk/bPr1NvRZ2HLg4ektwI4xzmgZCBxYohaBMjWPeenDOcvaIvZ2oez5gAqQ5mtLbb3oa4z+Bb6nTHW1UP92vFIr54vzJ8BcGplGdYKkSRbCXGHSWdh2z1ckp1taGccroxyFt9cznG4iGuDqFmASk9kZxxakNGTckHZBBA1DVCB6BMAXuwhyA4VmGL/+05l6zlsbdt7DJmXU0uXmSQ7JvD2zQ1hiwJJsotRvlVxXO87SU5+heUYDT5Gni5KVhg1D1DphWqCjOYy6RlAYzb0mHn3gWkWABWIaoKMubHwSBpGebGWZNdc2vmUO6a1BhJXFUSSff/yLuOYamvzzwEcVfFr7tWwPXqi6uN2PXWYG0C1Qca1n8RaDlewl3kPRL3gWXo/XBwo1dXWdk/a3jEOnJoVQGUoqw0yvpLkh7oUHvLvTohC8FRANBo8pT3sxLeVJ/M2M4QtiVYTZJzkNPoOiAaBxwHRqPDMFqBS8Jog4yT3YewA0aDwrIBodHhmDVApvG0mtO3PnjTJjTxbIBoFnm0gWgs8pQ06lxY3N4QtCWZBRgPDezdnHvPr+alV2EiaL0DlF2Dbn20bdB40XtHwQ5nOHqAC0SyCjEM1Wkv57AqACkRvBvB2p7hrDzI6yzU7s90EUPNBxtnR4SjwrgGo9EK1Qca8cM4ByU4mkuz++F93ZHELyZX3iW31n+S+sKWZWfNBxkCbNeUq6ekArugo1I0kH1xT8EkBKj1R80HGGkFbtZVkZ3bb2d2r0tUkn1hTh8kBKhB9DMBLnQWfJMjoLFuTZpJsO/ONAB7UUcBLSHqvX781q1YAqg0yfoDkq5psrQYLJeldAF7nKFr1x+wmACq9kAUZLazvvTV4P8kDDlE22kTSQ4uuK9dCF5HuR/I3NYI1A1CBaB+AK50VsAMj7TJeixNl2kYBSccCsB/ZMQ6Brif5GIfdYSZNAVQg8rzsLSphl/Hapby2LDZTUaBcq/56ALb1fOVxLkuinULy4loRmwOoQGQX7T7DWZnPk3y203bXmkl6AIA91isDOBGADV3e1HsJbasA1QYZvUKl3fYKPI2knXFQnZoEqPRCNUHG6oqnwyEFLiJ5Wl89mgWoQFQTZOyrwSb7WUztcSRtu0+v1DRABaKPADijV+3SaZUCNgE5geTNEZnmAFBtkDGix6b4Xld2BNvJcaHUPEClF6oNMoZE2eXOtm3q1ZFha1mfWQBUINoL4Kqurbm7vPEj1bOAqx3udW0kk62+swGoQHQ2gPOGFGAD8roJgF0t+qkx6jorgApElwE4aQwxZp6n3YNxsPyzA7yst/4iSdvEMFqaHUCjKZEZ91IgAeolWzotFEiAkoWQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnT+H0jPT81J3xWWAAAAAElFTkSuQmCC" + } + } + } + } + } +}; +function Background() { + let bg1, bg2, heroMask; + let active = 0; + const alpha = 1; + const animationSettings = { + duration: 750, + easing: "ease-in-out" + }; + const bgStyles = { + alpha, + color: 4294967295 + }; + function changeBackgrounds(img) { + if (img.startsWith("#")) { + bg1.color = hexColor(img); + bg1.src = ""; + bg1.alpha = 1; + active = 1; + bg2.alpha = 0; + heroMask.alpha = 0; + return; + } else { + bg1.color = 4294967295; + heroMask.alpha = 1; + } + if (active === 0) { + bg1.src = img; + active = 1; + return; + } + if (active === 1) { + bg2.src = img; + active = 2; + bg2.alpha = 0; + bg2.animate({ + alpha + }, animationSettings).start(); + bg1.animate({ + alpha: 0 + }, animationSettings).start(); + return; + } + if (active === 2) { + bg1.src = img; + active = 1; + bg1.alpha = 0; + bg1.animate({ + alpha + }, animationSettings).start(); + bg2.animate({ + alpha: 0 + }, animationSettings).start(); + } + } + createEffect(on(globalBackground, (img) => { + changeBackgrounds(img); + }, { + defer: true + })); + return createComponent(View, { + width: 1920, + height: 1080, + zIndex: -5, + get children() { + return [createComponent(View, { + ref(r$) { + var _ref$ = bg1; + typeof _ref$ === "function" ? _ref$(r$) : bg1 = r$; + }, + style: bgStyles + }), createComponent(View, { + ref(r$) { + var _ref$2 = bg2; + typeof _ref$2 === "function" ? _ref$2(r$) : bg2 = r$; + }, + style: bgStyles, + alpha: 0 + }), createComponent(View, { + ref(r$) { + var _ref$3 = heroMask; + typeof _ref$3 === "function" ? _ref$3(r$) : heroMask = r$; + }, + src: "./assets/hero-mask-inverted.png", + get color() { + return hexColor(theme.color.materialBrand); + }, + width: 1920, + height: 1080 + })]; + } + }); +} +var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r; +function objectFromEntries(entries) { + if (!entries || !entries[Symbol.iterator]) { + throw new Error("objectFromEntries requires a single iterable argument"); + } + const obj = {}; + for (const [key2, value] of entries) { + obj[key2] = value; + } + return obj; +} +const defaultModeKeys = ["focus", "disabled"]; +const defaultToneKeys = ["brand", "inverse", "neutral"]; +function makeComponentStyles({ themeKeys, base, modes, tones, themeStyles: themeStyles2, modeKeys = defaultModeKeys, toneKeys = defaultToneKeys }, debug = false) { + const makeToneStyles = (tones2, themeComponentStyles, modeStyles) => { + const toneStyles = toneKeys.map((tone) => { + var _a3, _b2; + const styles2 = {}; + const styleList = new Set( + [].concat.apply([], [(_a3 = tones2 == null ? void 0 : tones2[tone]) != null ? _a3 : {}, (_b2 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) != null ? _b2 : {}].map(Object.keys)) + ); + styleList.forEach((styleKey) => { + var _a4; + var _a22, _b22; + if (!modeKeys.includes(styleKey)) { + styles2[styleKey] = (_a4 = (_a22 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _a22[styleKey]) != null ? _a4 : (_b22 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _b22[styleKey]; + } + }); + modeKeys.forEach((mode) => { + var _a22, _b22; + styles2[mode] = { + ...modeStyles[mode], + // fallbacks from base.mode + ...(_a22 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _a22[mode], + // component configured tone.mode + ...(_b22 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _b22[mode] + // theme configure tone.mode + }; + }); + return [tone, styles2]; + }); + return objectFromEntries(toneStyles); + }; + const makeModeStyles = (modes2, themeComponentStyles) => { + const modeStyles = modeKeys.map((mode) => { + return [mode, { ...modes2 == null ? void 0 : modes2[mode], ...themeComponentStyles == null ? void 0 : themeComponentStyles[mode] }]; + }); + const modeObject = objectFromEntries(modeStyles); + return modeObject; + }; + const makeBaseStyles = (base2, themeComponentStyles) => { + const baseStyles = { + ...base2, + ...themeComponentStyles.base + }; + return baseStyles; + }; + const mapThemeKeysToSolid = (stylesToMap) => objectFromEntries( + Object.entries(themeKeys).filter(([_, themeKey]) => stylesToMap[themeKey]).map(([solidKey, themeKey]) => [solidKey, stylesToMap[themeKey]]) + ); + const convertComponentConfig = (themeStyles3) => { + const convertedThemeStyles = objectFromEntries( + // iterate through each variant + Object.entries(themeStyles3).map(([variantName, styles2]) => { + const convertedStyles = mapThemeKeysToSolid(styles2); + Object.entries(styles2).filter(([styleName, _]) => modeKeys.includes(styleName)).forEach(([modeName, modeStyles]) => { + convertedStyles[modeName] = mapThemeKeysToSolid(modeStyles); + }); + return [variantName, convertedStyles]; + }) + ); + return convertedThemeStyles; + }; + const generateSolidStylesFromLookupObject = (base2, modes2, tones2) => { + const themeComponentStyles = convertComponentConfig(themeStyles2); + debug && console.log(themeComponentStyles); + const baseStyles = makeBaseStyles(base2, themeComponentStyles); + debug && console.log(baseStyles); + const modeStyles = makeModeStyles(modes2, themeComponentStyles); + debug && console.log(modeStyles); + const toneStyles = makeToneStyles(tones2, themeComponentStyles, modeStyles); + debug && console.log(toneStyles); + return { + base: { + ...baseStyles, + ...modeStyles + }, + tones: toneStyles + }; + }; + return generateSolidStylesFromLookupObject(base, modes, tones); +} +function withScrolling(adjustment = 0) { + return (componentRef, selectedElement, selected = 0, lastSelected) => { + var _a3, _b2, _c2, _d2; + if (componentRef.children.length === 0) { + return; + } + const dimension = componentRef.flexDirection === "row" ? "width" : "height"; + const axis = componentRef.flexDirection === "row" ? "x" : "y"; + const gap = componentRef.gap || 0; + const scroll = componentRef.scroll || "auto"; + const [lastItem, containerSize] = updateLastIndex(componentRef); + let rootPosition = (_a3 = componentRef[axis]) != null ? _a3 : 0; + const selectedPosition = (_b2 = selectedElement == null ? void 0 : selectedElement[axis]) != null ? _b2 : 0; + const selectedSize = (_c2 = selectedElement == null ? void 0 : selectedElement[dimension]) != null ? _c2 : 0; + const direct = lastSelected === void 0 ? "none" : selected > lastSelected ? "positive" : "negative"; + let next = rootPosition; + if (scroll === "auto") { + if (componentRef.scrollIndex != void 0 && componentRef.scrollIndex >= 0) { + if (componentRef.selected >= componentRef.scrollIndex) { + if (direct === "positive") { + next = rootPosition - selectedSize - gap; + } else { + next = rootPosition + selectedSize + gap; + } + } + } else if (Math.abs(rootPosition) + containerSize < lastItem.position + lastItem.size || selectedPosition < Math.abs(rootPosition)) { + next = -selectedPosition + adjustment; + } + } else if (scroll === "always" || scroll === "edge" && direct === "negative" && Math.abs(rootPosition) > selectedPosition) { + next = -selectedPosition + adjustment; + } else if (scroll === "edge" && direct === "positive" && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) { + next = rootPosition - selectedSize - gap; + } else if (scroll === "edge" && direct === "none") { + let currentChildIndex = 0; + let currentChild, currentChildSize; + while (currentChildIndex < componentRef.children.length && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) { + currentChild = componentRef.children[currentChildIndex++]; + currentChildSize = (_d2 = currentChild[dimension]) != null ? _d2 : 0; + rootPosition -= currentChildSize + gap; + } + next = rootPosition; + } + if (axis === "x" && componentRef.x !== next) { + componentRef.x = next; + } else if (axis === "y" && componentRef.y !== next) { + componentRef.y = next; + } + }; +} +function updateLastIndex(items) { + let lastItem, containerSize; + if (items.flexDirection === "row") { + lastItem = { + position: items.children[items.children.length - 1].x, + size: items.children[items.children.length - 1].width + }; + containerSize = items.width; + } else { + lastItem = { + position: items.children[items.children.length - 1].y, + size: items.children[items.children.length - 1].height + }; + containerSize = items.height; + } + return [lastItem, containerSize]; +} +const chainFunctions = (...args) => { + const onlyFunctions = args.filter((func) => typeof func === "function"); + if (onlyFunctions.length === 0) { + return void 0; + } + if (onlyFunctions.length === 1) { + return onlyFunctions[0]; + } + return function(...innerArgs) { + let result; + for (const func of onlyFunctions) { + result = func.apply(this, innerArgs); + if (result === true) { + return result; + } + } + return result; + }; +}; +function onGridFocus() { + if (!this || this.selected === void 0 || this.children.length === 0) + return false; + let child = this.children[this.selected]; + while (child == null ? void 0 : child.skipFocus) { + this.selected++; + child = this.children[this.selected]; + } + if (!(child instanceof ElementNode)) + return false; + child.setFocus(); + return true; +} +function handleNavigation(direction) { + return function() { + var _a22, _b2, _c2; + const numChildren = this.children.length; + const wrap = this.wrap; + const lastSelected = this.selected || 0; + if (numChildren === 0) { + return false; + } + if (direction === "right" || direction === "down") { + do { + this.selected = (this.selected || 0) % numChildren + 1; + if (this.selected >= numChildren) { + if (!wrap) { + this.selected = void 0; + break; + } + this.selected = 0; + } + } while ((_a22 = this.children[this.selected]) == null ? void 0 : _a22.skipFocus); + } else if (direction === "left" || direction === "up") { + do { + this.selected = (this.selected || 0) % numChildren - 1; + if (this.selected < 0) { + if (!wrap) { + this.selected = void 0; + break; + } + this.selected = numChildren - 1; + } + } while ((_b2 = this.children[this.selected]) == null ? void 0 : _b2.skipFocus); + } + if (this.selected === void 0) { + this.selected = lastSelected; + if ((_c2 = this.children[this.selected]) == null ? void 0 : _c2.states.has("focus")) { + return false; + } + } + const active = this.children[this.selected]; + this.onSelectedChanged && this.onSelectedChanged.call(this, this, active, this.selected, lastSelected); + if (this.plinko && lastSelected !== void 0) { + const lastSelectedChild = this.children[lastSelected]; + const num = lastSelectedChild.selected || 0; + active.selected = num < active.children.length ? num : active.children.length - 1; + } + active.setFocus(); + return true; + }; +} +function getWidthByUpCount$1(theme2, upCount = 1) { + const screenW = theme2.layout.screenW; + const columnCount = theme2.layout.columnCount; + const marginX = theme2.layout.marginX; + const gutterX = theme2.layout.gutterX; + if (upCount < 1 || upCount > columnCount) { + console.error("Column expects a number between 1 & ".concat(columnCount, ". Received ").concat(upCount)); + return; + } + const columnWidth = screenW - marginX * 2; + const columnGapTotal = (upCount - 1) * gutterX; + const totalColumnsWidth = columnWidth - columnGapTotal; + return totalColumnsWidth / upCount; +} +const { Artwork: { defaultTone: defaultTone$f, ...themeStyles$e } = { styles: {} } } = (_a = theme) == null ? void 0 : _a.componentConfig; +const container$f = { + themeKeys: { + fillColor: "fillColor", + scale: "imageScale", + pivotX: "imageScalePivotX", + pivotY: "imageScalePivotY" + }, + base: { + fallbackSrc: void 0, + fillColor: theme.color.overlay, + gradientColor: theme.color.material, + pivotX: 0.5, + pivotY: 0.5, + scale: void 0 + }, + themeStyles: themeStyles$e +}; +makeComponentStyles(container$f); +const { Badge: { defaultTone: defaultTone$e, ...themeStyles$d } = { styles: {} } } = (_b = theme) == null ? void 0 : _b.componentConfig; +const container$e = { + themeKeys: { + color: "backgroundColor" + }, + base: { + color: theme.color.fillInverseSecondary, + borderRadius: theme.radius.sm, + // borderRadius must be applied _before_ border to prevent the node from breaking + border: { + color: theme.color.strokeInverse, + width: theme.stroke.sm + }, + display: "flex", + justifyContent: "spaceEvenly", + padding: [ + theme.spacer.md - theme.stroke.sm, + theme.spacer.xs + theme.stroke.sm, + theme.spacer.md + theme.stroke.sm, + theme.spacer.md + theme.stroke.sm + ] + }, + tones: { + inverse: { + color: theme.color.fillNeutralSecondary, + borderRadius: theme.radius.sm, + border: { + color: theme.color.strokeInverseSecondary, + width: theme.stroke.sm + } + }, + brand: { + color: theme.color.fillBrand, + borderRadius: theme.radius.sm, + border: { + color: theme.color.strokeInverseSecondary, + width: theme.stroke.sm + } + } + }, + themeStyles: themeStyles$d +}; +const text$7 = { + themeKeys: { + color: "textColor" + }, + base: { + ...theme.typography.tag1, + color: theme.color.textNeutral + }, + tones: { + inverse: { + color: theme.color.textInverse + }, + brand: { + color: theme.color.textNeutral + } + }, + themeStyles: themeStyles$d +}; +const icon$2 = { + themeKeys: { + color: "iconColor" + }, + base: { + color: theme.color.textNeutral + }, + tones: { + inverse: { + color: theme.color.textInverse + }, + brand: { + color: theme.color.textNeutral + } + }, + themeStyles: themeStyles$d +}; +makeComponentStyles(container$e); +makeComponentStyles(icon$2); +makeComponentStyles(text$7); +const { Button: { defaultTone: defaultTone$d, ...themeStyles$c } = { styles: {} } } = (_c = theme) == null ? void 0 : _c.componentConfig; +const { Surface: { surfaceDefaultTone, ...surfaceThemeStyles$1 } = { styles: {} } } = (_d = theme) == null ? void 0 : _d.componentConfig; +const container$d = { + themeKeys: { + textAlign: "textAlign", + borderRadius: "radius", + color: "backgroundColor", + justifyContent: "justifyContent" + }, + base: { + height: theme.typography.button1.lineHeight + theme.spacer.xl * 2, + display: "flex", + padding: [theme.spacer.xxxl, theme.spacer.xl], + color: theme.color.interactiveNeutral, + justifyContent: "center", + alignItems: "center", + borderRadius: theme.radius.sm, + contentColor: theme.color.fillNeutral + }, + modes: { + focus: { + color: theme.color.interactiveNeutralFocus, + contentColor: theme.color.fillInverse + }, + disabled: { + color: theme.color.fillNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.interactiveInverse + }, + brand: { + color: theme.color.interactiveBrand, + focus: { + color: theme.color.fillNeutral + } + } + }, + themeStyles: { + ...surfaceThemeStyles$1, + ...themeStyles$c + } +}; +const content = { + themeKeys: { + color: "contentColor" + }, + base: { + color: theme.color.textNeutral + }, + modes: { + focus: { + color: theme.color.textInverse + }, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.fillNeutral + }, + brand: { + color: theme.color.fillBrand, + focus: { + color: theme.color.fillBrand + } + } + }, + themeStyles: { + ...surfaceThemeStyles$1, + ...themeStyles$c + } +}; +const text$6 = { + themeKeys: { + color: "textColor" + }, + base: { + textAlign: "left", + color: theme.color.textNeutral, + ...theme.typography.button1 + }, + modes: { + focus: { + color: theme.color.textInverse + }, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.fillNeutral + }, + brand: { + color: theme.color.fillBrand, + focus: { + color: theme.color.fillBrand + } + } + }, + themeStyles: { + ...surfaceThemeStyles$1, + ...themeStyles$c + } +}; +const Container$c = makeComponentStyles(container$d); +const Content = makeComponentStyles(content); +const Text$5 = makeComponentStyles(text$6); +const styles$c = { + tone: defaultTone$d || surfaceDefaultTone || "neutral", + Container: Container$c, + Content, + Text: Text$5 +}; +const Button$1 = (props) => { + return createComponent(View, mergeProps(props, { + get style() { + var _a3; + var _a22; + return [ + ...[props.style].flat(), + // + (_a22 = styles$c.Container.tones) == null ? void 0 : _a22[(_a3 = props.tone) != null ? _a3 : styles$c.tone], + styles$c.Container.base + ]; + }, + forwardStates: true, + get children() { + return createComponent(Text, { + get style() { + var _a3; + var _a22; + return [ + ...[(_a22 = props.style) == null ? void 0 : _a22.Text].flat(), + // + styles$c.Text.tones[(_a3 = props.tone) != null ? _a3 : styles$c.tone], + styles$c.Text.base + ]; + }, + get children() { + return props.children; + } + }); + } + })); +}; +const { Checkbox: { defaultTone: defaultTone$c, ...themeStyles$b } = { styles: {} } } = (_e = theme) == null ? void 0 : _e.componentConfig; +const strokeWidth = theme.stroke.sm; +const size = theme.spacer.xxl; +const container$c = { + themeKeys: { + color: "color", + borderRadius: "borderRadius", + border: "border", + justifyContent: "justifyContent" + }, + base: { + width: size, + height: size, + display: "flex", + justifyContent: "center", + color: theme.color.fillNeutral, + alignItems: "center", + borderRadius: size / 4, + border: { + color: theme.color.strokeInverse, + width: strokeWidth + } + }, + modes: { + disabled: { + alpha: theme.alpha.inactive + } + }, + tones: { + brand: { + borderRadius: size / 4, + border: { + color: theme.color.strokeNeutralSecondary, + width: strokeWidth + }, + color: theme.color.fillNeutralSecondary, + checked: { + borderRadius: size / 4, + border: { + color: theme.color.strokeNeutralSecondary, + width: strokeWidth + }, + color: theme.color.fillBrand + } + }, + neutral: { + borderRadius: size / 4, + border: { + color: theme.color.strokeNeutralSecondary, + width: strokeWidth + }, + color: theme.color.fillInverseSecondary, + checked: { + borderRadius: size / 4, + border: { + color: theme.color.strokeNeutralSecondary, + width: strokeWidth + }, + color: theme.color.fillNeutral + } + }, + inverse: { + borderRadius: size / 4, + border: { + color: theme.color.strokeInverseSecondary, + width: strokeWidth + }, + color: theme.color.fillNeutralSecondary, + checked: { + borderRadius: size / 4, + border: { + color: theme.color.strokeInverseSecondary, + width: strokeWidth + }, + color: theme.color.fillInverse + } + } + }, + modeKeys: ["focus", "disabled", "checked"], + themeStyles: themeStyles$b +}; +const icon$1 = { + themeKeys: { + color: "color" + }, + base: { + width: theme.spacer.lg, + height: theme.spacer.lg, + src: theme.asset.check + }, + tones: { + neutral: { + color: theme.color.fillInverse + }, + inverse: { + color: theme.color.fillNeutral + }, + brand: { + color: theme.color.fillInverse + } + }, + themeStyles: themeStyles$b +}; +makeComponentStyles(container$c); +makeComponentStyles(icon$1); +const { Icon: { defaultTone: defaultTone$b, ...themeStyles$a } = { styles: {} } } = (_f = theme) == null ? void 0 : _f.componentConfig; +const container$b = { + themeKeys: { + color: "color" + }, + base: { + width: 100, + height: 100, + color: theme.color.fillInverse + }, + tones: { + inverse: { + color: theme.color.fillInverse + }, + brand: { + color: theme.color.fillBrand + } + }, + themeStyles: themeStyles$a +}; +makeComponentStyles(container$b); +const { Column: { defaultTone: defaultTone$a, ...themeStyles$9 } = { styles: {} } } = (_g = theme) == null ? void 0 : _g.componentConfig; +const container$a = { + themeKeys: { + gap: "itemSpacing", + scrollIndex: "scrollIndex", + itemTransition: "itemTransition" + }, + base: { + display: "flex", + flexBoundary: "fixed", + flexDirection: "column", + gap: theme.layout.gutterY, + itemTransition: { + ...theme.animation.standardEntrance, + duration: theme.animation.duration.fast + } + }, + themeStyles: themeStyles$9 +}; +const Container$9 = makeComponentStyles(container$a); +const styles$9 = { + tone: defaultTone$a || "neutral", + Container: Container$9 +}; +const Column = (props) => { + const onUp = handleNavigation("up"); + const onDown = handleNavigation("down"); + return createComponent(View, mergeProps(props, { + get onUp() { + return chainFunctions(props.onUp, onUp); + }, + get onDown() { + return chainFunctions(props.onDown, onDown); + }, + get selected() { + return props.selected || 0; + }, + forwardFocus: onGridFocus, + get onCreate() { + return chainFunctions((elm) => { + var _a3, _b2; + return withScrolling(props.y).call(elm, elm, elm.children[(_a3 = props.selected) != null ? _a3 : 0], (_b2 = props.selected) != null ? _b2 : 0, void 0); + }, props.onCreate); + }, + get onSelectedChanged() { + return chainFunctions(props.onSelectedChanged, props.scroll !== "none" ? withScrolling(props.y) : void 0); + }, + get style() { + var _a3; + return [...[props.style].flat(), styles$9.Container.tones[(_a3 = props.tone) != null ? _a3 : styles$9.tone], styles$9.Container.base]; + } + })); +}; +const { Label: { defaultTone: defaultTone$9, ...themeStyles$8 } = { styles: {} } } = (_h = theme) == null ? void 0 : _h.componentConfig; +const container$9 = { + themeKeys: { + color: "backgroundColor", + borderRadius: "radius" + }, + base: { + display: "flex", + justifyContent: "center", + color: theme.color.textNeutral, + padding: [theme.spacer.md, theme.spacer.lg], + // TODO themed padding values + borderRadius: [theme.radius.md, theme.radius.md, theme.radius.md, theme.radius.none], + height: theme.typography.caption1.lineHeight + theme.spacer.md, + neutral: { + backgroundColor: theme.color.fillNeutral + } + }, + tones: { + inverse: { + color: theme.color.fillInverse + }, + brand: { + color: theme.color.fillBrand, + focus: { + color: theme.color.orange + } + } + }, + themeStyles: themeStyles$8 +}; +const text$5 = { + themeKeys: { + color: "textColor" + }, + base: { + ...theme.typography.caption1, + color: theme.color.textInverse + }, + tones: { + inverse: { + color: theme.color.textNeutral + }, + brand: { + color: theme.color.textNeutral + } + }, + themeStyles: themeStyles$8 +}; +makeComponentStyles(container$9); +makeComponentStyles(text$5); +const { Rating: { styles: themeStyles$7, defaultTone: defaultTone$8 } = { styles: {}, defaultTone: "neutral" } } = (_i = theme) == null ? void 0 : _i.componentConfig; +const container$8 = { + themeKeys: { + justifyContent: "justifyContent", + itemSpacing: "itemSpacing" + }, + base: { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + itemSpacing: theme.spacer.sm + }, + toneModes: {}, + themeStyles: themeStyles$7 +}; +const text$4 = { + themeKeys: { + color: "textColor" + }, + base: { + color: theme.color.textNeutral, + ...theme.typography.body2 + }, + toneModes: {}, + themeStyles: themeStyles$7 +}; +const icon = { + themeKeys: { + color: "color" + }, + base: { + height: theme.typography.body2.lineHeight, + width: theme.typography.body2.lineHeight, + color: theme.color.fillNeutral, + marginRight: theme.spacer.sm + }, + toneModes: {}, + themeStyles: themeStyles$7 +}; +makeComponentStyles(container$8); +makeComponentStyles(icon); +makeComponentStyles(text$4); +const { Details: { defaultTone: defaultTone$7, ...themeStyles$6 } = { styles: {} } } = (_j = theme) == null ? void 0 : _j.componentConfig; +const container$7 = { + themeKeys: { + alignItems: "alignItems", + contentSpacing: "contentSpacing", + badgeContentSpacing: "badgeContentSpacing", + ratingContentSpacing: "ratingContentSpacing" + }, + base: { + display: "flex", + flexDirection: "row", + alignItems: "center", + contentSpacing: theme.spacer.lg, + badgeContentSpacing: theme.spacer.sm, + ratingContentSpacing: theme.spacer.lg + }, + themeStyles: themeStyles$6 +}; +const text$3 = { + themeKeys: { + color: "textColor" + }, + base: { + ...theme.typography.body2, + marginRight: theme.spacer.lg, + color: theme.color.textNeutral + }, + tones: { + neutral: { + disabled: { + color: theme.color.textNeutralDisabled + } + }, + inverse: { + color: theme.color.textInverse, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + brand: { + color: theme.color.textNeutral, + disabled: { + color: theme.color.textNeutralDisabled + } + } + }, + themeStyles: themeStyles$6 +}; +makeComponentStyles(container$7); +makeComponentStyles(text$3); +const { Metadata: { defaultTone: defaultTone$6, ...themeStyles$5 } = { styles: {} } } = (_k = theme) == null ? void 0 : _k.componentConfig; +const container$6 = { + themeKeys: { + justifyContent: "justifyContent", + alpha: "alpha" + }, + base: { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + alpha: theme.alpha.primary + }, + modes: { + disabled: { + alpha: theme.alpha.inactive + } + }, + themeStyles: themeStyles$5 +}; +const titleText = { + themeKeys: { + color: "textColor" + }, + base: { + maxLines: 1, + contain: "width", + ...theme.typography.headline3, + color: theme.color.textNeutral + }, + tones: { + neutral: { + disabled: { + color: theme.color.textNeutralDisabled + } + }, + inverse: { + color: theme.color.textInverse, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + brand: { + color: theme.color.textNeutral, + disabled: { + color: theme.color.textNeutralDisabled + } + } + }, + themeStyles: themeStyles$5 +}; +const descriptionText = { + themeKeys: { + color: "textColor" + }, + base: { + contain: "width", + maxLines: 2, + ...theme.typography.body2, + color: theme.color.textNeutralSecondary + }, + tones: { + neutral: { + disabled: { + color: theme.color.textNeutralDisabled + } + }, + inverse: { + color: theme.color.textInverseSecondary, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + brand: { + color: theme.color.textNeutralSecondary, + disabled: { + color: theme.color.textNeutralDisabled + } + } + }, + themeStyles: themeStyles$5 +}; +makeComponentStyles(container$6); +makeComponentStyles(descriptionText); +makeComponentStyles(titleText); +const { ProgressBar: { defaultTone: defaultTone$5, ...themeStyles$4 } = { styles: {} } } = (_l = theme) == null ? void 0 : _l.componentConfig; +const container$5 = { + themeKeys: { + color: "barColor", + borderRadius: "borderRadius" + }, + base: { + height: theme.spacer.md, + color: theme.color.fillNeutralTertiary, + borderRadius: theme.radius.xs + }, + tones: { + inverse: { + color: theme.color.fillInverseTertiary + } + }, + themeStyles: themeStyles$4 +}; +const progress = { + themeKeys: { + color: "progressColor", + borderRadius: "borderRadius" + }, + base: { + borderRadius: theme.radius.xs, + color: theme.color.fillNeutral + }, + tones: { + inverse: { + color: theme.color.fillInverse + }, + brand: { + color: theme.color.fillBrand + } + }, + themeStyles: themeStyles$4 +}; +makeComponentStyles(container$5); +makeComponentStyles(progress); +const { Row: { defaultTone: defaultTone$4, ...themeStyles$3 } = { styles: {} } } = (_m = theme) == null ? void 0 : _m.componentConfig; +const container$4 = { + themeKeys: { + gap: "itemSpacing", + scrollIndex: "scrollIndex", + itemTransition: "itemTransition" + }, + base: { + display: "flex", + flexBoundary: "fixed", + flexDirection: "row", + gap: theme.layout.gutterX, + itemTransition: { + ...theme.animation.standardEntrance, + duration: theme.animation.duration.fast + } + }, + themeStyles: themeStyles$3 +}; +const Container$3 = makeComponentStyles(container$4); +const styles$3 = { + tone: defaultTone$4, + Container: Container$3 +}; +const Row = (props) => { + const onLeft = handleNavigation("left"); + const onRight = handleNavigation("right"); + return createComponent(View, mergeProps(props, { + get selected() { + return props.selected || 0; + }, + get onLeft() { + return chainFunctions(props.onLeft, onLeft); + }, + get onRight() { + return chainFunctions(props.onRight, onRight); + }, + forwardFocus: onGridFocus, + get onCreate() { + return chainFunctions((elm) => { + var _a3, _b2; + return withScrolling(props.x).call(elm, elm, elm.children[(_a3 = props.selected) != null ? _a3 : 0], (_b2 = props.selected) != null ? _b2 : 0, void 0); + }, props.onCreate); + }, + get onSelectedChanged() { + return chainFunctions(props.onSelectedChanged, props.scroll !== "none" ? withScrolling(props.x) : void 0); + }, + get tone() { + var _a3; + return (_a3 = props.tone) != null ? _a3 : styles$3.tone; + }, + get style() { + return [...[props.style].flat(), styles$3.Container.tones[props.tone || styles$3.tone], styles$3.Container.base]; + }, + get states() { + var _a3; + return (_a3 = props.tone) != null ? _a3 : styles$3.tone; + } + })); +}; +const { Keyboard: { defaultTone: defaultTone$3, ...themeStyles$2 } = { styles: {} } } = (_n = theme) == null ? void 0 : _n.componentConfig; +const container$3 = { + themeKeys: { + keySpacing: "keySpacing", + screenW: "screenW", + marginX: "marginX" + }, + base: { + keySpacing: theme.spacer.md, + screenW: theme.layout.screenW, + marginX: theme.layout.marginX, + height: 100 + }, + // @ts-expect-error see TODO + themeStyles: themeStyles$2 +}; +const key = { + themeKeys: { + keySpacing: "keySpacing", + textAlign: "textAlign", + borderRadius: "borderRadius", + color: "backgroundColor", + justifyContent: "justifyContent", + baseWidth: "baseWidth", + sizes: "sizes", + contentColor: "contentColor" + // what is this used for + }, + base: { + keySpacing: theme.spacer.md, + height: theme.spacer.md * 9, + paddingX: theme.spacer.md, + sizes: { + sm: 1, + md: 2, + lg: 3, + xl: 4, + xxl: 5 + }, + contentColor: theme.color.fillNeutral, + padding: [theme.spacer.xxxl, theme.spacer.xl], + baseWidth: theme.spacer.md * 7, + color: theme.color.interactiveNeutral, + display: "flex", + justifyContent: "center", + alignItems: "center", + borderRadius: theme.radius.sm + }, + modes: { + focus: { + color: theme.color.interactiveNeutralFocus, + contentColor: theme.color.fillInverse + }, + disabled: { + color: theme.color.fillNeutralDisabled, + contentColor: theme.color.fillNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.interactiveInverse, + focus: { + color: theme.color.interactiveInverseFocus, + contentColor: theme.color.fillNeutral + } + }, + brand: { + focus: { + contentColor: theme.color.fillNeutral + } + } + }, + // @ts-expect-error see TODO + themeStyles: themeStyles$2 +}; +const text$2 = { + themeKeys: { + color: "textColor" + }, + base: { + textAlign: "left", + color: theme.color.textNeutral, + ...theme.typography.headline2 + }, + modes: { + focus: { + color: theme.color.textInverse + }, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + tones: { + inverse: { + focus: { + color: theme.color.textNeutral + } + } + }, + // @ts-expect-error see TODO + themeStyles: themeStyles$2 +}; +makeComponentStyles(container$3); +makeComponentStyles(key); +makeComponentStyles(text$2); +const { Key: { defaultTone: defaultTone$2, ...themeStyles$1 } = { styles: {} } } = (_o = theme) == null ? void 0 : _o.componentConfig; +const container$2 = { + themeKeys: { + keySpacing: "keySpacing", + textAlign: "textAlign", + borderRadius: "borderRadius", + color: "backgroundColor", + justifyContent: "justifyContent", + baseWidth: "baseWidth", + sizes: "sizes", + contentColor: "contentColor" + }, + base: { + keySpacing: theme.spacer.md, + height: theme.spacer.md * 9, + paddingX: theme.spacer.md, + contentColor: theme.color.fillNeutral, + sizes: { + sm: 1, + md: 2, + lg: 3, + xl: 4, + xxl: 5 + }, + padding: [theme.spacer.md], + baseWidth: theme.spacer.md * 7, + color: theme.color.interactiveNeutral, + display: "flex", + justifyContent: "center", + alignItems: "center", + borderRadius: theme.radius.sm + }, + modes: { + focus: { + color: theme.color.interactiveNeutralFocus, + contentColor: theme.color.fillInverse + }, + disabled: { + color: theme.color.fillNeutralDisabled, + contentColor: theme.color.fillNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.interactiveInverse, + focus: { + color: theme.color.interactiveInverseFocus, + contentColor: theme.color.fillNeutral + } + }, + brand: { + focus: { + contentColor: theme.color.fillNeutral + } + } + }, + themeStyles: themeStyles$1 +}; +const text$1 = { + themeKeys: { + color: "textColor" + }, + base: { + textAlign: "left", + color: theme.color.textNeutral, + ...theme.typography.headline2 + }, + modes: { + focus: { + color: theme.color.textInverse + }, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + tones: { + inverse: { + focus: { + color: theme.color.textNeutral + } + } + }, + themeStyles: themeStyles$1 +}; +makeComponentStyles(container$2); +makeComponentStyles(text$1); +const { Input: { defaultTone: defaultTone$1, ...themeStyles } = { styles: {} } } = (_p = theme) == null ? void 0 : _p.componentConfig; +const container$1 = { + themeKeys: { + justifyContent: "justifyContent" + }, + base: { + display: "flex", + justifyContent: "flexStart", + flexDirection: "column", + width: 100, + height: 100, + actualTitle: "" + }, + themeStyles +}; +const input = { + themeKeys: { + borderRadius: "borderRadius", + color: "backgroundColor" + }, + base: { + width: getWidthByUpCount$1(theme, 4), + height: 100, + display: "flex", + flexDirection: "column", + padding: [theme.spacer.xxxl, theme.spacer.xl], + color: theme.color.interactiveNeutral, + contentColor: theme.color.fillInverse, + borderRadius: theme.radius.sm, + marginX: theme.spacer.xxxl + }, + modes: { + focus: { + color: theme.color.interactiveNeutralFocus + }, + disabled: { + color: theme.color.fillNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.interactiveInverse + }, + brand: { + color: theme.color.interactiveBrand, + focus: { + color: theme.color.fillNeutral + } + } + }, + themeStyles +}; +const text = { + themeKeys: { + color: "textColor" + }, + base: { + textAlign: "left", + color: theme.color.textNeutral, + ...theme.typography.button1 + }, + themeStyles +}; +makeComponentStyles(container$1); +makeComponentStyles(input); +makeComponentStyles(text); +const { Tile: { defaultTone, ...tileThemeStyles } = { styles: {} } } = (_q = theme) == null ? void 0 : _q.componentConfig; +const { Surface: { defaultSurfaceTone, ...surfaceThemeStyles } = { styles: {} } } = (_r = theme) == null ? void 0 : _r.componentConfig; +const container = { + themeKeys: { + alpha: "alpha", + paddingYProgress: "paddingYProgress" + }, + base: { + width: 400, + height: 240, + padding: [40, 10], + // TODO support separate paddingX and paddingY values from theme, possibly formatter + paddingYProgress: theme.spacer.xl, + paddingYBetweenContent: theme.spacer.md, + borderRadius: theme.radius.md, + alpha: theme.alpha.primary + }, + modes: { + disabled: { + alpha: theme.alpha.inactive + } + }, + themeStyles: { + ...surfaceThemeStyles, + ...tileThemeStyles + } +}; +const insetBottom = { + themeKeys: {}, + base: { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + mountY: 1 + }, + themeStyles: tileThemeStyles +}; +const standardBottom = { + themeKeys: {}, + base: { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart" + }, + themeStyles: tileThemeStyles +}; +const logoContainer = { + themeKeys: {}, + base: { + width: theme.spacer.lg * 5, + height: theme.spacer.xxl + theme.spacer.md + }, + themeStyles: tileThemeStyles +}; +makeComponentStyles(container); +makeComponentStyles(insetBottom); +makeComponentStyles(standardBottom); +makeComponentStyles(logoContainer); +const fpsStyle = { + color: 255, + height: 150, + width: 330, + x: 1910, + y: 10, + mountX: 1, + alpha: 0.8, + zIndex: 100 +}; +const fpsLabel = { + x: 10, + fontSize: 22, + textColor: hexColor("#f6f6f6") +}; +const fpsValue = { + fontSize: 22, + textColor: hexColor("#f6f6f6") +}; +const [fps, setFps] = createSignal(0); +const [avgFps, setAvgFps] = createSignal(0); +const [minFps, setMinFps] = createSignal(99); +const [maxFps, setMaxFps] = createSignal(0); +const [isLoadedCount, setIsLoadedCount] = createSignal(0); +const [isLoadingCount, setIsLoadingCount] = createSignal(0); +const [isFailedCount, setIsFailedCount] = createSignal(0); +let count = 0; +let totalFps = 0; +const calcFps = (fps2) => { + if (!fps2) + return; + setFps(fps2); + setMinFps((prev) => Math.min(fps2, prev)); + setMaxFps((prev) => Math.max(fps2, prev)); + totalFps += fps2; + count++; + setAvgFps(Math.round(totalFps / count)); +}; +const calcPerformanceMetrics = (stage) => { + let isLoadedCount2 = 0; + let isLoadingCount2 = 0; + let isFailedCount2 = 0; + stage.txManager.textureIdCache.forEach((value, key2, map) => { + if (value.state === "loaded") { + isLoadedCount2++; + } + if (value.state === "loading") { + isLoadingCount2++; + } + if (value.state === "failed") { + isFailedCount2++; + } + }); + setIsLoadedCount(isLoadedCount2); + setIsLoadingCount(isLoadingCount2); + setIsFailedCount(isFailedCount2); +}; +function setupFPS(root) { + root.renderer.on("fpsUpdate", (target, fpsData) => { + const fps2 = typeof fpsData === "number" ? fpsData : fpsData.fps; + if (fps2 > 5) { + calcFps(fps2); + calcPerformanceMetrics(target.root.stage); + } + }); +} +const FPSCounter = (props) => { + return createComponent(View, mergeProps(props, { + style: fpsStyle, + get children() { + return [createComponent(View, { + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "FPS:" + }), createComponent(Text, { + style: fpsValue, + x: 90, + get children() { + return fps(); + } + })]; + } + }), createComponent(View, { + x: 160, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "AVG:" + }), createComponent(Text, { + style: fpsValue, + x: 100, + get children() { + return avgFps(); + } + })]; + } + }), createComponent(View, { + x: 0, + y: 20, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "MIN:" + }), createComponent(Text, { + style: fpsValue, + x: 90, + get children() { + return minFps(); + } + })]; + } + }), createComponent(View, { + x: 160, + y: 20, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "MAX:" + }), createComponent(Text, { + style: fpsValue, + x: 100, + get children() { + return maxFps(); + } + })]; + } + }), createComponent(View, { + x: 0, + y: 50, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "Loaded Textures Cnt:" + }), createComponent(Text, { + style: fpsLabel, + x: 270, + get children() { + return isLoadedCount(); + } + })]; + } + }), createComponent(View, { + x: 0, + y: 80, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "Loading Textures Cnt:" + }), createComponent(Text, { + style: fpsLabel, + x: 270, + get children() { + return isLoadingCount(); + } + })]; + } + }), createComponent(View, { + x: 0, + y: 110, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "Failed Textures Cnt:" + }), createComponent(Text, { + style: fpsLabel, + x: 270, + get children() { + return isFailedCount(); + } + })]; + } + })]; + } + })); +}; +const styles$1 = { + Column: { + flexDirection: "column", + display: "flex", + width: 320, + height: 600, + y: 360, + gap: 20, + zIndex: 101, + transition: { + x: { + duration: 250, + easing: "ease-in-out" + } + }, + x: 8, + focus: { + x: theme.layout.marginX + } + }, + Gradient: { + zIndex: 99, + color: hexColor("#000000"), + src: "./assets/sidenav.png", + alpha: 0, + width: 1200, + height: 1080, + focus: { + alpha: 1 + }, + transition: { alpha: true } + }, + NavButton: { + zIndex: 102, + height: 70, + width: 100, + borderRadius: 8, + focus: { + color: hexColor("#424242") + }, + active: { + width: 328, + height: 70 + } + } +}; +const basePath = "/solid-demo-app/"; +const icons = [{ + name: "experiment", + width: 81, + height: 100, + x: 0, + y: 0 +}, { + name: "trending", + width: 100, + height: 56, + x: 81, + y: 0 +}, { + name: "tv", + width: 100, + height: 68, + x: 181, + y: 0 +}, { + name: "movie", + width: 94, + height: 100, + x: 282, + y: 0 +}]; +function Icon(props) { + const sprite = createSpriteMap(basePath + "assets/icons_white.png", icons); + return createComponent(View, mergeProps(props, { + get texture() { + return sprite[props.name]; + }, + get width() { + return sprite[props.name].props.width; + }, + get height() { + return sprite[props.name].props.height; + }, + get x() { + return (100 - (sprite[props.name].props.width || 0)) / 2; + }, + get y() { + return (100 - (sprite[props.name].props.height || 0)) / 2; + } + })); +} +function NavButton(props) { + return createComponent(View, mergeProps(props, { + forwardStates: true, + get style() { + return styles$1.NavButton; + }, + get children() { + return [createComponent(View, { + y: -16, + get children() { + return createComponent(Icon, { + scale: 0.5, + get name() { + return props.icon; + } + }); + } + }), createComponent(Text, { + style: { + fontSize: 38, + x: 116, + y: 18, + height: 50, + alpha: 0, + active: { + alpha: 1 + } + }, + get children() { + return props.children; + } + })]; + } + })); +} +function NavDrawer(props) { + let backdrop; + const navigate = useNavigate(); + function onFocus() { + backdrop.states.add("focus"); + this.children.forEach((c) => c.states.add("active")); + this.children.selected.setFocus(); + } + function onBlur() { + backdrop.states.remove("focus"); + this.selected = 0; + this.children.forEach((c) => c.states.remove("active")); + } + function handleNavigate(page) { + const isOnPage = useMatch(() => page); + if (isOnPage()) { + return props.focusPage(); + } + navigate(page); + } + return [createComponent(View, { + flexItem: false, + x: 40, + y: 30, + zIndex: 105, + get alpha() { + return props.showWidgets ? 1 : 0; + }, + get children() { + return [createComponent(Text, { + x: 80, + fontSize: 28, + color: 4143380036, + children: "Built With:" + }), createComponent(View, { + y: 22, + src: "./assets/solidWord.png", + width: 280, + height: 52 + })]; + } + }), createComponent(Column, mergeProps(props, { + onFocus, + onBlur, + get style() { + return styles$1.Column; + }, + scroll: "none", + get children() { + return [createComponent(NavButton, { + onEnter: () => handleNavigate("/browse/all"), + icon: "trending", + children: "Trending" + }), createComponent(NavButton, { + icon: "movie", + onEnter: () => handleNavigate("/browse/movie"), + children: "Movies" + }), createComponent(NavButton, { + icon: "tv", + onEnter: () => handleNavigate("/browse/tv"), + children: "TV" + }), createComponent(NavButton, { + icon: "experiment", + onEnter: () => handleNavigate("/examples"), + children: "Examples" + })]; + } + })), createComponent(View, { + ref(r$) { + var _ref$ = backdrop; + typeof _ref$ === "function" ? _ref$(r$) : backdrop = r$; + }, + get style() { + return styles$1.Gradient; + } + })]; +} +const App = (props) => { + useFocusManager({ + Announcer: ["a"], + Menu: ["m"], + Escape: ["Escape", 27], + Backspace: ["Backspace", 8], + Left: ["ArrowLeft", 37], + Right: ["ArrowRight", 39], + Up: ["ArrowUp", 38], + Down: ["ArrowDown", 40], + Enter: ["Enter", 13] + }); + const announcer = useAnnouncer(); + announcer.enabled = false; + const navigate = useNavigate(); + let navDrawer, lastFocused; + setupFPS({ + renderer + }); + function focusNavDrawer() { + if (navDrawer.states.has("focus")) { + return false; + } + lastFocused = activeElement(); + return navDrawer.setFocus(); + } + const [showWidgets, setShowWidgets] = createSignal(true); + const location = useLocation(); + const showOnPaths = ["/browse", "/entity"]; + createEffect(() => { + const currentPath = location.pathname; + let matchesPartial = showOnPaths.some((path) => currentPath.startsWith(path)); + if (currentPath === "/") { + matchesPartial = true; + } + setShowWidgets(matchesPartial); + }); + return createComponent(View, { + ref(r$) { + var _ref$ = window.APP; + typeof _ref$ === "function" ? _ref$(r$) : window.APP = r$; + }, + onAnnouncer: () => announcer.enabled = !announcer.enabled, + onLast: () => history.back(), + onMenu: () => navigate("/"), + style: { + width: 1920, + height: 1080 + }, + onBackspace: focusNavDrawer, + onLeft: focusNavDrawer, + onRight: () => navDrawer.states.has("focus") && lastFocused.setFocus(), + get children() { + return [createComponent(Background, {}), createComponent(FPSCounter, { + mountX: 1, + x: 1910, + y: 10, + get alpha() { + return showWidgets() ? 1 : 0; + } + }), memo(() => props.children), createComponent(NavDrawer, { + ref(r$) { + var _ref$2 = navDrawer; + typeof _ref$2 === "function" ? _ref$2(r$) : navDrawer = r$; + }, + focusPage: () => lastFocused.setFocus(), + get showWidgets() { + return showWidgets(); + } + })]; + } + }); +}; +const styles = { + Page: { + width: 1920, + height: 1080 + }, + headlineText: { + width: 1200, + height: 240, + x: 360, + // lineHeight: 170, // TODO: Add back when lineHeight is supported + y: 455, + contain: "both", + fontSize: 66, + textAlign: "center" + }, + headlineSubText: { + width: 960, + height: 170, + // lineHeight: 170, // TODO: Add back when lineHeight is supported + x: 530, + y: 655, + contain: "both", + fontSize: 48, + textAlign: "center" + }, + itemsContainer: { + width: theme.layout.screenW, + height: 600, + y: 560, + x: 0, + zIndex: 2 + }, + Thumbnail: { + borderRadius: 16, + width: 185, + height: 278, + scale: 1, + zIndex: 2, + transition: { scale: { duration: 250, easing: "ease-in-out" } }, + border: { width: 0, color: 0 }, + focus: { scale: 1.1, border: { color: 4294967142, width: 8 } } + }, + FocusRing: { + borderRadius: 16, + width: 194, + height: 286, + y: -5, + x: -5, + zIndex: -1 + }, + FPS: { + color: 255, + height: 42, + width: 140, + x: 20, + y: 20, + zIndex: 100 + }, + FPSLabel: { + x: 10, + y: 0, + fontSize: 36, + textColor: hexColor("#ffffff") + }, + FPSValue: { + x: 90, + y: 0, + fontSize: 36, + textColor: hexColor("#ffffff") + }, + showHeadline: { x: 70, y: 20 }, + headlineBlur: { + width: 1920, + height: 150, + x: 0, + y: 0, + zIndex: 14, + alpha: 0.9, + color: hexColor("#000000") + }, + RowTitle: { + height: 60, + width: 300, + marginBottom: -40, + fontSize: 36, + color: hexColor("#f0f0f0"), + zIndex: 2 + }, + Row: { + display: "flex", + justifyContent: "spaceBetween", + height: 300 + }, + Column: { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + gap: 64, + width: theme.layout.screenW - 2 * theme.layout.marginX, + x: theme.layout.marginX + theme.layout.gutterX, + y: 48, + transition: { y: { duration: 250, easing: "ease-in-out" } }, + zIndex: 2 + }, + Rect: { + width: 250, + height: 100, + y: 10, + x: 300, + color: hexColor("#0000ff") + }, + peopleBio: { + ...theme.typography.body1, + fontFamily: "Ubuntu", + fontWeight: "normal", + contain: "both", + width: 780, + height: 340 + } +}; +const Button = { + width: 120, + height: 40, + color: hexColor("#000000"), + borderRadius: 8, + border: { width: 2, color: hexColor("#3333ff") }, + scale: 1, + focus: { + scale: 1.1, + border: { width: 5, color: hexColor("#333333") } + }, + transition: { scale: true, color: true } +}; +const TopBar = { + color: hexColor("#00A699"), + height: 8, + y: 2, + x: -4, + width: Button.width + 8 +}; +const ButtonText = { + fontSize: 12, + y: 12, + // lineHeight: Button.height, // TODO: Add back when lineHeight is supported + contain: "width", + textAlign: "center", + color: hexColor("#F6F6F9"), + height: Button.height, + width: Button.width +}; +const buttonStyles = { + container: Button, + topBar: TopBar, + text: ButtonText +}; +const MaterialButton = { + width: 386, + height: 136, + color: hexColor("#715cab"), + focus: { + color: hexColor("#5a39a2") + }, + disabled: { + color: hexColor("#291d43") + } +}; +const MaterialButtonText = { + fontSize: 32, + contain: "width", + textAlign: "center", + mountY: -0.35, + color: hexColor("#FFFFFF"), + height: MaterialButton.height, + width: MaterialButton.width, + // lineHeight: MaterialButton.height, // TODO: Add back when lineHeight is supported + focus: { + fontSize: 40 + }, + disabled: { + color: hexColor("#909090") + } +}; +function Thumbnail(props) { + return createComponent(View, mergeProps(props, { + get style() { + return styles.Thumbnail; + } + })); +} +function TileRow(props) { + const [local, others] = splitProps(props, ["items"]); + return createComponent(Row, mergeProps(others, { + get style() { + return styles.Row; + }, + get children() { + return createComponent(For, { + get each() { + return local.items; + }, + children: (item) => createComponent(Thumbnail, item) + }); + } + })); +} +const API_KEY_V4 = "eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIyZDE4YjEwMTA0YjdiZTlkNjFiMWYwYjVlMGEwNzM2OCIsInN1YiI6IjYwZTVjMTdlNGNhNjc2MDA3NTA4Njc3MSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.D_nqH9kd-bhhWzeVsTDPYhHnsUaNAuyAa6YATmKHqsA"; +const API_BASE = "https://api.themoviedb.org/3"; +let tmdbConfig; +let baseImageUrl; +const basePosterSize = "w185"; +const defaultFetchParams = { + headers: { + "Content-Type": "application/json", + Authorization: "Bearer " + API_KEY_V4 + } +}; +function getImageUrl(path, posterSize = basePosterSize) { + return baseImageUrl + posterSize + path; +} +function get(path, params = {}) { + if (tmdbConfig) { + return _get(path, params); + } else { + return loadConfig().then(() => _get(path, params)); + } +} +function _get(path, params = {}) { + return fetch(API_BASE + path, { + ...defaultFetchParams, + ...params + }).then((r) => r.json()); +} +function loadConfig() { + return _get("/configuration").then((data) => { + var _a3; + tmdbConfig = data; + baseImageUrl = (_a3 = data.images) == null ? void 0 : _a3.secure_base_url; + return data; + }); +} +const api = { + get, + loadConfig +}; +function truncateString(str, maxLength) { + if (str.length > maxLength) { + return str.substring(0, maxLength - 3) + "..."; + } + return str; +} +function chunkArray(array, size2 = 7) { + let result = []; + for (let i = 0, j = array.length; i < j; i += size2) { + result.push(array.slice(i, i + size2)); + } + return result; +} +function convertItemsToTiles(items = []) { + return items.map((item) => ({ + src: getImageUrl(item.poster_path || item.profile_path), + tileSrc: getImageUrl(item.backdrop_path || item.profile_path, "w300"), + backdrop: getImageUrl(item.backdrop_path, "w1280"), + href: "/entity/".concat(item.media_type || "people", "/").concat(item.id), + shortTitle: truncateString(item.title || item.name, 30), + title: item.title || item.name, + data: item, + entityInfo: { + type: item.media_type || "people", + id: item.id + }, + heroContent: { + title: item.title || item.name, + description: item.overview + } + })); +} +let cache = /* @__PURE__ */ new Map(); +const leftoverTiles = /* @__PURE__ */ new Map(); +function browseProvider(filter) { + return (pageIndex) => { + const url = "/trending/".concat(filter, "/week?page=").concat(pageIndex); + if (cache.has(url)) { + return cache.get(url); + } + let result = api.get(url).then((trending) => { + let results = trending.results.filter((r) => !r.adult); + let tiles = (leftoverTiles.has(filter) ? leftoverTiles.get(filter) : []).concat(convertItemsToTiles(results)); + let chunks = chunkArray(tiles); + if (chunks[chunks.length - 1].length < 7) { + leftoverTiles.set(filter, chunks.pop()); + } else { + leftoverTiles.delete(filter); + } + return chunks; + }); + cache.set(url, result); + return result; + }; +} +function createInfiniteScroll(fetcher) { + const [pages, setPages] = createSignal([]); + const [page, setPage] = createSignal(1); + const [end, setEnd] = createSignal(false); + const [contents] = createResource(page, fetcher); + createComputed(() => { + const content2 = contents(); + if (!content2) + return; + batch(() => { + if (content2.length === 0) + setEnd(true); + setPages((p) => [...p, ...content2]); + }); + }); + return { + pages, + page, + setPage, + setPages, + end, + setEnd + }; +} +const blockWidth = 900; +const ContentBlockStyle = { + display: "flex", + flexDirection: "column", + x: 50, + y: 100, + width: blockWidth, + height: 220, + gap: 16 +}; +const HeadlineStyles = { + ...theme.typography.display2, + fontFamily: "Ubuntu", + fontWeight: 700, + maxLines: 1, + width: blockWidth, + contain: "width" +}; +const Headline = (props) => createComponent(Text, mergeProps(props, { + style: HeadlineStyles +})); +const DescriptionStyles = { + ...theme.typography.body1, + fontFamily: "Ubuntu", + fontWeight: 400, + lineHeight: 32, + width: blockWidth, + maxLines: 3, + contain: "width" +}; +const BadgeStyle = { + fontSize: 16, + lineHeight: 20 +}; +const Description = (props) => createComponent(Text, mergeProps(props, { + style: DescriptionStyles, + get children() { + return props.children; + } +})); +const Badge = (props) => { + return (() => { + var _el$ = createElement("node"); + use(withPadding, _el$, () => [8, 13, 11, 13]); + spread(_el$, mergeProps(props, { + "style": { + color: "0x00000099", + borderRadius: 8, + border: { + width: 2, + color: "0xffffffff" + } + } + }), true); + insert(_el$, createComponent(Text, { + style: BadgeStyle, + get children() { + return props.children; + } + })); + return _el$; + })(); +}; +const MetaTextStyle = { + ...theme.typography.body2, + fontFamily: "Ubuntu", + fontWeight: 400 +}; +const Metadata = (props) => createComponent(View, { + style: { + display: "flex", + flexDirection: "row", + gap: 18, + width: blockWidth, + height: 48 + }, + get children() { + return [createComponent(View, { + y: -4, + src: "./assets/stars.png", + width: 188, + height: 31 + }), createComponent(View, { + y: -4, + flexItem: false, + clipping: true, + get width() { + return 188 * props.voteAverage / 10; + }, + height: 31, + get children() { + return createComponent(View, { + src: "./assets/stars-full.png", + width: 188, + height: 31 + }); + } + }), createComponent(Text, { + style: MetaTextStyle, + get children() { + return [memo(() => props.voteCount), " reviews"]; + } + }), createComponent(Text, { + style: MetaTextStyle, + get children() { + return props.metaText; + } + }), createComponent(For, { + get each() { + return props.badges; + }, + children: (item) => createComponent(Badge, { + y: -5, + children: item + }) + })]; + } +}); +const ContentBlock = (props) => createComponent(View, mergeProps(props, { + id: "contentBlock", + style: ContentBlockStyle, + get children() { + return [createComponent(Headline, { + get children() { + return props.title; + } + }), createComponent(Description, { + get children() { + return props.description; + } + }), createComponent(Show, { + get when() { + return props.voteCount; + }, + get children() { + return createComponent(Metadata, { + get metaText() { + return props.metaText; + }, + get badges() { + return props.badges; + }, + get voteCount() { + return props.voteCount; + }, + get voteAverage() { + return props.voteAverage; + } + }); + } + })]; + } +})); +function minutesToHMM(minutes) { + const hours = Math.floor(minutes / 60); + const remainingMinutes = minutes % 60; + return hours + "h " + (remainingMinutes < 10 ? "0" : "") + remainingMinutes + "min"; +} +function formatDate(dateString) { + const parts = dateString.split("-"); + return parts[1] + "/" + parts[2] + "/" + parts[0]; +} +function justYear(dateString) { + const parts = dateString.split("-"); + return parts[0]; +} +function getRecommendations({ type, id }) { + return api.get("/".concat(type, "/").concat(id, "/recommendations")).then(({ results }) => { + if (results.length) { + return convertItemsToTiles(results.slice(0, 7)); + } + return api.get("/trending/".concat(type, "/week?page=1")).then(({ results: results2 }) => convertItemsToTiles(results2.slice(0, 7))); + }); +} +function getCredits$1({ type, id }) { + return api.get("/".concat(type, "/").concat(id, "/credits")).then(({ cast }) => convertItemsToTiles(cast.slice(0, 7))); +} +function getInfo$1({ type, id }) { + let rt = type === "movie" ? { + rtCrit: 86, + rtFan: 92 + } : {}; + return api.get("/".concat(type, "/").concat(id)).then((data) => ({ + backgroundImage: getImageUrl(data.backdrop_path, "w1280"), + heroContent: { + title: data.title || data.name, + description: data.overview, + badges: ["HD", "CC"], + voteAverage: data.vote_average, + voteCount: data.vote_count, + metaText: type === "movie" ? minutesToHMM(data.runtime) + " " + formatDate(data.release_date) : "".concat(justYear(data.first_air_date), " - ").concat(justYear(data.last_air_date)), + reviews: rt + }, + ...data + })); +} +const Browse = () => { + const params = useParams(); + const [columnY, setcolumnY] = createSignal(0); + const [entityInfo, setEntityInfo] = createSignal(); + createResource(entityInfo, getInfo$1); + const [heroContent, setHeroContent] = createSignal({}); + const navigate = useNavigate(); + const isFirst = createSelector(() => { + return 0; + }); + const provider = createMemo(() => { + return createInfiniteScroll(browseProvider(params.filter || "all")); + }); + const delayedBackgrounds = debounce((img) => setGlobalBackground(img), 400); + const delayedHero = debounce((content2) => setHeroContent(content2), 200); + createEffect(on(activeElement, (elm) => { + if (elm.backdrop) { + delayedBackgrounds(elm.backdrop); + } + if (elm.heroContent) { + delayedHero(elm.heroContent); + } + }, { + defer: true + })); + function onRowFocus() { + var _a3; + (_a3 = this.children.selected) == null ? void 0 : _a3.setFocus(); + setcolumnY((this.y || 0) * -1 + 24); + let numPages = provider().pages().length; + if (numPages === 0 || this.parent.selected && this.parent.selected >= numPages - 2) { + provider().setPage((p) => p + 1); + } + } + function onEnter() { + let entity = this.children.selected; + assertTruthy(entity && entity.href); + navigate(entity.href); + return true; + } + return createComponent(Show, { + get when() { + return provider().pages().length; + }, + get children() { + return [createComponent(ContentBlock, mergeProps({ + y: 360, + x: 162 + }, heroContent)), createComponent(View, { + clipping: true, + get style() { + return styles.itemsContainer; + }, + get children() { + return createComponent(Column, { + plinko: true, + announce: "All Trending - Week", + get y() { + return columnY(); + }, + get style() { + return styles.Column; + }, + get children() { + return createComponent(For, { + get each() { + return provider().pages(); + }, + children: (items, i) => createComponent(TileRow, { + get autofocus() { + return isFirst(i()); + }, + items, + width: 1620, + onFocus: onRowFocus, + onEnter + }) + }); + } + }); + } + })]; + } + }); +}; +const Portal = () => { + const navigate = useNavigate(); + const isFirst = createSelector(() => { + return 0; + }); + function onEnter() { + let entity = this.children.selected; + assertTruthy(entity && entity.id); + navigate("/" + entity.id); + } + const demos = [{ + title: "Flex Row", + id: "flex", + description: "Flex Row Implementation" + }, { + title: "Flex Column", + id: "flexcolumn", + description: "Flex Column Implementation" + }, { + title: "Flex Row Vertical Align", + id: "flexsize", + description: "Flex Row Vertical Align Implementation" + }, { + title: "Flex Column Vertical Align", + id: "flexcolumnsize", + description: "Flex Column Vertical Align Implementation" + }, { + title: "Buttons", + id: "buttons", + description: "Demo a few buttons" + }, { + title: "Text", + id: "text", + description: "Text layout with flexbox" + }, { + title: "Create Elements", + id: "create", + description: "Testing Show + children + inserting text" + }, { + title: "Viewport", + id: "viewport", + description: "Events going in and out of viewport" + }]; + function DemoTile(props) { + const Container = { + width: 370, + height: 320, + borderRadius: 6, + scale: 1, + color: 405488895, + transition: { + color: true, + scale: true + }, + focus: { + scale: 1.1, + color: 4294967295 + } + }; + const [color, setColor] = createSignal(4294967295); + return createComponent(View, mergeProps(props, { + onFocus: () => setColor(255), + onBlur: () => setColor(4294967295), + style: Container, + get children() { + return createComponent(View, { + x: 30, + get children() { + return [createComponent(Text, { + y: 30, + fontSize: 84, + get color() { + return color(); + }, + get children() { + return props.index; + } + }), createComponent(Text, { + y: 140, + fontSize: 42, + width: 340, + height: 42, + contain: "both", + get color() { + return color(); + }, + get children() { + return props.title; + } + }), createComponent(Text, { + y: 200, + fontSize: 28, + width: 330, + contain: "width", + get color() { + return color(); + }, + get children() { + return props.description; + } + })]; + } + }); + } + })); + } + const [rowX, setRowX] = createSignal(140); + function moveRow(row) { + setRowX(row.selected * -400 + 140); + } + return createComponent(View, { + colorTop: 1147903743, + colorBottom: 743406847, + get children() { + return [createComponent(View, { + x: 120, + get children() { + return [createComponent(View, { + src: "./assets/solidjs.png", + width: 101, + height: 90, + y: 40 + }), createComponent(Text, { + fontSize: 90, + x: 110, + y: 40, + children: "Examples" + }), createComponent(View, { + y: 140, + height: 1, + width: 1800, + color: 3906468351 + })]; + } + }), createComponent(Row, { + onSelectedChanged: moveRow, + onEnter, + transition: { + x: { + delay: 20, + duration: 300 + } + }, + get x() { + return rowX(); + }, + y: 300, + width: 4400, + get style() { + return styles.Row; + }, + justifyContent: "flexStart", + gap: 40, + get children() { + return createComponent(For, { + each: demos, + children: (demo, i) => createComponent(DemoTile, mergeProps({ + get autofocus() { + return isFirst(i()); + }, + get index() { + return i(); + } + }, demo)) + }); + } + })]; + } + }); +}; +const TextPage = () => { + const OverviewContainer = { + width: 900, + height: 500, + y: 350, + x: 150, + gap: 25, + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + color: hexColor("00000000") + }; + const SublineContainer = { + width: 900, + height: 36, + gap: 6, + display: "flex", + flexDirection: "row", + justifyContent: "flexStart", + color: hexColor("00000000") + }; + const Title = { + fontSize: 42 + }; + const Overview = { + width: OverviewContainer.width, + fontSize: 26, + contain: "width" + }; + const Subline = { + fontSize: 26 + }; + onMount(() => { + setGlobalBackground("#000000"); + }); + return createComponent(View, { + autofocus: true, + style: OverviewContainer, + get children() { + return [createComponent(Text, { + style: Title, + children: "Title of the Page" + }), createComponent(Text, { + style: Overview, + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel tempor tellus. Sed eu leo purus. Vestibulum sollicitudin eget tellus a varius. Phasellus est turpis, volutpat sed blandit sit amet, rutrum sit amet mauris. In dignissim elit orci, a sollicitudin ipsum faucibus et. Quisque vel quam rutrum, faucibus augue sed, scelerisque nunc." + }), createComponent(View, { + style: SublineContainer, + get children() { + return [createComponent(Text, { + style: Subline, + children: "Subline Text" + }), createComponent(View, { + width: 28, + height: 28, + src: "./assets/rt-popcorn.png" + }), createComponent(Text, { + style: Subline, + children: "More Text" + })]; + } + })]; + } + }); +}; +const CreatePage = () => { + const OverviewContainer = { + width: 900, + height: 500, + y: 50, + x: 150, + gap: 25, + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + color: hexColor("00000000") + }; + const SublineContainer = { + width: 900, + height: 36, + gap: 6, + display: "flex", + flexDirection: "row", + justifyContent: "flexStart", + color: hexColor("00000000") + }; + const Title = { + fontSize: 42 + }; + const Subline = { + fontSize: 26 + }; + let myBox, childRef; + onMount(() => { + setGlobalBackground("#000000"); + myBox.animate({ + x: 100 + }, { + duration: 2e3 + }).start(); + }); + const [insertTest, setInsertTest] = createSignal(); + const [emptyTest, setEmptyTest] = createSignal(); + setTimeout(() => { + var _a3; + setInsertTest("- Inserted -"); + (_a3 = childRef.getChildById("child1")) == null ? void 0 : _a3.animate({ + x: 600 + }, { + duration: 2e3 + }).start(); + }, 2e3); + const styleChild = { + width: 400, + height: 300, + // Solid blue + color: hexColor("#0000ff") + }; + const someOtherStyle = { + // pretty red + color: hexColor("#f54242"), + focus: { + // pretty blue + color: hexColor("#4287f5") + } + }; + function ChildTest(props) { + const resolved = children(() => props.children); + return createComponent(View, mergeProps(props, { + get style() { + return [someOtherStyle, props.style, [styleChild]]; + }, + get children() { + return [createComponent(View, { + id: "child1", + width: 100, + height: 100, + get color() { + return hexColor("#ff0000"); + }, + y: 25, + get children() { + return [memo(() => resolved()), createComponent(View, { + id: "subChild", + x: 150, + width: 100, + height: 100, + get color() { + return hexColor("#00ff00"); + } + }), createComponent(Text, { + get children() { + return props.title; + } + })]; + } + }), createComponent(View, { + width: 100, + height: 100, + get color() { + return hexColor("#ffff00"); + }, + y: 175, + get children() { + return resolved(); + } + })]; + } + })); + } + const borderStyles = { + borderLeft: { + width: 8, + color: 95598118 + }, + borderTop: { + width: 8, + color: 631422246 + }, + borderRight: { + width: 8, + color: 95598118 + }, + borderBottom: { + width: 8, + color: 3316790822 + } + }; + const childTestPassedStyles = { + // grey color + color: hexColor("#cccccc"), + focus: { + // black + color: hexColor("#000000") + } + }; + const childTestPassedStyles2 = { + // white color + color: hexColor("#ffffff"), + focus: { + // white something... + color: hexColor("#f6f6cc") + } + }; + function hasFocus(elm) { + return elm.states.has("focus"); + } + return createComponent(View, { + style: OverviewContainer, + get children() { + return [createComponent(Text, { + style: Title, + children: "Title of the Page" + }), createComponent(View, { + style: SublineContainer, + get children() { + return [createComponent(Text, { + get children() { + return emptyTest(); + } + }), createComponent(Text, { + style: Subline, + get children() { + return ["Sub ", memo(() => insertTest()), " Text"]; + } + }), createComponent(Show, { + get when() { + return insertTest(); + }, + get children() { + return createComponent(View, { + width: 28, + height: 28, + src: "./assets/rt-popcorn.png" + }); + } + }), createComponent(Text, { + style: Subline, + children: "More Text" + })]; + } + }), createComponent(ChildTest, { + autofocus: true, + ref(r$) { + var _ref$ = childRef; + typeof _ref$ === "function" ? _ref$(r$) : childRef = r$; + }, + style: [childTestPassedStyles2, childTestPassedStyles], + get children() { + return createComponent(Text, { + children: "Child Test" + }); + } + }), createComponent(View, { + ref(r$) { + var _ref$2 = myBox; + typeof _ref$2 === "function" ? _ref$2(r$) : myBox = r$; + }, + style: borderStyles, + width: 100, + height: 100, + get color() { + return hexColor("#00ff00"); + }, + x: 900, + y: 400, + get alpha() { + return hasFocus(myBox) ? 1 : 0.2; + } + })]; + } + }); +}; +const ViewportPage = () => { + let ball, invervalTimer; + const [ballStatus, setBallStatus] = createSignal([]); + const styleBall = { + width: 100, + height: 100, + x: -400, + y: -400, + rotation: 0, + borderRadius: 50, + color: hexColor("#4287f5"), + transition: { + x: { + duration: 1250, + easing: "linear" + }, + y: { + duration: 1250, + easing: "linear" + }, + rotation: { + duration: 1400, + easing: "ease-in-out" + } + } + }; + const Title = { + fontSize: 32, + x: 960, + y: 540, + mount: 0.5, + lineheight: 52 + }; + const randomIntBetween = (from, to) => Math.floor(Math.random() * (to - from + 1) + from); + onMount(() => { + setGlobalBackground("#000000"); + ball.x = (1920 - 100) / 2; + ball.y = (1080 - 100) / 2; + invervalTimer = setInterval(() => { + ball.rotation = randomIntBetween(-90, 90); + ball.x = randomIntBetween(-300, 2220); + ball.y = randomIntBetween(-300, 1380); + }, 2500); + }); + function logEvent(name, elm) { + setBallStatus((prev) => { + return [...prev, name].slice(-4); + }); + console.log(name); + } + onCleanup(() => { + clearInterval(invervalTimer); + }); + return createComponent(View, { + get children() { + return [createComponent(Text, { + style: Title, + get children() { + return ballStatus().join("\n"); + } + }), createComponent(View, { + autofocus: true, + style: styleBall, + ref(r$) { + var _ref$ = ball; + typeof _ref$ === "function" ? _ref$(r$) : ball = r$; + }, + onEvents: [["inBounds", (elm) => logEvent("inBounds")], ["outOfBounds", (elm) => logEvent("outOfBounds")], ["inViewport", (elm) => logEvent("inViewport")], ["outOfViewport", (elm) => logEvent("outOfViewport")]] + })]; + } + }); +}; +const ButtonsPage = () => { + function onEnter(event, elm) { + this.states.toggle("disabled"); + } + const RowStyles = { + display: "flex", + justifyContent: "flexStart", + width: 1500, + height: 300, + color: hexColor("00000000"), + gap: 26, + y: 400 + }; + function Button2(props) { + return createComponent(View, mergeProps(props, { + forwardStates: true, + get style() { + return buttonStyles.container; + }, + get children() { + return createComponent(Text, { + get style() { + return buttonStyles.text; + }, + get children() { + return props.children; + } + }); + } + })); + } + const Badge2 = (props) => { + return (() => { + var _el$ = createElement("node"); + use(withPadding, _el$, () => [10, 15]); + spread(_el$, mergeProps(props, { + get style() { + return { + color: hexColor("#000000be"), + borderRadius: 8, + border: { + width: 2, + color: hexColor("#ffffff") + } + }; + } + }), true); + insert(_el$, createComponent(Text, { + style: { + fontSize: 20 + // TODO: lineHeight is not supported by renderer yet + // lineHeight: 20, + }, + get children() { + return props.children; + } + })); + return _el$; + })(); + }; + return [createComponent(Row, { + x: 100, + y: 200, + gap: 5, + style: RowStyles, + get children() { + return [createComponent(Badge2, { + children: "HD" + }), createComponent(Badge2, { + children: "PG13" + }), createComponent(Badge2, { + children: "NC17" + }), createComponent(Text, { + fontSize: 30, + children: "I like bananas" + }), createComponent(Badge2, { + children: "DOLBY" + })]; + } + }), createComponent(Row, { + x: 100, + gap: 40, + style: RowStyles, + get children() { + return [createComponent(Button2, { + autofocus: true, + onEnter, + children: "TV Shows" + }), createComponent(Button2, { + states: { + active: true, + disabled: false + }, + children: "Movies" + }), createComponent(Button2, { + states: "active", + children: "Sports" + }), createComponent(Button2, { + states: "disabled", + children: "News" + })]; + } + })]; +}; +const FlexPage = () => { + const RowStyles = { + display: "flex", + justifyContent: "flexStart", + width: 1600, + height: 110, + color: hexColor("#4dabf5") + }; + const rowTitle = { + fontSize: 44, + marginTop: 25, + marginBottom: -20, + skipFocus: true + }; + function Block(props) { + const styles2 = { + width: 200, + height: 100, + y: 5, + color: 392801023 + }; + return createComponent(View, mergeProps(props, { + style: styles2 + })); + } + const [columnY, setColumnY] = createSignal(50); + function onFocus() { + var _a3; + (_a3 = this.children.selected) == null ? void 0 : _a3.setFocus(); + setColumnY(150 + (this.y || 0) * -1); + } + onMount(() => { + setGlobalBackground("#333333"); + }); + const gap = 50; + return createComponent(Column, { + x: 160, + get y() { + return columnY(); + }, + gap: 30, + height: 850, + get width() { + return RowStyles.width; + }, + get style() { + return styles.Column; + }, + get children() { + return [createComponent(Text, { + style: rowTitle, + children: "Flex Start" + }), createComponent(Row, { + gap, + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + autofocus: true + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex Start - Margin Left" + }), createComponent(Row, { + gap, + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + marginLeft: 100 + }), createComponent(Block, {}), createComponent(Block, { + marginLeft: 100 + }), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex End" + }), createComponent(Row, { + gap, + justifyContent: "flexEnd", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex End - Margin Right" + }), createComponent(Row, { + gap, + justifyContent: "flexEnd", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, { + marginRight: 100 + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, { + marginRight: 100 + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Center - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "center", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Space Between - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "spaceBetween", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Space Evenly - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "spaceEvenly", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + })]; + } + }); +}; +const FlexSizePage = () => { + const RowStyles = { + display: "flex", + justifyContent: "flexStart", + width: 1600, + height: 110, + color: hexColor("#4dabf5") + }; + const rowTitle = { + fontSize: 44, + marginTop: 25, + marginBottom: -20, + skipFocus: true + }; + function Block(props) { + const styles2 = { + width: 200, + height: 100, + y: 5, + color: 392801023 + }; + return createComponent(View, mergeProps(props, { + style: styles2 + })); + } + function randSize() { + return Math.floor(Math.random() * 91) + 10; + } + const [columnY, setColumnY] = createSignal(50); + function onFocus() { + var _a3; + (_a3 = this.children.selected) == null ? void 0 : _a3.setFocus(); + setColumnY(150 + (this.y || 0) * -1); + } + onMount(() => { + setGlobalBackground("#333333"); + }); + const gap = 50; + return createComponent(Column, { + x: 160, + get y() { + return columnY(); + }, + gap: 30, + height: 850, + get width() { + return RowStyles.width; + }, + get style() { + return styles.Column; + }, + get children() { + return [createComponent(Text, { + style: rowTitle, + children: "Flex Start - AlignItems: center" + }), createComponent(Row, { + alignItems: "center", + gap, + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + autofocus: true, + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex Start - Margin Left - AlignItems: flexStart" + }), createComponent(Row, { + gap, + alignItems: "flexStart", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + marginLeft: 100, + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + marginLeft: 100, + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex End - AlignItems: flexEnd" + }), createComponent(Row, { + gap, + justifyContent: "flexEnd", + alignItems: "flexEnd", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex End - Margin Right" + }), createComponent(Row, { + gap, + justifyContent: "flexEnd", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + marginRight: 100, + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + marginRight: 100, + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Center - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "center", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Space Between - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "spaceBetween", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Space Evenly - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "spaceEvenly", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + })]; + } + }); +}; +const FlexColumnPage$1 = () => { + const RowStyles = { + display: "flex", + justifyContent: "spaceEvenly", + width: 1920, + y: 100, + height: 880, + color: hexColor("00000000") + }; + const ColumnStyles = { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + color: hexColor("#4dabf5"), + height: 850, + width: 80 + }; + const rowTitle = { + fontSize: 44, + y: 20, + x: 150 + }; + function Block(props) { + const styles2 = { + width: randSize(), + height: 80, + x: 5, + color: hexColor("#1769aa") + }; + return createComponent(View, mergeProps(props, { + style: styles2 + })); + } + function randSize() { + return Math.floor(Math.random() * 61) + 10; + } + const [columnY, setColumnY] = createSignal(50); + function onFocus() { + var _a3; + (_a3 = this.children.selected) == null ? void 0 : _a3.setFocus(); + setColumnY(150 + (this.y || 0) * -1); + } + onMount(() => { + setGlobalBackground("#333333"); + }); + const gap = 50; + return [createComponent(Text, { + style: rowTitle, + children: "Start, MarginTop, End, MarginBottom, Center, Between, Evenly" + }), createComponent(Row, { + gap, + style: RowStyles, + onFocus, + get children() { + return [createComponent(Column, { + gap: 30, + style: ColumnStyles, + alignItems: "center", + get children() { + return [createComponent(Block, { + autofocus: true + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + style: ColumnStyles, + onFocus, + alignItems: "flexStart", + get children() { + return [createComponent(Block, { + marginTop: 100 + }), createComponent(Block, {}), createComponent(Block, { + marginTop: 100 + }), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + alignItems: "flexEnd", + justifyContent: "flexEnd", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "flexEnd", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, { + marginBottom: 100 + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, { + marginBottom: 100 + })]; + } + }), createComponent(Column, { + gap, + justifyContent: "center", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "spaceBetween", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "spaceEvenly", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + })]; + } + })]; +}; +const FlexColumnPage = () => { + const RowStyles = { + display: "flex", + justifyContent: "spaceEvenly", + width: 1920, + y: 100, + height: 880, + color: hexColor("00000000") + }; + const ColumnStyles = { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + color: hexColor("#4dabf5"), + height: 850, + width: 60 + }; + const rowTitle = { + fontSize: 44, + y: 20, + x: 150 + }; + function Block(props) { + const styles2 = { + width: 50, + height: 80, + x: 5, + color: hexColor("#1769aa") + }; + return createComponent(View, mergeProps(props, { + style: styles2 + })); + } + const [columnY, setColumnY] = createSignal(50); + function onFocus() { + var _a3; + (_a3 = this.children.selected) == null ? void 0 : _a3.setFocus(); + setColumnY(150 + (this.y || 0) * -1); + } + onMount(() => { + setGlobalBackground("#333333"); + }); + const gap = 50; + return [createComponent(Text, { + style: rowTitle, + children: "Start, MarginTop, End, MarginBottom, Center, Between, Evenly" + }), createComponent(Row, { + gap, + style: RowStyles, + onFocus, + get children() { + return [createComponent(Column, { + gap: 30, + style: ColumnStyles, + get children() { + return [createComponent(Block, { + autofocus: true + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, { + marginTop: 100 + }), createComponent(Block, {}), createComponent(Block, { + marginTop: 100 + }), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "flexEnd", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "flexEnd", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, { + marginBottom: 100 + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, { + marginBottom: 100 + })]; + } + }), createComponent(Column, { + gap, + justifyContent: "center", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "spaceBetween", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "spaceEvenly", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + })]; + } + })]; +}; +const MaterialButtonsPage = () => { + function onEnter(event, elm) { + this.states.toggle("disabled"); + } + const RowStyles = { + display: "flex", + justifyContent: "flexStart", + width: 1500, + height: 300, + color: hexColor("00000000"), + gap: 26, + y: 400, + x: 100 + }; + const MaterialButton2 = { + width: 386, + height: 136, + color: "0x715cabff", + focus: { + color: "0x5a39a2ff" + }, + disabled: { + color: "0x291d43ff" + } + }; + const RoundedRectangle2 = ["RoundedRectangle", { + radius: 65 + }]; + function Button2(props) { + return createComponent(View, mergeProps(props, { + forwardStates: true, + style: MaterialButton2, + shader: RoundedRectangle2, + get children() { + return createComponent(Text, { + style: MaterialButtonText, + get children() { + return props.children; + } + }); + } + })); + } + return createComponent(Row, { + style: RowStyles, + get children() { + return [createComponent(Button2, { + autofocus: true, + onEnter, + children: "Focused" + }), createComponent(Button2, { + states: { + active: true, + disabled: false + }, + children: "Normal" + }), createComponent(Button2, { + states: "disabled", + children: "Disabled" + })]; + } + }); +}; +const manifestUri = "https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd"; +function initApp() { + shaka.polyfill.installAll(); + if (shaka.Player.isBrowserSupported()) { + initPlayer(); + } else { + console.error("Browser not supported!"); + } +} +async function initPlayer() { + const video = document.getElementById("video"); + const player = new shaka.Player(); + await player.attach(video); + window.player = player; + player.addEventListener("error", onErrorEvent); + try { + await player.load(manifestUri); + console.log("The video has now been loaded!"); + } catch (e) { + onError(e); + } +} +function onErrorEvent(event) { + onError(event.detail); +} +function onError(error) { + console.error("Error code", error.code, "object", error); +} +function playVideo() { + const video = document.getElementById("video"); + video.hidden = false; + setTimeout(() => video.play(), 50); + video.focus(); + return video; +} +function closeVideo() { + const video = document.getElementById("video"); + video.hidden = true; + video.pause(); + return video; +} +document.addEventListener("DOMContentLoaded", initApp); +const Entity = () => { + const params = useParams(); + const navigate = useNavigate(); + const [data] = createResource(() => ({ + ...params + }), getInfo$1); + const [credits] = createResource(() => ({ + ...params + }), getCredits$1); + const [recommendations] = createResource(() => ({ + ...params + }), getRecommendations); + const [backdropAlpha, setBackdropAlpha] = createSignal(0); + createEffect(on(data, (data2) => { + setGlobalBackground(data2.backgroundImage); + }, { + defer: true + })); + const columnY = 640; + const Backdrop = { + color: hexColor("#000000"), + alpha: 0, + width: 1900, + height: 890, + x: -160, + y: columnY, + borderRadius: 30 + }; + function onRowFocus() { + var _a3; + (_a3 = this.children.selected) == null ? void 0 : _a3.setFocus(); + columnRef.y = columnY; + backdropRef.y = columnY; + backdropRef.alpha = 0; + } + function onRowFocusAnimate() { + var _a3; + (_a3 = this.children.selected) == null ? void 0 : _a3.setFocus(); + columnRef.y = 200; + backdropRef.y = 160; + backdropRef.alpha = 0.9; + } + function onEnter() { + let entity = this.children.selected; + assertTruthy(entity && entity.href); + navigate(entity.href); + } + function onEscape() { + closeVideo(); + document.getElementsByTagName("canvas")[0].focus(); + entityActions.setFocus(); + setBackdropAlpha(0); + } + function onEnterTrailer() { + const video = playVideo(); + setActiveElement(video); + setBackdropAlpha(0.9); + } + let columnRef, backdropRef, entityActions; + return createComponent(Show, { + get when() { + return data(); + }, + keyed: true, + get children() { + return [createComponent(View, { + x: 170, + onUp: () => entityActions.setFocus(), + onEscape, + get children() { + return [createComponent(ContentBlock, mergeProps({ + y: 260 + }, () => data().heroContent)), createComponent(Row, { + ref(r$) { + var _ref$ = entityActions; + typeof _ref$ === "function" ? _ref$(r$) : entityActions = r$; + }, + y: 500, + scroll: "none", + height: 90, + width: 640, + gap: 40, + onDown: () => columnRef.setFocus(), + onEnter: onEnterTrailer, + get children() { + return [createComponent(Button$1, { + width: 300, + autofocus: true, + children: "Play" + }), createComponent(Button$1, { + width: 300, + children: "Resume" + })]; + } + }), createComponent(Column, { + ref(r$) { + var _ref$2 = columnRef; + typeof _ref$2 === "function" ? _ref$2(r$) : columnRef = r$; + }, + x: 0, + y: columnY, + get style() { + return styles.Column; + }, + zIndex: 5, + get children() { + return createComponent(Show, { + get when() { + return memo(() => !!recommendations())() && credits(); + }, + get children() { + return [createComponent(Text, { + skipFocus: true, + get style() { + return styles.RowTitle; + }, + children: "Recommendations" + }), createComponent(TileRow, { + onFocus: onRowFocus, + onEnter, + get items() { + return recommendations(); + }, + width: 1620 + }), createComponent(Text, { + skipFocus: true, + get style() { + return styles.RowTitle; + }, + children: "Cast and Crew" + }), createComponent(TileRow, { + onFocus: onRowFocusAnimate, + onEnter, + get items() { + return credits(); + }, + width: 1620 + })]; + } + }); + } + }), createComponent(View, { + ref(r$) { + var _ref$3 = backdropRef; + typeof _ref$3 === "function" ? _ref$3(r$) : backdropRef = r$; + }, + style: Backdrop, + transition: { + alpha: true, + y: true + } + })]; + } + }), createComponent(View, { + get alpha() { + return backdropAlpha(); + }, + get color() { + return hexColor("#000000"); + }, + zIndex: 200, + transition: { + alpha: true + } + })]; + } + }); +}; +function getCredits({ id }) { + return api.get("/person/".concat(id, "/combined_credits")).then(({ cast }) => convertItemsToTiles(cast.slice(0, 7))); +} +function getInfo({ id }) { + return api.get("/person/".concat(id)).then((data) => ({ + backgroundImage: getImageUrl(data.profile_path, "original"), + heroContent: { + title: data.title || data.name, + description: data.biography + }, + ...data + })); +} +const People = () => { + const params = useParams(); + const navigate = useNavigate(); + const [data] = createResource(() => ({ + ...params + }), getInfo); + const [credits] = createResource(() => ({ + ...params + }), getCredits); + const Backdrop = { + color: hexColor("#000000"), + alpha: 0.8, + width: 800, + height: 440, + x: 130, + y: 180, + borderRadius: 30 + }; + function onEnter() { + let entity = this.children.selected; + assertTruthy(entity && entity.href); + navigate(entity.href); + } + onMount(() => { + setGlobalBackground("#333333"); + }); + return createComponent(Show, { + get when() { + return data(); + }, + keyed: true, + get children() { + return [createComponent(View, { + get src() { + return data().backgroundImage; + }, + width: 400, + autosize: true, + y: 0, + x: 1800, + mountX: 1 + }), createComponent(View, { + x: 150, + y: 200, + width: 800, + gap: 24, + get style() { + return styles.Column; + }, + zIndex: 3, + get children() { + return [createComponent(Text, { + contain: "width", + fontFamily: "Ubuntu", + get style() { + return theme.typography.display2; + }, + get children() { + return data().name; + } + }), createComponent(Text, { + contain: "both", + get style() { + return styles.peopleBio; + }, + get children() { + return data().biography; + } + })]; + } + }), createComponent(View, { + style: Backdrop + }), createComponent(Column, { + y: 670, + x: 140, + get style() { + return styles.Column; + }, + scroll: "none", + get children() { + return createComponent(Show, { + get when() { + return credits(); + }, + get children() { + return [createComponent(Text, { + skipFocus: true, + get style() { + return styles.RowTitle; + }, + children: "Credits" + }), createComponent(TileRow, { + autofocus: true, + onEnter, + get items() { + return credits(); + } + })]; + } + }); + } + })]; + } + }); +}; +const NotFound = () => { + return (() => { + var _el$ = createElement("node"); + setProp(_el$, "style", { + width: 1920, + height: 1080, + color: 868483072 + }); + return _el$; + })(); +}; +const coreExtensionModuleUrl = new URL("AppCoreExtensions-C8PFmbSm.js", import.meta.url).href; +config.debug = false; +config.animationsEnabled = true; +config.fontSettings.fontFamily = "Ubuntu"; +config.fontSettings.color = hexColor("#f6f6f6"); +config.fontSettings.fontSize = 32; +config.rendererOptions = { + coreExtensionModule: coreExtensionModuleUrl, + fpsUpdateInterval: 200, + enableInspector: true + // deviceLogicalPixelRatio: 1 +}; +render(() => createComponent(HashRouter, { + root: (props) => createComponent(App, props), + get children() { + return [createComponent(Route, { + path: "", + component: Browse + }), createComponent(Route, { + path: "examples", + component: Portal + }), createComponent(Route, { + path: "browse/:filter", + component: Browse + }), createComponent(Route, { + path: "text", + component: TextPage + }), createComponent(Route, { + path: "buttons", + component: ButtonsPage + }), createComponent(Route, { + path: "flex", + component: FlexPage + }), createComponent(Route, { + path: "create", + component: CreatePage + }), createComponent(Route, { + path: "viewport", + component: ViewportPage + }), createComponent(Route, { + path: "flexsize", + component: FlexSizePage + }), createComponent(Route, { + path: "flexcolumnsize", + component: FlexColumnPage$1 + }), createComponent(Route, { + path: "flexcolumn", + component: FlexColumnPage + }), createComponent(Route, { + path: "buttonsmaterial", + component: MaterialButtonsPage + }), createComponent(Route, { + path: "entity/people/:id", + component: People + }), createComponent(Route, { + path: "entity/:type/:id", + component: Entity + }), createComponent(Route, { + path: "*all", + component: NotFound + })]; + } +})); +export { + __vite_legacy_guard +}; +//# sourceMappingURL=index-CK5NAQdx.js.map diff --git a/assets/index-CK5NAQdx.js.map b/assets/index-CK5NAQdx.js.map new file mode 100644 index 0000000..53f5973 --- /dev/null +++ b/assets/index-CK5NAQdx.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"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","names":["_a","_b","_d","_c","_e","_f","key","target","property","receiver","delay","w","i","text","_h","_g","_j","_i","_l","_k","renderer","effect","rgbas","_m","_n","_o","_p","_q","_r","CoreNodeRenderState","UpdateType","size","fps","calcHeight","value","error","isArray","input","children","memo","createComponent","mergeProps","sources","isDev","isFunc","states","styles","Text","props","_el$","_$createElement","View","createElement","createTextNode","insertNode","insert","dispose","document","basePath","path","params","state","options","matches","createRouterComponent","router","base","routeDefs","branches","createMemo","createBranches","context","routerState","createRouterContext","singleFlight","create","_$createComponent","RouterContextObj","Provider","Root","root","load","rootLoad","_$memo","getOwner","Routes","location","data","untrack","intent","Show","when","keyed","fallback","disposers","routeStates","on","nextMatches","prevMatches","prev","equal","length","next","len","prevMatch","nextMatch","route","createRoot","createRouteContext","createOutlet","splice","forEach","child","RouteContextObj","outlet","Route","childRoutes","get","config","preload","prevFocusPath","nestedSeriesResults","focusPath","depth","Background","bg1","bg2","heroMask","active","alpha","animationSettings","duration","easing","bgStyles","color","changeBackgrounds","img","startsWith","hexColor","src","animate","start","globalBackground","defer","width","height","zIndex","ref","r$","_ref$","style","_ref$2","_ref$3","theme","materialBrand","_a2","_b2","Button","Text$7","import","icons","name","x","y","Icon","sprite","createSpriteMap","_$mergeProps","texture","NavButton","forwardStates","scale","icon","fontSize","NavDrawer","backdrop","navigate","useNavigate","onFocus","add","c","selected","setFocus","onBlur","remove","handleNavigate","page","isOnPage","useMatch","focusPage","flexItem","showWidgets","Column","scroll","onEnter","Gradient","App","Announcer","Menu","Escape","Backspace","Left","Right","Up","Down","Enter","announcer","useAnnouncer","enabled","navDrawer","lastFocused","focusNavDrawer","has","activeElement","setShowWidgets","createSignal","useLocation","showOnPaths","createEffect","currentPath","pathname","matchesPartial","some","window","APP","onAnnouncer","onLast","history","back","onMenu","onBackspace","onLeft","onRight","FPSCounter","mountX","Thumbnail","TileRow","local","others","splitProps","Row","For","each","items","item","content","blockWidth","ContentBlockStyle","display","flexDirection","gap","HeadlineStyles","typography","display2","fontFamily","fontWeight","maxLines","contain","Headline","DescriptionStyles","body1","lineHeight","BadgeStyle","Description","Badge","withPadding","borderRadius","border","MetaTextStyle","body2","Metadata","clipping","voteAverage","voteCount","metaText","badges","ContentBlock","id","title","description","results","getCredits","getInfo","Browse","useParams","columnY","setcolumnY","entityInfo","setEntityInfo","createResource","entityProvider","heroContent","setHeroContent","isFirst","createSelector","provider","createInfiniteScroll","browseProvider","filter","delayedBackgrounds","debounce","setGlobalBackground","delayedHero","elm","onRowFocus","numPages","pages","parent","setPage","p","entity","href","itemsContainer","plinko","announce","autofocus","Portal","demos","DemoTile","Container","transition","focus","setColor","index","rowX","setRowX","moveRow","row","colorTop","colorBottom","onSelectedChanged","justifyContent","demo","TextPage","OverviewContainer","SublineContainer","Title","Overview","Subline","onMount","CreatePage","myBox","childRef","insertTest","setInsertTest","emptyTest","setEmptyTest","setTimeout","getChildById","styleChild","someOtherStyle","ChildTest","resolved","borderStyles","borderLeft","borderTop","borderRight","borderBottom","childTestPassedStyles","childTestPassedStyles2","hasFocus","ball","invervalTimer","ballStatus","setBallStatus","styleBall","rotation","mount","lineheight","randomIntBetween","from","to","Math","floor","random","setInterval","logEvent","slice","console","log","onCleanup","clearInterval","join","onEvents","ButtonsPage","event","toggle","RowStyles","buttonStyles","container","_$use","disabled","FlexPage","rowTitle","marginTop","marginBottom","skipFocus","Block","setColumnY","marginLeft","marginRight","FlexSizePage","randSize","alignItems","FlexColumnPage","ColumnStyles","MaterialButtonsPage","MaterialButton","RoundedRectangle","radius","shader","MaterialButtonText","Entity","credits","recommendations","backdropAlpha","setBackdropAlpha","backgroundImage","Backdrop","columnRef","backdropRef","onRowFocusAnimate","onEscape","getElementsByTagName","entityActions","onEnterTrailer","video","playVideo","setActiveElement","onUp","onDown","RowTitle","People","autosize","peopleBio","biography","NotFound","_$setProp","Config","debug","animationsEnabled","fontSettings","rendererOptions","coreExtensionModule","coreExtensionModuleUrl","fpsUpdateInterval","enableInspector","render","HashRouter","component","ViewportPage","FlexColumnSizePage","ButtonsMaterialPage"],"ignoreList":[59,70,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,96,98],"sources":["../../../../../renderer/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js","../../../../../renderer/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js","../../../../../renderer/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js","../../../../../renderer/dist/src/main-api/Inspector.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js","../../../../../renderer/dist/src/core/text-rendering/renderers/TextRenderer.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js","../../../../../renderer/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js","../../../../../renderer/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DefaultShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DynamicShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/SdfShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js","../../../../../renderer/dist/src/core/CoreShaderManager.js","../../../../../renderer/dist/src/core/lib/ContextSpy.js","../../../../../renderer/dist/src/core/lib/textureCompression.js","../../../../../renderer/dist/src/core/textures/ImageTexture.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js","../../../../../renderer/dist/src/core/text-rendering/TrFontManager.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js","../../../../../renderer/dist/src/render-drivers/utils.js","../../../../../renderer/dist/src/main-api/RendererMain.js","../../../../../renderer/dist/src/core/animations/CoreAnimation.js","../../../../../renderer/dist/src/core/animations/CoreAnimationController.js","../../../../../renderer/dist/src/core/lib/Matrix3d.js","../../../../../renderer/dist/src/core/lib/RenderCoords.js","../../../../../renderer/dist/src/core/CoreNode.js","../../../../../renderer/dist/src/render-drivers/main/MainOnlyNode.js","../../../../../renderer/dist/src/core/platform.js","../../../../../renderer/dist/src/core/animations/AnimationManager.js","../../../../../renderer/dist/src/core/lib/ImageWorker.js","../../../../../renderer/dist/src/core/textures/NoiseTexture.js","../../../../../renderer/dist/src/core/CoreTextureManager.js","../../../../../renderer/dist/src/core/TextureMemoryManager.js","../../../../../renderer/dist/src/core/Stage.js","../../../../../renderer/dist/src/core/CoreTextNode.js","../../../../../renderer/dist/src/render-drivers/main/MainOnlyTextNode.js","../../../../../renderer/dist/src/render-drivers/main/MainCoreDriver.js","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/dist/solid.js","../../../../../solid/src/core/lightningInit.ts","../../../../../solid/src/core/node/children.ts","../../../../../solid/src/config.ts","../../../../../solid/src/core/utils.ts","../../../../../solid/src/core/node/states.ts","../../../../../solid/src/core/flex.ts","../../../../../solid/src/core/activeElement.ts","../../../../../solid/src/core/node/index.ts","../../../../../solid/src/components/Text.tsx","../../../../../solid/src/components/View.tsx","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/universal/dist/universal.js","../../../../../solid/src/core/solidUniversal.ts","../../../../../solid/src/core/render.ts","../../../../../solid/src/utils.ts","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/web/dist/web.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/lifecycle.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/utils.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routing.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/components.jsx","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/createRouter.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/data/action.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/data/events.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/HashRouter.js","../../../../node_modules/.pnpm/@solid-primitives+utils@6.2.3_solid-js@1.8.16/node_modules/@solid-primitives/utils/dist/chunk/R5675YMU.js","../../../../node_modules/.pnpm/@solid-primitives+event-listener@2.3.3_solid-js@1.8.16/node_modules/@solid-primitives/event-listener/dist/index.js","../../../../node_modules/.pnpm/@solid-primitives+rootless@1.4.5_solid-js@1.8.16/node_modules/@solid-primitives/rootless/dist/index.js","../../../../node_modules/.pnpm/@solid-primitives+keyboard@1.2.8_solid-js@1.8.16/node_modules/@solid-primitives/keyboard/dist/index.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/utils.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/useFocusManager.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/withPadding.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/speech.js","../../../../node_modules/.pnpm/@solid-primitives+scheduled@1.4.3_solid-js@1.8.16/node_modules/@solid-primitives/scheduled/dist/index.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/announcer.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/index.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/createSpriteMap.js","../../src/state.ts","../../../../node_modules/.pnpm/@lightningjs+l3-ui-theme-base@0.3.1/node_modules/@lightningjs/l3-ui-theme-base/theme.js","../../src/components/Background.tsx","../../../../node_modules/.pnpm/@lightningjs+solid-ui@0.12.1_@babel+core@7.24.4_@lightningjs+renderer@0.8.2_@lightningjs+soli_l6qk66ywnsrdb5zvon2uxgrjiy/node_modules/@lightningjs/solid-ui/dist/index.js","../../src/components/NavDrawer/NavDrawer.styles.ts","../../src/components/Icon.tsx","../../src/components/NavDrawer/NavDrawer.tsx","../../src/pages/App.tsx","../../src/styles.ts","../../src/components/index.tsx","../../src/api/key.ts","../../src/api/index.ts","../../src/api/formatters/ItemFormatter.ts","../../src/api/providers/browse.ts","../../src/components/pagination.ts","../../src/components/ContentBlock.tsx","../../src/api/providers/entity.js","../../src/pages/Browse.tsx","../../src/pages/Portal.tsx","../../src/pages/Text.tsx","../../src/pages/Create.tsx","../../src/pages/Viewport.tsx","../../src/pages/Buttons.tsx","../../src/pages/Flex.tsx","../../src/pages/FlexSize.tsx","../../src/pages/FlexColumnSize.tsx","../../src/pages/FlexColumn.tsx","../../src/pages/ButtonsMaterial.tsx","../../src/video.js","../../src/pages/Entity.tsx","../../src/api/providers/people.js","../../src/pages/People.tsx","../../src/pages/NotFound.tsx","../../AppCoreExtensions.js?importChunkUrl","../../src/index.tsx"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Texture Usage Tracker for Usage Based Texture Garbage Collection\n */\nexport class TextureUsageTracker {\n releaseCallback;\n constructor(releaseCallback) {\n this.releaseCallback = releaseCallback;\n }\n}\n//# sourceMappingURL=TextureUsageTracker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { TextureUsageTracker } from './TextureUsageTracker.js';\n/**\n * Usage-based Texture Garbage Collection Registry\n */\nexport class ManualCountTextureUsageTracker extends TextureUsageTracker {\n textureMap = new Map();\n zeroReferenceTextureSet = new Set();\n options;\n constructor(releaseCallback, options) {\n super(releaseCallback);\n this.options = {\n textureCleanupIntervalMs: options.textureCleanupIntervalMs ?? 10000,\n textureCleanupAgeThreadholdMs: options.textureCleanupAgeThreadholdMs ?? 60000,\n };\n // Periodically check for textures that are no longer referenced by any\n // Nodes and notify RendererMain to release them.\n setInterval(() => {\n const now = Date.now();\n const thresholdMs = this.options.textureCleanupAgeThreadholdMs;\n for (const textureRefInfo of this.zeroReferenceTextureSet) {\n if (now - textureRefInfo.lastUpdate > thresholdMs) {\n this.releaseCallback(textureRefInfo.id);\n this.textureMap.delete(textureRefInfo.id);\n this.zeroReferenceTextureSet.delete(textureRefInfo);\n }\n }\n }, this.options.textureCleanupIntervalMs);\n }\n registerTexture(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n if (!this.textureMap.has(textureId)) {\n const textureRefInfo = {\n id: textureId,\n nodeRefCount: 0,\n lastUpdate: Date.now(),\n };\n this.textureMap.set(textureId, textureRefInfo);\n this.zeroReferenceTextureSet.add(textureRefInfo);\n }\n }\n incrementTextureRefCount(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n let textureRefInfo = this.textureMap.get(textureId);\n if (!textureRefInfo) {\n // Texture has not been registered yet, so register it now.\n // This may happen if the TextureRef was cleaned up from the registry\n // but was still alive in memory and eventually re-used.\n this.registerTexture(texture);\n textureRefInfo = this.textureMap.get(textureId);\n }\n assertTruthy(textureRefInfo, 'Texture must have been registered');\n if (texture.txType === 'SubTexture') {\n // If this is a SubTexture, then increment the reference count of the\n // parent texture as well.\n this.incrementTextureRefCount(texture.props.texture);\n }\n textureRefInfo.nodeRefCount++;\n textureRefInfo.lastUpdate = Date.now();\n if (this.zeroReferenceTextureSet.has(textureRefInfo)) {\n this.zeroReferenceTextureSet.delete(textureRefInfo);\n }\n }\n decrementTextureRefCount(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n const textureRefInfo = this.textureMap.get(textureId);\n assertTruthy(textureRefInfo, 'Texture must have been registered');\n textureRefInfo.nodeRefCount--;\n textureRefInfo.lastUpdate = Date.now();\n if (textureRefInfo.nodeRefCount === 0) {\n this.zeroReferenceTextureSet.add(textureRefInfo);\n }\n if (texture.txType === 'SubTexture') {\n // If this is a SubTexture, then decrement the reference count of the\n // parent texture as well.\n this.decrementTextureRefCount(texture.props.texture);\n }\n }\n}\n//# sourceMappingURL=ManualCountTextureUsageTracker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { TextureUsageTracker } from './TextureUsageTracker.js';\nexport class FinalizationRegistryTextureUsageTracker extends TextureUsageTracker {\n registry;\n constructor(releaseCallback) {\n super(releaseCallback);\n this.registry = new FinalizationRegistry(releaseCallback);\n }\n registerTexture(texture) {\n assertTruthy(texture.options?.id, 'Texture must have an ID to be registered');\n this.registry.register(texture, texture.options?.id);\n }\n incrementTextureRefCount() {\n // No-op for FinalizationRegistry\n }\n decrementTextureRefCount() {\n // No-op for FinalizationRegistry\n }\n}\n//# sourceMappingURL=FinalizationRegistryTextureUsageTracker.js.map","import {} from './RendererMain.js';\nimport { isProductionEnvironment } from '../utils.js';\nconst stylePropertyMap = {\n alpha: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'opacity', value: `${v}` };\n },\n x: (x) => {\n return { prop: 'left', value: `${x}px` };\n },\n y: (y) => {\n return { prop: 'top', value: `${y}px` };\n },\n width: (w) => {\n if (w === 0) {\n return null;\n }\n return { prop: 'width', value: `${w}px` };\n },\n height: (h) => {\n if (h === 0) {\n return null;\n }\n return { prop: 'height', value: `${h}px` };\n },\n zIndex: () => 'zIndex',\n fontFamily: () => 'font-family',\n fontSize: () => 'font-size',\n fontStyle: () => 'font-style',\n fontWeight: () => 'font-weight',\n fontStretch: () => 'font-stretch',\n lineHeight: () => 'line-height',\n letterSpacing: () => 'letter-spacing',\n textAlign: () => 'text-align',\n overflowSuffix: () => 'overflow-suffix',\n maxLines: () => 'max-lines',\n contain: () => 'contain',\n verticalAlign: () => 'vertical-align',\n clipping: (v) => {\n if (v === false) {\n return null;\n }\n return { prop: 'overflow', value: v ? 'hidden' : 'visible' };\n },\n rotation: (v) => {\n if (v === 0) {\n return null;\n }\n return { prop: 'transform', value: `rotate(${v}rad)` };\n },\n scale: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scale(${v})` };\n },\n scaleX: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scaleX(${v})` };\n },\n scaleY: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scaleY(${v})` };\n },\n color: (v) => {\n if (v === 0) {\n return null;\n }\n return { prop: 'color', value: convertColorToRgba(v) };\n },\n};\nconst convertColorToRgba = (color) => {\n const a = (color & 0xff) / 255;\n const b = (color >> 8) & 0xff;\n const g = (color >> 16) & 0xff;\n const r = (color >> 24) & 0xff;\n return `rgba(${r},${g},${b},${a})`;\n};\nconst domPropertyMap = {\n id: 'id',\n};\nconst gradientColorPropertyMap = [\n 'colorTop',\n 'colorBottom',\n 'colorLeft',\n 'colorRight',\n 'colorTl',\n 'colorTr',\n 'colorBl',\n 'colorBr',\n];\nexport class Inspector {\n root = null;\n canvas = null;\n height = 1080;\n width = 1920;\n scaleX = 1;\n scaleY = 1;\n constructor(canvas, settings) {\n if (isProductionEnvironment())\n return;\n if (!settings) {\n throw new Error('settings is required');\n }\n // calc dimensions based on the devicePixelRatio\n this.height = Math.ceil(settings.appHeight ?? 1080 / (settings.deviceLogicalPixelRatio ?? 1));\n this.width = Math.ceil(settings.appWidth ?? 1900 / (settings.deviceLogicalPixelRatio ?? 1));\n this.scaleX = settings.deviceLogicalPixelRatio ?? 1;\n this.scaleY = settings.deviceLogicalPixelRatio ?? 1;\n this.canvas = canvas;\n this.root = document.createElement('div');\n this.setRootPosition();\n document.body.appendChild(this.root);\n //listen for changes on canvas\n const mutationObserver = new MutationObserver(this.setRootPosition.bind(this));\n mutationObserver.observe(canvas, {\n attributes: true,\n childList: false,\n subtree: false,\n });\n // Create a ResizeObserver to watch for changes in the element's size\n const resizeObserver = new ResizeObserver(this.setRootPosition.bind(this));\n resizeObserver.observe(canvas);\n //listen for changes on window\n window.addEventListener('resize', this.setRootPosition.bind(this));\n console.warn('Inspector is enabled, this will impact performance');\n }\n setRootPosition() {\n if (this.root === null || this.canvas === null) {\n return;\n }\n // get the world position of the canvas object, so we can match the inspector to it\n const rect = this.canvas.getBoundingClientRect();\n const top = document.documentElement.scrollTop + rect.top;\n const left = document.documentElement.scrollLeft + rect.left;\n this.root.id = 'root';\n this.root.style.left = `${left}px`;\n this.root.style.top = `${top}px`;\n this.root.style.width = `${this.width}px`;\n this.root.style.height = `${this.height}px`;\n this.root.style.position = 'absolute';\n this.root.style.transformOrigin = '0 0 0';\n this.root.style.transform = `scale(${this.scaleX}, ${this.scaleY})`;\n this.root.style.overflow = 'hidden';\n this.root.style.zIndex = '65534';\n }\n createDiv(node, properties) {\n const div = document.createElement('div');\n div.style.position = 'absolute';\n div.id = node.id.toString();\n // set initial properties\n for (const key in properties) {\n this.updateNodeProperty(div, \n // really typescript? really?\n key, properties[key]);\n }\n return div;\n }\n createNode(driver, properties) {\n const node = driver.createNode(properties);\n const div = this.createDiv(node, properties);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n div.node = node;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n node.div = div;\n return this.createProxy(node, div);\n }\n createTextNode(driver, properties) {\n const node = driver.createTextNode(properties);\n const div = this.createDiv(node, properties);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n div.node = node;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n node.div = div;\n return this.createProxy(node, div);\n }\n createProxy(node, div) {\n return new Proxy(node, {\n set: (target, property, value) => {\n this.updateNodeProperty(div, property, value);\n return Reflect.set(target, property, value);\n },\n get: (target, property, receiver) => {\n if (property === 'destroy') {\n this.destroyNode(target);\n }\n if (property === 'animate') {\n return (props, settings) => {\n const anim = target.animate(props, settings);\n // Trap the animate start function so we can update the inspector accordingly\n return new Proxy(anim, {\n get: (target, property, receiver) => {\n if (property === 'start') {\n this.animateNode(div, node, props, settings);\n }\n return Reflect.get(target, property, receiver);\n },\n });\n };\n }\n return Reflect.get(target, property, receiver);\n },\n });\n }\n destroyNode(node) {\n const div = document.getElementById(node.id.toString());\n div?.remove();\n }\n updateNodeProperty(div, property, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value) {\n if (this.root === null || value === undefined || value === null) {\n return;\n }\n /**\n * Special case for parent property\n */\n if (property === 'parent') {\n const parentId = value.id;\n // only way to detect if the parent is the root node\n // if you are reading this and have a better way, please let me know\n if (parentId === 1) {\n this.root.appendChild(div);\n return;\n }\n const parent = document.getElementById(parentId.toString());\n parent?.appendChild(div);\n return;\n }\n // special case for text\n if (property === 'text') {\n div.innerHTML = String(value);\n // hide text because we can't render SDF fonts\n // it would look weird and obstruct the WebGL rendering\n div.style.visibility = 'hidden';\n return;\n }\n // special case for images\n // we're not setting any CSS properties to avoid images getting loaded twice\n // as the renderer will handle the loading of the image. Setting it to `data-src`\n if (property === 'src' && value) {\n div.setAttribute(`data-src`, String(value));\n return;\n }\n // special case for color gradients (normal colors are handled by the stylePropertyMap)\n // FIXME the renderer seems to return the same number for all colors\n // if (gradientColorPropertyMap.includes(property as string)) {\n // const color = convertColorToRgba(value as number);\n // div.setAttribute(`data-${property}`, color);\n // return;\n // }\n // CSS mappable attribute\n if (stylePropertyMap[property]) {\n const mappedStyleResponse = stylePropertyMap[property]?.(value);\n if (mappedStyleResponse === null) {\n return;\n }\n if (typeof mappedStyleResponse === 'string') {\n div.style.setProperty(mappedStyleResponse, String(value));\n return;\n }\n if (typeof mappedStyleResponse === 'object') {\n div.style.setProperty(mappedStyleResponse.prop, mappedStyleResponse.value);\n }\n return;\n }\n // DOM properties\n if (domPropertyMap[property]) {\n div.setAttribute(String(stylePropertyMap[property]), String(value));\n return;\n }\n // custom data properties\n if (property === 'data') {\n for (const key in value) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n div.setAttribute(`data-${key}`, String(value[key]));\n }\n return;\n }\n }\n // simple animation handler\n animateNode(div, node, props, settings) {\n const { duration = 1000, delay = 0,\n // easing = 'linear',\n // repeat = 0,\n // loop = false,\n // stopMethod = false,\n } = settings;\n const { x, y, width, height, alpha = 1, rotation = 0, scale = 1, color, } = props;\n // ignoring loops and repeats for now, as that might be a bit too much for the inspector\n function animate() {\n setTimeout(() => {\n div.style.top = `${y}px`;\n div.style.left = `${x}px`;\n div.style.width = `${width}px`;\n div.style.height = `${height}px`;\n div.style.opacity = `${alpha}`;\n div.style.rotate = `${rotation}rad`;\n div.style.scale = `${scale}`;\n div.style.color = convertColorToRgba(color);\n }, duration);\n }\n setTimeout(animate, delay);\n }\n}\n//# sourceMappingURL=Inspector.js.map","export class ShaderEffect {\n priority = 1;\n name = '';\n ref;\n target;\n passParameters = '';\n declaredUniforms = '';\n uniformInfo = {};\n static uniforms = {};\n static methods;\n static onShaderMask;\n static onColorize;\n static onEffectMask;\n static getEffectKey(props) {\n return '';\n }\n static getMethodParameters(uniforms, props) {\n const res = [];\n for (const u in uniforms) {\n const uni = uniforms[u];\n let define = '';\n if (uni.size) {\n define = `[${uni.size(props)}]`;\n }\n res.push(`${uni.type} ${u}${define}`);\n }\n return res.join(',');\n }\n constructor(options) {\n const { ref, target, props = {} } = options;\n this.ref = ref;\n this.target = target;\n const uniformInfo = {};\n const passParameters = [];\n let declaredUniforms = '';\n const uniforms = this.constructor.uniforms || {};\n for (const u in uniforms) {\n const unif = uniforms[u];\n const uniType = unif.type;\n //make unique uniform name\n const uniformName = `${ref}_${u}`;\n let define = '';\n if (unif.size) {\n define = `[${unif.size(props)}]`;\n }\n passParameters.push(uniformName);\n declaredUniforms += `uniform ${uniType} ${uniformName}${define};`;\n uniformInfo[u] = { name: uniformName, uniform: uniforms[u].method };\n }\n this.passParameters = passParameters.join(',');\n this.declaredUniforms = declaredUniforms;\n this.uniformInfo = uniformInfo;\n }\n static resolveDefaults(props) {\n return {};\n }\n static makeEffectKey(props) {\n return false;\n }\n}\n//# sourceMappingURL=ShaderEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst trPropSetterDefaults = {\n x: (state, value) => {\n state.props.x = value;\n },\n y: (state, value) => {\n state.props.y = value;\n },\n width: (state, value) => {\n state.props.width = value;\n },\n height: (state, value) => {\n state.props.height = value;\n },\n color: (state, value) => {\n state.props.color = value;\n },\n zIndex: (state, value) => {\n state.props.zIndex = value;\n },\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n },\n text: (state, value) => {\n state.props.text = value;\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n },\n contain: (state, value) => {\n state.props.contain = value;\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n },\n scrollable: (state, value) => {\n state.props.scrollable = value;\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n },\n debug: (state, value) => {\n state.props.debug = value;\n },\n};\nexport class TextRenderer {\n stage;\n set;\n constructor(stage) {\n this.stage = stage;\n const propSetters = {\n ...trPropSetterDefaults,\n ...this.getPropertySetters(),\n };\n // For each prop setter add a wrapper method that checks if the prop is\n // different before calling the setter\n this.set = Object.freeze(Object.fromEntries(Object.entries(propSetters).map(([key, setter]) => {\n return [\n key,\n (state, value) => {\n if (state.props[key] !== value) {\n setter(state, value);\n // Assume any prop change will require a render\n // This is required because otherwise a paused RAF will result\n // in renders when text props are changed.\n this.stage.requestRender();\n }\n },\n ];\n })));\n }\n setStatus(state, status, error) {\n // Don't emit the same status twice\n if (state.status === status) {\n return;\n }\n state.status = status;\n state.emitter.emit(status, error);\n }\n /**\n * Allows the CoreTextNode to communicate changes to the isRenderable state of\n * the itself.\n *\n * @param state\n * @param renderable\n */\n setIsRenderable(state, renderable) {\n state.isRenderable = renderable;\n }\n /**\n * Destroy/Clean up the state object\n *\n * @remarks\n * Opposite of createState(). Frees any event listeners / resources held by\n * the state that may not reliably get garbage collected.\n *\n * @param state\n */\n destroyState(state) {\n const stateEvents = ['loading', 'loaded', 'failed'];\n // Remove the old event listeners from previous state obj there was one\n stateEvents.forEach((eventName) => {\n state.emitter.off(eventName);\n });\n }\n /**\n * Schedule a state update via queueMicrotask\n *\n * @remarks\n * This method is used to schedule a state update via queueMicrotask. This\n * method should be called whenever a state update is needed, and it will\n * ensure that the state is only updated once per microtask.\n * @param state\n * @returns\n */\n scheduleUpdateState(state) {\n if (state.updateScheduled) {\n return;\n }\n state.updateScheduled = true;\n queueMicrotask(() => {\n state.updateScheduled = false;\n this.updateState(state);\n });\n }\n}\n//# sourceMappingURL=TextRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TrFontFace } from './TrFontFace.js';\nexport class WebTrFontFace extends TrFontFace {\n fontFace;\n fontUrl;\n constructor(fontFamily, descriptors, fontUrl) {\n super(fontFamily, descriptors);\n // Filter out parentheses from fontUrl\n const fontUrlWithoutParentheses = fontUrl.replace(/\\(|\\)/g, '');\n // Defaults for descriptors resolved in the super constructor\n const determinedDescriptors = this.descriptors;\n // Convert TrFontFaceDescriptors to CSS FontFaceDescriptors\n const cssDescriptors = {\n style: determinedDescriptors.style,\n weight: typeof determinedDescriptors.weight === 'number'\n ? `${determinedDescriptors.weight}`\n : determinedDescriptors.weight,\n stretch: determinedDescriptors.stretch,\n unicodeRange: determinedDescriptors.unicodeRange,\n variant: determinedDescriptors.variant,\n featureSettings: determinedDescriptors.featureSettings,\n display: determinedDescriptors.display,\n };\n const fontFace = new FontFace(fontFamily, `url(${fontUrlWithoutParentheses})`, cssDescriptors);\n fontFace\n .load()\n .then(() => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.loaded = true;\n this.emit('loaded');\n })\n .catch(console.error);\n this.fontFace = fontFace;\n this.fontUrl = fontUrl;\n }\n}\n//# sourceMappingURL=WebTrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { getRgbaString } from '../../lib/utils.js';\nconst MAX_TEXTURE_DIMENSION = 2048;\n/**\n * Calculate height for the canvas\n *\n * @param textBaseline\n * @param fontSize\n * @param lineHeight\n * @param numLines\n * @param offsetY\n * @returns\n */\nfunction calcHeight(textBaseline, fontSize, lineHeight, numLines, offsetY) {\n const baselineOffset = textBaseline !== 'bottom' ? 0.5 * fontSize : 0;\n return (lineHeight * (numLines - 1) +\n baselineOffset +\n Math.max(lineHeight, fontSize) +\n (offsetY || 0));\n}\nexport class LightningTextTextureRenderer {\n _canvas;\n _context;\n _settings;\n renderInfo;\n constructor(canvas, context) {\n this._canvas = canvas;\n this._context = context;\n this._settings = this.mergeDefaults({});\n }\n set settings(v) {\n this._settings = this.mergeDefaults(v);\n }\n get settings() {\n return this._settings;\n }\n getPrecision() {\n return this._settings.precision;\n }\n setFontProperties() {\n this._context.font = this._getFontSetting();\n this._context.textBaseline = this._settings.textBaseline;\n }\n _getFontSetting() {\n const ff = [this._settings.fontFace];\n const ffs = [];\n for (let i = 0, n = ff.length; i < n; i++) {\n if (ff[i] === 'serif' || ff[i] === 'sans-serif') {\n ffs.push(ff[i]);\n }\n else {\n ffs.push(`\"${ff[i]}\"`);\n }\n }\n return `${this._settings.fontStyle} ${this._settings.fontSize * this.getPrecision()}px ${ffs.join(',')}`;\n }\n _load() {\n if (true && document.fonts) {\n const fontSetting = this._getFontSetting();\n try {\n if (!document.fonts.check(fontSetting, this._settings.text)) {\n // Use a promise that waits for loading.\n return document.fonts\n .load(fontSetting, this._settings.text)\n .catch((err) => {\n // Just load the fallback font.\n console.warn('[Lightning] Font load error', err, fontSetting);\n })\n .then(() => {\n if (!document.fonts.check(fontSetting, this._settings.text)) {\n console.warn('[Lightning] Font not found', fontSetting);\n }\n });\n }\n }\n catch (e) {\n console.warn(\"[Lightning] Can't check font loading for \" + fontSetting);\n }\n }\n }\n calculateRenderInfo() {\n const renderInfo = {};\n const precision = this.getPrecision();\n const paddingLeft = this._settings.paddingLeft * precision;\n const paddingRight = this._settings.paddingRight * precision;\n const fontSize = this._settings.fontSize * precision;\n let offsetY = this._settings.offsetY === null\n ? null\n : this._settings.offsetY * precision;\n let lineHeight = (this._settings.lineHeight || fontSize) * precision;\n const w = this._settings.w * precision;\n const h = this._settings.h * precision;\n let wordWrapWidth = this._settings.wordWrapWidth * precision;\n const cutSx = this._settings.cutSx * precision;\n const cutEx = this._settings.cutEx * precision;\n const cutSy = this._settings.cutSy * precision;\n const cutEy = this._settings.cutEy * precision;\n const letterSpacing = (this._settings.letterSpacing || 0) * precision;\n const textIndent = this._settings.textIndent * precision;\n // Set font properties.\n this.setFontProperties();\n // Total width.\n let width = w || 2048 / this.getPrecision();\n // Inner width.\n let innerWidth = width - paddingLeft;\n if (innerWidth < 10) {\n width += 10 - innerWidth;\n innerWidth = 10;\n }\n if (!wordWrapWidth) {\n wordWrapWidth = innerWidth;\n }\n // Text overflow\n if (this._settings.textOverflow && !this._settings.wordWrap) {\n let suffix;\n switch (this._settings.textOverflow) {\n case 'clip':\n suffix = '';\n break;\n case 'ellipsis':\n suffix = this._settings.overflowSuffix;\n break;\n default:\n suffix = this._settings.textOverflow;\n }\n this._settings.text = this.wrapWord(this._settings.text, wordWrapWidth - textIndent, suffix);\n }\n // word wrap\n // preserve original text\n let linesInfo;\n if (this._settings.wordWrap) {\n linesInfo = this.wrapText(this._settings.text, wordWrapWidth, letterSpacing, textIndent);\n }\n else {\n linesInfo = { l: this._settings.text.split(/(?:\\r\\n|\\r|\\n)/), n: [] };\n const n = linesInfo.l.length;\n for (let i = 0; i < n - 1; i++) {\n linesInfo.n.push(i);\n }\n }\n let lines = linesInfo.l;\n if (this._settings.maxLines && lines.length > this._settings.maxLines) {\n const usedLines = lines.slice(0, this._settings.maxLines);\n let otherLines = null;\n if (this._settings.overflowSuffix) {\n // Wrap again with max lines suffix enabled.\n const w = this._settings.overflowSuffix\n ? this.measureText(this._settings.overflowSuffix)\n : 0;\n const al = this.wrapText(usedLines[usedLines.length - 1], wordWrapWidth - w, letterSpacing, textIndent);\n usedLines[usedLines.length - 1] = `${al.l[0]}${this._settings.overflowSuffix}`;\n otherLines = [al.l.length > 1 ? al.l[1] : ''];\n }\n else {\n otherLines = [''];\n }\n // Re-assemble the remaining text.\n let i;\n const n = lines.length;\n let j = 0;\n const m = linesInfo.n.length;\n for (i = this._settings.maxLines; i < n; i++) {\n otherLines[j] += `${otherLines[j] ? ' ' : ''}${lines[i]}`;\n if (i + 1 < m && linesInfo.n[i + 1]) {\n j++;\n }\n }\n renderInfo.remainingText = otherLines.join('\\n');\n renderInfo.moreTextLines = true;\n lines = usedLines;\n }\n else {\n renderInfo.moreTextLines = false;\n renderInfo.remainingText = '';\n }\n // calculate text width\n let maxLineWidth = 0;\n const lineWidths = [];\n for (let i = 0; i < lines.length; i++) {\n const lineWidth = this.measureText(lines[i], letterSpacing) + (i === 0 ? textIndent : 0);\n lineWidths.push(lineWidth);\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n renderInfo.lineWidths = lineWidths;\n if (!w) {\n // Auto-set width to max text length.\n width = maxLineWidth + paddingLeft + paddingRight;\n innerWidth = maxLineWidth;\n }\n // calculate text height\n lineHeight = lineHeight || fontSize;\n let height;\n if (h) {\n height = h;\n }\n else {\n height = calcHeight(this._settings.textBaseline, fontSize, lineHeight, lines.length, offsetY);\n }\n if (offsetY === null) {\n offsetY = fontSize;\n }\n renderInfo.w = width;\n renderInfo.h = height;\n renderInfo.lines = lines;\n renderInfo.precision = precision;\n if (!width) {\n // To prevent canvas errors.\n width = 1;\n }\n if (!height) {\n // To prevent canvas errors.\n height = 1;\n }\n if (cutSx || cutEx) {\n width = Math.min(width, cutEx - cutSx);\n }\n if (cutSy || cutEy) {\n height = Math.min(height, cutEy - cutSy);\n }\n renderInfo.width = width;\n renderInfo.innerWidth = innerWidth;\n renderInfo.height = height;\n renderInfo.fontSize = fontSize;\n renderInfo.cutSx = cutSx;\n renderInfo.cutSy = cutSy;\n renderInfo.cutEx = cutEx;\n renderInfo.cutEy = cutEy;\n renderInfo.lineHeight = lineHeight;\n renderInfo.lineWidths = lineWidths;\n renderInfo.offsetY = offsetY;\n renderInfo.paddingLeft = paddingLeft;\n renderInfo.paddingRight = paddingRight;\n renderInfo.letterSpacing = letterSpacing;\n renderInfo.textIndent = textIndent;\n return renderInfo;\n }\n draw(renderInfo, linesOverride) {\n const precision = this.getPrecision();\n // Allow lines to be overriden for partial rendering.\n const lines = linesOverride?.lines || renderInfo.lines;\n const lineWidths = linesOverride?.lineWidths || renderInfo.lineWidths;\n const height = linesOverride\n ? calcHeight(this._settings.textBaseline, renderInfo.fontSize, renderInfo.lineHeight, linesOverride.lines.length, this._settings.offsetY === null\n ? null\n : this._settings.offsetY * precision)\n : renderInfo.height;\n // Add extra margin to prevent issue with clipped text when scaling.\n this._canvas.width = Math.min(Math.ceil(renderInfo.width + this._settings.textRenderIssueMargin), MAX_TEXTURE_DIMENSION);\n this._canvas.height = Math.min(Math.ceil(height), MAX_TEXTURE_DIMENSION);\n // Canvas context has been reset.\n this.setFontProperties();\n if (renderInfo.fontSize >= 128) {\n // WpeWebKit bug: must force compositing because cairo-traps-compositor will not work with text first.\n this._context.globalAlpha = 0.01;\n this._context.fillRect(0, 0, 0.01, 0.01);\n this._context.globalAlpha = 1.0;\n }\n if (renderInfo.cutSx || renderInfo.cutSy) {\n this._context.translate(-renderInfo.cutSx, -renderInfo.cutSy);\n }\n let linePositionX;\n let linePositionY;\n const drawLines = [];\n // Draw lines line by line.\n for (let i = 0, n = lines.length; i < n; i++) {\n linePositionX = i === 0 ? renderInfo.textIndent : 0;\n // By default, text is aligned to top\n linePositionY = i * renderInfo.lineHeight + renderInfo.offsetY;\n if (this._settings.verticalAlign == 'middle') {\n linePositionY += (renderInfo.lineHeight - renderInfo.fontSize) / 2;\n }\n else if (this._settings.verticalAlign == 'bottom') {\n linePositionY += renderInfo.lineHeight - renderInfo.fontSize;\n }\n if (this._settings.textAlign === 'right') {\n linePositionX += renderInfo.innerWidth - lineWidths[i];\n }\n else if (this._settings.textAlign === 'center') {\n linePositionX += (renderInfo.innerWidth - lineWidths[i]) / 2;\n }\n linePositionX += renderInfo.paddingLeft;\n drawLines.push({\n text: lines[i],\n x: linePositionX,\n y: linePositionY,\n w: lineWidths[i],\n });\n }\n // Highlight.\n if (this._settings.highlight) {\n const color = this._settings.highlightColor;\n const hlHeight = this._settings.highlightHeight * precision || renderInfo.fontSize * 1.5;\n const offset = this._settings.highlightOffset * precision;\n const hlPaddingLeft = this._settings.highlightPaddingLeft !== null\n ? this._settings.highlightPaddingLeft * precision\n : renderInfo.paddingLeft;\n const hlPaddingRight = this._settings.highlightPaddingRight !== null\n ? this._settings.highlightPaddingRight * precision\n : renderInfo.paddingRight;\n this._context.fillStyle = getRgbaString(color);\n for (let i = 0; i < drawLines.length; i++) {\n const drawLine = drawLines[i];\n this._context.fillRect(drawLine.x - hlPaddingLeft, drawLine.y - renderInfo.offsetY + offset, drawLine.w + hlPaddingRight + hlPaddingLeft, hlHeight);\n }\n }\n // Text shadow.\n let prevShadowSettings = null;\n if (this._settings.shadow) {\n prevShadowSettings = [\n this._context.shadowColor,\n this._context.shadowOffsetX,\n this._context.shadowOffsetY,\n this._context.shadowBlur,\n ];\n this._context.shadowColor = getRgbaString(this._settings.shadowColor);\n this._context.shadowOffsetX = this._settings.shadowOffsetX * precision;\n this._context.shadowOffsetY = this._settings.shadowOffsetY * precision;\n this._context.shadowBlur = this._settings.shadowBlur * precision;\n }\n this._context.fillStyle = getRgbaString(this._settings.textColor);\n for (let i = 0, n = drawLines.length; i < n; i++) {\n const drawLine = drawLines[i];\n if (renderInfo.letterSpacing === 0) {\n this._context.fillText(drawLine.text, drawLine.x, drawLine.y);\n }\n else {\n const textSplit = drawLine.text.split('');\n let x = drawLine.x;\n for (let i = 0, j = textSplit.length; i < j; i++) {\n this._context.fillText(textSplit[i], x, drawLine.y);\n x += this.measureText(textSplit[i], renderInfo.letterSpacing);\n }\n }\n }\n if (prevShadowSettings) {\n this._context.shadowColor = prevShadowSettings[0];\n this._context.shadowOffsetX = prevShadowSettings[1];\n this._context.shadowOffsetY = prevShadowSettings[2];\n this._context.shadowBlur = prevShadowSettings[3];\n }\n if (renderInfo.cutSx || renderInfo.cutSy) {\n this._context.translate(renderInfo.cutSx, renderInfo.cutSy);\n }\n this.renderInfo = renderInfo;\n }\n wrapWord(word, wordWrapWidth, suffix) {\n const suffixWidth = this._context.measureText(suffix).width;\n const wordLen = word.length;\n const wordWidth = this._context.measureText(word).width;\n /* If word fits wrapWidth, do nothing */\n if (wordWidth <= wordWrapWidth) {\n return word;\n }\n /* Make initial guess for text cuttoff */\n let cutoffIndex = Math.floor((wordWrapWidth * wordLen) / wordWidth);\n let truncWordWidth = this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n /* In case guess was overestimated, shrink it letter by letter. */\n if (truncWordWidth > wordWrapWidth) {\n while (cutoffIndex > 0) {\n truncWordWidth =\n this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n if (truncWordWidth > wordWrapWidth) {\n cutoffIndex -= 1;\n }\n else {\n break;\n }\n }\n /* In case guess was underestimated, extend it letter by letter. */\n }\n else {\n while (cutoffIndex < wordLen) {\n truncWordWidth =\n this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n if (truncWordWidth < wordWrapWidth) {\n cutoffIndex += 1;\n }\n else {\n // Finally, when bound is crossed, retract last letter.\n cutoffIndex -= 1;\n break;\n }\n }\n }\n /* If wrapWidth is too short to even contain suffix alone, return empty string */\n return (word.substring(0, cutoffIndex) +\n (wordWrapWidth >= suffixWidth ? suffix : ''));\n }\n /**\n * Applies newlines to a string to have it optimally fit into the horizontal\n * bounds set by the Text object's wordWrapWidth property.\n */\n wrapText(text, wordWrapWidth, letterSpacing, indent = 0) {\n // Greedy wrapping algorithm that will wrap words as the line grows longer.\n // than its horizontal bounds.\n const lines = text.split(/\\r?\\n/g);\n let allLines = [];\n const realNewlines = [];\n for (let i = 0; i < lines.length; i++) {\n const resultLines = [];\n let result = '';\n let spaceLeft = wordWrapWidth - indent;\n const words = lines[i].split(' ');\n for (let j = 0; j < words.length; j++) {\n const wordWidth = this.measureText(words[j], letterSpacing);\n const wordWidthWithSpace = wordWidth + this.measureText(' ', letterSpacing);\n if (j === 0 || wordWidthWithSpace > spaceLeft) {\n // Skip printing the newline if it's the first word of the line that is.\n // greater than the word wrap width.\n if (j > 0) {\n resultLines.push(result);\n result = '';\n }\n result += words[j];\n spaceLeft = wordWrapWidth - wordWidth - (j === 0 ? indent : 0);\n }\n else {\n spaceLeft -= wordWidthWithSpace;\n result += ` ${words[j]}`;\n }\n }\n resultLines.push(result);\n result = '';\n allLines = allLines.concat(resultLines);\n if (i < lines.length - 1) {\n realNewlines.push(allLines.length);\n }\n }\n return { l: allLines, n: realNewlines };\n }\n measureText(word, space = 0) {\n if (!space) {\n return this._context.measureText(word).width;\n }\n return word.split('').reduce((acc, char) => {\n return acc + this._context.measureText(char).width + space;\n }, 0);\n }\n mergeDefaults(settings) {\n return {\n text: '',\n w: 0,\n h: 0,\n fontStyle: 'normal',\n fontSize: 40,\n fontFace: null,\n wordWrap: true,\n wordWrapWidth: 0,\n wordBreak: false,\n textOverflow: '',\n lineHeight: null,\n textBaseline: 'alphabetic',\n textAlign: 'left',\n verticalAlign: 'top',\n offsetY: null,\n maxLines: 0,\n overflowSuffix: '...',\n textColor: [1.0, 1.0, 1.0, 1.0],\n paddingLeft: 0,\n paddingRight: 0,\n shadow: false,\n shadowColor: [0.0, 0.0, 0.0, 1.0],\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowBlur: 5,\n highlight: false,\n highlightHeight: 0,\n highlightColor: [0.0, 0.0, 0.0, 1.0],\n highlightOffset: 0,\n highlightPaddingLeft: 0,\n highlightPaddingRight: 0,\n letterSpacing: 0,\n textIndent: 0,\n cutSx: 0,\n cutEx: 0,\n cutSy: 0,\n cutEy: 0,\n advancedRenderer: false,\n fontBaselineRatio: 0,\n precision: 1,\n textRenderIssueMargin: 0,\n ...settings,\n };\n }\n}\n//# sourceMappingURL=LightningTextTextureRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../../common/EventEmitter.js';\nimport { assertTruthy, mergeColorAlphaPremultiplied } from '../../../utils.js';\nimport { intersectRect, intersectBound, getNormalizedRgbaComponents, getNormalizedAlphaComponent, createBound, } from '../../lib/utils.js';\nimport { WebTrFontFace } from '../font-face-types/WebTrFontFace.js';\nimport { LightningTextTextureRenderer, } from './LightningTextTextureRenderer.js';\nimport { TextRenderer, } from './TextRenderer.js';\nconst resolvedGlobal = typeof self === 'undefined' ? globalThis : self;\n/**\n * Global font set regardless of if run in the main thread or a web worker\n */\nconst globalFontSet = (resolvedGlobal.document?.fonts ||\n resolvedGlobal.fonts);\nfunction getFontCssString(props) {\n const { fontFamily, fontStyle, fontWeight, fontStretch, fontSize } = props;\n return [fontStyle, fontWeight, fontStretch, `${fontSize}px`, fontFamily].join(' ');\n}\n/**\n * Ephemeral bounds object used for intersection calculations\n *\n * @remarks\n * Used to avoid creating a new object every time we need to intersect\n * element bounds.\n */\nconst tmpElementBounds = createBound(0, 0, 0, 0);\nexport class CanvasTextRenderer extends TextRenderer {\n canvas;\n context;\n rendererBounds;\n constructor(stage) {\n super(stage);\n if (typeof OffscreenCanvas !== 'undefined') {\n this.canvas = new OffscreenCanvas(0, 0);\n }\n else {\n this.canvas = document.createElement('canvas');\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n let context = this.canvas.getContext('2d');\n if (!context) {\n // A browser may appear to support OffscreenCanvas but not actually support the Canvas '2d' context\n // Here we try getting the context again after falling back to an HTMLCanvasElement.\n // See: https://github.com/lightning-js/renderer/issues/26#issuecomment-1750438486\n this.canvas = document.createElement('canvas');\n context = this.canvas.getContext('2d');\n }\n assertTruthy(context);\n this.context = context;\n this.rendererBounds = {\n x1: 0,\n y1: 0,\n x2: this.stage.options.appWidth,\n y2: this.stage.options.appHeight,\n };\n }\n //#region Overrides\n getPropertySetters() {\n return {\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n text: (state, value) => {\n state.props.text = value;\n this.invalidateLayoutCache(state);\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n this.invalidateLayoutCache(state);\n },\n color: (state, value) => {\n state.props.color = value;\n this.invalidateLayoutCache(state);\n },\n x: (state, value) => {\n state.props.x = value;\n this.invalidateVisibleWindowCache(state);\n },\n y: (state, value) => {\n state.props.y = value;\n this.invalidateVisibleWindowCache(state);\n },\n contain: (state, value) => {\n state.props.contain = value;\n this.invalidateLayoutCache(state);\n },\n width: (state, value) => {\n state.props.width = value;\n // Only invalidate layout cache if we're containing in the horizontal direction\n if (state.props.contain !== 'none') {\n this.invalidateLayoutCache(state);\n }\n },\n height: (state, value) => {\n state.props.height = value;\n // Only invalidate layout cache if we're containing in the vertical direction\n if (state.props.contain === 'both') {\n this.invalidateLayoutCache(state);\n }\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n this.invalidateLayoutCache(state);\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n this.invalidateLayoutCache(state);\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n this.invalidateLayoutCache(state);\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n this.invalidateLayoutCache(state);\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n this.invalidateLayoutCache(state);\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n this.invalidateLayoutCache(state);\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n this.invalidateLayoutCache(state);\n },\n // debug: (state, value) => {\n // state.props.debug = value;\n // },\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n canRenderFont(props) {\n // The canvas renderer can render any font because it automatically\n // falls back to system fonts. The CanvasTextRenderer should be\n // checked last if other renderers are preferred.\n return true;\n }\n isFontFaceSupported(fontFace) {\n return fontFace instanceof WebTrFontFace;\n }\n addFontFace(fontFace) {\n // Make sure the font face is an Canvas font face (it should have already passed\n // the `isFontFaceSupported` check)\n assertTruthy(fontFace instanceof WebTrFontFace);\n // We simply add the font face to the document\n // @ts-expect-error `add()` method should be available from a FontFaceSet\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n globalFontSet.add(fontFace.fontFace);\n }\n createState(props) {\n return {\n props,\n status: 'initialState',\n updateScheduled: false,\n emitter: new EventEmitter(),\n canvasPages: undefined,\n lightning2TextRenderer: new LightningTextTextureRenderer(this.canvas, this.context),\n renderWindow: undefined,\n visibleWindow: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n valid: false,\n },\n renderInfo: undefined,\n forceFullLayoutCalc: false,\n textW: 0,\n textH: 0,\n fontInfo: undefined,\n fontFaceLoadedHandler: undefined,\n isRenderable: false,\n debugData: {\n updateCount: 0,\n layoutCount: 0,\n drawCount: 0,\n lastLayoutNumCharacters: 0,\n layoutSum: 0,\n drawSum: 0,\n bufferSize: 0,\n },\n };\n }\n updateState(state) {\n // On the first update call we need to set the status to loading\n if (state.status === 'initialState') {\n this.setStatus(state, 'loading');\n }\n // If fontInfo is invalid, we need to establish it\n if (!state.fontInfo) {\n const cssString = getFontCssString(state.props);\n state.fontInfo = {\n cssString: cssString,\n // TODO: For efficiency we would use this here but it's not reliable on WPE -> document.fonts.check(cssString),\n loaded: false,\n };\n // If font is not loaded, set up a handler to update the font info when the font loads\n if (!state.fontInfo.loaded) {\n globalFontSet\n .load(cssString)\n .then(this.onFontLoaded.bind(this, state, cssString))\n .catch(this.onFontLoadError.bind(this, state, cssString));\n return;\n }\n }\n // If we're waiting for a font face to load, don't render anything\n if (!state.fontInfo.loaded) {\n return;\n }\n if (!state.renderInfo) {\n const maxLines = state.props.maxLines;\n const containedMaxLines = state.props.contain === 'both'\n ? Math.floor((state.props.height - state.props.offsetY) /\n state.props.lineHeight)\n : 0;\n const calcMaxLines = containedMaxLines > 0 && maxLines > 0\n ? Math.min(containedMaxLines, maxLines)\n : Math.max(containedMaxLines, maxLines);\n state.lightning2TextRenderer.settings = {\n text: state.props.text,\n textAlign: state.props.textAlign,\n fontFace: state.props.fontFamily,\n fontSize: state.props.fontSize,\n fontStyle: [\n state.props.fontStretch,\n state.props.fontStyle,\n state.props.fontWeight,\n ].join(' '),\n textColor: getNormalizedRgbaComponents(state.props.color),\n offsetY: state.props.fontSize + state.props.offsetY,\n wordWrap: state.props.contain !== 'none',\n wordWrapWidth: state.props.contain === 'none' ? undefined : state.props.width,\n letterSpacing: state.props.letterSpacing,\n lineHeight: state.props.lineHeight,\n maxLines: calcMaxLines,\n textBaseline: state.props.textBaseline,\n verticalAlign: state.props.verticalAlign,\n overflowSuffix: state.props.overflowSuffix,\n };\n // const renderInfoCalculateTime = performance.now();\n state.renderInfo = state.lightning2TextRenderer.calculateRenderInfo();\n // console.log(\n // 'Render info calculated in',\n // performance.now() - renderInfoCalculateTime,\n // 'ms',\n // );\n state.textH = state.renderInfo.lineHeight * state.renderInfo.lines.length;\n state.textW = state.renderInfo.width;\n // Invalidate renderWindow because the renderInfo changed\n state.renderWindow = undefined;\n }\n const { x, y, width, height, scrollY, contain } = state.props;\n const { visibleWindow } = state;\n let { renderWindow, canvasPages } = state;\n if (!visibleWindow.valid) {\n // Figure out whats actually in the bounds of the renderer/canvas (visibleWindow)\n const elementBounds = createBound(x, y, contain !== 'none' ? x + width : Infinity, contain === 'both' ? y + height : Infinity, tmpElementBounds);\n /**\n * Area that is visible on the screen.\n */\n intersectBound(this.rendererBounds, elementBounds, visibleWindow);\n visibleWindow.valid = true;\n }\n const visibleWindowHeight = visibleWindow.y2 - visibleWindow.y1;\n const maxLinesPerCanvasPage = Math.ceil(visibleWindowHeight / state.renderInfo.lineHeight);\n if (visibleWindowHeight === 0) {\n // Nothing to render. Clear any canvasPages and existing renderWindow\n // Return early.\n canvasPages = undefined;\n renderWindow = undefined;\n this.setStatus(state, 'loaded');\n return;\n }\n else if (renderWindow && canvasPages) {\n // Return early if we're still viewing inside the established render window\n // No need to re-render what we've already rendered\n const renderWindowScreenX1 = x + renderWindow.x1;\n const renderWindowScreenY1 = y - scrollY + renderWindow.y1;\n const renderWindowScreenX2 = x + renderWindow.x2;\n const renderWindowScreenY2 = y - scrollY + renderWindow.y2;\n if (renderWindowScreenX1 <= visibleWindow.x1 &&\n renderWindowScreenX2 >= visibleWindow.x2 &&\n renderWindowScreenY1 <= visibleWindow.y1 &&\n renderWindowScreenY2 >= visibleWindow.y2) {\n this.setStatus(state, 'loaded');\n return;\n }\n if (renderWindowScreenY2 < visibleWindow.y2) {\n // We've scrolled up, so we need to render the next page\n renderWindow.y1 += maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n renderWindow.y2 += maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n canvasPages.push(canvasPages.shift());\n canvasPages[2].lineNumStart =\n canvasPages[1].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[2].lineNumEnd =\n canvasPages[2].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[2].valid = false;\n }\n else if (renderWindowScreenY1 > visibleWindow.y1) {\n // We've scrolled down, so we need to render the previous page\n renderWindow.y1 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n renderWindow.y2 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n canvasPages.unshift(canvasPages.pop());\n canvasPages[0].lineNumStart =\n canvasPages[1].lineNumStart - maxLinesPerCanvasPage;\n canvasPages[0].lineNumEnd =\n canvasPages[0].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[0].valid = false;\n }\n }\n else {\n const pageHeight = state.renderInfo.lineHeight * maxLinesPerCanvasPage;\n const page1Block = Math.ceil(scrollY / pageHeight);\n const page1LineStart = page1Block * maxLinesPerCanvasPage;\n const page0LineStart = page1LineStart - maxLinesPerCanvasPage;\n const page2LineStart = page1LineStart + maxLinesPerCanvasPage;\n // We haven't rendered anything yet, so we need to render the first page\n // If canvasPages already exist, let's re-use the textures\n canvasPages = [\n {\n texture: canvasPages?.[0].texture,\n lineNumStart: page0LineStart,\n lineNumEnd: page0LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n {\n texture: canvasPages?.[1].texture,\n lineNumStart: page1LineStart,\n lineNumEnd: page1LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n {\n texture: canvasPages?.[2].texture,\n lineNumStart: page2LineStart,\n lineNumEnd: page2LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n ];\n state.canvasPages = canvasPages;\n const scrollYNearestPage = page1Block * pageHeight;\n renderWindow = {\n x1: 0,\n y1: scrollYNearestPage - pageHeight,\n x2: width,\n y2: scrollYNearestPage + pageHeight * 2,\n };\n }\n state.renderWindow = renderWindow;\n const pageDrawTime = performance.now();\n for (const pageInfo of canvasPages) {\n if (pageInfo.valid)\n continue;\n if (pageInfo.lineNumStart < 0) {\n pageInfo.texture?.setRenderableOwner(state, false);\n pageInfo.texture = this.stage.txManager.loadTexture('ImageTexture', {\n src: '',\n });\n pageInfo.texture.setRenderableOwner(state, state.isRenderable);\n pageInfo.valid = true;\n continue;\n }\n state.lightning2TextRenderer.draw(state.renderInfo, {\n lines: state.renderInfo.lines.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd),\n lineWidths: state.renderInfo.lineWidths.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd),\n });\n if (!(this.canvas.width === 0 || this.canvas.height === 0)) {\n pageInfo.texture?.setRenderableOwner(state, false);\n pageInfo.texture = this.stage.txManager.loadTexture('ImageTexture', {\n src: this.context.getImageData(0, 0, this.canvas.width, this.canvas.height),\n }, {\n preload: true,\n });\n pageInfo.texture.setRenderableOwner(state, state.isRenderable);\n }\n pageInfo.valid = true;\n }\n // console.log('pageDrawTime', performance.now() - pageDrawTime, 'ms');\n // Report final status\n this.setStatus(state, 'loaded');\n }\n renderQuads(state, transform, clippingRect, alpha) {\n const { stage } = this;\n const { canvasPages, textW = 0, textH = 0, renderWindow } = state;\n if (!canvasPages || !renderWindow)\n return;\n const { x, y, scrollY, contain, width, height /*, debug*/ } = state.props;\n const elementRect = {\n x: x,\n y: y,\n width: contain !== 'none' ? width : textW,\n height: contain === 'both' ? height : textH,\n };\n const visibleRect = intersectRect({\n x: 0,\n y: 0,\n width: stage.options.appWidth,\n height: stage.options.appHeight,\n }, elementRect);\n // if (!debug.disableScissor) {\n // renderer.enableScissor(\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n assertTruthy(canvasPages, 'canvasPages is not defined');\n assertTruthy(renderWindow, 'renderWindow is not defined');\n const renderWindowHeight = renderWindow.y2 - renderWindow.y1;\n const pageSize = renderWindowHeight / 3.0;\n const { zIndex, color } = state.props;\n // Color alpha of text is not properly rendered to the Canvas texture, so we\n // need to apply it here.\n const combinedAlpha = alpha * getNormalizedAlphaComponent(color);\n const quadColor = mergeColorAlphaPremultiplied(0xffffffff, combinedAlpha);\n if (canvasPages[0].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[0].texture?.dimensions?.width || 0,\n height: canvasPages[0].texture?.dimensions?.height || 0,\n texture: canvasPages[0].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n if (canvasPages[1].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[1].texture?.dimensions?.width || 0,\n height: canvasPages[1].texture?.dimensions?.height || 0,\n texture: canvasPages[1].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1 + pageSize,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n if (canvasPages[2].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[2].texture?.dimensions?.width || 0,\n height: canvasPages[2].texture?.dimensions?.height || 0,\n texture: canvasPages[2].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1 + pageSize + pageSize,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n // renderer.disableScissor();\n // if (debug.showElementRect) {\n // this.renderer.drawBorder(\n // Colors.Blue,\n // elementRect.x,\n // elementRect.y,\n // elementRect.w,\n // elementRect.h,\n // );\n // }\n // if (debug.showVisibleRect) {\n // this.renderer.drawBorder(\n // Colors.Green,\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // if (debug.showRenderWindow && renderWindow) {\n // this.renderer.drawBorder(\n // Colors.Red,\n // x + renderWindow.x1,\n // y + renderWindow.y1 - scrollY,\n // x + renderWindow.x2 - (x + renderWindow.x1),\n // y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY),\n // );\n // }\n }\n setIsRenderable(state, renderable) {\n super.setIsRenderable(state, renderable);\n // Set state object owner from any canvas page textures\n state.canvasPages?.forEach((pageInfo) => {\n pageInfo.texture?.setRenderableOwner(state, renderable);\n });\n }\n destroyState(state) {\n // Remove state object owner from any canvas page textures\n state.canvasPages?.forEach((pageInfo) => {\n pageInfo.texture?.setRenderableOwner(state, false);\n });\n }\n //#endregion Overrides\n /**\n * Invalidate the visible window stored in the state. This will cause a new\n * visible window to be calculated on the next update.\n *\n * @param state\n */\n invalidateVisibleWindowCache(state) {\n state.visibleWindow.valid = false;\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n /**\n * Invalidate the layout cache stored in the state. This will cause the text\n * to be re-layed out on the next update.\n *\n * @remarks\n * This also invalidates the visible window cache.\n *\n * @param state\n */\n invalidateLayoutCache(state) {\n state.renderInfo = undefined;\n state.visibleWindow.valid = false;\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n onFontLoaded(state, cssString) {\n if (cssString !== state.fontInfo?.cssString || !state.fontInfo) {\n return;\n }\n state.fontInfo.loaded = true;\n this.scheduleUpdateState(state);\n }\n onFontLoadError(state, cssString, error) {\n if (cssString !== state.fontInfo?.cssString || !state.fontInfo) {\n return;\n }\n // Font didn't actually load, but we'll log the error and mark it as loaded\n // because the browser can still render with a fallback font.\n state.fontInfo.loaded = true;\n console.error(`CanvasTextRenderer: Error loading font '${state.fontInfo.cssString}'`, error);\n this.scheduleUpdateState(state);\n }\n}\n//# sourceMappingURL=CanvasTextRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\nexport class DefaultShader extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2fv' },\n ],\n });\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio;\n vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);\n\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);\n gl_Position.y = -sign(screenSpace.y) * gl_Position.y;\n }\n `,\n fragment: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate);\n gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoordinate);\n }\n `,\n };\n}\n//# sourceMappingURL=DefaultShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\n// import type { Texture } from '../textures/Texture';\nexport class DefaultShaderBatched extends WebGlCoreShader {\n supportsIndexedTextures = true;\n constructor(renderer) {\n super({\n renderer,\n attributes: [\n 'a_position',\n 'a_textureCoordinate',\n 'a_color',\n 'a_textureIndex',\n ],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_textures[0]', uniform: 'uniform1iv' },\n ],\n });\n }\n bindTextures(texture) {\n const { renderer, glw } = this;\n if (texture.length > renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS) {\n throw new Error(`DefaultShaderBatched: Cannot bind more than ${renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS} textures`);\n }\n texture.forEach((t, i) => {\n glw.activeTexture(i);\n glw.bindTexture(t.ctxTexture);\n });\n const samplers = Array.from(Array(texture.length).keys());\n this.setUniform('u_textures[0]', samplers);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `,\n fragment: (textureUnits) => `\n #define txUnits ${textureUnits}\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_image;\n uniform sampler2D u_textures[txUnits];\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n vec4 sampleFromTexture(sampler2D textures[${textureUnits}], int idx, vec2 uv) {\n ${Array.from(Array(textureUnits).keys())\n .map((idx) => `\n ${idx !== 0 ? 'else ' : ''}if (idx == ${idx}) {\n return texture2D(textures[${idx}], uv);\n }\n `)\n .join('')}\n return texture2D(textures[0], uv);\n }\n\n void main(){\n gl_FragColor = vec4(v_color) * sampleFromTexture(u_textures, int(v_textureIndex), v_textureCoordinate);\n }\n `,\n };\n}\n//# sourceMappingURL=DefaultShaderBatched.js.map","import { WebGlCoreShader, } from '../WebGlCoreShader.js';\nimport { ShaderEffect } from './effects/ShaderEffect.js';\nimport memize from 'memize';\nconst effectCache = new Map();\nconst getResolvedEffect = (effects, effectContructors) => {\n const key = JSON.stringify(effects);\n if (effectCache.has(key)) {\n return effectCache.get(key);\n }\n const value = (effects ?? []).map((effect) => ({\n type: effect.type,\n props: effectContructors[effect.type].resolveDefaults((effect.props || {})),\n }));\n effectCache.set(key, value);\n return value;\n};\nexport class DynamicShader extends WebGlCoreShader {\n effects = [];\n constructor(renderer, props, effectContructors) {\n const shader = DynamicShader.createShader(props, effectContructors);\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2fv' },\n { name: 'u_dimensions', uniform: 'uniform2fv' },\n { name: 'u_alpha', uniform: 'uniform1f' },\n ...shader.uniforms,\n ],\n shaderSources: {\n vertex: shader.vertex,\n fragment: shader.fragment,\n },\n });\n this.effects = shader.effects;\n this.calculateProps = memize(this.calculateProps.bind(this));\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n calculateProps(effects) {\n const regEffects = this.renderer.shManager.getRegisteredEffects();\n const results = [];\n effects?.forEach((eff, index) => {\n const effect = this.effects[index];\n const fxClass = regEffects[effect.name];\n const props = eff.props ?? {};\n const uniInfo = effect.uniformInfo;\n Object.keys(props).forEach((p) => {\n const fxProp = fxClass.uniforms[p];\n const propInfo = uniInfo[p];\n let value = fxProp.validator\n ? fxProp.validator(props[p], props)\n : props[p];\n if (Array.isArray(value)) {\n value = new Float32Array(value);\n }\n results.push({ name: propInfo.name, value });\n });\n });\n return results;\n }\n bindProps(props) {\n const results = this.calculateProps(props.effects);\n results.forEach((r) => {\n this.setUniform(r.name, r.value);\n });\n }\n canBatchShaderProps(propsA, propsB) {\n if (propsA.$dimensions.width !== propsB.$dimensions.width ||\n propsA.$dimensions.height !== propsB.$dimensions.height ||\n propsA.effects.length !== propsB.effects.length) {\n return false;\n }\n const propsEffectsLen = propsA.effects.length;\n let i = 0;\n for (; i < propsEffectsLen; i++) {\n const effectA = propsA.effects[i];\n const effectB = propsB.effects[i];\n if (effectA.type !== effectB.type) {\n return false;\n }\n for (const key in effectA.props) {\n if ((effectB.props && !effectB.props[key]) ||\n effectA.props[key] !== effectB.props[key]) {\n return false;\n }\n }\n }\n return true;\n }\n static createShader(props, effectContructors) {\n //counts duplicate effects\n const effectNameCount = {};\n const methods = {};\n let declareUniforms = '';\n const uniforms = [];\n const uFx = [];\n const effects = props.effects.map((effect) => {\n const baseClass = effectContructors[effect.type];\n const key = baseClass.getEffectKey(effect.props || {});\n effectNameCount[key] = effectNameCount[key] ? ++effectNameCount[key] : 1;\n const nr = effectNameCount[key];\n if (nr === 1) {\n uFx.push({ key, type: effect.type, props: effect.props });\n }\n //initialize new effect class;\n const fxClass = new baseClass({\n ref: `${key}${nr === 1 ? '' : nr}`,\n target: key,\n props: effect.props,\n });\n declareUniforms += fxClass.declaredUniforms;\n uniforms.push(...Object.values(fxClass.uniformInfo));\n return fxClass;\n });\n //build source\n let effectMethods = '';\n uFx?.forEach((fx) => {\n const fxClass = effectContructors[fx.type];\n const fxProps = fxClass.resolveDefaults((fx.props ?? {}));\n const remap = [];\n for (const m in fxClass.methods) {\n let cm = m;\n const fxMethod = fxClass.methods[m];\n if (methods[m] && methods[m] !== fxMethod) {\n cm = DynamicShader.resolveMethodDuplicate(m, fxMethod, methods);\n }\n methods[cm] = fxMethod.replace('function', cm);\n remap.push({ m, cm });\n }\n let onShaderMask = fxClass.onShaderMask instanceof Function\n ? fxClass.onShaderMask(fxProps)\n : fxClass.onShaderMask;\n let onColorize = fxClass.onColorize instanceof Function\n ? fxClass.onColorize(fxProps)\n : fxClass.onColorize;\n let onEffectMask = fxClass.onEffectMask instanceof Function\n ? fxClass.onEffectMask(fxProps)\n : fxClass.onEffectMask;\n remap.forEach((r) => {\n const { m, cm } = r;\n const reg = new RegExp(`\\\\$${m}`, 'g');\n if (onShaderMask) {\n onShaderMask = onShaderMask.replace(reg, cm);\n }\n if (onColorize) {\n onColorize = onColorize.replace(reg, cm);\n }\n if (onEffectMask) {\n onEffectMask = onEffectMask.replace(reg, cm);\n }\n });\n const methodParameters = fxClass.getMethodParameters(fxClass.uniforms, fxProps);\n const pm = methodParameters.length > 0 ? `, ${methodParameters}` : '';\n if (onShaderMask) {\n effectMethods += `\n float fx_${fx.key}_onShaderMask(float shaderMask ${pm}) {\n ${onShaderMask}\n }\n `;\n }\n if (onColorize) {\n effectMethods += `\n vec4 fx_${fx.key}_onColorize(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {\n ${onColorize}\n }\n `;\n }\n if (onEffectMask) {\n effectMethods += `\n vec4 fx_${fx.key}_onEffectMask(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {\n ${onEffectMask}\n }\n `;\n }\n });\n let sharedMethods = '';\n for (const m in methods) {\n sharedMethods += methods[m];\n }\n //fill main functions\n let currentMask = `mix(shaderColor, maskColor, clamp(-(lng_DefaultMask), 0.0, 1.0))`;\n let drawEffects = `\n\n `;\n for (let i = 0; i < effects.length; i++) {\n const current = effects[i];\n const pm = current.passParameters.length > 0 ? `, ${current.passParameters}` : '';\n const currentClass = effectContructors[current.name];\n if (currentClass.onShaderMask) {\n drawEffects += `\n shaderMask = fx_${current.target}_onShaderMask(shaderMask ${pm});\n `;\n }\n if (currentClass.onColorize) {\n drawEffects += `\n maskColor = fx_${current.target}_onColorize(shaderMask, maskColor, shaderColor${pm});\n `;\n }\n if (currentClass.onEffectMask) {\n currentMask = `fx_${current.target}_onEffectMask(shaderMask, maskColor, shaderColor${pm})`;\n }\n const next = effects[i + 1];\n if (next === undefined ||\n effectContructors[next.name].onEffectMask) {\n drawEffects += `\n shaderColor = ${currentMask};\n `;\n }\n }\n return {\n effects,\n uniforms,\n fragment: DynamicShader.fragment(declareUniforms, sharedMethods, effectMethods, drawEffects),\n vertex: DynamicShader.vertex(),\n };\n }\n static resolveMethodDuplicate(key, effectMethod, methodCollection, increment = 0) {\n const m = key + (increment > 0 ? increment : '');\n if (methodCollection[m] && methodCollection[m] !== effectMethod) {\n return this.resolveMethodDuplicate(key, effectMethod, methodCollection, ++increment);\n }\n return m;\n }\n static resolveDefaults(props, effectContructors) {\n return {\n effects: getResolvedEffect(props.effects, effectContructors),\n $dimensions: {\n width: 0,\n height: 0,\n },\n $alpha: 0,\n };\n }\n static makeCacheKey(props, effectContructors) {\n let fx = '';\n props.effects?.forEach((effect) => {\n const baseClass = effectContructors[effect.type];\n const key = baseClass.getEffectKey(effect.props || {});\n fx += `,${key}`;\n });\n return `DynamicShader${fx}`;\n }\n static z$__type__Props;\n static vertex = () => `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `;\n static fragment = (uniforms, methods, effectMethods, drawEffects) => `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n #define PI 3.14159265359\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_alpha;\n uniform float u_radius;\n uniform sampler2D u_texture;\n uniform float u_pixelRatio;\n\n ${uniforms}\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n ${methods}\n\n ${effectMethods}\n\n void main() {\n vec2 p = v_textureCoordinate.xy * u_dimensions - u_dimensions * 0.5;\n vec2 d = abs(p) - (u_dimensions) * 0.5;\n float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n\n vec4 shaderColor = vec4(0.0);\n float shaderMask = lng_DefaultMask;\n\n vec4 maskColor = texture2D(u_texture, v_textureCoordinate) * v_color;\n\n shaderColor = mix(shaderColor, maskColor, clamp(-(lng_DefaultMask + 0.5), 0.0, 1.0));\n\n ${drawEffects}\n\n gl_FragColor = shaderColor * u_alpha;\n }\n `;\n}\n//# sourceMappingURL=DynamicShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader, } from '../WebGlCoreShader.js';\n/**\n * Similar to the {@link DefaultShader} but cuts out 4 rounded rectangle corners\n * as defined by the specified corner {@link RoundedRectangleProps.radius}\n */\nexport class RoundedRectangle extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2f' },\n { name: 'u_dimensions', uniform: 'uniform2fv' },\n { name: 'u_radius', uniform: 'uniform1f' },\n ],\n });\n }\n static z$__type__Props;\n static resolveDefaults(props) {\n return {\n radius: props.radius || 10,\n $dimensions: {\n width: 0,\n height: 0,\n },\n };\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n bindProps(props) {\n this.setUniform('u_radius', props.radius);\n }\n canBatchShaderProps(propsA, propsB) {\n return (propsA.radius === propsB.radius &&\n propsA.$dimensions.width === propsB.$dimensions.width &&\n propsA.$dimensions.height === propsB.$dimensions.height);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `,\n fragment: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_radius;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n float boxDist(vec2 p, vec2 size, float radius){\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n\n float fillMask(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color;\n vec2 halfDimensions = u_dimensions * 0.5;\n\n float d = boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);\n gl_FragColor = mix(vec4(0.0), color, fillMask(d));\n }\n `,\n };\n}\n//# sourceMappingURL=RoundedRectangle.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../lib/utils.js';\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\nconst IDENTITY_MATRIX_3x3 = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n/**\n * SdfShader supports multi-channel and single-channel signed distance field textures.\n *\n * @remarks\n * This Shader is used by the {@link SdfTextRenderer}. Do not use thie Shader\n * directly. Instead create a Text Node and assign a SDF font family to it.\n *\n * @internalRemarks\n * The only thing this shader does to support multi-channel SDFs is to\n * add a median function to the fragment shader. If this one function call\n * ends up being a performance bottleneck we can always look at ways to\n * remove it.\n */\nexport class SdfShader extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_transform', uniform: 'uniformMatrix3fv' },\n { name: 'u_scrollY', uniform: 'uniform1f' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2f' },\n { name: 'u_color', uniform: 'uniform4fv' },\n { name: 'u_size', uniform: 'uniform1f' },\n { name: 'u_distanceRange', uniform: 'uniform1f' },\n { name: 'u_debug', uniform: 'uniform1i' },\n ],\n });\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n bindProps(props) {\n const resolvedProps = SdfShader.resolveDefaults(props);\n for (const key in resolvedProps) {\n if (key === 'transform') {\n this.setUniform('u_transform', false, resolvedProps[key]);\n }\n else if (key === 'scrollY') {\n this.setUniform('u_scrollY', resolvedProps[key]);\n }\n else if (key === 'color') {\n const components = getNormalizedRgbaComponents(resolvedProps.color);\n this.setUniform('u_color', components);\n }\n else if (key === 'size') {\n this.setUniform('u_size', resolvedProps[key]);\n }\n else if (key === 'distanceRange') {\n this.setUniform('u_distanceRange', resolvedProps[key]);\n }\n else if (key === 'debug') {\n this.setUniform('u_debug', resolvedProps[key] ? 1.0 : 0.0);\n }\n }\n }\n static resolveDefaults(props = {}) {\n return {\n transform: props.transform ?? IDENTITY_MATRIX_3x3,\n scrollY: props.scrollY ?? 0,\n color: props.color ?? 0xffffffff,\n size: props.size ?? 16,\n distanceRange: props.distanceRange ?? 1.0,\n debug: props.debug ?? false,\n };\n }\n static shaderSources = {\n vertex: `\n // an attribute is an input (in) to a vertex shader.\n // It will receive data from a buffer\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n\n uniform vec2 u_resolution;\n uniform mat3 u_transform;\n uniform float u_scrollY;\n uniform float u_pixelRatio;\n uniform float u_size;\n\n varying vec2 v_texcoord;\n\n void main() {\n vec2 scrolledPosition = a_position * u_size - vec2(0, u_scrollY);\n vec2 transformedPosition = (u_transform * vec3(scrolledPosition, 1)).xy;\n\n // Calculate screen space with pixel ratio\n vec2 screenSpace = (transformedPosition * u_pixelRatio / u_resolution * 2.0 - 1.0) * vec2(1, -1);\n\n gl_Position = vec4(screenSpace, 0.0, 1.0);\n v_texcoord = a_textureCoordinate;\n\n }\n `,\n fragment: `\n precision highp float;\n\n uniform vec4 u_color;\n uniform sampler2D u_texture;\n uniform float u_distanceRange;\n uniform float u_pixelRatio;\n uniform int u_debug;\n\n varying vec2 v_texcoord;\n\n float median(float r, float g, float b) {\n return max(min(r, g), min(max(r, g), b));\n }\n\n void main() {\n vec3 sample = texture2D(u_texture, v_texcoord).rgb;\n if (u_debug == 1) {\n gl_FragColor = vec4(sample.r, sample.g, sample.b, 1.0);\n return;\n }\n float scaledDistRange = u_distanceRange * u_pixelRatio;\n float sigDist = scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);\n float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_color.a;\n\n // Build the final color.\n // IMPORTANT: We must premultiply the color by the alpha value before returning it.\n gl_FragColor = vec4(u_color.r * opacity, u_color.g * opacity, u_color.b * opacity, opacity);\n }\n `,\n };\n}\n//# sourceMappingURL=SdfShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Masks the current maskcolor with rounded corners similar to {@link RoundedRectangle}\n */\nexport class RadiusEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radius';\n static getEffectKey() {\n return `radius`;\n }\n static uniforms = {\n radius: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n boxDist: `\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n `,\n };\n static resolveDefaults(props) {\n return {\n radius: props.radius ?? 10,\n };\n }\n static onShaderMask = `\n vec2 halfDimensions = u_dimensions * 0.5;\n float r = radius[0] * step(v_textureCoordinate.x, 0.5) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[1] * step(0.5, v_textureCoordinate.x) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[2] * step(0.5, v_textureCoordinate.x) * step(0.5, v_textureCoordinate.y);\n r = r + radius[3] * step(v_textureCoordinate.x, 0.5) * step(0.5, v_textureCoordinate.y);\n return $boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions, r);\n `;\n static onEffectMask = `\n return mix(vec4(0.0), maskColor, $fillMask(shaderMask));\n `;\n}\n//# sourceMappingURL=RadiusEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderEffect renders a border along all edges of an element\n */\nexport class BorderEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'border';\n static getEffectKey() {\n return `border`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static onEffectMask = `\n float mask = clamp(shaderMask + width, 0.0, 1.0) - clamp(shaderMask, 0.0, 1.0);\n return mix(shaderColor, mix(shaderColor, maskColor, maskColor.a), mask);\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Linear Gradient effect over a effect mask\n */\nexport class LinearGradientEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'linearGradient';\n static getEffectKey(props) {\n return `linearGradient${props.colors.length}`;\n }\n static resolveDefaults(props) {\n const colors = props.colors ?? [0xff000000, 0xffffffff];\n let stops = props.stops || [];\n if (stops.length === 0 || stops.length !== colors.length) {\n const colorsL = colors.length;\n let i = 0;\n const tmp = stops;\n for (; i < colorsL; i++) {\n if (stops[i]) {\n tmp[i] = stops[i];\n if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {\n tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;\n }\n }\n else {\n tmp[i] = i * (1 / (colors.length - 1));\n }\n }\n stops = tmp;\n }\n return {\n colors,\n stops,\n angle: props.angle ?? 0,\n };\n }\n static uniforms = {\n angle: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n colors: {\n value: 0xffffffff,\n validator: (rgbas) => {\n const cols = rgbas.map((rgbas) => getNormalizedRgbaComponents(rgbas));\n return cols.reduce((acc, val) => acc.concat(val), []);\n },\n size: (props) => props.colors.length,\n method: 'uniform4fv',\n type: 'vec4',\n },\n stops: {\n value: [],\n size: (props) => props.colors.length,\n method: 'uniform1fv',\n type: 'float',\n },\n };\n static methods = {\n fromLinear: `\n vec4 function(vec4 linearRGB) {\n vec4 higher = vec4(1.055)*pow(linearRGB, vec4(1.0/2.4)) - vec4(0.055);\n vec4 lower = linearRGB * vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n `,\n toLinear: `\n vec4 function(vec4 sRGB) {\n vec4 higher = pow((sRGB + vec4(0.055))/vec4(1.055), vec4(2.4));\n vec4 lower = sRGB/vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n `,\n calcPoint: `\n vec2 function(float d, float angle) {\n return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);\n }\n `,\n };\n static ColorLoop = (amount) => {\n let loop = '';\n for (let i = 2; i < amount; i++) {\n loop += `colorOut = mix(colorOut, colors[${i}], clamp((dist - stops[${i - 1}]) / (stops[${i}] - stops[${i - 1}]), 0.0, 1.0));`;\n }\n return loop;\n };\n static onColorize = (props) => {\n const colors = props.colors.length || 1;\n return `\n float a = angle - (PI / 180.0 * 90.0);\n float lineDist = abs(u_dimensions.x * cos(a)) + abs(u_dimensions.y * sin(a));\n vec2 f = $calcPoint(lineDist * 0.5, a);\n vec2 t = $calcPoint(lineDist * 0.5, a + PI);\n vec2 gradVec = t - f;\n float dist = dot(v_textureCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = $fromLinear(mix($toLinear(colors[0]), $toLinear(colors[1]), stopCalc));\n ${this.ColorLoop(colors)}\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n `;\n };\n}\n//# sourceMappingURL=LinearGradientEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Grayscale effect grayscales the color values of the current mask color\n */\nexport class GrayscaleEffect extends ShaderEffect {\n name = 'grayscale';\n static getEffectKey() {\n return `grayscale`;\n }\n static resolveDefaults(props) {\n return {\n amount: props.amount ?? 1,\n };\n }\n static uniforms = {\n amount: {\n value: 1,\n method: 'uniform1f',\n type: 'float',\n },\n };\n static onColorize = `\n float grayness = 0.2 * maskColor.r + 0.6 * maskColor.g + 0.2 * maskColor.b;\n return vec4(amount * vec3(grayness) + (1.0 - amount) * maskColor.rgb, maskColor.a);\n `;\n}\n//# sourceMappingURL=GrayscaleEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the right side of an element\n */\nexport class BorderRightEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderRight';\n static getEffectKey() {\n return `borderRight`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderRightEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the top side of an element\n */\nexport class BorderTopEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderTop';\n static getEffectKey() {\n return `borderTop`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(0.0, width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderTopEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the bottom side of an element\n */\nexport class BorderBottomEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderBottom';\n static getEffectKey() {\n return `borderBottom`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(0.0, u_dimensions.y - width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderBottomEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the left of an element\n */\nexport class BorderLeftEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderLeft';\n static getEffectKey() {\n return `borderLeft`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderLeftEffect.js.map","import { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Renders a Glitch effect using the incoming texture\n */\nexport class GlitchEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'glitch';\n static getEffectKey(props) {\n return `glitch`;\n }\n static resolveDefaults(props) {\n return {\n amplitude: props.amplitude ?? 0.2,\n narrowness: props.narrowness ?? 4.0,\n blockiness: props.blockiness ?? 2.0,\n minimizer: props.minimizer ?? 8.0,\n time: props.time ?? Date.now(),\n };\n }\n static uniforms = {\n amplitude: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n narrowness: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n blockiness: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n minimizer: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n time: {\n value: 0,\n method: 'uniform1f',\n validator: (value) => {\n return (Date.now() - value) % 1000;\n },\n type: 'float',\n },\n };\n static methods = {\n rand: `\n float function(vec2 p, float time) {\n float t = floor(time * 20.) / 10.;\n return fract(sin(dot(p, vec2(t * 12.9898, t * 78.233))) * 43758.5453);\n }\n `,\n noise: `\n float function(vec2 uv, float blockiness, float time) {\n vec2 lv = fract(uv);\n vec2 id = floor(uv);\n\n float n1 = rand(id, time);\n float n2 = rand(id+vec2(1,0), time);\n float n3 = rand(id+vec2(0,1), time);\n float n4 = rand(id+vec2(1,1), time);\n vec2 u = smoothstep(0.0, 1.0 + blockiness, lv);\n return mix(mix(n1, n2, u.x), mix(n3, n4, u.x), u.y);\n }\n `,\n fbm: `\n float function(vec2 uv, int count, float blockiness, float complexity, float time) {\n float val = 0.0;\n float amp = 0.5;\n const int MAX_ITERATIONS = 10;\n\n for(int i = 0; i < MAX_ITERATIONS; i++) {\n if(i >= count) {break;}\n val += amp * noise(uv, blockiness, time);\n amp *= 0.5;\n uv *= complexity;\n }\n return val;\n }\n `,\n };\n static onColorize = `\n vec2 uv = v_textureCoordinate.xy;\n float aspect = u_dimensions.x / u_dimensions.y;\n vec2 a = vec2(uv.x * aspect , uv.y);\n vec2 uv2 = vec2(a.x / u_dimensions.x, exp(a.y));\n\n float shift = amplitude * pow($fbm(uv2, 4, blockiness, narrowness, time), minimizer);\n float colR = texture2D(u_texture, vec2(uv.x + shift, uv.y)).r * (1. - shift);\n float colG = texture2D(u_texture, vec2(uv.x - shift, uv.y)).g * (1. - shift);\n float colB = texture2D(u_texture, vec2(uv.x - shift, uv.y)).b * (1. - shift);\n\n vec3 f = vec3(colR, colG, colB);\n return vec4(f, texture2D(u_texture, vec2(uv.x - shift, uv.y)).a);\n `;\n}\n//# sourceMappingURL=GlitchEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\nexport class FadeOutEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'fadeOut';\n static getEffectKey() {\n return `fadeOut`;\n }\n static uniforms = {\n fade: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static resolveDefaults(props) {\n return {\n fade: props.fade ?? 10,\n };\n }\n static onColorize = `\n vec2 point = v_textureCoordinate.xy * u_dimensions.xy;\n vec2 pos1;\n vec2 pos2;\n vec2 d;\n float c;\n vec4 result = maskColor;\n\n\n if(fade[0] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x, point.y + fade[0]);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[1] > 0.0) {\n pos1 = vec2(point.x - u_dimensions.x - fade[1], v_textureCoordinate.y);\n pos2 = vec2(point.x - u_dimensions.x, v_textureCoordinate.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[2] > 0.0) {\n pos1 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y - fade[2]);\n pos2 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[3] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x + fade[3], point.y);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n return result;\n `;\n}\n//# sourceMappingURL=FadeOutEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\nexport class RadialGradientEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radialGradient';\n static getEffectKey(props) {\n return `radialGradient${props.colors.length}`;\n }\n static resolveDefaults(props) {\n const colors = props.colors ?? [0xff000000, 0xffffffff];\n let stops = props.stops || [];\n if (stops.length === 0 || stops.length !== colors.length) {\n const colorsL = colors.length;\n let i = 0;\n const tmp = stops;\n for (; i < colorsL; i++) {\n if (stops[i]) {\n tmp[i] = stops[i];\n if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {\n tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;\n }\n }\n else {\n tmp[i] = i * (1 / (colors.length - 1));\n }\n }\n stops = tmp;\n }\n return {\n colors,\n stops,\n width: props.width ?? 0,\n height: props.height ?? props.width ?? 0,\n pivot: props.pivot ?? [0.5, 0.5],\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n height: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n pivot: {\n value: [0.5, 0.5],\n method: 'uniform2fv',\n type: 'vec2',\n },\n colors: {\n value: 0xffffffff,\n validator: (rgbas) => {\n const cols = rgbas.map((rgbas) => getNormalizedRgbaComponents(rgbas));\n return cols.reduce((acc, val) => acc.concat(val), []);\n },\n size: (props) => props.colors.length,\n method: 'uniform4fv',\n type: 'vec4',\n },\n stops: {\n value: [],\n size: (props) => props.colors.length,\n method: 'uniform1fv',\n type: 'float',\n },\n };\n static ColorLoop = (amount) => {\n let loop = '';\n for (let i = 2; i < amount; i++) {\n loop += `colorOut = mix(colorOut, colors[${i}], clamp((dist - stops[${i - 1}]) / (stops[${i}] - stops[${i - 1}]), 0.0, 1.0));`;\n }\n return loop;\n };\n static onColorize = (props) => {\n const colors = props.colors.length || 1;\n return `\n vec2 point = v_textureCoordinate.xy * u_dimensions;\n vec2 projection = vec2(pivot.x * u_dimensions.x, pivot.y * u_dimensions.y);\n\n float dist = length((point - projection) / vec2(width, height));\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = mix(colors[0], colors[1], stopCalc);\n ${this.ColorLoop(colors)}\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n `;\n };\n}\n//# sourceMappingURL=RadialGradientEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The RadialProgressEffect renders a border along all edges of an element\n */\nexport class RadialProgressEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radialProgress';\n static getEffectKey() {\n return `radialProgress`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n progress: props.progress ?? 0.5,\n offset: props.offset ?? 0,\n range: props.range ?? Math.PI * 2,\n rounded: props.rounded ?? false,\n radius: props.radius ?? 1,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n progress: {\n value: 0.5,\n method: 'uniform1f',\n type: 'float',\n },\n offset: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n range: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n rounded: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n validator: (value) => {\n return value ? 1 : 0;\n },\n },\n radius: {\n value: 1,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n rotateUV: `\n vec2 function(vec2 uv, float d) {\n float s = sin(d);\n float c = cos(d);\n mat2 rotMatrix = mat2(c, -s, s, c);\n return uv * rotMatrix;\n }\n `,\n drawDot: `\n float function(vec2 uv, vec2 p, float r) {\n uv += p;\n float circle = length(uv) - r;\n return clamp(-circle, 0.0, 1.0);\n }\n `,\n };\n static onEffectMask = `\n float outerRadius = radius * u_dimensions.y * 0.5;\n\n float endAngle = range * progress - 0.0005;\n\n vec2 uv = v_textureCoordinate.xy * u_dimensions.xy - u_dimensions * 0.5;\n\n uv = $rotateUV(uv, -(offset));\n float linewidth = width * u_pixelRatio;\n float circle = length(uv) - (outerRadius - linewidth) ;\n circle = abs(circle) - linewidth;\n circle = clamp(-circle, 0.0, 1.0);\n\n float angle = (atan(uv.x, -uv.y) / 3.14159265359 * 0.5);\n float p = endAngle / (PI * 2.);\n\n circle *= step(fract(angle), fract(p));\n\n circle = rounded < 1. ? circle : max(circle, $drawDot(uv, vec2(0, outerRadius - linewidth), linewidth));\n circle = rounded < 1. ? circle : max(circle, $drawDot($rotateUV(uv, -(endAngle)), vec2(0, outerRadius - linewidth), linewidth));\n\n return mix(shaderColor, maskColor, circle);\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=RadialProgressEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Masks the current maskcolor a holepunch effect with rounded corners similar to {@link RoundedRectangle}\n */\nexport class HolePunchEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'holePunch';\n static getEffectKey() {\n return `holePunch`;\n }\n static uniforms = {\n x: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n y: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n height: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n radius: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static resolveDefaults(props) {\n return {\n x: props.x || 0,\n y: props.y || 0,\n width: props.width || 50,\n height: props.height || 50,\n radius: props.radius ?? 0,\n };\n }\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n boxDist: `\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n `,\n };\n static onShaderMask = `\n vec2 halfDimensions = u_dimensions * 0.5;\n vec2 size = vec2(width, height) * 0.5;\n vec2 basePos = v_textureCoordinate.xy * u_dimensions.xy - vec2(x, y);\n vec2 pos = basePos - size;\n float r = radius[0] * step(pos.x, 0.5) * step(pos.y, 0.5);\n r = r + radius[1] * step(0.5, pos.x) * step(pos.y, 0.5);\n r = r + radius[2] * step(0.5, pos.x) * step(0.5, pos.y);\n r = r + radius[3] * step(pos.x, 0.5) * step(0.5, pos.y);\n return $boxDist(pos, size, r);\n `;\n static onEffectMask = `\n return mix(maskColor, vec4(0.0), $fillMask(shaderMask));\n `;\n}\n//# sourceMappingURL=HolePunchEffect.js.map","import { DefaultShader } from './renderers/webgl/shaders/DefaultShader.js';\nimport { DefaultShaderBatched } from './renderers/webgl/shaders/DefaultShaderBatched.js';\nimport { DynamicShader, } from './renderers/webgl/shaders/DynamicShader.js';\nimport { RoundedRectangle } from './renderers/webgl/shaders/RoundedRectangle.js';\nimport { SdfShader } from './renderers/webgl/shaders/SdfShader.js';\nimport { RadiusEffect } from './renderers/webgl/shaders/effects/RadiusEffect.js';\nimport { BorderEffect } from './renderers/webgl/shaders/effects/BorderEffect.js';\nimport { LinearGradientEffect, } from './renderers/webgl/shaders/effects/LinearGradientEffect.js';\nimport { GrayscaleEffect, } from './renderers/webgl/shaders/effects/GrayscaleEffect.js';\nimport { BorderRightEffect } from './renderers/webgl/shaders/effects/BorderRightEffect.js';\nimport { BorderTopEffect } from './renderers/webgl/shaders/effects/BorderTopEffect.js';\nimport { BorderBottomEffect } from './renderers/webgl/shaders/effects/BorderBottomEffect.js';\nimport { BorderLeftEffect } from './renderers/webgl/shaders/effects/BorderLeftEffect.js';\nimport { GlitchEffect, } from './renderers/webgl/shaders/effects/GlitchEffect.js';\nimport { FadeOutEffect, } from './renderers/webgl/shaders/effects/FadeOutEffect.js';\nimport { RadialGradientEffect, } from './renderers/webgl/shaders/effects/RadialGradientEffect.js';\nimport { RadialProgressEffect, } from './renderers/webgl/shaders/effects/RadialProgressEffect.js';\nimport { HolePunchEffect } from './renderers/webgl/shaders/effects/HolePunchEffect.js';\nexport class CoreShaderManager {\n shCache = new Map();\n shConstructors = {};\n attachedShader = null;\n effectConstructors = {};\n renderer;\n constructor() {\n this.registerShaderType('DefaultShader', DefaultShader);\n this.registerShaderType('DefaultShaderBatched', DefaultShaderBatched);\n this.registerShaderType('RoundedRectangle', RoundedRectangle);\n this.registerShaderType('DynamicShader', DynamicShader);\n this.registerShaderType('SdfShader', SdfShader);\n this.registerEffectType('border', BorderEffect);\n this.registerEffectType('borderBottom', BorderBottomEffect);\n this.registerEffectType('borderLeft', BorderLeftEffect);\n this.registerEffectType('borderRight', BorderRightEffect);\n this.registerEffectType('borderTop', BorderTopEffect);\n this.registerEffectType('fadeOut', FadeOutEffect);\n this.registerEffectType('linearGradient', LinearGradientEffect);\n this.registerEffectType('radialGradient', RadialGradientEffect);\n this.registerEffectType('grayscale', GrayscaleEffect);\n this.registerEffectType('glitch', GlitchEffect);\n this.registerEffectType('radius', RadiusEffect);\n this.registerEffectType('radialProgress', RadialProgressEffect);\n this.registerEffectType('holePunch', HolePunchEffect);\n }\n registerShaderType(shType, shClass) {\n this.shConstructors[shType] = shClass;\n }\n registerEffectType(effectType, effectClass) {\n this.effectConstructors[effectType] = effectClass;\n }\n getRegisteredEffects() {\n return this.effectConstructors;\n }\n getRegisteredShaders() {\n return this.shConstructors;\n }\n loadShader(shType, props) {\n if (!this.renderer) {\n throw new Error(`Renderer is not been defined`);\n }\n const ShaderClass = this.shConstructors[shType];\n if (!ShaderClass) {\n throw new Error(`Shader type \"${shType}\" is not registered`);\n }\n if (shType === 'DynamicShader') {\n return this.loadDynamicShader(props);\n }\n const resolvedProps = ShaderClass.resolveDefaults(props);\n const cacheKey = ShaderClass.makeCacheKey(resolvedProps) || ShaderClass.name;\n if (cacheKey && this.shCache.has(cacheKey)) {\n return {\n shader: this.shCache.get(cacheKey),\n props: resolvedProps,\n };\n }\n // @ts-expect-error ShaderClass WILL accept a Renderer\n const shader = new ShaderClass(this.renderer, props);\n if (cacheKey) {\n this.shCache.set(cacheKey, shader);\n }\n return {\n shader,\n props: resolvedProps,\n };\n }\n loadDynamicShader(props) {\n if (!this.renderer) {\n throw new Error(`Renderer is not been defined`);\n }\n const resolvedProps = DynamicShader.resolveDefaults(props, this.effectConstructors);\n const cacheKey = DynamicShader.makeCacheKey(resolvedProps, this.effectConstructors);\n if (cacheKey && this.shCache.has(cacheKey)) {\n return {\n shader: this.shCache.get(cacheKey),\n props: resolvedProps,\n };\n }\n const shader = new DynamicShader(this.renderer, props, this.effectConstructors);\n if (cacheKey) {\n this.shCache.set(cacheKey, shader);\n }\n return {\n shader: shader,\n props: resolvedProps,\n };\n }\n useShader(shader) {\n if (this.attachedShader === shader) {\n return;\n }\n if (this.attachedShader) {\n this.attachedShader.detach();\n }\n shader.attach();\n this.attachedShader = shader;\n }\n}\n//# sourceMappingURL=CoreShaderManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class that keeps track of the invocations of Context methods when\n * the `enableContextSpy` renderer option is enabled.\n */\nexport class ContextSpy {\n data = {};\n reset() {\n this.data = {};\n }\n increment(name) {\n if (!this.data[name]) {\n this.data[name] = 0;\n }\n this.data[name]++;\n }\n getData() {\n return { ...this.data };\n }\n}\n//# sourceMappingURL=ContextSpy.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {} from '../textures/Texture.js';\n/**\n * Tests if the given location is a compressed texture container\n * @param url\n * @remarks\n * This function is used to determine if the given image url is a compressed\n * and only supports the following extensions: .ktx and .pvr\n * @returns\n */\nexport function isCompressedTextureContainer(url) {\n return /\\.(ktx|pvr)$/.test(url);\n}\n/**\n * Loads a compressed texture container\n * @param url\n * @returns\n */\nexport const loadCompressedTexture = async (url) => {\n const response = await fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n if (url.indexOf('.ktx') !== -1) {\n return loadKTXData(arrayBuffer);\n }\n return loadPVRData(arrayBuffer);\n};\n/**\n * Loads a KTX texture container and returns the texture data\n * @param buffer\n * @returns\n */\nconst loadKTXData = async (buffer) => {\n const view = new DataView(buffer);\n const littleEndian = view.getUint32(12) === 16909060 ? true : false;\n const mipmaps = [];\n const data = {\n glInternalFormat: view.getUint32(28, littleEndian),\n pixelWidth: view.getUint32(36, littleEndian),\n pixelHeight: view.getUint32(40, littleEndian),\n numberOfMipmapLevels: view.getUint32(56, littleEndian),\n bytesOfKeyValueData: view.getUint32(60, littleEndian),\n };\n let offset = 64;\n // Key Value Pairs of data start at byte offset 64\n // But the only known kvp is the API version, so skipping parsing.\n offset += data.bytesOfKeyValueData;\n for (let i = 0; i < data.numberOfMipmapLevels; i++) {\n const imageSize = view.getUint32(offset);\n offset += 4;\n mipmaps.push(view.buffer.slice(offset, imageSize));\n offset += imageSize;\n }\n return {\n data: {\n glInternalFormat: data.glInternalFormat,\n mipmaps,\n width: data.pixelWidth || 0,\n height: data.pixelHeight || 0,\n type: 'ktx',\n },\n premultiplyAlpha: false,\n };\n};\n/**\n * Loads a PVR texture container and returns the texture data\n * @param buffer\n * @returns\n */\nconst loadPVRData = async (buffer) => {\n // pvr header length in 32 bits\n const pvrHeaderLength = 13;\n // for now only we only support: COMPRESSED_RGB_ETC1_WEBGL\n const pvrFormatEtc1 = 0x8d64;\n const pvrWidth = 7;\n const pvrHeight = 6;\n const pvrMipmapCount = 11;\n const pvrMetadata = 12;\n const arrayBuffer = buffer;\n const header = new Int32Array(arrayBuffer, 0, pvrHeaderLength);\n // @ts-expect-error Object possibly undefined\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n const dataOffset = header[pvrMetadata] + 52;\n const pvrtcData = new Uint8Array(arrayBuffer, dataOffset);\n const mipmaps = [];\n const data = {\n pixelWidth: header[pvrWidth],\n pixelHeight: header[pvrHeight],\n numberOfMipmapLevels: header[pvrMipmapCount] || 0,\n };\n let offset = 0;\n let width = data.pixelWidth || 0;\n let height = data.pixelHeight || 0;\n for (let i = 0; i < data.numberOfMipmapLevels; i++) {\n const level = ((width + 3) >> 2) * ((height + 3) >> 2) * 8;\n const view = new Uint8Array(arrayBuffer, pvrtcData.byteOffset + offset, level);\n mipmaps.push(view);\n offset += level;\n width = width >> 1;\n height = height >> 1;\n }\n return {\n data: {\n glInternalFormat: pvrFormatEtc1,\n mipmaps: mipmaps,\n width: data.pixelWidth || 0,\n height: data.pixelHeight || 0,\n type: 'pvr',\n },\n premultiplyAlpha: false,\n };\n};\n//# sourceMappingURL=textureCompression.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\nimport { isCompressedTextureContainer, loadCompressedTexture, } from '../lib/textureCompression.js';\n/**\n * Texture consisting of an image loaded from a URL\n *\n * @remarks\n * The ImageTexture's {@link ImageTextureProps.src} prop defines the image URL\n * to be downloaded.\n *\n * By default, the texture's alpha values will be premultiplied into its color\n * values which is generally the desired setting before they are sent to the\n * texture's associated {@link Shader}. However, in special cases you may want\n * the Shader to receive straight (non-premultiplied) values. In that case you\n * can disable the default behavior by setting the\n * {@link ImageTextureProps.premultiplyAlpha} prop to `false`.\n */\nexport class ImageTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = ImageTexture.resolveDefaults(props);\n }\n hasAlphaChannel(mimeType) {\n return mimeType.indexOf('image/png') !== -1;\n }\n async getTextureData() {\n const { src, premultiplyAlpha } = this.props;\n if (!src) {\n return {\n data: null,\n };\n }\n if (src instanceof ImageData) {\n return {\n data: src,\n premultiplyAlpha,\n };\n }\n // Handle compressed textures\n if (isCompressedTextureContainer(src)) {\n return loadCompressedTexture(src);\n }\n if (this.txManager.imageWorkerManager) {\n return await this.txManager.imageWorkerManager.getImage(src, premultiplyAlpha);\n }\n else if (this.txManager.hasCreateImageBitmap) {\n const response = await fetch(src);\n const blob = await response.blob();\n const hasAlphaChannel = premultiplyAlpha ?? this.hasAlphaChannel(blob.type);\n return {\n data: await createImageBitmap(blob, {\n premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',\n colorSpaceConversion: 'none',\n imageOrientation: 'none',\n }),\n premultiplyAlpha: hasAlphaChannel,\n };\n }\n else {\n const img = new Image();\n if (!(src.substr(0, 5) == \"data:\")) {\n // Base64.\n img.crossOrigin = \"Anonymous\";\n }\n img.src = src;\n await new Promise((resolve, reject) => {\n img.onload = () => resolve();\n img.onerror = () => reject(new Error(`Failed to load image`));\n }).catch((e) => {\n console.error(e);\n });\n return {\n data: img,\n premultiplyAlpha: premultiplyAlpha ?? true,\n };\n }\n }\n static makeCacheKey(props) {\n const resolvedProps = ImageTexture.resolveDefaults(props);\n // ImageTextures sourced by ImageData are non-cacheable\n if (resolvedProps.src instanceof ImageData) {\n return false;\n }\n return `ImageTexture,${resolvedProps.src},${resolvedProps.premultiplyAlpha}`;\n }\n static resolveDefaults(props) {\n return {\n src: props.src ?? '',\n premultiplyAlpha: props.premultiplyAlpha ?? true, // null,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=ImageTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Number of floating point numbers that represent a single glyph in the SDF vertex buffer.\n *\n * @remarks\n * The vertex buffer contains:\n * - 6 vertex positions\n * - 6 texture coordinates\n * - = 12 positions/coordinates per glyph\n *\n * Each vertex position and texture coordinate consist of 2 floating point numbers (x/y).\n * So there are 12 * 2 = 24 floating point numbers that make up a single glyph.\n */\nexport const FLOATS_PER_GLYPH = 24;\n//# sourceMappingURL=constants.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Gets the start conditions for the layout loop.\n *\n * @remarks\n * Returns `undefined` if the layout loop should not be run.\n *\n * @param fontSize\n * @param fontSizeRatio\n * @param sdfLineHeight\n * @param renderWindow\n * @param lineCache\n * @param textH\n * @returns\n */\nexport function getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH) {\n // State variables\n const startLineIndex = Math.min(Math.max(renderWindow.firstLineIdx, 0), lineCache.length);\n // TODO: (fontSize / 6.4286 / fontSizeRatio) Adding this to the startY helps the text line up better with Canvas rendered text\n const sdfStartX = 0;\n let sdfVerticalAlignYOffset = 0;\n if (verticalAlign === 'middle') {\n sdfVerticalAlignYOffset = (sdfLineHeight - sdfFontSize) / 2;\n }\n else if (verticalAlign === 'bottom') {\n sdfVerticalAlignYOffset = sdfLineHeight - sdfFontSize;\n }\n const sdfOffsetY = offsetY / fontSizeRatio;\n const sdfStartY = sdfOffsetY + startLineIndex * sdfLineHeight + sdfVerticalAlignYOffset; // TODO: Figure out what determines the initial y offset of text.\n // Don't attempt to render anything if we know we're starting past the established end of the text\n if (textH && sdfStartY >= textH / fontSizeRatio) {\n return;\n }\n return {\n sdfX: sdfStartX,\n sdfY: sdfStartY,\n lineIndex: startLineIndex,\n };\n}\n//# sourceMappingURL=getStartConditions.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A wrapper Generator class that makes a generator peekable.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class PeekableIterator {\n iterator;\n peekBuffer = [];\n _lastIndex;\n constructor(iterator, indexBase = 0) {\n this.iterator = iterator;\n this.iterator = iterator;\n this._lastIndex = indexBase - 1;\n this.peekBuffer = [];\n }\n next() {\n const nextResult = this.peekBuffer.length > 0\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.peekBuffer.pop()\n : this.iterator.next();\n if (nextResult.done) {\n this._lastIndex = -1;\n }\n else {\n this._lastIndex++;\n }\n return nextResult;\n }\n peek() {\n if (this.peekBuffer.length > 0) {\n // We know that the buffer is not empty, so we can safely use the\n // non-null assertion operator\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.peekBuffer[0];\n }\n const result = this.iterator.next();\n this.peekBuffer.push(result);\n return result;\n }\n get lastIndex() {\n return this._lastIndex;\n }\n}\n//# sourceMappingURL=PeekableGenerator.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Reversible Generator Wrapper Class\n/**\n * Generator function that yields each Unicode code point in the given string.\n */\nexport function* getUnicodeCodepoints(text, start = 0) {\n let i = start;\n while (i < text.length) {\n const codePoint = text.codePointAt(i);\n if (codePoint === undefined) {\n throw new Error('Invalid Unicode code point');\n }\n yield codePoint;\n i += codePoint <= 0xffff ? 1 : 2;\n }\n}\n//# sourceMappingURL=getUnicodeCodepoints.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { PeekableIterator } from './PeekableGenerator.js';\nimport { getUnicodeCodepoints } from './getUnicodeCodepoints.js';\n/**\n * Measures a single-line of text width ignoring any unmapped glyphs including line breaks\n *\n * @param text\n * @param shaperProps\n * @param shaper\n * @returns\n */\nexport function measureText(text, shaperProps, shaper) {\n const glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, 0), 0));\n let width = 0;\n for (const glyph of glyphs) {\n if (glyph.mapped) {\n width += glyph.xAdvance;\n }\n }\n return width;\n}\n//# sourceMappingURL=measureText.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../../../utils.js';\nimport { PeekableIterator } from './PeekableGenerator.js';\nimport { getUnicodeCodepoints } from './getUnicodeCodepoints.js';\nimport { measureText } from './measureText.js';\nexport function layoutText(curLineIndex, startX, startY, text, textAlign, width, height, fontSize, lineHeight, letterSpacing, \n/**\n * Mutated\n */\nvertexBuffer, contain, \n/**\n * Mutated\n */\nlineCache, rwSdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines) {\n assertTruthy(trFontFace, 'Font face must be loaded');\n assertTruthy(trFontFace.loaded, 'Font face must be loaded');\n assertTruthy(trFontFace.data, 'Font face must be loaded');\n assertTruthy(trFontFace.shaper, 'Font face must be loaded');\n // Regardless of fontSize (or other scaling properties), we layout the vertices of each glyph\n // using the fixed coordinate space determined by font size used to produce the atlas.\n // Scaling for display is handled by shader uniforms inexpensively.\n // So we have:\n // - vertex space: the space in which the vertices of each glyph are laid out\n // - screen space: the screen pixel space\n // Input properties such as x, y, w, fontSize, letterSpacing, etc. are all expressed in screen space.\n // We convert these to the vertex space by dividing them the `fontSizeRatio` factor.\n /**\n * See above\n */\n const fontSizeRatio = fontSize / trFontFace.data.info.size;\n /**\n * `lineHeight` in vertex coordinates\n */\n const vertexLineHeight = lineHeight / fontSizeRatio;\n /**\n * `w` in vertex coordinates\n */\n const vertexW = width / fontSizeRatio;\n /**\n * `letterSpacing` in vertex coordinates\n */\n const vertexLSpacing = letterSpacing / fontSizeRatio;\n const startingLineCacheEntry = lineCache[curLineIndex];\n const startingCodepointIndex = startingLineCacheEntry?.codepointIndex || 0;\n const startingMaxX = startingLineCacheEntry?.maxX || 0;\n const startingMaxY = startingLineCacheEntry?.maxY || 0;\n let maxX = startingMaxX;\n let maxY = startingMaxY;\n let curX = startX;\n let curY = startY;\n let bufferOffset = 0;\n /**\n * Buffer offset to last word boundry. This is -1 when we aren't in a word boundry.\n */\n const lastWord = {\n codepointIndex: -1,\n bufferOffset: -1,\n xStart: -1,\n };\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const shaper = trFontFace.shaper;\n const shaperProps = {\n letterSpacing: vertexLSpacing,\n };\n // Get glyphs\n let glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, startingCodepointIndex), startingCodepointIndex));\n let glyphResult;\n let curLineBufferStart = -1;\n const bufferLineInfos = [];\n const vertexTruncateHeight = height / fontSizeRatio;\n const overflowSuffVertexWidth = measureText(overflowSuffix, shaperProps, shaper);\n // Line-by-line layout\n let moreLines = true;\n while (moreLines) {\n const nextLineWillFit = (maxLines === 0 || curLineIndex + 1 < maxLines) &&\n (contain !== 'both' ||\n scrollable ||\n curY + vertexLineHeight + trFontFace.maxCharHeight <=\n vertexTruncateHeight);\n const lineVertexW = nextLineWillFit\n ? vertexW\n : vertexW - overflowSuffVertexWidth;\n /**\n * Vertex X position to the beginning of the last word boundary. This becomes -1 when we start traversing a word.\n */\n let xStartLastWordBoundary = 0;\n const lineIsBelowWindowTop = curY + vertexLineHeight >= rwSdf.y1;\n const lineIsAboveWindowBottom = curY <= rwSdf.y2;\n const lineIsWithinWindow = lineIsBelowWindowTop && lineIsAboveWindowBottom;\n // Layout glyphs in this line\n // Any break statements in this while loop will trigger a line break\n while ((glyphResult = glyphs.next()) && !glyphResult.done) {\n const glyph = glyphResult.value;\n if (curLineIndex === lineCache.length) {\n lineCache.push({\n codepointIndex: glyph.cluster,\n maxY,\n maxX,\n });\n }\n else if (curLineIndex > lineCache.length) {\n throw new Error('Unexpected lineCache length');\n }\n // If we encounter a word boundary (white space or newline) we invalidate\n // the lastWord and set the xStartLastWordBoundary if we haven't already.\n if (glyph.codepoint === 32 || glyph.codepoint === 10) {\n if (lastWord.codepointIndex !== -1) {\n lastWord.codepointIndex = -1;\n xStartLastWordBoundary = curX;\n }\n }\n else if (lastWord.codepointIndex === -1) {\n lastWord.codepointIndex = glyph.cluster;\n lastWord.bufferOffset = bufferOffset;\n lastWord.xStart = xStartLastWordBoundary;\n }\n if (glyph.mapped) {\n // Mapped glyph\n const charEndX = curX + glyph.xOffset + glyph.width;\n // Word wrap check\n if (\n // We are containing the text\n contain !== 'none' &&\n // The current glyph reaches outside the contained width\n charEndX >= lineVertexW &&\n // There is a last word that we can break to the next line\n lastWord.codepointIndex !== -1 &&\n // Prevents infinite loop when a single word is longer than the width\n lastWord.xStart > 0) {\n // The current word is about to go off the edge of the container width\n // Reinitialize the iterator starting at the last word\n // and proceeding to the next line\n if (nextLineWillFit) {\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, lastWord.codepointIndex), lastWord.codepointIndex));\n bufferOffset = lastWord.bufferOffset;\n break;\n }\n else {\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0));\n curX = lastWord.xStart;\n bufferOffset = lastWord.bufferOffset;\n // HACK: For the rest of the line when inserting the overflow suffix,\n // set contain = 'none' to prevent an infinite loop.\n contain = 'none';\n }\n }\n else {\n // This glyph fits, so we can add it to the buffer\n const quadX = curX + glyph.xOffset;\n const quadY = curY + glyph.yOffset;\n // Only add to buffer for rendering if the line is within the render window\n if (lineIsWithinWindow) {\n if (curLineBufferStart === -1) {\n curLineBufferStart = bufferOffset;\n }\n const atlasEntry = trFontFace.getAtlasEntry(glyph.glyphId);\n // Add texture coordinates\n const u = atlasEntry.x / trFontFace.data.common.scaleW;\n const v = atlasEntry.y / trFontFace.data.common.scaleH;\n const uvWidth = atlasEntry.width / trFontFace.data.common.scaleW;\n const uvHeight = atlasEntry.height / trFontFace.data.common.scaleH;\n // TODO: (Performance) We can optimize this by using ELEMENT_ARRAY_BUFFER\n // eliminating the need to duplicate vertices\n // Top-left\n vertexBuffer[bufferOffset++] = quadX;\n vertexBuffer[bufferOffset++] = quadY;\n vertexBuffer[bufferOffset++] = u;\n vertexBuffer[bufferOffset++] = v;\n // Top-right\n vertexBuffer[bufferOffset++] = quadX + glyph.width;\n vertexBuffer[bufferOffset++] = quadY;\n vertexBuffer[bufferOffset++] = u + uvWidth;\n vertexBuffer[bufferOffset++] = v;\n // Bottom-left\n vertexBuffer[bufferOffset++] = quadX;\n vertexBuffer[bufferOffset++] = quadY + glyph.height;\n vertexBuffer[bufferOffset++] = u;\n vertexBuffer[bufferOffset++] = v + uvHeight;\n // Bottom-right\n vertexBuffer[bufferOffset++] = quadX + glyph.width;\n vertexBuffer[bufferOffset++] = quadY + glyph.height;\n vertexBuffer[bufferOffset++] = u + uvWidth;\n vertexBuffer[bufferOffset++] = v + uvHeight;\n }\n maxY = Math.max(maxY, quadY + glyph.height);\n maxX = Math.max(maxX, quadX + glyph.width);\n curX += glyph.xAdvance;\n }\n }\n else {\n // Unmapped character\n // Handle newlines\n if (glyph.codepoint === 10) {\n if (nextLineWillFit) {\n // The whole line fit, so we can break to the next line\n break;\n }\n else {\n // The whole line won't fit, so we need to add the overflow suffix\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0));\n // HACK: For the rest of the line when inserting the overflow suffix,\n // set contain = 'none' to prevent an infinite loop.\n contain = 'none';\n }\n }\n }\n }\n // Prepare for the next line...\n if (curLineBufferStart !== -1) {\n bufferLineInfos.push({\n bufferStart: curLineBufferStart,\n bufferEnd: bufferOffset,\n });\n curLineBufferStart = -1;\n }\n curX = 0;\n curY += vertexLineHeight;\n curLineIndex++;\n lastWord.codepointIndex = -1;\n xStartLastWordBoundary = 0;\n // Figure out if there are any more lines to render...\n if (!forceFullLayoutCalc && contain === 'both' && curY > rwSdf.y2) {\n // Stop layout calculation early (for performance purposes) if:\n // - We're not forcing a full layout calculation (for width/height calculation)\n // - ...and we're containing the text vertically+horizontally (contain === 'both')\n // - ...and we have a render window\n // - ...and the next line is below the bottom of the render window\n moreLines = false;\n }\n else if (glyphResult && glyphResult.done) {\n // If we've reached the end of the text, we know we're done\n moreLines = false;\n }\n else if (!nextLineWillFit) {\n // If we're contained vertically+horizontally (contain === 'both')\n // but not scrollable and the next line won't fit, we're done.\n moreLines = false;\n }\n }\n // Use textAlign to determine if we need to adjust the x position of the text\n // in the buffer line by line\n if (textAlign === 'center') {\n const vertexTextW = contain === 'none' ? maxX : vertexW;\n for (let i = 0; i < bufferLineInfos.length; i++) {\n const line = bufferLineInfos[i];\n // - 4 = the x position of a rightmost vertex\n const lineWidth = \n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n vertexBuffer[line.bufferEnd - 4] - vertexBuffer[line.bufferStart];\n const xOffset = (vertexTextW - lineWidth) / 2;\n for (let j = line.bufferStart; j < line.bufferEnd; j += 4) {\n vertexBuffer[j] += xOffset;\n }\n }\n }\n else if (textAlign === 'right') {\n const vertexTextW = contain === 'none' ? maxX : vertexW;\n for (let i = 0; i < bufferLineInfos.length; i++) {\n const line = bufferLineInfos[i];\n const lineWidth = line.bufferEnd === line.bufferStart\n ? 0\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n vertexBuffer[line.bufferEnd - 4] - vertexBuffer[line.bufferStart];\n const xOffset = vertexTextW - lineWidth;\n for (let j = line.bufferStart; j < line.bufferEnd; j += 4) {\n vertexBuffer[j] += xOffset;\n }\n }\n }\n assertTruthy(glyphResult);\n return {\n bufferNumFloats: bufferOffset,\n bufferNumQuads: bufferOffset / 16,\n layoutNumCharacters: glyphResult.done\n ? text.length - startingCodepointIndex\n : glyphResult.value.cluster - startingCodepointIndex + 1,\n fullyProcessed: !!glyphResult.done,\n maxX,\n maxY,\n };\n}\n//# sourceMappingURL=layoutText.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Round up to the nearest multiple of the given number.\n *\n * @param value\n * @param multiple\n * @returns\n */\nexport function roundUpToMultiple(value, multiple) {\n return Math.ceil(value / multiple) * multiple;\n}\n/**\n * Round down to the nearest multiple of the given number.\n *\n * @param value\n * @param multiple\n * @returns\n */\nexport function roundDownToMultiple(value, multiple) {\n return Math.floor(value / multiple) * multiple;\n}\n//# sourceMappingURL=util.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { isBoundPositive } from '../../../../lib/utils.js';\nimport { roundDownToMultiple, roundUpToMultiple } from './util.js';\n/**\n * Create a render window from the given parameters.\n *\n * @remarks\n * The render window is a rectangle that defines the area of the text that\n * should be rendered. It is used to skip rendering parts of the text that\n * are outside of the render window. The render window is relative to the\n * text's top left corner of the overrall text.\n *\n * @param x The x coordinate of the text element's top left corner relative to the screen.\n * @param y The y coordinate of the text element's top left corner relative to the screen.\n * @param scrollY The amount of pixels to scroll the text vertically.\n * @param lineHeight The number of extra lines to render above and below the visible window.\n * @param visibleWindow The visible window of the text element relative to the screen\n * @returns\n */\nexport function setRenderWindow(outRenderWindow, x, y, scrollY, lineHeight, bufferMargin, visibleWindow, fontSizeRatio) {\n const { screen, sdf } = outRenderWindow;\n if (!isBoundPositive(visibleWindow)) {\n screen.x1 = 0;\n screen.y1 = 0;\n screen.x2 = 0;\n screen.y2 = 0;\n sdf.x1 = 0;\n sdf.y1 = 0;\n sdf.x2 = 0;\n sdf.y2 = 0;\n outRenderWindow.numLines = 0;\n outRenderWindow.firstLineIdx = 0;\n }\n else {\n const x1 = visibleWindow.x1 - x;\n const x2 = x1 + (visibleWindow.x2 - visibleWindow.x1);\n const y1Base = visibleWindow.y1 - y + scrollY;\n const y1 = roundDownToMultiple(y1Base - bufferMargin, lineHeight || 1);\n const y2 = roundUpToMultiple(y1Base + (visibleWindow.y2 - visibleWindow.y1) + bufferMargin, lineHeight || 1);\n screen.x1 = x1;\n screen.y1 = y1;\n screen.x2 = x2;\n screen.y2 = y2;\n sdf.x1 = x1 / fontSizeRatio;\n sdf.y1 = y1 / fontSizeRatio;\n sdf.x2 = x2 / fontSizeRatio;\n sdf.y2 = y2 / fontSizeRatio;\n outRenderWindow.numLines = Math.ceil((y2 - y1) / lineHeight);\n outRenderWindow.firstLineIdx = lineHeight ? Math.floor(y1 / lineHeight) : 0;\n }\n outRenderWindow.valid = true;\n}\n//# sourceMappingURL=setRenderWindow.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport memize from 'memize';\nconst weightConversions = {\n normal: 400,\n bold: 700,\n bolder: 900,\n lighter: 100,\n};\nconst fontWeightToNumber = (weight) => {\n if (typeof weight === 'number') {\n return weight;\n }\n return weightConversions[weight] || 400;\n};\nfunction rawResolveFontToUse(familyMapsByPriority, family, weightIn, style, stretch) {\n let weight = fontWeightToNumber(weightIn);\n for (const fontFamiles of familyMapsByPriority) {\n const fontFaces = fontFamiles[family];\n if (!fontFaces) {\n continue;\n }\n if (fontFaces.size === 1) {\n // No Exact match found, find nearest weight match\n console.warn(`TrFontManager: Only one font face found for family: '${family}' - will be used for all weights and styles`);\n return fontFaces.values().next().value;\n }\n const weightMap = new Map();\n for (const fontFace of fontFaces) {\n const fontFamilyWeight = fontWeightToNumber(fontFace.descriptors.weight);\n if (fontFamilyWeight === weight &&\n fontFace.descriptors.style === style &&\n fontFace.descriptors.stretch === stretch) {\n return fontFace;\n }\n weightMap.set(fontFamilyWeight, fontFace);\n }\n // No Exact match found, find nearest weight match\n const msg = `TrFontManager: No exact match: '${family} Weight: ${weight} Style: ${style} Stretch: ${stretch}'`;\n console.error(msg);\n // Follow the CSS font-weight algorithm to find the nearest weight match\n // https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/#font-matching-algorithm\n if (weight === 400 && weightMap.has(500)) {\n return weightMap.get(500);\n }\n if (weight === 500 && weightMap.has(400)) {\n return weightMap.get(400);\n }\n if (weight < 400) {\n while (weight > 0) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight -= 100;\n }\n // reset back for the next loop\n weight = 600;\n }\n while (weight < 1000) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight += 100;\n }\n // finally check lower again\n weight = 500;\n while (weight > 0) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight -= 100;\n }\n }\n return;\n}\nconst resolveFontToUse = memize(rawResolveFontToUse);\nexport class TrFontManager {\n textRenderers;\n constructor(textRenderers) {\n this.textRenderers = textRenderers;\n // Intentionally left blank\n }\n addFontFace(font) {\n // All the font face to all of the text renderers that support it\n for (const trId in this.textRenderers) {\n const tr = this.textRenderers[trId];\n if (tr && tr.isFontFaceSupported(font)) {\n tr.addFontFace(font);\n }\n }\n }\n /**\n * Utility method to resolve a single font face from a list of prioritized family maps based on\n * a set of font properties.\n *\n * @remarks\n * These are to be used by a text renderer to resolve a font face if needed.\n *\n * @param familyMapsByPriority\n * @param props\n * @returns\n */\n static resolveFontFace(familyMapsByPriority, props) {\n const { fontFamily, fontWeight, fontStyle, fontStretch } = props;\n return resolveFontToUse(familyMapsByPriority, fontFamily, fontWeight, fontStyle, fontStretch);\n }\n}\n//# sourceMappingURL=TrFontManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createBound, intersectRect, copyRect, boundsOverlap, convertBoundToRect, } from '../../../lib/utils.js';\nimport { TextRenderer, } from '../TextRenderer.js';\nimport { SdfTrFontFace } from '../../font-face-types/SdfTrFontFace/SdfTrFontFace.js';\nimport { FLOATS_PER_GLYPH } from './internal/constants.js';\nimport { getStartConditions } from './internal/getStartConditions.js';\nimport { layoutText } from './internal/layoutText.js';\nimport { setRenderWindow, } from './internal/setRenderWindow.js';\nimport { TrFontManager } from '../../TrFontManager.js';\nimport { assertTruthy, mergeColorAlpha } from '../../../../utils.js';\nimport { WebGlCoreRenderOp } from '../../../renderers/webgl/WebGlCoreRenderOp.js';\nimport { BufferCollection } from '../../../renderers/webgl/internal/BufferCollection.js';\nimport { EventEmitter } from '../../../../common/EventEmitter.js';\n/**\n * Ephemeral rect object used for calculations\n */\nconst tmpRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n};\n/**\n * Singleton class for rendering text using signed distance fields.\n *\n * @remarks\n * SdfTextRenderer supports both single-channel and multi-channel signed distance fields.\n */\nexport class SdfTextRenderer extends TextRenderer {\n /**\n * Map of font family names to a set of font faces.\n */\n ssdfFontFamilies = {};\n msdfFontFamilies = {};\n fontFamilyArray = [\n this.ssdfFontFamilies,\n this.msdfFontFamilies,\n ];\n sdfShader;\n rendererBounds;\n constructor(stage) {\n super(stage);\n this.sdfShader = this.stage.shManager.loadShader('SdfShader').shader;\n this.rendererBounds = {\n x1: 0,\n y1: 0,\n x2: this.stage.options.appWidth,\n y2: this.stage.options.appHeight,\n };\n }\n //#region Overrides\n getPropertySetters() {\n return {\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n this.invalidateLayoutCache(state);\n },\n text: (state, value) => {\n state.props.text = value;\n this.invalidateLayoutCache(state);\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n this.invalidateLayoutCache(state);\n },\n color: (state, value) => {\n state.props.color = value;\n },\n x: (state, value) => {\n state.props.x = value;\n if (state.elementBounds.valid) {\n this.setElementBoundsX(state);\n // Only schedule an update if the text is not already rendered\n // (renderWindow is invalid) and the element possibly overlaps the screen\n // This is to avoid unnecessary updates when we know text is off-screen\n if (!state.renderWindow.valid &&\n boundsOverlap(state.elementBounds, this.rendererBounds)) {\n this.scheduleUpdateState(state);\n }\n }\n },\n y: (state, value) => {\n state.props.y = value;\n if (state.elementBounds.valid) {\n this.setElementBoundsY(state);\n // See x() for explanation\n if (!state.renderWindow.valid &&\n boundsOverlap(state.elementBounds, this.rendererBounds)) {\n this.scheduleUpdateState(state);\n }\n }\n },\n contain: (state, value) => {\n state.props.contain = value;\n this.invalidateLayoutCache(state);\n },\n width: (state, value) => {\n state.props.width = value;\n // Only invalidate layout cache if we're containing in the horizontal direction\n if (state.props.contain !== 'none') {\n this.invalidateLayoutCache(state);\n }\n },\n height: (state, value) => {\n state.props.height = value;\n // Only invalidate layout cache if we're containing in the vertical direction\n if (state.props.contain === 'both') {\n this.invalidateLayoutCache(state);\n }\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n this.invalidateLayoutCache(state);\n },\n scrollable: (state, value) => {\n state.props.scrollable = value;\n this.invalidateLayoutCache(state);\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n // Scrolling doesn't need to invalidate any caches, but it does need to\n // schedule an update\n this.scheduleUpdateState(state);\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n this.invalidateLayoutCache(state);\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n this.invalidateLayoutCache(state);\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n this.invalidateLayoutCache(state);\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n this.invalidateLayoutCache(state);\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n this.invalidateLayoutCache(state);\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n this.invalidateLayoutCache(state);\n },\n debug: (state, value) => {\n state.props.debug = value;\n },\n };\n }\n canRenderFont(props) {\n // TODO: Support matching on font stretch, weight and style (if/when needed)\n // For now we just match on the font family name\n // '$$SDF_FAILURE_TEST$$' is used to test the 'failure' event coming from text\n const { fontFamily } = props;\n return (fontFamily in this.ssdfFontFamilies ||\n fontFamily in this.msdfFontFamilies ||\n fontFamily === '$$SDF_FAILURE_TEST$$');\n }\n isFontFaceSupported(fontFace) {\n return fontFace instanceof SdfTrFontFace;\n }\n addFontFace(fontFace) {\n // Make sure the font face is an SDF font face (it should have already passed\n // the `isFontFaceSupported` check)\n assertTruthy(fontFace instanceof SdfTrFontFace);\n const familyName = fontFace.fontFamily;\n const fontFamiles = fontFace.type === 'ssdf'\n ? this.ssdfFontFamilies\n : fontFace.type === 'msdf'\n ? this.msdfFontFamilies\n : undefined;\n if (!fontFamiles) {\n console.warn(`Invalid font face type: ${fontFace.type}`);\n return;\n }\n let faceSet = fontFamiles[familyName];\n if (!faceSet) {\n faceSet = new Set();\n fontFamiles[familyName] = faceSet;\n }\n faceSet.add(fontFace);\n }\n createState(props) {\n return {\n props,\n status: 'initialState',\n updateScheduled: false,\n emitter: new EventEmitter(),\n lineCache: [],\n forceFullLayoutCalc: false,\n renderWindow: {\n screen: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n },\n sdf: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n },\n firstLineIdx: 0,\n numLines: 0,\n valid: false,\n },\n elementBounds: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n valid: false,\n },\n clippingRect: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n },\n bufferNumFloats: 0,\n bufferNumQuads: 0,\n vertexBuffer: undefined,\n webGlBuffers: null,\n bufferUploaded: false,\n textH: undefined,\n textW: undefined,\n distanceRange: 0,\n trFontFace: undefined,\n isRenderable: false,\n debugData: {\n updateCount: 0,\n layoutCount: 0,\n lastLayoutNumCharacters: 0,\n layoutSum: 0,\n drawSum: 0,\n drawCount: 0,\n bufferSize: 0,\n },\n };\n }\n updateState(state) {\n let { trFontFace } = state;\n const { textH, lineCache, debugData, forceFullLayoutCalc } = state;\n debugData.updateCount++;\n // On the first update call we need to set the status to loading\n if (state.status === 'initialState') {\n this.setStatus(state, 'loading');\n }\n // Resolve font face if we haven't yet\n if (!trFontFace) {\n trFontFace = this.resolveFontFace(state.props);\n state.trFontFace = trFontFace;\n if (!trFontFace) {\n const msg = `SdfTextRenderer: Could not resolve font face for family: '${state.props.fontFamily}'`;\n console.error(msg);\n this.setStatus(state, 'failed', new Error(msg));\n return;\n }\n trFontFace.texture.setRenderableOwner(state, state.isRenderable);\n }\n // If the font hasn't been loaded yet, stop here.\n // Listen for the 'loaded' event and forward fontLoaded event\n if (!trFontFace.loaded) {\n trFontFace.once('loaded', () => {\n this.scheduleUpdateState(state);\n });\n return;\n }\n // If the font is loaded then so should the data\n assertTruthy(trFontFace.data, 'Font face data should be loaded');\n const { text, fontSize, x, y, contain, width, height, lineHeight, verticalAlign, scrollable, overflowSuffix, maxLines, } = state.props;\n // scrollY only has an effect when contain === 'both' and scrollable === true\n const scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0;\n const { renderWindow } = state;\n /**\n * The font size of the SDF font face (the basis for SDF space units)\n */\n const sdfFontSize = trFontFace.data.info.size;\n /**\n * Divide screen space units by this to get the SDF space units\n * Mulitple SDF space units by this to get screen space units\n */\n const fontSizeRatio = fontSize / sdfFontSize;\n // Needed in renderWindow calculation\n const sdfLineHeight = lineHeight / fontSizeRatio;\n state.distanceRange =\n fontSizeRatio * trFontFace.data.distanceField.distanceRange;\n // Allocate buffers if needed\n const neededLength = text.length * FLOATS_PER_GLYPH;\n let vertexBuffer = state.vertexBuffer;\n if (!vertexBuffer || vertexBuffer.length < neededLength) {\n vertexBuffer = new Float32Array(neededLength * 2);\n }\n const elementBounds = state.elementBounds;\n if (!elementBounds.valid) {\n this.setElementBoundsX(state);\n this.setElementBoundsY(state);\n elementBounds.valid = true;\n }\n // Return early if we're still viewing inside the established render window\n // No need to re-render what we've already rendered\n // (Only if there's an established renderWindow and we're not suppressing early exit)\n if (!forceFullLayoutCalc && renderWindow.valid) {\n const rwScreen = renderWindow.screen;\n if (x + rwScreen.x1 <= elementBounds.x1 &&\n x + rwScreen.x2 >= elementBounds.x2 &&\n y - scrollY + rwScreen.y1 <= elementBounds.y1 &&\n y - scrollY + rwScreen.y2 >= elementBounds.y2) {\n this.setStatus(state, 'loaded');\n return;\n }\n // Otherwise invalidate the renderWindow so it can be redone\n renderWindow.valid = false;\n this.setStatus(state, 'loading');\n }\n const { offsetY, textAlign } = state.props;\n // Create a new renderWindow if needed\n if (!renderWindow.valid) {\n const isPossiblyOnScreen = boundsOverlap(elementBounds, this.rendererBounds);\n if (!isPossiblyOnScreen) {\n // If the element is not possibly on screen, we can skip the layout and rendering completely\n return;\n }\n setRenderWindow(renderWindow, x, y, scrollY, lineHeight, contain === 'both' ? elementBounds.y2 - elementBounds.y1 : 0, elementBounds, fontSizeRatio);\n // console.log('newRenderWindow', renderWindow);\n }\n const start = getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH);\n if (!start) {\n // Nothing to render, return early, but still mark as loaded (since the text is just scrolled\n // out of view)\n this.setStatus(state, 'loaded');\n return;\n }\n const { letterSpacing } = state.props;\n const out2 = layoutText(start.lineIndex, start.sdfX, start.sdfY, text, textAlign, width, height, fontSize, lineHeight, letterSpacing, vertexBuffer, contain, lineCache, renderWindow.sdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines);\n state.bufferUploaded = false;\n state.bufferNumFloats = out2.bufferNumFloats;\n state.bufferNumQuads = out2.bufferNumQuads;\n state.vertexBuffer = vertexBuffer;\n state.renderWindow = renderWindow;\n debugData.lastLayoutNumCharacters = out2.layoutNumCharacters;\n debugData.bufferSize = vertexBuffer.byteLength;\n // If we didn't exit early, we know we have completely computed w/h\n if (out2.fullyProcessed) {\n state.textW = out2.maxX * fontSizeRatio;\n state.textH = out2.maxY * fontSizeRatio;\n }\n // if (state.props.debug.printLayoutTime) {\n // debugData.layoutSum += performance.now() - updateStartTime;\n // debugData.layoutCount++;\n // }\n this.setStatus(state, 'loaded');\n }\n renderQuads(state, transform, clippingRect, alpha, parentHasRenderTexture, framebufferDimensions) {\n if (!state.vertexBuffer) {\n // Nothing to draw\n return;\n }\n const { renderer } = this.stage;\n const { fontSize, color, contain, scrollable, zIndex, debug } = state.props;\n // scrollY only has an effect when contain === 'both' and scrollable === true\n const scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0;\n const { textW = 0, textH = 0, distanceRange, vertexBuffer, bufferUploaded, trFontFace, elementBounds, } = state;\n let { webGlBuffers } = state;\n if (!webGlBuffers) {\n const glw = renderer.glw;\n const stride = 4 * Float32Array.BYTES_PER_ELEMENT;\n const webGlBuffer = glw.createBuffer();\n assertTruthy(webGlBuffer);\n state.webGlBuffers = new BufferCollection([\n {\n buffer: webGlBuffer,\n attributes: {\n a_position: {\n name: 'a_position',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 0, // start at the beginning of the buffer\n },\n a_textureCoordinate: {\n name: 'a_textureCoordinate',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 2 * Float32Array.BYTES_PER_ELEMENT,\n },\n },\n },\n ]);\n state.bufferUploaded = false;\n assertTruthy(state.webGlBuffers);\n webGlBuffers = state.webGlBuffers;\n }\n if (!bufferUploaded) {\n const glw = renderer.glw;\n const buffer = webGlBuffers?.getBuffer('a_textureCoordinate') ?? null;\n glw.arrayBufferData(buffer, vertexBuffer, glw.STATIC_DRAW);\n state.bufferUploaded = true;\n }\n assertTruthy(trFontFace);\n if (scrollable && contain === 'both') {\n assertTruthy(elementBounds.valid);\n const elementRect = convertBoundToRect(elementBounds, tmpRect);\n if (clippingRect.valid) {\n state.clippingRect.valid = true;\n clippingRect = intersectRect(clippingRect, elementRect, state.clippingRect);\n }\n else {\n state.clippingRect.valid = true;\n clippingRect = copyRect(elementRect, state.clippingRect);\n }\n }\n const renderOp = new WebGlCoreRenderOp(renderer.glw, renderer.options, webGlBuffers, this.sdfShader, {\n transform: transform.data,\n // IMPORTANT: The SDF Shader expects the color NOT to be premultiplied\n // for the best blending results. Which is why we use `mergeColorAlpha`\n // instead of `mergeColorAlphaPremultiplied` here.\n color: mergeColorAlpha(color, alpha),\n size: fontSize / (trFontFace.data?.info.size || 0),\n scrollY,\n distanceRange,\n debug: debug.sdfShaderDebug,\n }, alpha, clippingRect, { height: textH, width: textW }, 0, zIndex, false, parentHasRenderTexture, framebufferDimensions);\n const texture = state.trFontFace?.texture;\n assertTruthy(texture);\n const ctxTexture = this.stage.txManager.getCtxTexture(texture);\n renderOp.addTexture(ctxTexture);\n renderOp.length = state.bufferNumFloats;\n renderOp.numQuads = state.bufferNumQuads;\n renderer.addRenderOp(renderOp);\n // if (!debug.disableScissor) {\n // renderer.enableScissor(\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // Draw the arrays\n // gl.drawArrays(\n // gl.TRIANGLES, // Primitive type\n // 0,\n // bufferNumVertices, // Number of verticies\n // );\n // renderer.disableScissor();\n // if (debug.showElementRect) {\n // this.renderer.drawBorder(\n // Colors.Blue,\n // elementRect.x,\n // elementRect.y,\n // elementRect.w,\n // elementRect.h,\n // );\n // }\n // if (debug.showVisibleRect) {\n // this.renderer.drawBorder(\n // Colors.Green,\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // if (debug.showRenderWindow && renderWindow) {\n // this.renderer.drawBorder(\n // Colors.Red,\n // x + renderWindow.x1,\n // y + renderWindow.y1 - scrollY,\n // x + renderWindow.x2 - (x + renderWindow.x1),\n // y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY),\n // );\n // }\n // if (debug.printLayoutTime) {\n // debugData.drawSum += performance.now() - drawStartTime;\n // debugData.drawCount++;\n // }\n }\n setIsRenderable(state, renderable) {\n super.setIsRenderable(state, renderable);\n state.trFontFace?.texture.setRenderableOwner(state, renderable);\n }\n destroyState(state) {\n super.destroyState(state);\n // If there's a Font Face assigned we must free the owner relation to its texture\n state.trFontFace?.texture.setRenderableOwner(state, false);\n }\n //#endregion Overrides\n resolveFontFace(props) {\n return TrFontManager.resolveFontFace(this.fontFamilyArray, props);\n }\n /**\n * Release the loaded SDF font face\n *\n * @param state\n */\n releaseFontFace(state) {\n if (state.trFontFace) {\n state.trFontFace.texture.setRenderableOwner(state, false);\n state.trFontFace = undefined;\n }\n }\n /**\n * Invalidate the layout cache stored in the state. This will cause the text\n * to be re-layed out on the next update.\n *\n * @remarks\n * This also invalidates the visible window cache.\n *\n * @param state\n */\n invalidateLayoutCache(state) {\n state.renderWindow.valid = false;\n state.elementBounds.valid = false;\n state.textH = undefined;\n state.textW = undefined;\n state.lineCache = [];\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n setElementBoundsX(state) {\n const { x, contain, width } = state.props;\n const { elementBounds } = state;\n elementBounds.x1 = x;\n elementBounds.x2 = contain !== 'none' ? x + width : Infinity;\n }\n setElementBoundsY(state) {\n const { y, contain, height } = state.props;\n const { elementBounds } = state;\n elementBounds.y1 = y;\n elementBounds.y2 = contain === 'both' ? y + height : Infinity;\n }\n}\n//# sourceMappingURL=SdfTextRenderer.js.map","import { CoreExtension } from '../../exports/core-api.js';\n/**\n * Type guard that checks if a Class extends CoreExtension.\n *\n * @param Class\n * @returns\n */\nexport function classExtendsCoreExtension(Class) {\n return Class.prototype instanceof CoreExtension;\n}\nexport async function loadCoreExtension(coreExtensionModule, stage) {\n let module;\n try {\n console.log('Loading core extension', coreExtensionModule);\n module = (await import(coreExtensionModule /* @vite-ignore */));\n }\n catch (e) {\n console.error(`The core extension module at '${coreExtensionModule}' could not be loaded.`);\n console.error(e);\n return;\n }\n if (!module.default) {\n console.error(`The core extension module at '${coreExtensionModule}' does not have a default export.`);\n return;\n }\n const ExtensionClass = module.default;\n if (classExtendsCoreExtension(ExtensionClass)) {\n const coreExtension = new ExtensionClass();\n try {\n await coreExtension.run(stage);\n }\n catch (e) {\n console.error(`The core extension at '${coreExtensionModule}' threw an error.`);\n console.error(e);\n }\n }\n else {\n console.error(`The core extension at '${coreExtensionModule}' does not extend CoreExtension.`);\n }\n}\nexport function santizeCustomDataMap(d) {\n const validTypes = { boolean: true, string: true, number: true };\n const keys = Object.keys(d);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!key) {\n continue;\n }\n const value = d[key];\n const valueType = typeof value;\n // Typescript doesn't understand the above const valueType ¯\\_(ツ)_/¯\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore-next-line\n if (valueType === 'string' && value.length > 2048) {\n console.warn(`Custom Data value for ${key} is too long, it will be truncated to 2048 characters`);\n // same here, see above comment, this can only be a string at this point\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore-next-line\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n d[key] = value.substring(0, 2048);\n }\n if (!validTypes[valueType]) {\n console.warn(`Custom Data value for ${key} is not a boolean, string, or number, it will be ignored`);\n delete d[key];\n }\n }\n return d;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ManualCountTextureUsageTracker, } from './texture-usage-trackers/ManualCountTextureUsageTracker.js';\nimport { FinalizationRegistryTextureUsageTracker } from './texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { Inspector } from './Inspector.js';\nimport { santizeCustomDataMap } from '../render-drivers/utils.js';\nimport { isProductionEnvironment } from '../utils.js';\n/**\n * The Renderer Main API\n *\n * @remarks\n * This is the primary class used to configure and operate the Renderer.\n *\n * It is used to create and destroy Nodes, as well as Texture and Shader\n * references.\n *\n * Example:\n * ```ts\n * import { RendererMain, MainCoreDriver } from '@lightningjs/renderer';\n *\n * // Initialize the Renderer\n * const renderer = new RendererMain(\n * {\n * appWidth: 1920,\n * appHeight: 1080\n * },\n * 'app',\n * new MainCoreDriver(),\n * );\n * ```\n */\nexport class RendererMain extends EventEmitter {\n root = null;\n driver;\n canvas;\n settings;\n inspector = null;\n nodes = new Map();\n nextTextureId = 1;\n /**\n * Texture Usage Tracker for Usage Based Texture Garbage Collection\n *\n * @remarks\n * For internal use only. DO NOT ACCESS.\n */\n textureTracker;\n /**\n * Constructs a new Renderer instance\n *\n * @param settings Renderer settings\n * @param target Element ID or HTMLElement to insert the canvas into\n * @param driver Core Driver to use\n */\n constructor(settings, target, driver) {\n super();\n const resolvedSettings = {\n appWidth: settings.appWidth || 1920,\n appHeight: settings.appHeight || 1080,\n txMemByteThreshold: settings.txMemByteThreshold || 124e6,\n boundsMargin: settings.boundsMargin || 0,\n deviceLogicalPixelRatio: settings.deviceLogicalPixelRatio || 1,\n devicePhysicalPixelRatio: settings.devicePhysicalPixelRatio || window.devicePixelRatio,\n clearColor: settings.clearColor ?? 0x00000000,\n coreExtensionModule: settings.coreExtensionModule || null,\n experimental_FinalizationRegistryTextureUsageTracker: settings.experimental_FinalizationRegistryTextureUsageTracker ?? false,\n textureCleanupOptions: settings.textureCleanupOptions || {},\n fpsUpdateInterval: settings.fpsUpdateInterval || 0,\n numImageWorkers: settings.numImageWorkers !== undefined ? settings.numImageWorkers : 2,\n enableContextSpy: settings.enableContextSpy ?? false,\n enableInspector: settings.enableInspector ?? false,\n };\n this.settings = resolvedSettings;\n const { appWidth, appHeight, deviceLogicalPixelRatio, devicePhysicalPixelRatio, enableInspector, } = resolvedSettings;\n const releaseCallback = (textureId) => {\n this.driver.releaseTexture(textureId);\n };\n const useFinalizationRegistryTracker = resolvedSettings.experimental_FinalizationRegistryTextureUsageTracker &&\n typeof FinalizationRegistry === 'function';\n this.textureTracker = useFinalizationRegistryTracker\n ? new FinalizationRegistryTextureUsageTracker(releaseCallback)\n : new ManualCountTextureUsageTracker(releaseCallback, this.settings.textureCleanupOptions);\n const deviceLogicalWidth = appWidth * deviceLogicalPixelRatio;\n const deviceLogicalHeight = appHeight * deviceLogicalPixelRatio;\n this.driver = driver;\n const canvas = document.createElement('canvas');\n this.canvas = canvas;\n canvas.width = deviceLogicalWidth * devicePhysicalPixelRatio;\n canvas.height = deviceLogicalHeight * devicePhysicalPixelRatio;\n canvas.style.width = `${deviceLogicalWidth}px`;\n canvas.style.height = `${deviceLogicalHeight}px`;\n let targetEl;\n if (typeof target === 'string') {\n targetEl = document.getElementById(target);\n }\n else {\n targetEl = target;\n }\n if (!targetEl) {\n throw new Error('Could not find target element');\n }\n // Hook up the driver's callbacks\n driver.onCreateNode = (node) => {\n this.nodes.set(node.id, node);\n };\n driver.onBeforeDestroyNode = (node) => {\n this.nodes.delete(node.id);\n };\n driver.onFpsUpdate = (fpsData) => {\n this.emit('fpsUpdate', fpsData);\n };\n driver.onFrameTick = (frameTickData) => {\n this.emit('frameTick', frameTickData);\n };\n driver.onIdle = () => {\n this.emit('idle');\n };\n targetEl.appendChild(canvas);\n if (enableInspector && !isProductionEnvironment()) {\n this.inspector = new Inspector(canvas, resolvedSettings);\n }\n }\n /**\n * Initialize the renderer\n *\n * @remarks\n * This method must be called and resolved asyncronously before any other\n * methods are called.\n */\n async init() {\n await this.driver.init(this, this.settings, this.canvas);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.root = this.driver.getRootNode();\n }\n /**\n * Create a new scene graph node\n *\n * @remarks\n * A node is the main graphical building block of the Renderer scene graph. It\n * can be a container for other nodes, or it can be a leaf node that renders a\n * solid color, gradient, image, or specific texture, using a specific shader.\n *\n * To create a text node, see {@link createTextNode}.\n *\n * See {@link INode} for more details.\n *\n * @param props\n * @returns\n */\n createNode(props) {\n if (this.inspector) {\n return this.inspector.createNode(this.driver, this.resolveNodeDefaults(props));\n }\n return this.driver.createNode(this.resolveNodeDefaults(props));\n }\n /**\n * Create a new scene graph text node\n *\n * @remarks\n * A text node is the second graphical building block of the Renderer scene\n * graph. It renders text using a specific text renderer that is automatically\n * chosen based on the font requested and what type of fonts are installed\n * into an app via a CoreExtension.\n *\n * See {@link ITextNode} for more details.\n *\n * @param props\n * @returns\n */\n createTextNode(props) {\n const fontSize = props.fontSize ?? 16;\n const data = {\n ...this.resolveNodeDefaults(props),\n text: props.text ?? '',\n textRendererOverride: props.textRendererOverride ?? null,\n fontSize,\n fontFamily: props.fontFamily ?? 'sans-serif',\n fontStyle: props.fontStyle ?? 'normal',\n fontWeight: props.fontWeight ?? 'normal',\n fontStretch: props.fontStretch ?? 'normal',\n textAlign: props.textAlign ?? 'left',\n contain: props.contain ?? 'none',\n scrollable: props.scrollable ?? false,\n scrollY: props.scrollY ?? 0,\n offsetY: props.offsetY ?? 0,\n letterSpacing: props.letterSpacing ?? 0,\n lineHeight: props.lineHeight ?? fontSize,\n maxLines: props.maxLines ?? 0,\n textBaseline: props.textBaseline ?? 'alphabetic',\n verticalAlign: props.verticalAlign ?? 'top',\n overflowSuffix: props.overflowSuffix ?? '...',\n debug: props.debug ?? {},\n };\n if (this.inspector) {\n return this.inspector.createTextNode(this.driver, data);\n }\n return this.driver.createTextNode(data);\n }\n /**\n * Resolves the default property values for a Node\n *\n * @remarks\n * This method is used internally by the RendererMain to resolve the default\n * property values for a Node. It is exposed publicly so that it can be used\n * by Core Driver implementations.\n *\n * @param props\n * @returns\n */\n resolveNodeDefaults(props) {\n const color = props.color ?? 0xffffffff;\n const colorTl = props.colorTl ?? props.colorTop ?? props.colorLeft ?? color;\n const colorTr = props.colorTr ?? props.colorTop ?? props.colorRight ?? color;\n const colorBl = props.colorBl ?? props.colorBottom ?? props.colorLeft ?? color;\n const colorBr = props.colorBr ?? props.colorBottom ?? props.colorRight ?? color;\n const data = santizeCustomDataMap(props.data ?? {});\n const parentHasRenderTexture = props.parent?.rtt ?? props.parent?.parentHasRenderTexture ?? false;\n return {\n x: props.x ?? 0,\n y: props.y ?? 0,\n width: props.width ?? 0,\n height: props.height ?? 0,\n alpha: props.alpha ?? 1,\n autosize: props.autosize ?? false,\n clipping: props.clipping ?? false,\n color,\n colorTop: props.colorTop ?? color,\n colorBottom: props.colorBottom ?? color,\n colorLeft: props.colorLeft ?? color,\n colorRight: props.colorRight ?? color,\n colorBl,\n colorBr,\n colorTl,\n colorTr,\n zIndex: props.zIndex ?? 0,\n zIndexLocked: props.zIndexLocked ?? 0,\n parent: props.parent ?? null,\n texture: props.texture ?? null,\n shader: props.shader ?? null,\n // Since setting the `src` will trigger a texture load, we need to set it after\n // we set the texture. Otherwise, problems happen.\n src: props.src ?? '',\n scale: props.scale ?? null,\n scaleX: props.scaleX ?? props.scale ?? 1,\n scaleY: props.scaleY ?? props.scale ?? 1,\n mount: props.mount ?? 0,\n mountX: props.mountX ?? props.mount ?? 0,\n mountY: props.mountY ?? props.mount ?? 0,\n pivot: props.pivot ?? 0.5,\n pivotX: props.pivotX ?? props.pivot ?? 0.5,\n pivotY: props.pivotY ?? props.pivot ?? 0.5,\n rotation: props.rotation ?? 0,\n rtt: props.rtt ?? false,\n parentHasRenderTexture,\n data: data,\n };\n }\n /**\n * Destroy a node\n *\n * @remarks\n * This method destroys a node but does not destroy its children.\n *\n * @param node\n * @returns\n */\n destroyNode(node) {\n if (this.inspector) {\n this.inspector.destroyNode(node);\n }\n return this.driver.destroyNode(node);\n }\n /**\n * Create a new texture reference\n *\n * @remarks\n * This method creates a new reference to a texture. The texture is not\n * loaded until it is used on a node.\n *\n * It can be assigned to a node's `texture` property, or it can be used\n * when creating a SubTexture.\n *\n * @param textureType\n * @param props\n * @param options\n * @returns\n */\n createTexture(textureType, props, options) {\n const id = this.nextTextureId++;\n const desc = {\n descType: 'texture',\n txType: textureType,\n props,\n options: {\n ...options,\n // This ID is used to identify the texture in the CoreTextureManager's\n // ID Texture Map cache.\n id,\n },\n };\n this.textureTracker.registerTexture(desc);\n return desc;\n }\n /**\n * Create a new shader reference\n *\n * @remarks\n * This method creates a new reference to a shader. The shader is not\n * loaded until it is used on a Node.\n *\n * It can be assigned to a Node's `shader` property.\n *\n * @param shaderType\n * @param props\n * @returns\n */\n createShader(shaderType, props) {\n return {\n descType: 'shader',\n shType: shaderType,\n props: props,\n };\n }\n /**\n * Get a Node by its ID\n *\n * @param id\n * @returns\n */\n getNodeById(id) {\n return this.nodes.get(id) || null;\n }\n toggleFreeze() {\n throw new Error('Not implemented');\n }\n advanceFrame() {\n throw new Error('Not implemented');\n }\n /**\n * Re-render the current frame without advancing any running animations.\n *\n * @remarks\n * Any state changes will be reflected in the re-rendered frame. Useful for\n * debugging.\n *\n * May not do anything if the render loop is running on a separate worker.\n */\n rerender() {\n throw new Error('Not implemented');\n }\n}\n//# sourceMappingURL=RendererMain.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getTimingFunction } from '../utils.js';\nimport { mergeColorProgress } from '../../utils.js';\nimport { EventEmitter } from '../../common/EventEmitter.js';\nexport class CoreAnimation extends EventEmitter {\n node;\n props;\n settings;\n propStartValues = {};\n restoreValues = {};\n progress = 0;\n delayFor = 0;\n timingFunction;\n propsList; //fixme - aint got not time for this\n constructor(node, props, settings) {\n super();\n this.node = node;\n this.props = props;\n this.settings = settings;\n this.propStartValues = {};\n this.propsList = Object.keys(props);\n this.propsList.forEach((propName) => {\n this.propStartValues[propName] = node[propName];\n });\n this.timingFunction = (t) => t;\n if (settings.easing && typeof settings.easing === 'string') {\n this.timingFunction = getTimingFunction(settings.easing);\n }\n this.delayFor = settings.delay || 0;\n }\n reset() {\n this.progress = 0;\n this.delayFor = this.settings.delay || 0;\n this.update(0);\n }\n restore() {\n this.reset();\n Object.keys(this.props).forEach((propName) => {\n this.node[propName] = this.propStartValues[propName];\n });\n }\n reverse() {\n this.progress = 0;\n Object.keys(this.props).forEach((propName) => {\n // set the start value to the current value\n const startValue = this.props[propName];\n const endValue = this.propStartValues[propName];\n // swap the start and end values\n this.props[propName] = endValue;\n this.propStartValues[propName] = startValue;\n });\n // restore stop method if we are not looping\n if (!this.settings.loop) {\n this.settings.stopMethod = false;\n }\n }\n applyEasing(p, s, e) {\n return (this.timingFunction(p) || p) * (e - s) + s;\n }\n update(dt) {\n const { duration, loop, easing, stopMethod } = this.settings;\n if (!duration) {\n this.emit('finished', {});\n return;\n }\n if (this.delayFor > 0) {\n this.delayFor -= dt;\n return;\n }\n if (this.delayFor <= 0 && this.progress === 0) {\n this.emit('start', {});\n }\n this.progress += dt / duration;\n if (this.progress > 1) {\n this.progress = loop ? 0 : 1;\n if (stopMethod) {\n // If there's a stop method emit finished so the stop method can be applied.\n // TODO: We should probably reevaluate how stopMethod is implemented as currently\n // stop method 'reset' does not work when looping.\n this.emit('finished', {});\n return;\n }\n }\n for (let i = 0; i < this.propsList.length; i++) {\n const propName = this.propsList[i];\n const propValue = this.props[propName];\n const startValue = this.propStartValues[propName];\n const endValue = propValue;\n if (propName.indexOf('color') !== -1) {\n // check if we have to change the color to begin with\n if (startValue === endValue) {\n this.node[propName] = startValue;\n continue;\n }\n if (easing) {\n const easingProgressValue = this.timingFunction(this.progress) || this.progress;\n const easingColorValue = mergeColorProgress(startValue, endValue, easingProgressValue);\n this.node[propName] = easingColorValue;\n continue;\n }\n this.node[propName] = mergeColorProgress(startValue, endValue, this.progress);\n continue;\n }\n if (easing) {\n this.node[propName] = this.applyEasing(this.progress, startValue, endValue);\n continue;\n }\n this.node[propName] =\n startValue + (endValue - startValue) * this.progress;\n }\n if (this.progress === 1) {\n this.emit('finished', {});\n }\n }\n}\n//# sourceMappingURL=CoreAnimation.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nexport class CoreAnimationController {\n manager;\n animation;\n startedPromise = null;\n /**\n * If this is null, then the animation hasn't started yet.\n */\n startedResolve = null;\n stoppedPromise = null;\n /**\n * If this is null, then the animation is in a finished / stopped state.\n */\n stoppedResolve = null;\n constructor(manager, animation) {\n this.manager = manager;\n this.animation = animation;\n this.state = 'stopped';\n }\n state;\n start() {\n this.makeStartedPromise();\n this.animation.once('start', this.started.bind(this));\n this.makeStoppedPromise();\n this.animation.once('finished', this.finished.bind(this));\n // prevent registering the same animation twice\n if (!this.manager.activeAnimations.has(this.animation)) {\n this.manager.registerAnimation(this.animation);\n }\n this.state = 'running';\n return this;\n }\n stop() {\n this.manager.unregisterAnimation(this.animation);\n if (this.stoppedResolve !== null) {\n this.stoppedResolve();\n this.stoppedResolve = null;\n }\n this.animation.reset();\n this.state = 'stopped';\n return this;\n }\n pause() {\n this.manager.unregisterAnimation(this.animation);\n this.state = 'paused';\n return this;\n }\n restore() {\n this.stoppedResolve = null;\n this.animation.restore();\n return this;\n }\n waitUntilStarted() {\n this.makeStartedPromise();\n const promise = this.startedPromise;\n assertTruthy(promise);\n return promise;\n }\n waitUntilStopped() {\n this.makeStoppedPromise();\n const promise = this.stoppedPromise;\n assertTruthy(promise);\n return promise;\n }\n makeStartedPromise() {\n if (this.startedResolve === null) {\n this.startedPromise = new Promise((resolve) => {\n this.startedResolve = resolve;\n });\n }\n }\n makeStoppedPromise() {\n if (this.stoppedResolve === null) {\n this.stoppedPromise = new Promise((resolve) => {\n this.stoppedResolve = resolve;\n });\n }\n }\n started() {\n assertTruthy(this.startedResolve);\n // resolve promise (and pass current this to continue to the chain)\n this.startedResolve(this);\n this.startedResolve = null;\n }\n finished() {\n assertTruthy(this.stoppedResolve);\n // If the animation is looping, then we need to restart it.\n const { loop, stopMethod } = this.animation.settings;\n if (stopMethod === 'reverse') {\n this.animation.reverse();\n this.start();\n return;\n }\n // resolve promise\n this.stoppedResolve();\n this.stoppedResolve = null;\n if (loop) {\n return;\n }\n // unregister animation\n this.manager.unregisterAnimation(this.animation);\n }\n}\n//# sourceMappingURL=CoreAnimationController.js.map","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n// Matrix3d is a 3x3 matrix in column-major order because that's how WebGL likes it.\n// The matrix is stored in a Float32Array in the following order:\n// | 0 3 6 |\n// | 1 4 7 |\n// | 2 5 8 |\n// The following constants are used to index into the array in a row-major way.\nconst m0 = 0;\nconst m1 = 3;\nconst m2 = 6;\nconst m3 = 1;\nconst m4 = 4;\nconst m5 = 7;\nconst m6 = 2;\nconst m7 = 5;\nconst m8 = 8;\n/**\n * A 3x3 matrix representing a 2D transformation.\n *\n * @remarks\n * The matrix is stored in column-major order in the `data` property which can\n * be passed directly to a WebGL shader uniform.\n *\n * The matrix is stored in a Float32Array in the following index order:\n * | 0 3 6 |\n * | 1 4 7 |\n * | 2 5 8 |\n *\n * Only the first two rows are really used for the transformation. The last row is\n * generally always `[0, 0, 1]` if you only use the 2D transformation methods\n * provided by this class.\n *\n * For convenience, entries in the first two rows can be accessed by the following\n * getter properties:\n * | ta tb tx |\n * | tc td ty |\n * | 0 0 1 |\n */\nexport class Matrix3d {\n data;\n /**\n * Creates a new 3x3 matrix.\n *\n * @param entries Row-major 3x3 matrix\n */\n constructor(entries) {\n if (entries) {\n // Transpose the input matrix so that it's in column-major order.\n this.data = new Float32Array(9);\n this.data[m0] = entries[0];\n this.data[m1] = entries[3];\n this.data[m2] = entries[6];\n this.data[m3] = entries[1];\n this.data[m4] = entries[4];\n this.data[m5] = entries[7];\n this.data[m6] = entries[2];\n this.data[m7] = entries[5];\n this.data[m8] = entries[8];\n }\n else {\n this.data = new Float32Array(9);\n }\n }\n /**\n * Returns a temporary matrix that can be used for calculations.\n *\n * @remarks\n * This is useful for avoiding allocations in tight loops.\n *\n * The matrix is not guaranteed to be the same between calls.\n *\n * @returns\n */\n static get temp() {\n return tempMatrix;\n }\n static multiply(a, b, out) {\n const e0 = a.data[m0] * b.data[m0] +\n a.data[m1] * b.data[m3] +\n a.data[m2] * b.data[m6];\n const e1 = a.data[m0] * b.data[m1] +\n a.data[m1] * b.data[m4] +\n a.data[m2] * b.data[m7];\n const e2 = a.data[m0] * b.data[m2] +\n a.data[m1] * b.data[m5] +\n a.data[m2] * b.data[m8];\n const e3 = a.data[m3] * b.data[m0] +\n a.data[m4] * b.data[m3] +\n a.data[m5] * b.data[m6];\n const e4 = a.data[m3] * b.data[m1] +\n a.data[m4] * b.data[m4] +\n a.data[m5] * b.data[m7];\n const e5 = a.data[m3] * b.data[m2] +\n a.data[m4] * b.data[m5] +\n a.data[m5] * b.data[m8];\n const e6 = a.data[m6] * b.data[m0] +\n a.data[m7] * b.data[m3] +\n a.data[m8] * b.data[m6];\n const e7 = a.data[m6] * b.data[m1] +\n a.data[m7] * b.data[m4] +\n a.data[m8] * b.data[m7];\n const e8 = a.data[m6] * b.data[m2] +\n a.data[m7] * b.data[m5] +\n a.data[m8] * b.data[m8];\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = e0;\n out.data[m1] = e1;\n out.data[m2] = e2;\n out.data[m3] = e3;\n out.data[m4] = e4;\n out.data[m5] = e5;\n out.data[m6] = e6;\n out.data[m7] = e7;\n out.data[m8] = e8;\n return out;\n }\n static identity(out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = 1;\n out.data[m1] = 0;\n out.data[m2] = 0;\n out.data[m3] = 0;\n out.data[m4] = 1;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static translate(x, y, out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = 1;\n out.data[m1] = 0;\n out.data[m2] = x;\n out.data[m3] = 0;\n out.data[m4] = 1;\n out.data[m5] = y;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static scale(sx, sy, out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = sx;\n out.data[m1] = 0;\n out.data[m2] = 0;\n out.data[m3] = 0;\n out.data[m4] = sy;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static rotate(angle, out) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = cos;\n out.data[m1] = -sin;\n out.data[m2] = 0;\n out.data[m3] = sin;\n out.data[m4] = cos;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static copy(src, dst, transpose) {\n if (!dst) {\n dst = new Matrix3d();\n }\n dst.data[0] = src.data[0];\n dst.data[1] = src.data[1];\n dst.data[2] = src.data[2];\n dst.data[3] = src.data[3];\n dst.data[4] = src.data[4];\n dst.data[5] = src.data[5];\n dst.data[6] = src.data[6];\n dst.data[7] = src.data[7];\n dst.data[8] = src.data[8];\n return dst;\n }\n translate(x, y) {\n this.data[m2] = this.data[m0] * x + this.data[m1] * y + this.data[m2];\n this.data[m5] = this.data[m3] * x + this.data[m4] * y + this.data[m5];\n return this;\n }\n scale(sx, sy) {\n this.data[m0] = this.data[m0] * sx;\n this.data[m1] = this.data[m1] * sy;\n this.data[m3] = this.data[m3] * sx;\n this.data[m4] = this.data[m4] * sy;\n return this;\n }\n rotate(angle) {\n if (angle === 0 || !((angle % Math.PI) * 2)) {\n return this;\n }\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const e0 = this.data[m0] * cos + this.data[m1] * sin;\n const e1 = this.data[m1] * cos - this.data[m0] * sin;\n const e3 = this.data[m3] * cos + this.data[m4] * sin;\n const e4 = this.data[m4] * cos - this.data[m3] * sin;\n this.data[m0] = e0;\n this.data[m1] = e1;\n this.data[m3] = e3;\n this.data[m4] = e4;\n return this;\n }\n multiply(other) {\n return Matrix3d.multiply(this, other, this);\n }\n get tx() {\n return this.data[m2];\n }\n get ty() {\n return this.data[m5];\n }\n get ta() {\n return this.data[m0];\n }\n get tb() {\n return this.data[m1];\n }\n get tc() {\n return this.data[m3];\n }\n get td() {\n return this.data[m4];\n }\n transformPoint(x, y) {\n return [\n this.data[m0] * x + this.data[m1] * y + this.data[m2],\n this.data[m3] * x + this.data[m4] * y + this.data[m3],\n ];\n }\n}\nconst tempMatrix = new Matrix3d();\n//# sourceMappingURL=Matrix3d.js.map","const rx1 = 0;\nconst rx2 = 2;\nconst rx3 = 4;\nconst rx4 = 6;\nconst ry1 = 1;\nconst ry2 = 3;\nconst ry3 = 5;\nconst ry4 = 7;\nexport class RenderCoords {\n data;\n constructor(entries) {\n this.data = new Float32Array(8);\n if (entries) {\n this.data[rx1] = entries[rx1];\n this.data[rx2] = entries[rx2];\n this.data[rx3] = entries[rx3];\n this.data[rx4] = entries[rx4];\n this.data[ry1] = entries[ry1];\n this.data[ry2] = entries[ry2];\n this.data[ry3] = entries[ry3];\n this.data[ry4] = entries[ry4];\n }\n }\n static translate(x1, y1, x2, y2, x3, y3, x4, y4, out) {\n if (!out) {\n out = new RenderCoords();\n }\n out.data[rx1] = x1;\n out.data[rx2] = x2;\n out.data[rx3] = x3;\n out.data[rx4] = x4;\n out.data[ry1] = y1;\n out.data[ry2] = y2;\n out.data[ry3] = y3;\n out.data[ry4] = y4;\n return out;\n }\n get x1() {\n return this.data[rx1];\n }\n get x2() {\n return this.data[rx2];\n }\n get x3() {\n return this.data[rx3];\n }\n get x4() {\n return this.data[rx4];\n }\n get y1() {\n return this.data[ry1];\n }\n get y2() {\n return this.data[ry2];\n }\n get y3() {\n return this.data[ry3];\n }\n get y4() {\n return this.data[ry4];\n }\n}\n//# sourceMappingURL=RenderCoords.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, mergeColorAlphaPremultiplied, getImageAspectRatio, } from '../utils.js';\nimport { RenderTexture } from './textures/RenderTexture.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { copyRect, intersectRect, createBound, boundInsideBound, } from './lib/utils.js';\nimport { Matrix3d } from './lib/Matrix3d.js';\nimport { RenderCoords } from './lib/RenderCoords.js';\nexport var CoreNodeRenderState;\n(function (CoreNodeRenderState) {\n CoreNodeRenderState[CoreNodeRenderState[\"Init\"] = 0] = \"Init\";\n CoreNodeRenderState[CoreNodeRenderState[\"OutOfBounds\"] = 2] = \"OutOfBounds\";\n CoreNodeRenderState[CoreNodeRenderState[\"InBounds\"] = 4] = \"InBounds\";\n CoreNodeRenderState[CoreNodeRenderState[\"InViewport\"] = 8] = \"InViewport\";\n})(CoreNodeRenderState || (CoreNodeRenderState = {}));\nconst CoreNodeRenderStateMap = new Map();\nCoreNodeRenderStateMap.set(CoreNodeRenderState.Init, 'init');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.OutOfBounds, 'outOfBounds');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.InBounds, 'inBounds');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.InViewport, 'inViewport');\nexport var UpdateType;\n(function (UpdateType) {\n /**\n * Child updates\n */\n UpdateType[UpdateType[\"Children\"] = 1] = \"Children\";\n /**\n * Scale/Rotate transform update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `scaleRotateTransform`\n */\n UpdateType[UpdateType[\"ScaleRotate\"] = 2] = \"ScaleRotate\";\n /**\n * Translate transform update (x/y/width/height/pivot/mount)\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `localTransform`\n */\n UpdateType[UpdateType[\"Local\"] = 4] = \"Local\";\n /**\n * Global Transform update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `globalTransform`\n * - `renderCoords`\n * - `renderBound`\n */\n UpdateType[UpdateType[\"Global\"] = 8] = \"Global\";\n /**\n * Clipping rect update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `clippingRect`\n */\n UpdateType[UpdateType[\"Clipping\"] = 16] = \"Clipping\";\n /**\n * Calculated ZIndex update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `calcZIndex`\n */\n UpdateType[UpdateType[\"CalculatedZIndex\"] = 32] = \"CalculatedZIndex\";\n /**\n * Z-Index Sorted Children update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `children` (sorts children by their `calcZIndex`)\n */\n UpdateType[UpdateType[\"ZIndexSortedChildren\"] = 64] = \"ZIndexSortedChildren\";\n /**\n * Premultiplied Colors update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `premultipliedColorTl`\n * - `premultipliedColorTr`\n * - `premultipliedColorBl`\n * - `premultipliedColorBr`\n */\n UpdateType[UpdateType[\"PremultipliedColors\"] = 128] = \"PremultipliedColors\";\n /**\n * World Alpha update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `worldAlpha` = `parent.worldAlpha` * `alpha`\n */\n UpdateType[UpdateType[\"WorldAlpha\"] = 256] = \"WorldAlpha\";\n /**\n * Render State update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `renderState`\n */\n UpdateType[UpdateType[\"RenderState\"] = 512] = \"RenderState\";\n /**\n * Is Renderable update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `isRenderable`\n */\n UpdateType[UpdateType[\"IsRenderable\"] = 1024] = \"IsRenderable\";\n /**\n * None\n */\n UpdateType[UpdateType[\"None\"] = 0] = \"None\";\n /**\n * All\n */\n UpdateType[UpdateType[\"All\"] = 2047] = \"All\";\n})(UpdateType || (UpdateType = {}));\nexport class CoreNode extends EventEmitter {\n stage;\n children = [];\n props;\n updateType = UpdateType.All;\n globalTransform;\n scaleRotateTransform;\n localTransform;\n renderCoords;\n renderBound;\n strictBound;\n preloadBound;\n clippingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n };\n isRenderable = false;\n renderState = CoreNodeRenderState.Init;\n worldAlpha = 1;\n premultipliedColorTl = 0;\n premultipliedColorTr = 0;\n premultipliedColorBl = 0;\n premultipliedColorBr = 0;\n calcZIndex = 0;\n hasRTTupdates = false;\n constructor(stage, props) {\n super();\n this.stage = stage;\n this.props = {\n ...props,\n parent: null,\n // Assign a default value to parentHasRenderTexture\n parentHasRenderTexture: false,\n };\n // Allow for parent to be processed appropriately\n this.parent = props.parent;\n // Allow for Render Texture to be processed appropriately\n this.rtt = props.rtt;\n this.updateScaleRotateTransform();\n }\n //#region Textures\n loadTexture(textureType, props, options = null) {\n // First unload any existing texture\n if (this.props.texture) {\n this.unloadTexture();\n }\n const { txManager } = this.stage;\n const texture = txManager.loadTexture(textureType, props, options);\n this.props.texture = texture;\n this.props.textureOptions = options;\n this.setUpdateType(UpdateType.IsRenderable);\n // If texture is already loaded / failed, trigger loaded event manually\n // so that users get a consistent event experience.\n // We do this in a microtask to allow listeners to be attached in the same\n // synchronous task after calling loadTexture()\n queueMicrotask(() => {\n if (texture.state === 'loaded') {\n this.onTextureLoaded(texture, texture.dimensions);\n }\n else if (texture.state === 'failed') {\n this.onTextureFailed(texture, texture.error);\n }\n else if (texture.state === 'freed') {\n this.onTextureFreed(texture);\n }\n texture.on('loaded', this.onTextureLoaded);\n texture.on('failed', this.onTextureFailed);\n texture.on('freed', this.onTextureFreed);\n });\n }\n unloadTexture() {\n if (this.props.texture) {\n const { texture } = this.props;\n texture.off('loaded', this.onTextureLoaded);\n texture.off('failed', this.onTextureFailed);\n texture.off('freed', this.onTextureFreed);\n texture.setRenderableOwner(this, false);\n }\n this.props.texture = null;\n this.props.textureOptions = null;\n this.setUpdateType(UpdateType.IsRenderable);\n }\n autosizeNode(dimensions) {\n if (this.autosize) {\n this.width = dimensions.width;\n this.height = dimensions.height;\n }\n }\n onTextureLoaded = (target, dimensions) => {\n this.autosizeNode(dimensions);\n // If parent has a render texture, flag that we need to update\n // @todo: Reserve type for RTT updates\n if (this.parentHasRenderTexture) {\n this.setRTTUpdates(1);\n }\n this.emit('loaded', {\n type: 'texture',\n dimensions,\n });\n queueMicrotask(() => {\n // Texture was loaded. In case the RAF loop has already stopped, we request\n // a render to ensure the texture is rendered.\n this.stage.requestRender();\n });\n };\n onTextureFailed = (target, error) => {\n this.emit('failed', {\n type: 'texture',\n error,\n });\n };\n onTextureFreed = (target) => {\n this.emit('freed', {\n type: 'texture',\n });\n };\n //#endregion Textures\n loadShader(shaderType, props) {\n const shManager = this.stage.renderer.getShaderManager();\n assertTruthy(shManager);\n const { shader, props: p } = shManager.loadShader(shaderType, props);\n this.props.shader = shader;\n this.props.shaderProps = p;\n this.setUpdateType(UpdateType.IsRenderable);\n }\n /**\n * Change types types is used to determine the scope of the changes being applied\n *\n * @remarks\n * See {@link UpdateType} for more information on each type\n *\n * @param type\n */\n setUpdateType(type) {\n this.updateType |= type;\n // If we're updating this node at all, we need to inform the parent\n // (and all ancestors) that their children need updating as well\n const parent = this.props.parent;\n if (parent && !(parent.updateType & UpdateType.Children)) {\n parent.setUpdateType(UpdateType.Children);\n }\n // If node is part of RTT texture\n // Flag that we need to update\n if (this.parentHasRenderTexture) {\n this.setRTTUpdates(type);\n }\n }\n sortChildren() {\n this.children.sort((a, b) => a.calcZIndex - b.calcZIndex);\n }\n updateScaleRotateTransform() {\n this.scaleRotateTransform = Matrix3d.rotate(this.props.rotation, this.scaleRotateTransform).scale(this.props.scaleX, this.props.scaleY);\n }\n updateLocalTransform() {\n assertTruthy(this.scaleRotateTransform);\n const pivotTranslateX = this.props.pivotX * this.props.width;\n const pivotTranslateY = this.props.pivotY * this.props.height;\n const mountTranslateX = this.props.mountX * this.props.width;\n const mountTranslateY = this.props.mountY * this.props.height;\n this.localTransform = Matrix3d.translate(pivotTranslateX - mountTranslateX + this.props.x, pivotTranslateY - mountTranslateY + this.props.y, this.localTransform)\n .multiply(this.scaleRotateTransform)\n .translate(-pivotTranslateX, -pivotTranslateY);\n this.setUpdateType(UpdateType.Global);\n }\n /**\n * @todo: test for correct calculation flag\n * @param delta\n */\n update(delta, parentClippingRect) {\n if (this.updateType & UpdateType.ScaleRotate) {\n this.updateScaleRotateTransform();\n this.setUpdateType(UpdateType.Local);\n }\n if (this.updateType & UpdateType.Local) {\n this.updateLocalTransform();\n this.setUpdateType(UpdateType.Global);\n }\n const parent = this.props.parent;\n let childUpdateType = UpdateType.None;\n if (this.updateType & UpdateType.Global) {\n assertTruthy(this.localTransform);\n this.globalTransform = Matrix3d.copy(parent?.globalTransform || this.localTransform, this.globalTransform);\n if (this.parentHasRenderTexture && this.props.parent?.rtt) {\n this.globalTransform = Matrix3d.identity();\n }\n if (parent) {\n this.globalTransform.multiply(this.localTransform);\n }\n this.calculateRenderCoords();\n this.updateBoundingRect();\n this.setUpdateType(UpdateType.Clipping | UpdateType.RenderState | UpdateType.Children);\n childUpdateType |= UpdateType.Global;\n }\n if (this.updateType & UpdateType.Clipping) {\n this.calculateClippingRect(parentClippingRect);\n this.setUpdateType(UpdateType.Children);\n childUpdateType |= UpdateType.Clipping;\n }\n if (this.updateType & UpdateType.WorldAlpha) {\n if (parent) {\n this.worldAlpha = parent.worldAlpha * this.props.alpha;\n }\n else {\n this.worldAlpha = this.props.alpha;\n }\n this.setUpdateType(UpdateType.Children |\n UpdateType.PremultipliedColors |\n UpdateType.IsRenderable);\n childUpdateType |= UpdateType.WorldAlpha;\n }\n if (this.updateType & UpdateType.PremultipliedColors) {\n this.premultipliedColorTl = mergeColorAlphaPremultiplied(this.props.colorTl, this.worldAlpha, true);\n // If all the colors are the same just sent them all to the same value\n if (this.props.colorTl === this.props.colorTr &&\n this.props.colorBl === this.props.colorBr &&\n this.props.colorTl === this.props.colorBl) {\n this.premultipliedColorTr =\n this.premultipliedColorBl =\n this.premultipliedColorBr =\n this.premultipliedColorTl;\n }\n else {\n this.premultipliedColorTr = mergeColorAlphaPremultiplied(this.props.colorTr, this.worldAlpha, true);\n this.premultipliedColorBl = mergeColorAlphaPremultiplied(this.props.colorBl, this.worldAlpha, true);\n this.premultipliedColorBr = mergeColorAlphaPremultiplied(this.props.colorBr, this.worldAlpha, true);\n }\n }\n if (this.updateType & UpdateType.RenderState) {\n this.updateRenderState(parentClippingRect);\n this.setUpdateType(UpdateType.IsRenderable);\n }\n if (this.updateType & UpdateType.IsRenderable) {\n this.updateIsRenderable();\n }\n // No need to update zIndex if there is no parent\n if (parent && this.updateType & UpdateType.CalculatedZIndex) {\n this.calculateZIndex();\n // Tell parent to re-sort children\n parent.setUpdateType(UpdateType.ZIndexSortedChildren);\n }\n if (this.updateType & UpdateType.Children &&\n this.children.length &&\n !this.rtt) {\n this.children.forEach((child) => {\n // Trigger the depenedent update types on the child\n child.setUpdateType(childUpdateType);\n // If child has no updates, skip\n if (child.updateType === 0) {\n return;\n }\n child.update(delta, this.clippingRect);\n });\n }\n // Sorting children MUST happen after children have been updated so\n // that they have the oppotunity to update their calculated zIndex.\n if (this.updateType & UpdateType.ZIndexSortedChildren) {\n // reorder z-index\n this.sortChildren();\n }\n // reset update type\n this.updateType = 0;\n }\n //check if CoreNode is renderable based on props\n checkRenderProps() {\n if (this.props.texture) {\n return true;\n }\n if (!this.props.width || !this.props.height) {\n return false;\n }\n if (this.props.shader) {\n return true;\n }\n if (this.props.clipping) {\n return true;\n }\n if (this.props.color !== 0) {\n return true;\n }\n // Consider removing these checks and just using the color property check above.\n // Maybe add a forceRender prop for nodes that should always render.\n if (this.props.colorTop !== 0) {\n return true;\n }\n if (this.props.colorBottom !== 0) {\n return true;\n }\n if (this.props.colorLeft !== 0) {\n return true;\n }\n if (this.props.colorRight !== 0) {\n return true;\n }\n if (this.props.colorTl !== 0) {\n return true;\n }\n if (this.props.colorTr !== 0) {\n return true;\n }\n if (this.props.colorBl !== 0) {\n return true;\n }\n if (this.props.colorBr !== 0) {\n return true;\n }\n return false;\n }\n checkRenderBounds(parentClippingRect) {\n assertTruthy(this.renderBound);\n const rectW = parentClippingRect.width || this.stage.root.width;\n const rectH = parentClippingRect.height || this.stage.root.height;\n this.strictBound = createBound(parentClippingRect.x, parentClippingRect.y, parentClippingRect.x + rectW, parentClippingRect.y + rectH, this.strictBound);\n const renderM = this.stage.boundsMargin;\n this.preloadBound = createBound(parentClippingRect.x - renderM[3], parentClippingRect.y - renderM[0], parentClippingRect.x + rectW + renderM[1], parentClippingRect.y + rectH + renderM[2], this.preloadBound);\n if (boundInsideBound(this.renderBound, this.strictBound)) {\n return CoreNodeRenderState.InViewport;\n }\n if (boundInsideBound(this.renderBound, this.preloadBound)) {\n return CoreNodeRenderState.InBounds;\n }\n return CoreNodeRenderState.OutOfBounds;\n }\n updateRenderState(parentClippingRect) {\n const renderState = this.checkRenderBounds(parentClippingRect);\n if (renderState !== this.renderState) {\n let previous = this.renderState;\n this.renderState = renderState;\n if (previous === CoreNodeRenderState.InViewport) {\n this.emit('outOfViewport', {\n previous,\n current: renderState,\n });\n }\n if (previous < CoreNodeRenderState.InBounds &&\n renderState === CoreNodeRenderState.InViewport) {\n this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), {\n previous,\n current: renderState,\n });\n previous = CoreNodeRenderState.InBounds;\n }\n else if (previous > CoreNodeRenderState.InBounds &&\n renderState === CoreNodeRenderState.OutOfBounds) {\n this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), {\n previous,\n current: renderState,\n });\n previous = CoreNodeRenderState.InBounds;\n }\n const event = CoreNodeRenderStateMap.get(renderState);\n assertTruthy(event);\n this.emit(event, {\n previous,\n current: renderState,\n });\n }\n }\n setRenderState(state) {\n if (state !== this.renderState) {\n this.renderState = state;\n this.emit(CoreNodeRenderState[state]);\n }\n }\n /**\n * This function updates the `isRenderable` property based on certain conditions.\n *\n * @returns\n */\n updateIsRenderable() {\n let newIsRenderable;\n if (this.worldAlpha === 0 || !this.checkRenderProps()) {\n newIsRenderable = false;\n }\n else {\n newIsRenderable = this.renderState > CoreNodeRenderState.OutOfBounds;\n }\n if (this.isRenderable !== newIsRenderable) {\n this.isRenderable = newIsRenderable;\n this.onChangeIsRenderable(newIsRenderable);\n }\n }\n onChangeIsRenderable(isRenderable) {\n this.props.texture?.setRenderableOwner(this, isRenderable);\n }\n calculateRenderCoords() {\n const { width, height, globalTransform: transform } = this;\n assertTruthy(transform);\n const { tx, ty, ta, tb, tc, td } = transform;\n if (tb === 0 && tc === 0) {\n const minX = tx;\n const maxX = tx + width * ta;\n const minY = ty;\n const maxY = ty + height * td;\n this.renderCoords = RenderCoords.translate(\n //top-left\n minX, minY, \n //top-right\n maxX, minY, \n //bottom-right\n maxX, maxY, \n //bottom-left\n minX, maxY, this.renderCoords);\n }\n else {\n this.renderCoords = RenderCoords.translate(\n //top-left\n tx, ty, \n //top-right\n tx + width * ta, ty + width * tc, \n //bottom-right\n tx + width * ta + height * tb, ty + width * tc + height * td, \n //bottom-left\n tx + height * tb, ty + height * td, this.renderCoords);\n }\n }\n updateBoundingRect() {\n const { renderCoords, globalTransform: transform } = this;\n assertTruthy(transform);\n assertTruthy(renderCoords);\n const { tb, tc } = transform;\n const { x1, y1, x3, y3 } = renderCoords;\n if (tb === 0 || tc === 0) {\n this.renderBound = createBound(x1, y1, x3, y3, this.renderBound);\n }\n else {\n const { x2, x4, y2, y4 } = renderCoords;\n this.renderBound = createBound(Math.min(x1, x2, x3, x4), Math.min(y1, y2, y3, y4), Math.max(x1, x2, x3, x4), Math.max(y1, y2, y3, y4), this.renderBound);\n }\n }\n /**\n * This function calculates the clipping rectangle for a node.\n *\n * The function then checks if the node is rotated. If the node requires clipping and is not rotated, a new clipping rectangle is created based on the node's global transform and dimensions.\n * If a parent clipping rectangle exists, it is intersected with the node's clipping rectangle (if it exists), or replaces the node's clipping rectangle.\n *\n * Finally, the node's parentClippingRect and clippingRect properties are updated.\n */\n calculateClippingRect(parentClippingRect) {\n assertTruthy(this.globalTransform);\n const { clippingRect, props, globalTransform: gt } = this;\n const { clipping } = props;\n const isRotated = gt.tb !== 0 || gt.tc !== 0;\n if (clipping && !isRotated) {\n clippingRect.x = gt.tx;\n clippingRect.y = gt.ty;\n clippingRect.width = this.width * gt.ta;\n clippingRect.height = this.height * gt.td;\n clippingRect.valid = true;\n }\n else {\n clippingRect.valid = false;\n }\n if (parentClippingRect.valid && clippingRect.valid) {\n // Intersect parent clipping rect with node clipping rect\n intersectRect(parentClippingRect, clippingRect, clippingRect);\n }\n else if (parentClippingRect.valid) {\n // Copy parent clipping rect\n copyRect(parentClippingRect, clippingRect);\n clippingRect.valid = true;\n }\n }\n calculateZIndex() {\n const props = this.props;\n const z = props.zIndex || 0;\n const p = props.parent?.zIndex || 0;\n let zIndex = z;\n if (props.parent?.zIndexLocked) {\n zIndex = z < p ? z : p;\n }\n this.calcZIndex = zIndex;\n }\n /**\n * Destroy the node and cleanup all resources\n */\n destroy() {\n this.unloadTexture();\n this.clippingRect.valid = false;\n this.isRenderable = false;\n delete this.renderCoords;\n delete this.renderBound;\n delete this.strictBound;\n delete this.preloadBound;\n delete this.globalTransform;\n delete this.scaleRotateTransform;\n delete this.localTransform;\n this.props.texture = null;\n this.props.shader = null;\n this.removeAllListeners();\n this.parent = null;\n }\n renderQuads(renderer) {\n const { width, height, texture, textureOptions, shader, shaderProps, rtt, parentHasRenderTexture, } = this.props;\n // Prevent quad rendering if parent has a render texture\n // and renderer is not currently rendering to a texture\n if (parentHasRenderTexture) {\n if (!renderer.renderToTextureActive) {\n return;\n }\n // Prevent quad rendering if parent render texture is not the active render texture\n if (this.parentRenderTexture !== renderer.activeRttNode) {\n return;\n }\n }\n const { premultipliedColorTl, premultipliedColorTr, premultipliedColorBl, premultipliedColorBr, } = this;\n const { zIndex, worldAlpha, globalTransform: gt, clippingRect } = this;\n assertTruthy(gt);\n // add to list of renderables to be sorted before rendering\n renderer.addQuad({\n width,\n height,\n colorTl: premultipliedColorTl,\n colorTr: premultipliedColorTr,\n colorBl: premultipliedColorBl,\n colorBr: premultipliedColorBr,\n texture,\n textureOptions,\n zIndex,\n shader,\n shaderProps,\n alpha: worldAlpha,\n clippingRect,\n tx: gt.tx,\n ty: gt.ty,\n ta: gt.ta,\n tb: gt.tb,\n tc: gt.tc,\n td: gt.td,\n rtt,\n parentHasRenderTexture,\n framebufferDimensions: this.framebufferDimensions,\n });\n }\n //#region Properties\n get id() {\n return this.props.id;\n }\n get x() {\n return this.props.x;\n }\n set x(value) {\n if (this.props.x !== value) {\n this.props.x = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get absX() {\n return (this.props.x +\n (this.props.parent?.absX || this.props.parent?.globalTransform?.tx || 0));\n }\n get absY() {\n return this.props.y + (this.props.parent?.absY ?? 0);\n }\n get y() {\n return this.props.y;\n }\n set y(value) {\n if (this.props.y !== value) {\n this.props.y = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get width() {\n return this.props.width;\n }\n set width(value) {\n if (this.props.width !== value) {\n this.props.width = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n if (this.props.height !== value) {\n this.props.height = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get scale() {\n // The CoreNode `scale` property is only used by Animations.\n // Unlike INode, `null` should never be possibility for Animations.\n return this.scaleX;\n }\n set scale(value) {\n // The CoreNode `scale` property is only used by Animations.\n // Unlike INode, `null` should never be possibility for Animations.\n this.scaleX = value;\n this.scaleY = value;\n }\n get scaleX() {\n return this.props.scaleX;\n }\n set scaleX(value) {\n if (this.props.scaleX !== value) {\n this.props.scaleX = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get scaleY() {\n return this.props.scaleY;\n }\n set scaleY(value) {\n if (this.props.scaleY !== value) {\n this.props.scaleY = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get mount() {\n return this.props.mount;\n }\n set mount(value) {\n if (this.props.mountX !== value || this.props.mountY !== value) {\n this.props.mountX = value;\n this.props.mountY = value;\n this.props.mount = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get mountX() {\n return this.props.mountX;\n }\n set mountX(value) {\n if (this.props.mountX !== value) {\n this.props.mountX = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get mountY() {\n return this.props.mountY;\n }\n set mountY(value) {\n if (this.props.mountY !== value) {\n this.props.mountY = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivot() {\n return this.props.pivot;\n }\n set pivot(value) {\n if (this.props.pivotX !== value || this.props.pivotY !== value) {\n this.props.pivotX = value;\n this.props.pivotY = value;\n this.props.pivot = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivotX() {\n return this.props.pivotX;\n }\n set pivotX(value) {\n if (this.props.pivotX !== value) {\n this.props.pivotX = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivotY() {\n return this.props.pivotY;\n }\n set pivotY(value) {\n if (this.props.pivotY !== value) {\n this.props.pivotY = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get rotation() {\n return this.props.rotation;\n }\n set rotation(value) {\n if (this.props.rotation !== value) {\n this.props.rotation = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get alpha() {\n return this.props.alpha;\n }\n set alpha(value) {\n this.props.alpha = value;\n this.setUpdateType(UpdateType.PremultipliedColors | UpdateType.WorldAlpha);\n }\n get autosize() {\n return this.props.autosize;\n }\n set autosize(value) {\n this.props.autosize = value;\n }\n get clipping() {\n return this.props.clipping;\n }\n set clipping(value) {\n this.props.clipping = value;\n this.setUpdateType(UpdateType.Clipping);\n }\n get color() {\n return this.props.color;\n }\n set color(value) {\n if (this.props.colorTl !== value ||\n this.props.colorTr !== value ||\n this.props.colorBl !== value ||\n this.props.colorBr !== value) {\n this.colorTl = value;\n this.colorTr = value;\n this.colorBl = value;\n this.colorBr = value;\n }\n this.props.color = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTop() {\n return this.props.colorTop;\n }\n set colorTop(value) {\n if (this.props.colorTl !== value || this.props.colorTr !== value) {\n this.colorTl = value;\n this.colorTr = value;\n }\n this.props.colorTop = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBottom() {\n return this.props.colorBottom;\n }\n set colorBottom(value) {\n if (this.props.colorBl !== value || this.props.colorBr !== value) {\n this.colorBl = value;\n this.colorBr = value;\n }\n this.props.colorBottom = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorLeft() {\n return this.props.colorLeft;\n }\n set colorLeft(value) {\n if (this.props.colorTl !== value || this.props.colorBl !== value) {\n this.colorTl = value;\n this.colorBl = value;\n }\n this.props.colorLeft = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorRight() {\n return this.props.colorRight;\n }\n set colorRight(value) {\n if (this.props.colorTr !== value || this.props.colorBr !== value) {\n this.colorTr = value;\n this.colorBr = value;\n }\n this.props.colorRight = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTl() {\n return this.props.colorTl;\n }\n set colorTl(value) {\n this.props.colorTl = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTr() {\n return this.props.colorTr;\n }\n set colorTr(value) {\n this.props.colorTr = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBl() {\n return this.props.colorBl;\n }\n set colorBl(value) {\n this.props.colorBl = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBr() {\n return this.props.colorBr;\n }\n set colorBr(value) {\n this.props.colorBr = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n // we're only interested in parent zIndex to test\n // if we should use node zIndex is higher then parent zIndex\n get zIndexLocked() {\n return this.props.zIndexLocked || 0;\n }\n set zIndexLocked(value) {\n this.props.zIndexLocked = value;\n this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);\n this.children.forEach((child) => {\n child.setUpdateType(UpdateType.CalculatedZIndex);\n });\n }\n get zIndex() {\n return this.props.zIndex;\n }\n set zIndex(value) {\n this.props.zIndex = value;\n this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);\n this.children.forEach((child) => {\n child.setUpdateType(UpdateType.CalculatedZIndex);\n });\n }\n get parent() {\n return this.props.parent;\n }\n set parent(newParent) {\n const oldParent = this.props.parent;\n if (oldParent === newParent) {\n return;\n }\n this.props.parent = newParent;\n if (oldParent) {\n const index = oldParent.children.indexOf(this);\n assertTruthy(index !== -1, \"CoreNode.parent: Node not found in old parent's children!\");\n oldParent.children.splice(index, 1);\n oldParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);\n }\n if (newParent) {\n newParent.children.push(this);\n // Since this node has a new parent, to be safe, have it do a full update.\n this.setUpdateType(UpdateType.All);\n // Tell parent that it's children need to be updated and sorted.\n newParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);\n if (newParent.rtt || newParent.parentHasRenderTexture) {\n this.setRTTUpdates(UpdateType.All);\n }\n }\n this.parentHasRenderTexture =\n newParent?.rtt || newParent?.parentHasRenderTexture;\n this.updateScaleRotateTransform();\n }\n get rtt() {\n return this.props.rtt;\n }\n set rtt(value) {\n if (!value) {\n return;\n }\n this.props.rtt = true;\n this.hasRTTupdates = true;\n // Store RTT nodes in a separate list\n this.stage.renderer?.renderToTexture(this);\n }\n set parentHasRenderTexture(value) {\n this.props.parentHasRenderTexture = !!value;\n }\n get parentHasRenderTexture() {\n return this.props.parentHasRenderTexture;\n }\n /**\n * Returns the framebuffer dimensions of the node.\n * If the node has a render texture, the dimensions are the same as the node's dimensions.\n * If the node does not have a render texture, the dimensions are inherited from the parent.\n * If the node parent has a render texture and the node is a render texture, the nodes dimensions are used.\n */\n get framebufferDimensions() {\n if (this.parentHasRenderTexture && !this.rtt) {\n return this.parent?.framebufferDimensions;\n }\n return { width: this.width, height: this.height };\n }\n /**\n * Returns the parent render texture node if it exists.\n */\n get parentRenderTexture() {\n let parent = this.parent;\n while (parent) {\n if (parent.rtt) {\n return parent;\n }\n parent = parent.parent;\n }\n return null;\n }\n get texture() {\n return this.props.texture;\n }\n setRTTUpdates(type) {\n this.hasRTTupdates = true;\n this.parent?.setRTTUpdates(type);\n }\n}\n//# sourceMappingURL=CoreNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { CoreAnimation } from '../../core/animations/CoreAnimation.js';\nimport { CoreAnimationController } from '../../core/animations/CoreAnimationController.js';\nimport { CoreNode } from '../../core/CoreNode.js';\nimport { EventEmitter } from '../../common/EventEmitter.js';\nimport { santizeCustomDataMap } from '../utils.js';\nlet nextId = 1;\nexport function getNewId() {\n return nextId++;\n}\nexport class MainOnlyNode extends EventEmitter {\n rendererMain;\n stage;\n id;\n coreNode;\n // Prop stores\n _children = [];\n _src = '';\n _parent = null;\n _texture = null;\n _shader = null;\n _data = {};\n constructor(props, rendererMain, stage, coreNode) {\n super();\n this.rendererMain = rendererMain;\n this.stage = stage;\n this.id = coreNode?.id ?? getNewId();\n this.coreNode =\n coreNode ||\n new CoreNode(this.stage, {\n id: this.id,\n x: props.x,\n y: props.y,\n width: props.width,\n height: props.height,\n alpha: props.alpha,\n autosize: props.autosize,\n clipping: props.clipping,\n color: props.color,\n colorTop: props.colorTop,\n colorBottom: props.colorBottom,\n colorLeft: props.colorLeft,\n colorRight: props.colorRight,\n colorTl: props.colorTl,\n colorTr: props.colorTr,\n colorBl: props.colorBl,\n colorBr: props.colorBr,\n zIndex: props.zIndex,\n zIndexLocked: props.zIndexLocked,\n scaleX: props.scaleX,\n scaleY: props.scaleY,\n mountX: props.mountX,\n mountY: props.mountY,\n mount: props.mount,\n pivot: props.pivot,\n pivotX: props.pivotX,\n pivotY: props.pivotY,\n rotation: props.rotation,\n parent: null,\n shader: null,\n shaderProps: null,\n texture: null,\n textureOptions: null,\n rtt: props.rtt,\n parentHasRenderTexture: props.parentHasRenderTexture,\n });\n // Forward loaded/failed events\n this.coreNode.on('loaded', this.onTextureLoaded);\n this.coreNode.on('failed', this.onTextureFailed);\n this.coreNode.on('freed', this.onTextureFreed);\n this.coreNode.on('outOfBounds', this.onOutOfBounds);\n this.coreNode.on('inBounds', this.onInBounds);\n this.coreNode.on('outOfViewport', this.onOutOfViewport);\n this.coreNode.on('inViewport', this.onInViewport);\n // Assign properties to this object\n this.parent = props.parent;\n this.shader = props.shader;\n this.texture = props.texture;\n this.src = props.src;\n this.rtt = props.rtt;\n this._data = props.data;\n }\n get x() {\n return this.coreNode.x;\n }\n set x(value) {\n this.coreNode.x = value;\n }\n get y() {\n return this.coreNode.y;\n }\n set y(value) {\n this.coreNode.y = value;\n }\n get width() {\n return this.coreNode.width;\n }\n set width(value) {\n this.coreNode.width = value;\n }\n get height() {\n return this.coreNode.height;\n }\n set height(value) {\n this.coreNode.height = value;\n }\n get alpha() {\n return this.coreNode.alpha;\n }\n set alpha(value) {\n this.coreNode.alpha = value;\n }\n get autosize() {\n return this.coreNode.autosize;\n }\n set autosize(value) {\n this.coreNode.autosize = value;\n }\n get clipping() {\n return this.coreNode.clipping;\n }\n set clipping(value) {\n this.coreNode.clipping = value;\n }\n get color() {\n return this.coreNode.color;\n }\n set color(value) {\n this.coreNode.color = value;\n }\n get colorTop() {\n return this.coreNode.colorTop;\n }\n set colorTop(value) {\n this.coreNode.colorTop = value;\n }\n get colorBottom() {\n return this.coreNode.colorBottom;\n }\n set colorBottom(value) {\n this.coreNode.colorBottom = value;\n }\n get colorLeft() {\n return this.coreNode.colorLeft;\n }\n set colorLeft(value) {\n this.coreNode.colorLeft = value;\n }\n get colorRight() {\n return this.coreNode.colorRight;\n }\n set colorRight(value) {\n this.coreNode.colorRight = value;\n }\n get colorTl() {\n return this.coreNode.colorTl;\n }\n set colorTl(value) {\n this.coreNode.colorTl = value;\n }\n get colorTr() {\n return this.coreNode.colorTr;\n }\n set colorTr(value) {\n this.coreNode.colorTr = value;\n }\n get colorBl() {\n return this.coreNode.colorBl;\n }\n set colorBl(value) {\n this.coreNode.colorBl = value;\n }\n get colorBr() {\n return this.coreNode.colorBr;\n }\n set colorBr(value) {\n this.coreNode.colorBr = value;\n }\n get scale() {\n if (this.scaleX !== this.scaleY) {\n return null;\n }\n return this.coreNode.scaleX;\n }\n set scale(value) {\n // We ignore `null` when it's set.\n if (value === null) {\n return;\n }\n this.coreNode.scaleX = value;\n this.coreNode.scaleY = value;\n }\n get scaleX() {\n return this.coreNode.scaleX;\n }\n set scaleX(value) {\n this.coreNode.scaleX = value;\n }\n get scaleY() {\n return this.coreNode.scaleY;\n }\n set scaleY(value) {\n this.coreNode.scaleY = value;\n }\n get mount() {\n return this.coreNode.mount;\n }\n set mount(value) {\n this.coreNode.mount = value;\n }\n get mountX() {\n return this.coreNode.mountX;\n }\n set mountX(value) {\n this.coreNode.mountX = value;\n }\n get mountY() {\n return this.coreNode.mountY;\n }\n set mountY(value) {\n this.coreNode.mountY = value;\n }\n get pivot() {\n return this.coreNode.pivot;\n }\n set pivot(value) {\n this.coreNode.pivot = value;\n }\n get pivotX() {\n return this.coreNode.pivotX;\n }\n set pivotX(value) {\n this.coreNode.pivotX = value;\n }\n get pivotY() {\n return this.coreNode.pivotY;\n }\n set pivotY(value) {\n this.coreNode.pivotY = value;\n }\n get rotation() {\n return this.coreNode.rotation;\n }\n set rotation(value) {\n this.coreNode.rotation = value;\n }\n get parent() {\n return this._parent;\n }\n set parent(newParent) {\n const oldParent = this._parent;\n this._parent = newParent;\n this.coreNode.parent = newParent?.coreNode ?? null;\n if (oldParent) {\n const index = oldParent.children.indexOf(this);\n assertTruthy(index !== -1, \"MainOnlyNode.parent: Node not found in old parent's children!\");\n oldParent.children.splice(index, 1);\n }\n if (newParent) {\n newParent.children.push(this);\n }\n }\n get children() {\n return this._children;\n }\n get zIndex() {\n return this.coreNode.zIndex;\n }\n set zIndex(value) {\n this.coreNode.zIndex = value;\n }\n get zIndexLocked() {\n return this.coreNode.zIndexLocked;\n }\n set zIndexLocked(value) {\n this.coreNode.zIndexLocked = value;\n }\n get src() {\n return this._src;\n }\n set src(imageUrl) {\n if (this._src === imageUrl) {\n return;\n }\n this._src = imageUrl;\n if (!imageUrl) {\n this.texture = null;\n return;\n }\n this.texture = this.rendererMain.createTexture('ImageTexture', {\n src: imageUrl,\n });\n }\n //#region Texture\n get texture() {\n return this._texture;\n }\n set texture(texture) {\n if (this._texture === texture) {\n return;\n }\n if (this._texture) {\n this.rendererMain.textureTracker.decrementTextureRefCount(this._texture);\n }\n if (texture) {\n this.rendererMain.textureTracker.incrementTextureRefCount(texture);\n }\n this._texture = texture;\n if (texture) {\n this.coreNode.loadTexture(texture.txType, texture.props, texture.options);\n }\n else {\n this.coreNode.unloadTexture();\n }\n }\n get rtt() {\n return this.coreNode.rtt;\n }\n set rtt(value) {\n if (value) {\n this.texture = this.rendererMain.createTexture('RenderTexture', {\n width: this.width,\n height: this.height,\n }, { preload: true, flipY: true });\n }\n this.coreNode.rtt = value;\n }\n get parentHasRenderTexture() {\n return this.coreNode.parentHasRenderTexture;\n }\n set parentHasRenderTexture(value) {\n this.coreNode.parentHasRenderTexture = value;\n }\n onTextureLoaded = (target, payload) => {\n this.emit('loaded', payload);\n };\n onTextureFailed = (target, payload) => {\n this.emit('failed', payload);\n };\n onTextureFreed = (target, payload) => {\n this.emit('freed', payload);\n };\n onOutOfBounds = (target, payload) => {\n this.emit('outOfBounds', payload);\n };\n onInBounds = (target, payload) => {\n this.emit('inBounds', payload);\n };\n onOutOfViewport = (target, payload) => {\n this.emit('outOfViewport', payload);\n };\n onInViewport = (target, payload) => {\n this.emit('inViewport', payload);\n };\n //#endregion Texture\n get shader() {\n return this._shader;\n }\n set shader(shader) {\n if (this._shader === shader) {\n return;\n }\n this._shader = shader;\n if (shader) {\n this.coreNode.loadShader(shader.shType, shader.props);\n }\n }\n get data() {\n return this._data;\n }\n set data(d) {\n this._data = santizeCustomDataMap(d);\n }\n destroy() {\n this.emit('beforeDestroy', {});\n //use while loop since setting parent to null removes it from array\n let child = this.children[0];\n while (child) {\n child.destroy();\n child = this.children[0];\n }\n this.coreNode.destroy();\n this.parent = null;\n this.texture = null;\n this.emit('afterDestroy', {});\n this.removeAllListeners();\n }\n flush() {\n // No-op\n }\n animate(props, settings) {\n const animation = new CoreAnimation(this.coreNode, props, settings);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const controller = new CoreAnimationController(this.stage.animationManager, animation);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return controller;\n }\n}\n//# sourceMappingURL=MainOnlyNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Platform render loop initiator\n */\nexport const startLoop = (stage) => {\n let isIdle = false;\n const runLoop = () => {\n stage.updateAnimations();\n if (!stage.hasSceneUpdates()) {\n // We still need to calculate the fps else it looks like the app is frozen\n stage.calculateFps();\n setTimeout(runLoop, 16.666666666666668);\n if (!isIdle) {\n stage.emit('idle');\n isIdle = true;\n }\n return;\n }\n isIdle = false;\n stage.drawFrame();\n requestAnimationFrame(runLoop);\n };\n requestAnimationFrame(runLoop);\n};\n/**\n * Return unix timestamp\n * @return {number}\n */\nexport const getTimeStamp = () => {\n return performance ? performance.now() : Date.now();\n};\n//# sourceMappingURL=platform.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreAnimation } from './CoreAnimation.js';\nexport class AnimationManager {\n activeAnimations = new Set();\n registerAnimation(animation) {\n this.activeAnimations.add(animation);\n }\n unregisterAnimation(animation) {\n this.activeAnimations.delete(animation);\n }\n update(dt) {\n this.activeAnimations.forEach((animation) => {\n animation.update(dt);\n });\n }\n}\n//# sourceMappingURL=AnimationManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {} from '../textures/Texture.js';\nexport class ImageWorkerManager {\n imageWorkersEnabled = true;\n messageManager = {};\n workers = [];\n workerIndex = 0;\n constructor(numImageWorkers) {\n this.workers = this.createWorkers(numImageWorkers);\n this.workers.forEach((worker) => {\n worker.onmessage = this.handleMessage.bind(this);\n });\n }\n handleMessage(event) {\n const { src, data, error } = event.data;\n const msg = this.messageManager[src];\n if (msg) {\n const [resolve, reject] = msg;\n delete this.messageManager[src];\n if (error) {\n reject(new Error(error));\n }\n else {\n resolve(data);\n }\n }\n }\n createWorkers(numWorkers = 1) {\n const workerCode = `\n function hasAlphaChannel(mimeType) {\n return (mimeType.indexOf(\"image/png\") !== -1);\n }\n\n function getImage(src, premultiplyAlpha) {\n return new Promise(function(resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', src, true);\n xhr.responseType = 'blob';\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n var blob = xhr.response;\n var hasAlphaChannel = premultiplyAlpha !== undefined ? premultiplyAlpha : hasAlphaChannel(blob.type);\n\n createImageBitmap(blob, {\n premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',\n colorSpaceConversion: 'none',\n imageOrientation: 'none'\n }).then(function(data) {\n resolve({ data: data, premultiplyAlpha: premultiplyAlpha });\n }).catch(function(error) {\n reject(error);\n });\n } else {\n reject(new Error('Failed to load image: ' + xhr.statusText));\n }\n };\n\n xhr.onerror = function() {\n reject(new Error('Network error occurred while trying to fetch the image.'));\n };\n\n xhr.send();\n });\n }\n\n self.onmessage = (event) => {\n var src = event.data.src;\n var premultiplyAlpha = event.data.premultiplyAlpha;\n\n getImage(src, premultiplyAlpha)\n .then(function(data) {\n self.postMessage({ src: src, data: data }, [data.data]);\n })\n .catch(function(error) {\n self.postMessage({ src: src, error: error.message });\n });\n };\n `;\n const blob = new Blob([workerCode.replace('\"use strict\";', '')], {\n type: 'application/javascript',\n });\n const blobURL = (self.URL ? URL : webkitURL).createObjectURL(blob);\n const workers = [];\n for (let i = 0; i < numWorkers; i++) {\n workers.push(new Worker(blobURL));\n }\n return workers;\n }\n getNextWorker() {\n const worker = this.workers[this.workerIndex];\n this.workerIndex = (this.workerIndex + 1) % this.workers.length;\n return worker;\n }\n convertUrlToAbsolute(url) {\n const absoluteUrl = new URL(url, self.location.href);\n return absoluteUrl.href;\n }\n getImage(src, premultiplyAlpha) {\n return new Promise((resolve, reject) => {\n try {\n if (this.workers) {\n const absoluteSrcUrl = this.convertUrlToAbsolute(src);\n this.messageManager[absoluteSrcUrl] = [resolve, reject];\n this.getNextWorker().postMessage({\n src: absoluteSrcUrl,\n premultiplyAlpha,\n });\n }\n }\n catch (error) {\n reject(error);\n }\n });\n }\n}\n//# sourceMappingURL=ImageWorker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\n/**\n * Texture consisting of a random grid of greyscale pixels\n *\n * @remarks\n * The width and height of the NoiseTexture are defined by it's\n * {@link NoiseTextureProps.width} and {@link NoiseTextureProps.height}\n * properties. The {@link NoiseTextureProps.cacheId} prop can be varied in order\n * to bypass cache and get newly randomized texture data.\n */\nexport class NoiseTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = NoiseTexture.resolveDefaults(props);\n }\n async getTextureData() {\n const { width, height } = this.props;\n const size = width * height * 4;\n const pixelData8 = new Uint8ClampedArray(size);\n for (let i = 0; i < size; i += 4) {\n const v = Math.floor(Math.random() * 256);\n pixelData8[i] = v;\n pixelData8[i + 1] = v;\n pixelData8[i + 2] = v;\n pixelData8[i + 3] = 255;\n }\n return {\n data: new ImageData(pixelData8, width, height),\n };\n }\n static makeCacheKey(props) {\n const resolvedProps = NoiseTexture.resolveDefaults(props);\n return `NoiseTexture,${resolvedProps.width},${resolvedProps.height},${resolvedProps.cacheId}`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 128,\n height: props.height ?? 128,\n cacheId: props.cacheId ?? 0,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=NoiseTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../utils.js';\nimport { ImageWorkerManager } from './lib/ImageWorker.js';\nimport { ColorTexture } from './textures/ColorTexture.js';\nimport { ImageTexture } from './textures/ImageTexture.js';\nimport { NoiseTexture } from './textures/NoiseTexture.js';\nimport { SubTexture } from './textures/SubTexture.js';\nimport { RenderTexture } from './textures/RenderTexture.js';\nexport class CoreTextureManager {\n /**\n * Amount of used memory defined in pixels\n */\n usedMemory = 0;\n txConstructors = {};\n textureKeyCache = new Map();\n textureIdCache = new Map();\n ctxTextureCache = new WeakMap();\n textureRefCountMap = new WeakMap();\n imageWorkerManager = null;\n hasCreateImageBitmap = !!self.createImageBitmap;\n hasWorker = !!self.Worker;\n /**\n * Renderer that this texture manager is associated with\n *\n * @remarks\n * This MUST be set before the texture manager is used. Otherwise errors\n * will occur when using the texture manager.\n */\n renderer;\n constructor(numImageWorkers) {\n // Register default known texture types\n if (this.hasCreateImageBitmap && this.hasWorker) {\n this.imageWorkerManager = new ImageWorkerManager(numImageWorkers);\n }\n if (!this.hasCreateImageBitmap) {\n console.warn('[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.');\n }\n this.registerTextureType('ImageTexture', ImageTexture);\n this.registerTextureType('ColorTexture', ColorTexture);\n this.registerTextureType('NoiseTexture', NoiseTexture);\n this.registerTextureType('SubTexture', SubTexture);\n this.registerTextureType('RenderTexture', RenderTexture);\n }\n registerTextureType(textureType, textureClass) {\n this.txConstructors[textureType] = textureClass;\n }\n loadTexture(textureType, props, options = null) {\n const TextureClass = this.txConstructors[textureType];\n if (!TextureClass) {\n throw new Error(`Texture type \"${textureType}\" is not registered`);\n }\n let texture;\n // If an ID is specified, try to get the texture from the ID cache first\n if (options?.id !== undefined && this.textureIdCache.has(options.id)) {\n // console.log('Getting texture by texture desc ID', options.id);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n texture = this.textureIdCache.get(options.id);\n }\n // If the texture is not found in the ID cache, try to get it from the key cache\n if (!texture) {\n const descId = options?.id;\n const cacheKey = options?.cacheKey ?? TextureClass.makeCacheKey(props);\n if (cacheKey && this.textureKeyCache.has(cacheKey)) {\n // console.log('Getting texture by cache key', cacheKey);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n texture = this.textureKeyCache.get(cacheKey);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n texture = new TextureClass(this, props);\n }\n if (descId) {\n this.addTextureIdToCache(descId, cacheKey, texture);\n }\n }\n if (options?.preload) {\n const ctxTx = this.getCtxTexture(texture);\n ctxTx.load();\n }\n return texture;\n }\n /**\n * Add a `Texture` to the texture cache by its texture desc ID and cache key\n *\n * @remarks\n * This is used internally by the `CoreTextureManager` to cache textures\n * when they are created.\n *\n * It handles updating the texture ID cache, texture key cache, and texture\n * reference count map.\n *\n * @param textureDescId\n * @param cacheKey\n * @param texture\n */\n addTextureIdToCache(textureDescId, cacheKey, texture) {\n const { textureIdCache, textureRefCountMap } = this;\n textureIdCache.set(textureDescId, texture);\n if (textureRefCountMap.has(texture)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n textureRefCountMap.get(texture).count++;\n }\n else {\n textureRefCountMap.set(texture, { cacheKey, count: 1 });\n if (cacheKey) {\n this.textureKeyCache.set(cacheKey, texture);\n }\n }\n }\n /**\n * Remove a `Texture` from the texture cache by its texture desc ID\n *\n * @remarks\n * This is called externally by when we know (at least reasonably well) that\n * the `TextureRef` in the Main API space has been is no longer used. This\n * allows us to remove the `Texture` from the Usage Cache so that it can be\n * garbage collected as well.\n *\n * @param textureDescId\n */\n removeTextureIdFromCache(textureDescId) {\n const { textureIdCache, textureRefCountMap } = this;\n const texture = textureIdCache.get(textureDescId);\n if (!texture) {\n // Sometimes a texture is removed from the cache before it ever gets\n // added to the cache. This is fine and not an error.\n return;\n }\n textureIdCache.delete(textureDescId);\n if (textureRefCountMap.has(texture)) {\n const refCountObj = textureRefCountMap.get(texture);\n assertTruthy(refCountObj);\n refCountObj.count--;\n if (refCountObj.count === 0) {\n textureRefCountMap.delete(texture);\n // If the texture is not referenced anywhere else, remove it from the key cache\n // as well.\n // This should allow the `Texture` instance to be garbage collected.\n if (refCountObj.cacheKey) {\n this.textureKeyCache.delete(refCountObj.cacheKey);\n }\n }\n }\n // Free the ctx texture if it exists.\n this.ctxTextureCache.get(texture)?.free();\n }\n /**\n * Get an object containing debug information about the texture manager.\n *\n * @returns\n */\n getDebugInfo() {\n // const textureSet = new Set();\n // for (const texture of this.textureIdCache.values()) {\n // textureSet.add(texture);\n // }\n // for (const texture of this.textureKeyCache.values()) {\n // textureSet.add(texture);\n // }\n // TODO: Output number of bytes used by textures\n return {\n keyCacheSize: this.textureKeyCache.size,\n idCacheSize: this.textureIdCache.size,\n };\n }\n /**\n * Get a CoreContextTexture for the given Texture source.\n *\n * @remarks\n * If the texture source already has an allocated CoreContextTexture, it will be\n * returned from the cache. Otherwise, a new CoreContextTexture will be created\n * and cached.\n *\n * ContextTextures are stored in a WeakMap, so they will be garbage collected\n * when the Texture source is no longer referenced.\n *\n * @param textureSource\n * @returns\n */\n getCtxTexture(textureSource) {\n if (this.ctxTextureCache.has(textureSource)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.ctxTextureCache.get(textureSource);\n }\n const texture = this.renderer.createCtxTexture(textureSource);\n this.ctxTextureCache.set(textureSource, texture);\n return texture;\n }\n}\n//# sourceMappingURL=CoreTextureManager.js.map","export class TextureMemoryManager {\n memUsed = 0;\n textures = new Map();\n threshold;\n /**\n * @param byteThreshold Number of texture bytes to trigger garbage collection\n */\n constructor(byteThreshold) {\n this.threshold = byteThreshold;\n // If the threshold is 0, we disable the memory manager by replacing the\n // setTextureMemUse method with a no-op function.\n if (byteThreshold === 0) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.setTextureMemUse = () => { };\n }\n }\n setTextureMemUse(ctxTexture, byteSize) {\n if (this.textures.has(ctxTexture)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.memUsed -= this.textures.get(ctxTexture);\n }\n if (byteSize === 0) {\n this.textures.delete(ctxTexture);\n return;\n }\n else {\n this.memUsed += byteSize;\n this.textures.set(ctxTexture, byteSize);\n }\n if (this.memUsed > this.threshold) {\n this.gc();\n }\n }\n gc() {\n this.textures.forEach((byteSize, ctxTexture) => {\n if (!ctxTexture.renderable) {\n ctxTexture.free();\n }\n });\n }\n}\n//# sourceMappingURL=TextureMemoryManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { startLoop, getTimeStamp } from './platform.js';\nimport { WebGlCoreRenderer } from './renderers/webgl/WebGlCoreRenderer.js';\nimport { assertTruthy } from '../utils.js';\nimport { AnimationManager } from './animations/AnimationManager.js';\nimport { CoreNode } from './CoreNode.js';\nimport { CoreTextureManager } from './CoreTextureManager.js';\nimport { TrFontManager } from './text-rendering/TrFontManager.js';\nimport { CoreShaderManager } from './CoreShaderManager.js';\nimport { SdfTextRenderer } from './text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js';\nimport { CanvasTextRenderer } from './text-rendering/renderers/CanvasTextRenderer.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { ContextSpy } from './lib/ContextSpy.js';\nimport { TextureMemoryManager } from './TextureMemoryManager.js';\nconst bufferMemory = 2e6;\nconst autoStart = true;\nexport class Stage extends EventEmitter {\n options;\n /// Module Instances\n animationManager;\n txManager;\n txMemManager;\n fontManager;\n textRenderers;\n shManager;\n renderer;\n root;\n boundsMargin;\n /// State\n deltaTime = 0;\n lastFrameTime = 0;\n currentFrameTime = 0;\n fpsNumFrames = 0;\n fpsElapsedTime = 0;\n renderRequested = false;\n /// Debug data\n contextSpy = null;\n /**\n * Stage constructor\n */\n constructor(options) {\n super();\n this.options = options;\n const { canvas, clearColor, rootId, debug, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, txMemByteThreshold, } = options;\n this.txManager = new CoreTextureManager(numImageWorkers);\n this.txMemManager = new TextureMemoryManager(txMemByteThreshold);\n this.shManager = new CoreShaderManager();\n this.animationManager = new AnimationManager();\n this.contextSpy = enableContextSpy ? new ContextSpy() : null;\n let bm = [0, 0, 0, 0];\n if (boundsMargin) {\n bm = Array.isArray(boundsMargin)\n ? boundsMargin\n : [boundsMargin, boundsMargin, boundsMargin, boundsMargin];\n }\n this.boundsMargin = bm;\n if (debug?.monitorTextureCache) {\n setInterval(() => {\n assertTruthy(this.txManager);\n const debugInfo = this.txManager.getDebugInfo();\n console.log('Texture ID Cache Size: ', debugInfo.idCacheSize);\n console.log('Texture Key Cache Size: ', debugInfo.keyCacheSize);\n }, 1000);\n }\n this.renderer = new WebGlCoreRenderer({\n stage: this,\n canvas,\n pixelRatio: options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio,\n clearColor: clearColor ?? 0xff000000,\n bufferMemory,\n txManager: this.txManager,\n txMemManager: this.txMemManager,\n shManager: this.shManager,\n contextSpy: this.contextSpy,\n });\n // Must do this after renderer is created\n this.txManager.renderer = this.renderer;\n this.textRenderers = {\n canvas: new CanvasTextRenderer(this),\n sdf: new SdfTextRenderer(this),\n };\n this.fontManager = new TrFontManager(this.textRenderers);\n // create root node\n const rootNode = new CoreNode(this, {\n id: rootId,\n x: 0,\n y: 0,\n width: appWidth,\n height: appHeight,\n alpha: 1,\n autosize: false,\n clipping: false,\n color: 0x00000000,\n colorTop: 0x00000000,\n colorBottom: 0x00000000,\n colorLeft: 0x00000000,\n colorRight: 0x00000000,\n colorTl: 0x00000000,\n colorTr: 0x00000000,\n colorBl: 0x00000000,\n colorBr: 0x00000000,\n zIndex: 0,\n zIndexLocked: 0,\n scaleX: 1,\n scaleY: 1,\n mountX: 0,\n mountY: 0,\n mount: 0,\n pivot: 0.5,\n pivotX: 0.5,\n pivotY: 0.5,\n rotation: 0,\n parent: null,\n texture: null,\n textureOptions: null,\n shader: null,\n shaderProps: null,\n rtt: false,\n });\n this.root = rootNode;\n // execute platform start loop\n if (autoStart) {\n startLoop(this);\n }\n }\n /**\n * Update animations\n */\n updateAnimations() {\n const { animationManager } = this;\n if (!this.root) {\n return;\n }\n this.lastFrameTime = this.currentFrameTime;\n this.currentFrameTime = getTimeStamp();\n this.deltaTime = !this.lastFrameTime\n ? 100 / 6\n : this.currentFrameTime - this.lastFrameTime;\n this.emit('frameTick', {\n time: this.currentFrameTime,\n delta: this.deltaTime,\n });\n // step animation\n animationManager.update(this.deltaTime);\n }\n /**\n * Check if the scene has updates\n */\n hasSceneUpdates() {\n return !!this.root.updateType || this.renderRequested;\n }\n /**\n * Start a new frame draw\n */\n drawFrame() {\n const { renderer, renderRequested } = this;\n // Update tree if needed\n if (this.root.updateType !== 0) {\n this.root.update(this.deltaTime, this.root.clippingRect);\n }\n // Reset render operations and clear the canvas\n renderer?.reset();\n // If we have RTT nodes draw them first\n // So we can use them as textures in the main scene\n if (renderer.rttNodes.length > 0) {\n renderer.renderRTTNodes();\n }\n // Fill quads buffer\n this.addQuads(this.root);\n // Perform render pass\n renderer?.render();\n this.calculateFps();\n // Reset renderRequested flag if it was set\n if (renderRequested) {\n this.renderRequested = false;\n }\n }\n calculateFps() {\n // If there's an FPS update interval, emit the FPS update event\n // when the specified interval has elapsed.\n const { fpsUpdateInterval } = this.options;\n if (fpsUpdateInterval) {\n this.fpsNumFrames++;\n this.fpsElapsedTime += this.deltaTime;\n if (this.fpsElapsedTime >= fpsUpdateInterval) {\n const fps = Math.round((this.fpsNumFrames * 1000) / this.fpsElapsedTime);\n this.fpsNumFrames = 0;\n this.fpsElapsedTime = 0;\n this.emit('fpsUpdate', {\n fps,\n contextSpyData: this.contextSpy?.getData() ?? null,\n });\n this.contextSpy?.reset();\n }\n }\n }\n addQuads(node) {\n assertTruthy(this.renderer && node.globalTransform);\n if (node.isRenderable) {\n node.renderQuads(this.renderer);\n }\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (!child) {\n continue;\n }\n if (child?.worldAlpha === 0) {\n continue;\n }\n this.addQuads(child);\n }\n }\n /**\n * Request a render pass without forcing an update\n */\n requestRender() {\n this.renderRequested = true;\n }\n /**\n * Given a font name, and possible renderer override, return the best compatible text renderer.\n *\n * @remarks\n * Will always return at least a canvas renderer if no other suitable renderer can be resolved.\n *\n * @param fontFamily\n * @param textRendererOverride\n * @returns\n */\n resolveTextRenderer(trProps, textRendererOverride = null) {\n let rendererId = textRendererOverride;\n let overrideFallback = false;\n // Check if the override is valid (if one is provided)\n if (rendererId) {\n const possibleRenderer = this.textRenderers[rendererId];\n if (!possibleRenderer) {\n console.warn(`Text renderer override '${rendererId}' not found.`);\n rendererId = null;\n overrideFallback = true;\n }\n else if (!possibleRenderer.canRenderFont(trProps)) {\n console.warn(`Cannot use override text renderer '${rendererId}' for font`, trProps);\n rendererId = null;\n overrideFallback = true;\n }\n }\n if (!rendererId) {\n // Iterate through the text renderers and find the first one that can render the font\n for (const [trId, tr] of Object.entries(this.textRenderers)) {\n if (trId === 'canvas') {\n // Canvas is always a fallback\n continue;\n }\n if (tr.canRenderFont(trProps)) {\n rendererId = trId;\n break;\n }\n }\n if (!rendererId) {\n // If no renderer can be found, use the canvas renderer\n rendererId = 'canvas';\n }\n }\n if (overrideFallback) {\n console.warn(`Falling back to text renderer ${String(rendererId)}`);\n }\n // By now we are guaranteed to have a valid rendererId (at least Canvas);\n const resolvedTextRenderer = this.textRenderers[rendererId];\n assertTruthy(resolvedTextRenderer, 'resolvedTextRenderer undefined');\n // Need to explicitly cast to TextRenderer because TS doesn't like\n // the covariant state argument in the setter method map\n return resolvedTextRenderer;\n }\n}\n//# sourceMappingURL=Stage.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreNode, UpdateType } from './CoreNode.js';\nimport { assertTruthy } from '../utils.js';\nimport { Matrix3d } from './lib/Matrix3d.js';\nexport class CoreTextNode extends CoreNode {\n textRenderer;\n trState;\n _textRendererOverride = null;\n constructor(stage, props) {\n super(stage, props);\n this._textRendererOverride = props.textRendererOverride;\n const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState({\n x: this.absX,\n y: this.absY,\n width: props.width,\n height: props.height,\n textAlign: props.textAlign,\n color: props.color,\n zIndex: props.zIndex,\n contain: props.contain,\n scrollable: props.scrollable,\n scrollY: props.scrollY,\n offsetY: props.offsetY,\n letterSpacing: props.letterSpacing,\n debug: props.debug,\n fontFamily: props.fontFamily,\n fontSize: props.fontSize,\n fontStretch: props.fontStretch,\n fontStyle: props.fontStyle,\n fontWeight: props.fontWeight,\n text: props.text,\n lineHeight: props.lineHeight,\n maxLines: props.maxLines,\n textBaseline: props.textBaseline,\n verticalAlign: props.verticalAlign,\n overflowSuffix: props.overflowSuffix,\n });\n this.textRenderer = resolvedTextRenderer;\n this.trState = textRendererState;\n }\n onTextLoaded = () => {\n const { contain } = this;\n const setWidth = this.trState.props.width;\n const setHeight = this.trState.props.height;\n const calcWidth = this.trState.textW || 0;\n const calcHeight = this.trState.textH || 0;\n if (contain === 'both') {\n this.props.width = setWidth;\n this.props.height = setHeight;\n }\n else if (contain === 'width') {\n this.props.width = setWidth;\n this.props.height = calcHeight;\n }\n else if (contain === 'none') {\n this.props.width = calcWidth;\n this.props.height = calcHeight;\n }\n this.updateLocalTransform();\n // Incase the RAF loop has been stopped already before text was loaded,\n // we request a render so it can be drawn.\n this.stage.requestRender();\n this.emit('loaded', {\n type: 'text',\n dimensions: {\n width: this.trState.textW || 0,\n height: this.trState.textH || 0,\n },\n });\n };\n onTextFailed = (target, error) => {\n this.emit('failed', {\n type: 'text',\n error,\n });\n };\n get width() {\n return this.props.width;\n }\n set width(value) {\n this.props.width = value;\n this.textRenderer.set.width(this.trState, value);\n // If not containing, we must update the local transform to account for the\n // new width\n if (this.contain === 'none') {\n this.setUpdateType(UpdateType.Local);\n }\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n this.props.height = value;\n this.textRenderer.set.height(this.trState, value);\n // If not containing in the horizontal direction, we must update the local\n // transform to account for the new height\n if (this.contain !== 'both') {\n this.setUpdateType(UpdateType.Local);\n }\n }\n get color() {\n return this.trState.props.color;\n }\n set color(value) {\n this.textRenderer.set.color(this.trState, value);\n }\n get text() {\n return this.trState.props.text;\n }\n set text(value) {\n this.textRenderer.set.text(this.trState, value);\n }\n get textRendererOverride() {\n return this._textRendererOverride;\n }\n set textRendererOverride(value) {\n this._textRendererOverride = value;\n this.textRenderer.destroyState(this.trState);\n const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState(this.trState.props);\n this.textRenderer = resolvedTextRenderer;\n this.trState = textRendererState;\n }\n get fontSize() {\n return this.trState.props.fontSize;\n }\n set fontSize(value) {\n this.textRenderer.set.fontSize(this.trState, value);\n }\n get fontFamily() {\n return this.trState.props.fontFamily;\n }\n set fontFamily(value) {\n this.textRenderer.set.fontFamily(this.trState, value);\n }\n get fontStretch() {\n return this.trState.props.fontStretch;\n }\n set fontStretch(value) {\n this.textRenderer.set.fontStretch(this.trState, value);\n }\n get fontStyle() {\n return this.trState.props.fontStyle;\n }\n set fontStyle(value) {\n this.textRenderer.set.fontStyle(this.trState, value);\n }\n get fontWeight() {\n return this.trState.props.fontWeight;\n }\n set fontWeight(value) {\n this.textRenderer.set.fontWeight(this.trState, value);\n }\n get textAlign() {\n return this.trState.props.textAlign;\n }\n set textAlign(value) {\n this.textRenderer.set.textAlign(this.trState, value);\n }\n get contain() {\n return this.trState.props.contain;\n }\n set contain(value) {\n this.textRenderer.set.contain(this.trState, value);\n }\n get scrollable() {\n return this.trState.props.scrollable;\n }\n set scrollable(value) {\n this.textRenderer.set.scrollable(this.trState, value);\n }\n get scrollY() {\n return this.trState.props.scrollY;\n }\n set scrollY(value) {\n this.textRenderer.set.scrollY(this.trState, value);\n }\n get offsetY() {\n return this.trState.props.offsetY;\n }\n set offsetY(value) {\n this.textRenderer.set.offsetY(this.trState, value);\n }\n get letterSpacing() {\n return this.trState.props.letterSpacing;\n }\n set letterSpacing(value) {\n this.textRenderer.set.letterSpacing(this.trState, value);\n }\n get lineHeight() {\n return this.trState.props.lineHeight;\n }\n set lineHeight(value) {\n if (this.textRenderer.set.lineHeight) {\n this.textRenderer.set.lineHeight(this.trState, value);\n }\n }\n get maxLines() {\n return this.trState.props.maxLines;\n }\n set maxLines(value) {\n if (this.textRenderer.set.maxLines) {\n this.textRenderer.set.maxLines(this.trState, value);\n }\n }\n get textBaseline() {\n return this.trState.props.textBaseline;\n }\n set textBaseline(value) {\n if (this.textRenderer.set.textBaseline) {\n this.textRenderer.set.textBaseline(this.trState, value);\n }\n }\n get verticalAlign() {\n return this.trState.props.verticalAlign;\n }\n set verticalAlign(value) {\n if (this.textRenderer.set.verticalAlign) {\n this.textRenderer.set.verticalAlign(this.trState, value);\n }\n }\n get overflowSuffix() {\n return this.trState.props.overflowSuffix;\n }\n set overflowSuffix(value) {\n if (this.textRenderer.set.overflowSuffix) {\n this.textRenderer.set.overflowSuffix(this.trState, value);\n }\n }\n get debug() {\n return this.trState.props.debug;\n }\n set debug(value) {\n this.textRenderer.set.debug(this.trState, value);\n }\n update(delta, parentClippingRect) {\n super.update(delta, parentClippingRect);\n assertTruthy(this.globalTransform);\n // globalTransform is updated in super.update(delta)\n this.textRenderer.set.x(this.trState, this.globalTransform.tx);\n this.textRenderer.set.y(this.trState, this.globalTransform.ty);\n }\n checkRenderProps() {\n if (this.trState.props.text !== '') {\n return true;\n }\n return super.checkRenderProps();\n }\n onChangeIsRenderable(isRenderable) {\n super.onChangeIsRenderable(isRenderable);\n this.textRenderer.setIsRenderable(this.trState, isRenderable);\n }\n renderQuads(renderer) {\n assertTruthy(this.globalTransform);\n // Prevent quad rendering if parent has a render texture\n // and this node is not the render texture\n if (this.parentHasRenderTexture) {\n if (!renderer.renderToTextureActive) {\n return;\n }\n // Prevent quad rendering if parent render texture is not the active render texture\n if (this.parentRenderTexture !== renderer.activeRttNode) {\n return;\n }\n }\n if (this.parentHasRenderTexture && this.props.parent?.rtt) {\n this.globalTransform = Matrix3d.identity();\n this.globalTransform.multiply(this.localTransform ?? Matrix3d.identity());\n }\n assertTruthy(this.globalTransform);\n this.textRenderer.renderQuads(this.trState, this.globalTransform, this.clippingRect, this.worldAlpha, this.parentHasRenderTexture, this.framebufferDimensions);\n }\n /**\n * Destroy the node and cleanup all resources\n */\n destroy() {\n super.destroy();\n this.textRenderer.destroyState(this.trState);\n }\n /**\n * Resolve a text renderer and a new state based on the current text renderer props provided\n * @param props\n * @returns\n */\n resolveTextRendererAndState(props) {\n const resolvedTextRenderer = this.stage.resolveTextRenderer(props, this._textRendererOverride);\n const textRendererState = resolvedTextRenderer.createState(props);\n textRendererState.emitter.on('loaded', this.onTextLoaded);\n textRendererState.emitter.on('failed', this.onTextFailed);\n resolvedTextRenderer.scheduleUpdateState(textRendererState);\n return {\n resolvedTextRenderer,\n textRendererState,\n };\n }\n}\n//# sourceMappingURL=CoreTextNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MainOnlyNode, getNewId } from './MainOnlyNode.js';\nimport { CoreTextNode } from '../../core/CoreTextNode.js';\nexport class MainOnlyTextNode extends MainOnlyNode {\n constructor(props, rendererMain, stage) {\n super(props, rendererMain, stage, new CoreTextNode(stage, {\n id: getNewId(),\n x: props.x,\n y: props.y,\n width: props.width,\n height: props.height,\n alpha: props.alpha,\n autosize: props.autosize,\n clipping: props.clipping,\n color: props.color,\n colorTop: props.colorTop,\n colorBottom: props.colorBottom,\n colorLeft: props.colorLeft,\n colorRight: props.colorRight,\n colorTl: props.colorTl,\n colorTr: props.colorTr,\n colorBl: props.colorBl,\n colorBr: props.colorBr,\n zIndex: props.zIndex,\n zIndexLocked: props.zIndexLocked,\n scaleX: props.scaleX,\n scaleY: props.scaleY,\n mountX: props.mountX,\n mountY: props.mountY,\n mount: props.mount,\n pivot: props.pivot,\n pivotX: props.pivotX,\n pivotY: props.pivotY,\n rotation: props.rotation,\n // Text properties\n text: props.text,\n fontSize: props.fontSize,\n fontFamily: props.fontFamily,\n fontWeight: props.fontWeight,\n fontStretch: props.fontStretch,\n fontStyle: props.fontStyle,\n contain: props.contain,\n scrollable: props.scrollable,\n letterSpacing: props.letterSpacing,\n textAlign: props.textAlign,\n scrollY: props.scrollY,\n offsetY: props.offsetY,\n textRendererOverride: props.textRendererOverride,\n lineHeight: props.lineHeight,\n maxLines: props.maxLines,\n textBaseline: props.textBaseline,\n verticalAlign: props.verticalAlign,\n overflowSuffix: props.overflowSuffix,\n debug: props.debug,\n // These properties will get set appropriately in the base MainOnlyNode class\n parent: null,\n texture: null,\n textureOptions: null,\n shader: null,\n shaderProps: null,\n rtt: false,\n parentHasRenderTexture: false,\n }));\n }\n get text() {\n return this.coreNode.text;\n }\n set text(value) {\n this.coreNode.text = value;\n }\n get textRendererOverride() {\n return this.coreNode.textRendererOverride;\n }\n set textRendererOverride(value) {\n this.coreNode.textRendererOverride = value;\n }\n get fontSize() {\n return this.coreNode.fontSize;\n }\n set fontSize(value) {\n this.coreNode.fontSize = value;\n }\n get fontFamily() {\n return this.coreNode.fontFamily;\n }\n set fontFamily(value) {\n this.coreNode.fontFamily = value;\n }\n get fontWeight() {\n return this.coreNode.fontWeight;\n }\n set fontWeight(value) {\n this.coreNode.fontWeight = value;\n }\n get fontStretch() {\n return this.coreNode.fontStretch;\n }\n set fontStretch(value) {\n this.coreNode.fontStretch = value;\n }\n get fontStyle() {\n return this.coreNode.fontStyle;\n }\n set fontStyle(value) {\n this.coreNode.fontStyle = value;\n }\n get textAlign() {\n return this.coreNode.textAlign;\n }\n set textAlign(value) {\n this.coreNode.textAlign = value;\n }\n get contain() {\n return this.coreNode.contain;\n }\n set contain(value) {\n this.coreNode.contain = value;\n }\n get scrollable() {\n return this.coreNode.scrollable;\n }\n set scrollable(value) {\n this.coreNode.scrollable = value;\n }\n get scrollY() {\n return this.coreNode.scrollY;\n }\n set scrollY(value) {\n this.coreNode.scrollY = value;\n }\n get offsetY() {\n return this.coreNode.offsetY;\n }\n set offsetY(value) {\n this.coreNode.offsetY = value;\n }\n get letterSpacing() {\n return this.coreNode.letterSpacing;\n }\n set letterSpacing(value) {\n this.coreNode.letterSpacing = value;\n }\n get lineHeight() {\n return this.coreNode.lineHeight;\n }\n set lineHeight(value) {\n if (value) {\n this.coreNode.lineHeight = value;\n }\n }\n get maxLines() {\n return this.coreNode.maxLines;\n }\n set maxLines(value) {\n if (value) {\n this.coreNode.maxLines = value;\n }\n }\n get textBaseline() {\n return this.coreNode.textBaseline;\n }\n set textBaseline(value) {\n if (value) {\n this.coreNode.textBaseline = value;\n }\n }\n get verticalAlign() {\n return this.coreNode.verticalAlign;\n }\n set verticalAlign(value) {\n if (value) {\n this.coreNode.verticalAlign = value;\n }\n }\n get overflowSuffix() {\n return this.coreNode.overflowSuffix;\n }\n set overflowSuffix(value) {\n if (value) {\n this.coreNode.overflowSuffix = value;\n }\n }\n get debug() {\n return this.coreNode.debug;\n }\n set debug(value) {\n this.coreNode.debug = value;\n }\n}\n//# sourceMappingURL=MainOnlyTextNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { MainOnlyNode, getNewId } from './MainOnlyNode.js';\nimport { Stage, } from '../../core/Stage.js';\nimport { MainOnlyTextNode } from './MainOnlyTextNode.js';\nimport { loadCoreExtension } from '../utils.js';\nexport class MainCoreDriver {\n root = null;\n stage = null;\n rendererMain = null;\n async init(rendererMain, rendererSettings, canvas) {\n this.stage = new Stage({\n rootId: getNewId(),\n appWidth: rendererSettings.appWidth,\n appHeight: rendererSettings.appHeight,\n txMemByteThreshold: rendererSettings.txMemByteThreshold,\n boundsMargin: rendererSettings.boundsMargin,\n deviceLogicalPixelRatio: rendererSettings.deviceLogicalPixelRatio,\n devicePhysicalPixelRatio: rendererSettings.devicePhysicalPixelRatio,\n clearColor: rendererSettings.clearColor,\n canvas,\n fpsUpdateInterval: rendererSettings.fpsUpdateInterval,\n enableContextSpy: rendererSettings.enableContextSpy,\n numImageWorkers: rendererSettings.numImageWorkers,\n debug: {\n monitorTextureCache: false,\n },\n });\n this.rendererMain = rendererMain;\n assertTruthy(this.stage.root);\n const node = new MainOnlyNode(rendererMain.resolveNodeDefaults({}), this.rendererMain, this.stage, this.stage.root);\n this.root = node;\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n // Load the Core Extension Module if one was specified.\n if (rendererSettings.coreExtensionModule) {\n await loadCoreExtension(rendererSettings.coreExtensionModule, this.stage);\n }\n // Forward fpsUpdate events from the stage to RendererMain\n this.stage.on('fpsUpdate', ((stage, fpsData) => {\n this.onFpsUpdate(fpsData);\n }));\n this.stage.on('frameTick', ((stage, frameTickData) => {\n this.onFrameTick(frameTickData);\n }));\n this.stage.on('idle', () => {\n this.onIdle();\n });\n }\n createNode(props) {\n assertTruthy(this.rendererMain);\n assertTruthy(this.stage);\n const node = new MainOnlyNode(props, this.rendererMain, this.stage);\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n return node;\n }\n createTextNode(props) {\n assertTruthy(this.rendererMain);\n assertTruthy(this.stage);\n const node = new MainOnlyTextNode(props, this.rendererMain, this.stage);\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n return node;\n }\n // TODO: Remove?\n destroyNode(node) {\n node.destroy();\n }\n releaseTexture(id) {\n const { stage } = this;\n assertTruthy(stage);\n stage.txManager.removeTextureIdFromCache(id);\n }\n getRootNode() {\n assertTruthy(this.root);\n return this.root;\n }\n //#region Event Methods\n // The implementations for these event methods are provided by RendererMain\n onCreateNode(node) {\n throw new Error('Method not implemented.');\n }\n onBeforeDestroyNode(node) {\n throw new Error('Method not implemented.');\n }\n onFpsUpdate(fpsData) {\n throw new Error('Method not implemented.');\n }\n onFrameTick(frameTickData) {\n throw new Error('Method not implemented.');\n }\n onIdle() {\n throw new Error('Method not implemented.');\n }\n}\n//# sourceMappingURL=MainCoreDriver.js.map","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = (n + m) >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;\n else if (cmp < 0) n = k - 1;\n else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined\n};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned\n ? UNOWNED\n : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);\n else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(\n () => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n },\n undefined,\n false,\n 0\n ),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if ((arguments.length === 2 && typeof pFetcher === \"object\") || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;\n else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v;\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated)\n queueMicrotask(() =>\n options.onHydrated(key, {\n value: v\n })\n );\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);\n else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p =\n initP !== NO_INIT\n ? initP\n : untrack(() =>\n fetcher(lookup, {\n value: value(),\n refetching\n })\n );\n if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"value\" in p) {\n if (p.status === \"success\") loadEnd(pr, p.value, undefined, lookup);\n else loadEnd(pr, undefined, undefined, lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => (scheduled = false));\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(\n v => loadEnd(p, v, undefined, lookup),\n e => loadEnd(p, undefined, castError(e), lookup)\n );\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));\n else load(false);\n return [\n read,\n {\n refetch: load,\n mutate: setValue\n }\n ];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(\n () => {\n if (!t || !t.fn)\n t = requestCallback(\n () => setDeferred(() => node.value),\n timeout !== undefined\n ? {\n timeout\n }\n : undefined\n );\n return source();\n },\n undefined,\n true\n );\n const [deferred, setDeferred] = createSignal(\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n options\n );\n updateComputation(node);\n setDeferred(() =>\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(\n p => {\n const v = source();\n for (const [key, val] of subs.entries())\n if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);\n else Effects.push(c);\n }\n }\n return v;\n },\n undefined,\n true,\n STALE\n );\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if ((l = subs.get(key))) l.add(listener);\n else subs.set(key, (l = new Set([listener])));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(\n key,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null);\n else if (Owner.cleanups === null) Owner.cleanups = [fn];\n else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t =\n Transition ||\n (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => (t.resolve = res)));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/ createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n return Owner && Owner.context && Owner.context[context.id] !== undefined\n ? Owner.context[context.id]\n : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const { factory: oldFactory, untrack: oldUntrack } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);\n else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current =\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || (!isComp && Transition.sources.has(node))) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;\n else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false);\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(\n node,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n time\n );\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null);\n else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];\n else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];\n else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;\n else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);\n else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);\n else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n } else if (sharedConfig.effects) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n setHydrateContext();\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;\n else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount))\n runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;\n else o.state = PENDING;\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;\n else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, (owner && owner.owner) || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects)\n Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });\n else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(\n () =>\n (res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n })),\n undefined\n );\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null);\n else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler =\n typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => (\"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub()));\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n } else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (\n start = 0, end = Math.min(len, newLen);\n start < end && items[start] === newItems[start];\n start++\n );\n for (\n end = len - 1, newEnd = newLen - 1;\n end >= start && newEnd >= start && items[end] === newItems[newEnd];\n end--, newEnd--\n ) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, (len = newLen));\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return (mapped = mapped.slice(0, len));\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || (!!s && $PROXY in s);\n sources[i] = typeof s === \"function\" ? ((proxy = true), createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy(\n {\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++)\n keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n },\n propTraps\n );\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get\n ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind((sourcesMap[key] = [desc.get.bind(source)]))\n }\n : desc.value !== undefined\n ? desc\n : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));\n else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);\n else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n if ($PROXY in props) {\n const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n const res = keys.map(k => {\n return new Proxy(\n {\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n },\n propTraps\n );\n });\n res.push(\n new Proxy(\n {\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n },\n propTraps\n )\n );\n return res;\n }\n const otherObject = {};\n const objects = keys.map(() => ({}));\n for (const propName of Object.getOwnPropertyNames(props)) {\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc =\n !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n let blocked = false;\n let objectIndex = 0;\n for (const k of keys) {\n if (k.includes(propName)) {\n blocked = true;\n isDefaultDesc\n ? (objects[objectIndex][propName] = desc.value)\n : Object.defineProperty(objects[objectIndex], propName, desc);\n }\n ++objectIndex;\n }\n if (!blocked) {\n isDefaultDesc\n ? (otherObject[propName] = desc.value)\n : Object.defineProperty(otherObject, propName, desc);\n }\n }\n return [...objects, otherObject];\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(\n () =>\n (Comp = comp()) &&\n untrack(() => {\n if (false);\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n })\n );\n };\n wrap.preload = () => p || ((p = fn()).then(mod => (comp = () => mod.default)), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => (keyed ? a === b : !a === !b)\n });\n return createMemo(\n () => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n keyed\n ? c\n : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return props.when;\n }\n )\n )\n : child;\n }\n return props.fallback;\n },\n undefined,\n undefined\n );\n}\nfunction Switch(props) {\n let keyed = false;\n const equals = (a, b) => (keyed ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(\n () => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n },\n undefined,\n {\n equals\n }\n );\n return createMemo(\n () => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n return fn\n ? untrack(() =>\n c(\n keyed\n ? when\n : () => {\n if (untrack(evalConditions)[0] !== index) throw narrowedError(\"Match\");\n return cond.when;\n }\n )\n )\n : c;\n },\n undefined,\n undefined\n );\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load)\n err = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count);\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(\n () => {\n let e;\n if ((e = errored())) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n },\n undefined,\n undefined\n );\n}\n\nconst suspenseListEquals = (a, b) =>\n a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(\n prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n { showContent = true, showFallback = true } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || (next && tail === \"collapsed\") ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n },\n {\n inFallback: false\n }\n );\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.status !== \"success\") p = ref;\n else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(\n () => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n },\n err => {\n error = err;\n set();\n }\n );\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return (flicker = undefined);\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n { showContent = true, showFallback = true } = show ? show() : {};\n if ((!inFallback || (p && p !== \"$$f\")) && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport {\n $DEVCOMP,\n $PROXY,\n $TRACK,\n DEV,\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n batch,\n cancelCallback,\n catchError,\n children,\n createComponent,\n createComputed,\n createContext,\n createDeferred,\n createEffect,\n createMemo,\n createReaction,\n createRenderEffect,\n createResource,\n createRoot,\n createSelector,\n createSignal,\n createUniqueId,\n enableExternalSource,\n enableHydration,\n enableScheduling,\n equalFn,\n from,\n getListener,\n getOwner,\n indexArray,\n lazy,\n mapArray,\n mergeProps,\n observable,\n on,\n onCleanup,\n onError,\n onMount,\n requestCallback,\n resetErrorBoundaries,\n runWithOwner,\n sharedConfig,\n splitProps,\n startTransition,\n untrack,\n useContext,\n useTransition\n};\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n MainCoreDriver,\n RendererMain,\n type RendererMainSettings,\n} from '@lightningjs/renderer';\n\nexport let renderer: RendererMain;\nexport let createShader: RendererMain['createShader'];\n\nexport interface SolidRendererOptions extends RendererMainSettings {\n threadXCoreWorkerUrl?: string;\n rootId: string | HTMLElement;\n}\n\nexport function getRenderer(): RendererMain {\n return renderer;\n}\n\nexport function startLightningRenderer(\n options: Partial = {},\n rootId: string | HTMLElement = 'app',\n): RendererMain {\n const driver = new MainCoreDriver();\n renderer = new RendererMain(options, rootId, driver);\n createShader = renderer.createShader.bind(renderer);\n return renderer;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ElementNode, SolidNode } from './index.js';\n\n/**\n * Children class\n */\nexport default class Children extends Array {\n _parent: ElementNode;\n\n constructor(node: ElementNode) {\n super();\n this._parent = node;\n }\n\n get selected(): ElementNode | undefined {\n // For selected Elements should always be an ElementNode\n return this[this._parent.selected || 0] as ElementNode | undefined;\n }\n\n get firstChild() {\n return this[0];\n }\n\n insert(node: SolidNode, beforeNode: SolidNode) {\n if (beforeNode) {\n const index = this.indexOf(beforeNode);\n this.splice(index, 0, node);\n } else {\n this.push(node);\n }\n\n node.parent = this._parent;\n this._parent._isDirty = true;\n }\n\n remove(node: SolidNode) {\n const nodeIndexToRemove = this.indexOf(node);\n if (nodeIndexToRemove >= 0) {\n this.splice(nodeIndexToRemove, 1);\n }\n }\n}\n","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n AnimationSettings,\n RendererMainSettings,\n} from '@lightningjs/renderer';\nimport type { IntrinsicTextNodeStyleProps } from './intrinsicTypes.js';\n\ninterface Config {\n debug: boolean;\n animationSettings: Partial;\n animationsEnabled: boolean;\n fontSettings: Partial;\n rendererOptions?: Partial;\n}\n\nfunction isDevEnv(): boolean {\n return import.meta.env && import.meta.env.DEV;\n}\nexport const isDev = isDevEnv() || false;\n\nexport const config: Config = {\n debug: false,\n animationsEnabled: true,\n animationSettings: {\n duration: 250,\n easing: 'ease-in-out',\n },\n fontSettings: {\n fontFamily: 'Ubuntu',\n fontSize: 100,\n },\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { config, isDev } from '../config.js';\nimport type { SolidNode, SolidStyles } from './node/index.js';\n\nfunction hasDebug(node: any) {\n return isObject(node) && node.debug;\n}\n\nexport function log(msg: string, node: SolidNode, ...args: any[]) {\n if (isDev) {\n if (config.debug || hasDebug(node) || hasDebug(args[0])) {\n console.log(msg, node, ...args);\n }\n }\n}\n\nexport function isFunc(item: unknown): item is (...args: unknown[]) => unknown {\n return typeof item === 'function';\n}\n\nexport function isObject(\n item: unknown,\n): item is Record {\n return typeof item === 'object';\n}\n\nexport function isArray(item: unknown): item is any[] {\n return Array.isArray(item);\n}\n\nexport function isString(item: unknown): item is string {\n return typeof item === 'string';\n}\n\nexport function isNumber(item: unknown): item is number {\n return typeof item === 'number';\n}\n\nexport function isInteger(item: unknown): item is number {\n return Number.isInteger(item);\n}\n\nexport function keyExists(\n obj: Record,\n keys: (string | number | symbol)[],\n) {\n for (const key of keys) {\n if (key in obj) {\n return true;\n }\n }\n return false;\n}\n\nexport function flattenStyles(\n obj: SolidStyles | undefined | (SolidStyles | undefined)[],\n result: Record = {},\n): SolidStyles {\n if (isArray(obj)) {\n obj.forEach((item) => {\n flattenStyles(item, result);\n });\n } else if (obj) {\n // handle the case where the object is not an array\n for (const key in obj) {\n // be careful of 0 values\n if (result[key as keyof SolidStyles] === undefined) {\n result[key as keyof SolidStyles] = obj[key as keyof SolidStyles];\n }\n }\n }\n\n return result;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isArray, isString } from '../utils.js';\n\nexport type NodeStates =\n | string[]\n | string\n | Record;\n\nexport default class States extends Array {\n private onChange: () => void;\n\n constructor(callback: () => void, initialState: NodeStates = {}) {\n if (isArray(initialState)) {\n super(...initialState);\n } else if (isString(initialState)) {\n super(initialState);\n } else {\n super(\n ...Object.entries(initialState)\n .filter(([_key, value]) => value)\n .map(([key]) => key),\n );\n }\n\n this.onChange = callback;\n return this;\n }\n\n has(state: string) {\n return this.indexOf(state) >= 0;\n }\n\n is(state: string) {\n return this.indexOf(state) >= 0;\n }\n\n add(state: string) {\n this.push(state);\n this.onChange();\n }\n\n toggle(state: string) {\n if (this.has(state)) {\n this.remove(state);\n } else {\n this.add(state);\n }\n }\n\n remove(state: string) {\n const stateIndexToRemove = this.indexOf(state);\n if (stateIndexToRemove >= 0) {\n this.splice(stateIndexToRemove, 1);\n this.onChange();\n }\n }\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { assertTruthy } from '@lightningjs/renderer/utils';\nimport type { ElementNode, SolidNode } from './node/index.js';\n\nexport default function (node: ElementNode): boolean {\n const children = [];\n let hasOrder = false;\n for (let i = 0; i < node.children.length; i++) {\n const c = node.children[i]!;\n // Filter empty text nodes which are place holders for and elements missing dimensions\n if (c.name === 'TextNode') {\n continue;\n }\n\n // Skip layout for non flex items\n if (c.flexItem === false) {\n continue;\n }\n\n // text node hasnt loaded yet - skip layout\n if (c.name === 'text' && c.text !== '' && !(c.width || c.height)) {\n return false;\n }\n\n if (c.flexOrder !== undefined) {\n hasOrder = true;\n }\n\n children.push(c);\n }\n\n if (hasOrder) {\n children.sort((a, b) => (a.flexOrder || 0) - (b.flexOrder || 0));\n }\n\n const numChildren = children.length;\n const direction = node.flexDirection || 'row';\n const isRow = direction === 'row';\n const dimension = isRow ? 'width' : 'height';\n const crossDimension = isRow ? 'height' : 'width';\n const marginOne = isRow ? 'marginLeft' : 'marginTop';\n const marginTwo = isRow ? 'marginRight' : 'marginBottom';\n const prop = isRow ? 'x' : 'y';\n const crossProp = isRow ? 'y' : 'x';\n const containerSize = node[dimension] || 0;\n const containerCrossSize = node[crossDimension] || 0;\n const gap = node.gap || 0;\n const justify = node.justifyContent || 'flexStart';\n const align = node.alignItems;\n let itemSize = 0;\n if (['center', 'spaceBetween', 'spaceEvenly'].includes(justify)) {\n itemSize = children.reduce((prev, c) => prev + (c[dimension] || 0), 0);\n }\n\n // Only align children if container has a cross size\n const crossAlignChild =\n containerCrossSize && align\n ? (c: SolidNode) => {\n if (align === 'flexStart') {\n c[crossProp] = 0;\n } else if (align === 'center') {\n c[crossProp] = (containerCrossSize - (c[crossDimension] || 0)) / 2;\n } else if (align === 'flexEnd') {\n c[crossProp] = containerCrossSize - (c[crossDimension] || 0);\n }\n }\n : (c: SolidNode) => c;\n\n if (justify === 'flexStart') {\n let start = 0;\n children.forEach((c) => {\n c[prop] = start + (c[marginOne] || 0);\n start +=\n (c[dimension] || 0) + gap + (c[marginOne] || 0) + (c[marginTwo] || 0);\n crossAlignChild(c);\n });\n // Update container size\n if (node.flexBoundary !== 'fixed') {\n const calculatedSize = start - gap;\n if (calculatedSize !== node[dimension]) {\n node[dimension] = calculatedSize;\n return true;\n }\n }\n } else if (justify === 'flexEnd') {\n let start = containerSize;\n for (let i = numChildren - 1; i >= 0; i--) {\n const c = children[i];\n assertTruthy(c);\n c[prop] = start - (c[dimension] || 0) - (c[marginTwo] || 0);\n start -=\n (c[dimension] || 0) + gap + (c[marginOne] || 0) + (c[marginTwo] || 0);\n crossAlignChild(c);\n }\n } else if (justify === 'center') {\n let start = (containerSize - (itemSize + gap * (numChildren - 1))) / 2;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + gap;\n crossAlignChild(c);\n });\n } else if (justify === 'spaceBetween') {\n const toPad = (containerSize - itemSize) / (numChildren - 1);\n let start = 0;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + toPad;\n crossAlignChild(c);\n });\n } else if (justify === 'spaceEvenly') {\n const toPad = (containerSize - itemSize) / (numChildren + 1);\n let start = toPad;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + toPad;\n crossAlignChild(c);\n });\n }\n\n // Container was not updated\n return false;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createSignal } from 'solid-js';\nimport type { ElementNode } from './node/index.js';\nexport const [activeElement, setActiveElement] = createSignal<\n ElementNode | undefined\n>(undefined);\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { renderer, createShader } from '../lightningInit.js';\nimport {\n type BorderStyleObject,\n type IntrinsicCommonProps,\n type IntrinsicNodeProps,\n type IntrinsicTextProps,\n type NodeStyles,\n type TextStyles,\n} from '../../index.js';\nimport Children from './children.js';\nimport States, { type NodeStates } from './states.js';\nimport calculateFlex from '../flex.js';\nimport {\n log,\n isArray,\n isNumber,\n isFunc,\n keyExists,\n flattenStyles,\n} from '../utils.js';\nimport { config } from '../../config.js';\nimport { setActiveElement } from '../activeElement.js';\nimport type {\n RendererMain,\n INode,\n INodeAnimatableProps,\n INodeWritableProps,\n ShaderRef,\n Dimensions,\n AnimationSettings,\n NodeLoadedPayload,\n} from '@lightningjs/renderer';\nimport { assertTruthy } from '@lightningjs/renderer/utils';\n\nconst { animationSettings: defaultAnimationSettings } = config;\n\nfunction convertEffectsToShader(styleEffects: any) {\n const effects = [];\n\n for (const [type, props] of Object.entries>(\n styleEffects,\n )) {\n effects.push({ type, props });\n }\n return createShader('DynamicShader', { effects: effects as any });\n}\n\nfunction borderAccessor(\n direction: '' | 'Top' | 'Right' | 'Bottom' | 'Left' = '',\n) {\n return {\n set(\n this: ElementNode,\n value: number | { width: number; color: number | string },\n ) {\n // Format: width || { width, color }\n if (isNumber(value)) {\n value = { width: value, color: 0x000000ff };\n }\n this.effects = {\n ...(this.effects || {}),\n ...{ [`border${direction}`]: value },\n };\n this[`_border${direction}`] = value;\n },\n get(this: ElementNode) {\n return this[`_border${direction}`];\n },\n };\n}\n\nconst LightningRendererNumberProps = [\n 'alpha',\n 'color',\n 'colorTop',\n 'colorRight',\n 'colorLeft',\n 'colorBottom',\n 'colorTl',\n 'colorTr',\n 'colorBl',\n 'colorBr',\n 'height',\n 'fontSize',\n 'lineHeight',\n 'mount',\n 'mountX',\n 'mountY',\n 'pivot',\n 'pivotX',\n 'pivotY',\n 'rotation',\n 'scale',\n 'width',\n 'worldX',\n 'worldY',\n 'x',\n 'y',\n 'zIndex',\n 'zIndexLocked',\n];\n\nconst LightningRendererNonAnimatingProps = [\n 'autosize',\n 'clipping',\n 'contain',\n 'fontFamily',\n 'fontStretch',\n 'fontStyle',\n 'fontWeight',\n 'letterSpacing',\n 'maxLines',\n 'offsetY',\n 'overflowSuffix',\n 'rtt',\n 'scrollable',\n 'scrollY',\n 'src',\n 'text',\n 'textAlign',\n 'textBaseline',\n 'textOverflow',\n 'texture',\n 'verticalAlign',\n 'wordWrap',\n];\n\nexport interface TextNode {\n id?: string;\n name: string;\n text: string;\n parent: ElementNode | undefined;\n zIndex?: number;\n states?: States;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n marginLeft?: number;\n marginRight?: number;\n marginTop?: number;\n marginBottom?: number;\n flexItem?: boolean;\n flexOrder?: number;\n _queueDelete?: boolean;\n}\n\nexport type SolidNode = ElementNode | TextNode;\nexport type SolidStyles = NodeStyles | TextStyles;\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport interface ElementNode\n extends Partial>,\n IntrinsicCommonProps {\n [key: string]: unknown;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport class ElementNode extends Object {\n id?: string;\n debug?: boolean;\n name: string;\n lng: INode | undefined;\n renderer?: RendererMain;\n selected?: number;\n autofocus?: boolean;\n flexItem?: boolean;\n flexOrder?: number;\n flexBoundary?: 'contain' | 'fixed'; // default is undefined - contained for flex calculated size\n _queueDelete?: boolean;\n forwardFocus?:\n | number\n | ((this: ElementNode, elm: ElementNode) => boolean | void);\n\n private _undoStyles?: string[];\n private _renderProps?: IntrinsicNodeProps | IntrinsicTextProps;\n private _effects: any;\n private _parent: ElementNode | undefined;\n private _shader?: ShaderRef;\n private _style?: SolidStyles;\n private _states?: States;\n private _events?: Array<\n [string, (target: ElementNode, event?: Event) => void]\n >;\n private _animationSettings?: Partial;\n public _borderRadius?: number;\n public _border?: BorderStyleObject;\n public _borderLeft?: BorderStyleObject;\n public _borderRight?: BorderStyleObject;\n public _borderTop?: BorderStyleObject;\n public _borderBottom?: BorderStyleObject;\n public _autosized?: boolean; // Public but uses _ prefix\n public _isDirty?: boolean; // Public but uses _ prefix\n private _animationQueue: Array<{\n props: Partial;\n animationSettings?: Partial;\n }> = [];\n private _animationQueueSettings: Partial | undefined;\n private _animationRunning: boolean = false;\n children: Children;\n\n constructor(name: string) {\n super();\n this.name = name;\n this._renderProps = {};\n this.children = new Children(this);\n }\n\n get effects() {\n return this._effects;\n }\n\n set effects(v) {\n this._effects = v;\n if (this.lng) {\n this.shader = convertEffectsToShader(v);\n }\n }\n\n get parent() {\n return this._parent;\n }\n\n set parent(p) {\n this._parent = p;\n if (this.lng) {\n this.lng.parent = p?.lng ?? null;\n }\n }\n\n get shader(): ShaderRef | undefined {\n return this._shader;\n }\n\n set shader(v: Parameters | ShaderRef | undefined) {\n if (isArray(v)) {\n this._shader = createShader(...v) as ShaderRef;\n } else {\n this._shader = v;\n }\n this._sendToLightning('shader', this._shader);\n }\n\n _sendToLightningAnimatable(name: string, value: number | string) {\n if (this.lng) {\n if (\n config.animationsEnabled &&\n this.transition &&\n (this.transition === true || this.transition[name])\n ) {\n const animationSettings =\n this.transition === true || this.transition[name] === true\n ? undefined\n : (this.transition[name] as undefined | AnimationSettings);\n\n return this.animate({ [name]: value }, animationSettings).start();\n }\n\n (this.lng[name as keyof INode] as number | string) = value;\n } else {\n this._renderProps![name] = value;\n }\n }\n\n _sendToLightning(name: string, value: unknown) {\n if (this.lng) {\n (this.lng[name as keyof INodeWritableProps] as unknown) = value;\n } else {\n this._renderProps![name] = value;\n }\n }\n\n animate(\n props: Partial,\n animationSettings?: Partial,\n ) {\n assertTruthy(this.lng, 'Node must be rendered before animating');\n return this.lng.animate(props, animationSettings || this.animationSettings);\n }\n\n chain(\n props: Partial,\n animationSettings?: Partial,\n ) {\n if (this._animationRunning) {\n this._animationQueue = [];\n this._animationRunning = false;\n }\n\n if (animationSettings) {\n this._animationQueueSettings = animationSettings;\n } else if (!this._animationQueueSettings) {\n this._animationQueueSettings =\n animationSettings || this.animationSettings;\n }\n animationSettings = animationSettings || this._animationQueueSettings;\n this._animationQueue.push({ props, animationSettings });\n return this;\n }\n\n async start() {\n let animation = this._animationQueue.shift();\n while (animation) {\n this._animationRunning = true;\n await this.animate(animation.props, animation.animationSettings)\n .start()\n .waitUntilStopped();\n animation = this._animationQueue.shift();\n }\n this._animationRunning = false;\n this._animationQueueSettings = undefined;\n }\n\n setFocus() {\n if (this.lng) {\n // can be 0\n if (this.forwardFocus !== undefined) {\n if (isFunc(this.forwardFocus)) {\n if (this.forwardFocus.call(this, this) !== false) {\n return;\n }\n } else {\n const focusedIndex =\n typeof this.forwardFocus === 'number' ? this.forwardFocus : null;\n if (focusedIndex !== null && focusedIndex < this.children.length) {\n const child = this.children[focusedIndex];\n child instanceof ElementNode && child.setFocus();\n return;\n }\n }\n }\n // Delay setting focus so children can render (useful for Row + Column)\n queueMicrotask(() => setActiveElement(this));\n } else {\n this.autofocus = true;\n }\n }\n\n isTextNode() {\n return this.name === 'text';\n }\n\n _resizeOnTextLoad() {\n this.lng!.on('loaded', (_node: INode, loadedPayload: NodeLoadedPayload) => {\n if (loadedPayload.type === 'text') {\n const { dimensions } = loadedPayload;\n this.parent!.updateLayout(this, dimensions);\n }\n });\n }\n\n getText() {\n return this.children.map((c) => c.text).join('');\n }\n\n destroy() {\n if (this._queueDelete) {\n this.lng?.destroy();\n }\n }\n // Must be set before render\n set onEvents(\n events: Array<[string, (target: ElementNode, event?: any) => void]>,\n ) {\n this._events = events;\n }\n\n get onEvents() {\n return this._events || [];\n }\n\n set style(values: SolidStyles | (SolidStyles | undefined)[]) {\n if (isArray(values)) {\n this._style = flattenStyles(values);\n } else {\n this._style = values;\n }\n // Keys set in JSX are more important\n for (const key in this._style) {\n // be careful of 0 values\n if (this[key as keyof SolidStyles] === undefined) {\n this[key as keyof SolidStyles] = this._style[key as keyof SolidStyles];\n }\n }\n }\n\n get style(): SolidStyles {\n return this._style!;\n }\n\n get hasChildren() {\n return this.children.length > 0;\n }\n\n getChildById(id: string) {\n return this.children.find((c) => c.id === id);\n }\n\n searchChildrenById(id: string): SolidNode | undefined {\n // traverse all the childrens children\n for (let i=0; i < this.children.length; i++) {\n const child = this.children[i];\n if (child instanceof ElementNode) {\n if (child.id === id) {\n return child;\n }\n\n const found = child.searchChildrenById(id);\n if (found) {\n return found;\n }\n }\n }\n }\n\n set states(states: NodeStates) {\n this._states = new States(this._stateChanged.bind(this), states);\n if (this.lng) {\n this._stateChanged();\n }\n }\n\n get states(): States {\n this._states = this._states || new States(this._stateChanged.bind(this));\n return this._states;\n }\n\n get animationSettings(): Partial {\n return this._animationSettings || defaultAnimationSettings;\n }\n\n set animationSettings(animationSettings: Partial) {\n this._animationSettings = animationSettings;\n }\n\n updateLayout(child?: ElementNode, dimensions?: Dimensions) {\n if (this.hasChildren) {\n log('Layout: ', this);\n let changedLayout = false;\n if (isFunc(this.onBeforeLayout)) {\n changedLayout = this.onBeforeLayout.call(\n this,\n child,\n dimensions,\n ) as boolean;\n }\n\n if (this.display === 'flex') {\n if (calculateFlex(this) || changedLayout) {\n this.parent?.updateLayout();\n }\n } else if (changedLayout) {\n this.parent?.updateLayout();\n }\n\n isFunc(this.onLayout) && this.onLayout.call(this, child, dimensions);\n }\n }\n\n _stateChanged() {\n log('State Changed: ', this, this.states);\n\n if (this.forwardStates) {\n // apply states to children first\n const states = this.states.slice() as States;\n this.children.forEach((c) => (c.states = states));\n }\n\n const states = this.states;\n\n if (this._undoStyles || (this.style && keyExists(this.style, states))) {\n this._undoStyles = this._undoStyles || [];\n const stylesToUndo: { [key: string]: any } = {};\n\n this._undoStyles.forEach((styleKey) => {\n stylesToUndo[styleKey] = this.style[styleKey];\n });\n\n const newStyles = states.reduce((acc, state) => {\n const styles = this.style[state];\n if (styles) {\n acc = {\n ...acc,\n ...styles,\n };\n }\n return acc;\n }, {});\n\n this._undoStyles = Object.keys(newStyles);\n\n // Apply transition first\n if ((newStyles as any).transition !== undefined) {\n this.transition = (newStyles as any).transition;\n }\n\n // Apply the styles\n Object.assign(this, stylesToUndo, newStyles);\n }\n }\n\n render() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const node = this;\n const parent = this.parent;\n\n if (!parent) {\n console.warn('Parent not set - no node created for: ', this);\n return;\n }\n\n if (!parent.lng) {\n console.warn('Parent not rendered yet: ', this);\n return;\n }\n\n if (this.lng) {\n console.warn('Node already rendered: ', this);\n return;\n }\n\n // Parent is dirty whenever a node is inserted after initial render\n if (parent._isDirty) {\n parent.updateLayout();\n parent._isDirty = false;\n }\n\n if (this.states.length) {\n this._stateChanged();\n }\n\n const props = node._renderProps as IntrinsicNodeProps | IntrinsicTextProps;\n props.x = props.x || 0;\n props.y = props.y || 0;\n\n if (parent.lng) {\n props.parent = parent.lng;\n }\n\n if (node._effects) {\n this.shader = convertEffectsToShader(node._effects);\n }\n\n if (node.isTextNode()) {\n if (config.fontSettings) {\n for (const key in config.fontSettings) {\n if (props[key] === undefined) {\n props[key] = config.fontSettings[key];\n }\n }\n }\n props.text = node.getText();\n\n if (props.contain) {\n if (!props.width) {\n props.width =\n (parent.width || 0) - props.x - (props.marginRight || 0);\n node._autosized = true;\n }\n\n if (props.contain === 'both' && !props.height && !props.maxLines) {\n props.height =\n (parent.height || 0) - props.y - (props.marginBottom || 0);\n node._autosized = true;\n }\n }\n\n log('Rendering: ', this, props);\n node.lng = renderer.createTextNode(props);\n\n if (!props.width || !props.height) {\n node._autosized = true;\n node._resizeOnTextLoad();\n }\n } else {\n // If its not an image or texture apply some defaults\n if (!props.texture) {\n // Set width and height to parent less offset\n if (isNaN(props.width as number)) {\n props.width = (parent.width || 0) - props.x;\n node._autosized = true;\n }\n\n if (isNaN(props.height as number)) {\n props.height = (parent.height || 0) - props.y;\n node._autosized = true;\n }\n\n if (!props.color && !props.src) {\n // Default color to transparent - If you later set a src, you'll need\n // to set color '#ffffffff'\n props.color = 0x00000000;\n }\n }\n\n log('Rendering: ', this, props);\n node.lng = renderer.createNode(props);\n }\n\n if (node.onFail) {\n node.lng.on('failed', node.onFail);\n }\n\n if (node.onLoad) {\n node.lng.on('loaded', node.onLoad);\n }\n\n isFunc(this.onCreate) && this.onCreate.call(this, node);\n\n node.onEvents.forEach(([name, handler]) => {\n node.lng?.on(name, (inode, data) => handler(node, data));\n });\n\n // L3 Inspector adds div to the lng object\n //@ts-expect-error - div is not in the typings\n if (node.lng.div) {\n //@ts-expect-error - div is not in the typings\n node.lng.div.solid = node;\n }\n\n if (node.name !== 'text') {\n node.children.forEach((c) => {\n if ((c as ElementNode).render) {\n (c as ElementNode).render();\n } else if (c.text !== '') {\n // Solid Show uses an empty text node as a placeholder\n console.warn('TextNode outside of : ', c);\n }\n });\n }\n\n node.autofocus && node.setFocus();\n // clean up after first render;\n delete this._renderProps;\n }\n}\n\nfor (const key of LightningRendererNumberProps) {\n Object.defineProperty(ElementNode.prototype, key, {\n get(): number {\n return this.lng ? this.lng[key] : this._renderProps[key];\n },\n set(v: number) {\n this._sendToLightningAnimatable(key, v);\n },\n });\n}\n\nfor (const key of LightningRendererNonAnimatingProps) {\n Object.defineProperty(ElementNode.prototype, key, {\n get() {\n return this.lng ? this.lng[key] : this._renderProps[key];\n },\n set(v) {\n this._sendToLightning(key, v);\n },\n });\n}\n\n// Add Border Helpers\nObject.defineProperties(ElementNode.prototype, {\n borderRadius: {\n set(this: ElementNode, radius) {\n this._borderRadius = radius;\n this.effects = {\n ...(this.effects || {}),\n ...{ radius: { radius } },\n };\n },\n get(this: ElementNode) {\n return this._borderRadius;\n },\n },\n border: borderAccessor(),\n borderLeft: borderAccessor('Left'),\n borderRight: borderAccessor('Right'),\n borderTop: borderAccessor('Top'),\n borderBottom: borderAccessor('Bottom'),\n});\n\nObject.defineProperties(ElementNode.prototype, {\n linearGradient: {\n set(props = {}) {\n this._linearGradient = props;\n this.effects = {\n ...(this.effects || {}),\n ...{ linearGradient: props },\n };\n },\n get() {\n return this._linearGradient;\n },\n },\n});\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { type Component } from \"solid-js\";\nimport type { IntrinsicTextProps } from \"../intrinsicTypes.js\";\n\nexport const Text: Component = (props) => \n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { type Component } from \"solid-js\";\nimport { type IntrinsicNodeProps } from \"../intrinsicTypes.js\";\n\nexport const View: Component = (props) =>\n ;\n","import {\n createRoot,\n createRenderEffect,\n mergeProps,\n createMemo,\n createComponent,\n untrack\n} from \"solid-js\";\n\nfunction createRenderer$1({\n createElement,\n createTextNode,\n isTextNode,\n replaceText,\n insertNode,\n removeNode,\n setProperty,\n getParentNode,\n getFirstChild,\n getNextSibling\n}) {\n function insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n }\n function insertExpression(parent, value, current, marker, unwrapArray) {\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n if (t === \"string\" || t === \"number\") {\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && isTextNode(node)) {\n replaceText(node, value);\n } else node = createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n replaceText(getFirstChild(parent), (current = value));\n } else {\n cleanChildren(parent, current, marker, createTextNode(value));\n current = value;\n }\n }\n } else if (value == null || t === \"boolean\") {\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n if (normalizeIncomingArray(array, value, unwrapArray)) {\n createRenderEffect(\n () => (current = insertExpression(parent, array, current, marker, true))\n );\n return () => current;\n }\n if (array.length === 0) {\n const replacement = cleanChildren(parent, current, marker);\n if (multi) return (current = replacement);\n } else {\n if (Array.isArray(current)) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else if (current == null || current === \"\") {\n appendNodes(parent, array);\n } else {\n reconcileArrays(parent, (multi && current) || [getFirstChild(parent)], array);\n }\n }\n current = array;\n } else {\n if (Array.isArray(current)) {\n if (multi) return (current = cleanChildren(parent, current, marker, value));\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !getFirstChild(parent)) {\n insertNode(parent, value);\n } else replaceNode(parent, value, getFirstChild(parent));\n current = value;\n }\n return current;\n }\n function normalizeIncomingArray(normalized, array, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n t;\n if (item == null || item === true || item === false);\n else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item) || dynamic;\n } else if ((t = typeof item) === \"string\" || t === \"number\") {\n normalized.push(createTextNode(item));\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic =\n normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else normalized.push(item);\n }\n return dynamic;\n }\n function reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = getNextSibling(a[aEnd - 1]),\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node =\n bEnd < bLength ? (bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart]) : after;\n while (bStart < bEnd) insertNode(parentNode, b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) removeNode(parentNode, a[aStart]);\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = getNextSibling(a[--aEnd]);\n insertNode(parentNode, b[bStart++], getNextSibling(a[aStart++]));\n insertNode(parentNode, b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) insertNode(parentNode, b[bStart++], node);\n } else replaceNode(parentNode, b[bStart++], a[aStart++]);\n } else aStart++;\n } else removeNode(parentNode, a[aStart++]);\n }\n }\n }\n function cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) {\n let removed;\n while ((removed = getFirstChild(parent))) removeNode(parent, removed);\n replacement && insertNode(parent, replacement);\n return \"\";\n }\n const node = replacement || createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = getParentNode(el) === parent;\n if (!inserted && !i)\n isParent ? replaceNode(parent, node, el) : insertNode(parent, node, marker);\n else isParent && removeNode(parent, el);\n } else inserted = true;\n }\n } else insertNode(parent, node, marker);\n return [node];\n }\n function appendNodes(parent, array, marker) {\n for (let i = 0, len = array.length; i < len; i++) insertNode(parent, array[i], marker);\n }\n function replaceNode(parent, newNode, oldNode) {\n insertNode(parent, newNode, oldNode);\n removeNode(parent, oldNode);\n }\n function spreadExpression(node, props, prevProps = {}, skipChildren) {\n props || (props = {});\n if (!skipChildren) {\n createRenderEffect(\n () => (prevProps.children = insertExpression(node, props.children, prevProps.children))\n );\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => {\n for (const prop in props) {\n if (prop === \"children\" || prop === \"ref\") continue;\n const value = props[prop];\n if (value === prevProps[prop]) continue;\n setProperty(node, prop, value, prevProps[prop]);\n prevProps[prop] = value;\n }\n });\n return prevProps;\n }\n return {\n render(code, element) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n insert(element, code());\n });\n return disposer;\n },\n insert,\n spread(node, accessor, skipChildren) {\n if (typeof accessor === \"function\") {\n createRenderEffect(current => spreadExpression(node, accessor(), current, skipChildren));\n } else spreadExpression(node, accessor, undefined, skipChildren);\n },\n createElement,\n createTextNode,\n insertNode,\n setProp(node, name, value, prev) {\n setProperty(node, name, value, prev);\n return value;\n },\n mergeProps,\n effect: createRenderEffect,\n memo: createMemo,\n createComponent,\n use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n }\n };\n}\n\nfunction createRenderer(options) {\n const renderer = createRenderer$1(options);\n renderer.mergeProps = mergeProps;\n return renderer;\n}\n\nexport { createRenderer };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { assertTruthy } from '@lightningjs/renderer/utils';\nimport { log } from './utils.js';\nimport { ElementNode, type SolidNode, type TextNode } from './node/index.js';\nimport type { createRenderer } from 'solid-js/universal';\n\nexport type SolidRendererOptions = Parameters<\n typeof createRenderer\n>[0];\n\nexport default {\n createElement(name: string): ElementNode {\n return new ElementNode(name);\n },\n createTextNode(text: string): TextNode {\n // A text node is just a string - not the node\n return { name: 'TextNode', text, parent: undefined };\n },\n replaceText(node: TextNode, value: string): void {\n log('Replace Text: ', node, value);\n node.text = value;\n const parent = node.parent;\n assertTruthy(parent);\n parent.text = parent.getText();\n },\n setProperty(node: ElementNode, name: string, value: any = true): void {\n node[name] = value;\n },\n insertNode(parent: ElementNode, node: SolidNode, anchor: SolidNode): void {\n log('INSERT: ', parent, node, anchor);\n\n parent.children.insert(node, anchor);\n node._queueDelete = false;\n\n if (node instanceof ElementNode) {\n parent.lng && node.render();\n } else if (parent.isTextNode()) {\n // TextNodes can be placed outside of nodes when is used as placeholder\n parent.text = parent.getText();\n }\n },\n isTextNode(node: ElementNode): boolean {\n return node.isTextNode();\n },\n removeNode(parent: ElementNode, node: SolidNode): void {\n log('REMOVE: ', parent, node);\n parent.children.remove(node);\n node._queueDelete = true;\n\n if (node instanceof ElementNode) {\n // Solid replacesNodes to move them (via insert and remove),\n // so we need to wait for the next microtask to destroy the node\n // in the event it gets a new parent.\n queueMicrotask(() => node.destroy());\n }\n },\n getParentNode(node: SolidNode): ElementNode | undefined {\n return node.parent;\n },\n getFirstChild(node: ElementNode): SolidNode | undefined {\n return node.children[0];\n },\n getNextSibling(node: SolidNode): SolidNode | undefined {\n const children = node.parent!.children || [];\n const index = children.indexOf(node) + 1;\n if (index < children.length) {\n return children[index];\n }\n return undefined;\n },\n} satisfies SolidRendererOptions;\n","/* eslint-disable @typescript-eslint/unbound-method */\n/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createRenderer } from 'solid-js/universal';\nimport { config } from '../config.js';\nimport { startLightningRenderer } from './lightningInit.js';\nimport universalLightning from './solidUniversal.js';\nimport { ElementNode, type SolidNode } from './node/index.js';\nimport { splitProps, createMemo, untrack, type JSX } from 'solid-js';\n\nconst solidRenderer = createRenderer(universalLightning);\n\nexport const render = async function (\n code: () => JSX.Element,\n node?: string | HTMLElement | undefined,\n) {\n const renderer = startLightningRenderer(config.rendererOptions, node);\n await renderer.init();\n const rootNode = new ElementNode('App');\n rootNode.lng = renderer.root!;\n // @ts-expect-error - code is jsx element and not SolidElement yet\n const dispose = solidRenderer.render(code, rootNode);\n return {\n dispose,\n rootNode,\n renderer,\n };\n};\n\nexport const {\n effect,\n memo,\n createComponent,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps,\n use,\n} = solidRenderer;\n\n/**\n * renders an arbitrary custom or native component and passes the other props\n * ```typescript\n * \n * ```\n * @description https://www.solidjs.com/docs/latest/api#dynamic\n */\nexport function Dynamic(\n props: T extends Record ? T : never,\n): SolidNode {\n const [p, others] = splitProps(props, ['component']);\n // eslint-disable-next-line @typescript-eslint/ban-types\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case 'function':\n return untrack(() => component(others));\n\n case 'string':\n // eslint-disable-next-line no-case-declarations\n const el = createElement(component);\n spread(el, others);\n return el;\n\n default:\n break;\n }\n }) as unknown as SolidNode;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isInteger } from './core/utils.js';\n\n/**\n * Converts a color string to a color number value.\n */\nexport function hexColor(color: string | number = ''): number {\n if (isInteger(color)) {\n return color;\n }\n\n if (typeof color === 'string') {\n // Renderer expects RGBA values\n if (color.startsWith('#')) {\n return Number(\n color.replace('#', '0x') + (color.length === 7 ? 'ff' : ''),\n );\n }\n\n if (color.startsWith('0x')) {\n return Number(color);\n }\n return Number('0x' + (color.length === 6 ? color + 'ff' : color));\n }\n\n return 0x00000000;\n}\n\n/**\n * Converts degrees to radians\n */\nexport function deg2rad(deg: number) {\n return (deg * Math.PI) / 180;\n}\n","import {\n createRoot,\n sharedConfig,\n createRenderEffect,\n untrack,\n enableHydration,\n getOwner,\n createEffect,\n runWithOwner,\n createMemo,\n createSignal,\n onCleanup,\n splitProps\n} from \"solid-js\";\nexport {\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n createComponent,\n createRenderEffect as effect,\n getOwner,\n createMemo as memo,\n mergeProps,\n untrack\n} from \"solid-js\";\n\nconst booleans = [\n \"allowfullscreen\",\n \"async\",\n \"autofocus\",\n \"autoplay\",\n \"checked\",\n \"controls\",\n \"default\",\n \"disabled\",\n \"formnovalidate\",\n \"hidden\",\n \"indeterminate\",\n \"inert\",\n \"ismap\",\n \"loop\",\n \"multiple\",\n \"muted\",\n \"nomodule\",\n \"novalidate\",\n \"open\",\n \"playsinline\",\n \"readonly\",\n \"required\",\n \"reversed\",\n \"seamless\",\n \"selected\"\n];\nconst Properties = /*#__PURE__*/ new Set([\n \"className\",\n \"value\",\n \"readOnly\",\n \"formNoValidate\",\n \"isMap\",\n \"noModule\",\n \"playsInline\",\n ...booleans\n]);\nconst ChildProperties = /*#__PURE__*/ new Set([\n \"innerHTML\",\n \"textContent\",\n \"innerText\",\n \"children\"\n]);\nconst Aliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: {\n $: \"formNoValidate\",\n BUTTON: 1,\n INPUT: 1\n },\n ismap: {\n $: \"isMap\",\n IMG: 1\n },\n nomodule: {\n $: \"noModule\",\n SCRIPT: 1\n },\n playsinline: {\n $: \"playsInline\",\n VIDEO: 1\n },\n readonly: {\n $: \"readOnly\",\n INPUT: 1,\n TEXTAREA: 1\n }\n});\nfunction getPropAlias(prop, tagName) {\n const a = PropAliases[prop];\n return typeof a === \"object\" ? (a[tagName] ? a[\"$\"] : undefined) : a;\n}\nconst DelegatedEvents = /*#__PURE__*/ new Set([\n \"beforeinput\",\n \"click\",\n \"dblclick\",\n \"contextmenu\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"keydown\",\n \"keyup\",\n \"mousedown\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"mouseup\",\n \"pointerdown\",\n \"pointermove\",\n \"pointerout\",\n \"pointerover\",\n \"pointerup\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\"\n]);\nconst SVGElements = /*#__PURE__*/ new Set([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animate\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"circle\",\n \"clipPath\",\n \"color-profile\",\n \"cursor\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"font\",\n \"font-face\",\n \"font-face-format\",\n \"font-face-name\",\n \"font-face-src\",\n \"font-face-uri\",\n \"foreignObject\",\n \"g\",\n \"glyph\",\n \"glyphRef\",\n \"hkern\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"missing-glyph\",\n \"mpath\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n \"set\",\n \"stop\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n \"tref\",\n \"tspan\",\n \"use\",\n \"view\",\n \"vkern\"\n]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/ new Set([\n \"html\",\n \"base\",\n \"head\",\n \"link\",\n \"meta\",\n \"style\",\n \"title\",\n \"body\",\n \"address\",\n \"article\",\n \"aside\",\n \"footer\",\n \"header\",\n \"main\",\n \"nav\",\n \"section\",\n \"body\",\n \"blockquote\",\n \"dd\",\n \"div\",\n \"dl\",\n \"dt\",\n \"figcaption\",\n \"figure\",\n \"hr\",\n \"li\",\n \"ol\",\n \"p\",\n \"pre\",\n \"ul\",\n \"a\",\n \"abbr\",\n \"b\",\n \"bdi\",\n \"bdo\",\n \"br\",\n \"cite\",\n \"code\",\n \"data\",\n \"dfn\",\n \"em\",\n \"i\",\n \"kbd\",\n \"mark\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"small\",\n \"span\",\n \"strong\",\n \"sub\",\n \"sup\",\n \"time\",\n \"u\",\n \"var\",\n \"wbr\",\n \"area\",\n \"audio\",\n \"img\",\n \"map\",\n \"track\",\n \"video\",\n \"embed\",\n \"iframe\",\n \"object\",\n \"param\",\n \"picture\",\n \"portal\",\n \"source\",\n \"svg\",\n \"math\",\n \"canvas\",\n \"noscript\",\n \"script\",\n \"del\",\n \"ins\",\n \"caption\",\n \"col\",\n \"colgroup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"tr\",\n \"button\",\n \"datalist\",\n \"fieldset\",\n \"form\",\n \"input\",\n \"label\",\n \"legend\",\n \"meter\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"progress\",\n \"select\",\n \"textarea\",\n \"details\",\n \"dialog\",\n \"menu\",\n \"summary\",\n \"details\",\n \"slot\",\n \"template\",\n \"acronym\",\n \"applet\",\n \"basefont\",\n \"bgsound\",\n \"big\",\n \"blink\",\n \"center\",\n \"content\",\n \"dir\",\n \"font\",\n \"frame\",\n \"frameset\",\n \"hgroup\",\n \"image\",\n \"keygen\",\n \"marquee\",\n \"menuitem\",\n \"nobr\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"rb\",\n \"rtc\",\n \"shadow\",\n \"spacer\",\n \"strike\",\n \"tt\",\n \"xmp\",\n \"a\",\n \"abbr\",\n \"acronym\",\n \"address\",\n \"applet\",\n \"area\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"base\",\n \"basefont\",\n \"bdi\",\n \"bdo\",\n \"bgsound\",\n \"big\",\n \"blink\",\n \"blockquote\",\n \"body\",\n \"br\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"center\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"content\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"dir\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"embed\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"font\",\n \"footer\",\n \"form\",\n \"frame\",\n \"frameset\",\n \"head\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"html\",\n \"i\",\n \"iframe\",\n \"image\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"keygen\",\n \"label\",\n \"legend\",\n \"li\",\n \"link\",\n \"main\",\n \"map\",\n \"mark\",\n \"marquee\",\n \"menu\",\n \"menuitem\",\n \"meta\",\n \"meter\",\n \"nav\",\n \"nobr\",\n \"noembed\",\n \"noframes\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"param\",\n \"picture\",\n \"plaintext\",\n \"portal\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rb\",\n \"rp\",\n \"rt\",\n \"rtc\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"shadow\",\n \"slot\",\n \"small\",\n \"source\",\n \"spacer\",\n \"span\",\n \"strike\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"template\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"track\",\n \"tt\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n \"wbr\",\n \"xmp\",\n \"input\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\"\n]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? (bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart]) : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document\n ? code()\n : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, isCE, isSVG) {\n let node;\n const create = () => {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n return isSVG ? t.content.firstChild.firstChild : t.content.firstChild;\n };\n const fn = isCE\n ? () => untrack(() => document.importNode(node || (node = create()), true))\n : () => (node || (node = create())).cloneNode(true);\n fn.cloneNode = fn;\n return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setProperty(node, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n node[name] = value;\n}\nfunction setAttribute(node, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttribute(name);\n else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttributeNS(namespace, name);\n else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttribute(\"class\");\n else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, (handler[0] = e => handlerFn.call(node, handler[1], e)));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return (nodeStyle.cssText = value);\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(\n () => (prevProps.children = insertExpression(node, props.children, prevProps.children))\n );\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = id => globalThis._$HY.r[id];\n sharedConfig.has = id => id in globalThis._$HY.r;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get((key = getHydrationKey())))) {\n return template();\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"$\") count++;\n else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const { completed, events } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++)\n node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp, propAlias, forceProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if (prop.slice(0, 5) === \"attr:\") {\n setAttribute(node, prop.slice(5), value);\n } else if (\n (forceProp = prop.slice(0, 5) === \"prop:\") ||\n (isChildProp = ChildProperties.has(prop)) ||\n (!isSVG &&\n ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop)))) ||\n (isCE = node.nodeName.includes(\"-\"))\n ) {\n if (forceProp) {\n prop = prop.slice(5);\n isProp = true;\n } else if (!!sharedConfig.context && node.isConnected) return value;\n if (prop === \"class\" || prop === \"className\") className(node, value);\n else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;\n else node[propAlias || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);\n else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = (e.composedPath && e.composedPath()[0]) || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n const hydrating = !!sharedConfig.context && parent.isConnected;\n if (hydrating) {\n !current && (current = [...parent.childNodes]);\n let cleaned = [];\n for (let i = 0; i < current.length; i++) {\n const node = current[i];\n if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();\n else cleaned.push(node);\n }\n current = cleaned;\n }\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = (multi && current[0] && current[0].parentNode) || parent;\n if (t === \"string\" || t === \"number\") {\n if (hydrating) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data !== value && (node.data = value);\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (hydrating) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => (current = insertExpression(parent, array, current, marker, true)));\n return () => current;\n }\n if (hydrating) {\n if (!array.length) return current;\n if (marker === undefined) return [...parent.childNodes];\n let node = array[0];\n let nodes = [node];\n while ((node = node.nextSibling) !== marker) nodes.push(node);\n return (current = nodes);\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value.nodeType) {\n if (hydrating && value.parentNode) return (current = multi ? [value] : value);\n if (Array.isArray(current)) {\n if (multi) return (current = cleanChildren(parent, current, marker, value));\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[normalized.length],\n t;\n if (item == null || item === true || item === false);\n else if ((t = typeof item) === \"object\" && item.nodeType) {\n normalized.push(item);\n } else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic =\n normalizeIncomingArray(\n normalized,\n Array.isArray(item) ? item : [item],\n Array.isArray(prev) ? prev : [prev]\n ) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);\n else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return (parent.textContent = \"\");\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i)\n isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);\n else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key))\n sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nconst voidFn = () => undefined;\nconst RequestContext = Symbol();\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst isDev = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const { useShadow } = props,\n marker = document.createTextNode(\"\"),\n mount = () => props.mount || document.body,\n owner = getOwner();\n let content;\n let hydrating = !!sharedConfig.context;\n createEffect(\n () => {\n if (hydrating) getOwner().user = hydrating = false;\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n const el = mount();\n if (el instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(el, () => (!clean() ? content() : dispose()), null));\n onCleanup(cleanup);\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot =\n useShadow && container.attachShadow\n ? container.attachShadow({\n mode: \"open\"\n })\n : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => el.removeChild(container));\n }\n },\n undefined,\n {\n render: !hydrating\n }\n );\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport {\n Aliases,\n voidFn as Assets,\n ChildProperties,\n DOMElements,\n DelegatedEvents,\n Dynamic,\n Hydration,\n voidFn as HydrationScript,\n NoHydration,\n Portal,\n Properties,\n RequestContext,\n SVGElements,\n SVGNamespace,\n addEventListener,\n assign,\n classList,\n className,\n clearDelegatedEvents,\n delegateEvents,\n dynamicProperty,\n escape,\n voidFn as generateHydrationScript,\n voidFn as getAssets,\n getHydrationKey,\n getNextElement,\n getNextMarker,\n getNextMatch,\n getPropAlias,\n voidFn as getRequestEvent,\n hydrate,\n innerHTML,\n insert,\n isDev,\n isServer,\n render,\n renderToStream,\n renderToString,\n renderToStringAsync,\n resolveSSRNode,\n runHydrationEvents,\n setAttribute,\n setAttributeNS,\n setProperty,\n spread,\n ssr,\n ssrAttribute,\n ssrClassList,\n ssrElement,\n ssrHydrationKey,\n ssrSpread,\n ssrStyle,\n style,\n template,\n use,\n voidFn as useAssets\n};\n","import { isServer } from \"solid-js/web\";\nexport function createBeforeLeave() {\n let listeners = new Set();\n function subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }\n let ignore = false;\n function confirm(to, options) {\n if (ignore)\n return !(ignore = false);\n const e = {\n to,\n options,\n defaultPrevented: false,\n preventDefault: () => (e.defaultPrevented = true)\n };\n for (const l of listeners)\n l.listener({\n ...e,\n from: l.location,\n retry: (force) => {\n force && (ignore = true);\n l.navigate(to, { ...options, resolve: false });\n }\n });\n return !e.defaultPrevented;\n }\n return {\n subscribe,\n confirm\n };\n}\n// The following supports browser initiated blocking (eg back/forward)\nlet depth;\nexport function saveCurrentDepth() {\n if (!window.history.state || window.history.state._depth == null) {\n window.history.replaceState({ ...window.history.state, _depth: window.history.length - 1 }, \"\");\n }\n depth = window.history.state._depth;\n}\nif (!isServer) {\n saveCurrentDepth();\n}\nexport function keepDepth(state) {\n return {\n ...state,\n _depth: window.history.state && window.history.state._depth\n };\n}\nexport function notifyIfNotBlocked(notify, block) {\n let ignore = false;\n return () => {\n const prevDepth = depth;\n saveCurrentDepth();\n const delta = prevDepth == null ? null : depth - prevDepth;\n if (ignore) {\n ignore = false;\n return;\n }\n if (delta && block(delta)) {\n ignore = true;\n window.history.go(-delta);\n }\n else {\n notify();\n }\n };\n}\n","import { createMemo, getOwner, runWithOwner } from \"solid-js\";\nconst hasSchemeRegex = /^(?:[a-z0-9]+:)?\\/\\//i;\nconst trimPathRegex = /^\\/+|(\\/)\\/+$/g;\nexport const mockBase = \"http://sr\";\nexport function normalizePath(path, omitSlash = false) {\n const s = path.replace(trimPathRegex, \"$1\");\n return s ? (omitSlash || /^[?#]/.test(s) ? s : \"/\" + s) : \"\";\n}\nexport function resolvePath(base, path, from) {\n if (hasSchemeRegex.test(path)) {\n return undefined;\n }\n const basePath = normalizePath(base);\n const fromPath = from && normalizePath(from);\n let result = \"\";\n if (!fromPath || path.startsWith(\"/\")) {\n result = basePath;\n }\n else if (fromPath.toLowerCase().indexOf(basePath.toLowerCase()) !== 0) {\n result = basePath + fromPath;\n }\n else {\n result = fromPath;\n }\n return (result || \"/\") + normalizePath(path, !result);\n}\nexport function invariant(value, message) {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nexport function joinPaths(from, to) {\n return normalizePath(from).replace(/\\/*(\\*.*)?$/g, \"\") + normalizePath(to);\n}\nexport function extractSearchParams(url) {\n const params = {};\n url.searchParams.forEach((value, key) => {\n params[key] = value;\n });\n return params;\n}\nexport function createMatcher(path, partial, matchFilters) {\n const [pattern, splat] = path.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n const len = segments.length;\n return (location) => {\n const locSegments = location.split(\"/\").filter(Boolean);\n const lenDiff = locSegments.length - len;\n if (lenDiff < 0 || (lenDiff > 0 && splat === undefined && !partial)) {\n return null;\n }\n const match = {\n path: len ? \"\" : \"/\",\n params: {}\n };\n const matchFilter = (s) => matchFilters === undefined ? undefined : matchFilters[s];\n for (let i = 0; i < len; i++) {\n const segment = segments[i];\n const locSegment = locSegments[i];\n const dynamic = segment[0] === \":\";\n const key = dynamic ? segment.slice(1) : segment;\n if (dynamic && matchSegment(locSegment, matchFilter(key))) {\n match.params[key] = locSegment;\n }\n else if (dynamic || !matchSegment(locSegment, segment)) {\n return null;\n }\n match.path += `/${locSegment}`;\n }\n if (splat) {\n const remainder = lenDiff ? locSegments.slice(-lenDiff).join(\"/\") : \"\";\n if (matchSegment(remainder, matchFilter(splat))) {\n match.params[splat] = remainder;\n }\n else {\n return null;\n }\n }\n return match;\n };\n}\nfunction matchSegment(input, filter) {\n const isEqual = (s) => s.localeCompare(input, undefined, { sensitivity: \"base\" }) === 0;\n if (filter === undefined) {\n return true;\n }\n else if (typeof filter === \"string\") {\n return isEqual(filter);\n }\n else if (typeof filter === \"function\") {\n return filter(input);\n }\n else if (Array.isArray(filter)) {\n return filter.some(isEqual);\n }\n else if (filter instanceof RegExp) {\n return filter.test(input);\n }\n return false;\n}\nexport function scoreRoute(route) {\n const [pattern, splat] = route.pattern.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n return segments.reduce((score, segment) => score + (segment.startsWith(\":\") ? 2 : 3), segments.length - (splat === undefined ? 0 : 1));\n}\nexport function createMemoObject(fn) {\n const map = new Map();\n const owner = getOwner();\n return new Proxy({}, {\n get(_, property) {\n if (!map.has(property)) {\n runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property])));\n }\n return map.get(property)();\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n },\n ownKeys() {\n return Reflect.ownKeys(fn());\n }\n });\n}\nexport function mergeSearchString(search, params) {\n const merged = new URLSearchParams(search);\n Object.entries(params).forEach(([key, value]) => {\n if (value == null || value === \"\") {\n merged.delete(key);\n }\n else {\n merged.set(key, String(value));\n }\n });\n const s = merged.toString();\n return s ? `?${s}` : \"\";\n}\nexport function expandOptionals(pattern) {\n let match = /(\\/?\\:[^\\/]+)\\?/.exec(pattern);\n if (!match)\n return [pattern];\n let prefix = pattern.slice(0, match.index);\n let suffix = pattern.slice(match.index + match[0].length);\n const prefixes = [prefix, (prefix += match[1])];\n // This section handles adjacent optional params. We don't actually want all permuations since\n // that will lead to equivalent routes which have the same number of params. For example\n // `/:a?/:b?/:c`? only has the unique expansion: `/`, `/:a`, `/:a/:b`, `/:a/:b/:c` and we can\n // discard `/:b`, `/:c`, `/:b/:c` by building them up in order and not recursing. This also helps\n // ensure predictability where earlier params have precidence.\n while ((match = /^(\\/\\:[^\\/]+)\\?/.exec(suffix))) {\n prefixes.push((prefix += match[1]));\n suffix = suffix.slice(match[0].length);\n }\n return expandOptionals(suffix).reduce((results, expansion) => [...results, ...prefixes.map(p => p + expansion)], []);\n}\n","import { runWithOwner } from \"solid-js\";\nimport { createComponent, createContext, createMemo, createRenderEffect, createSignal, on, onCleanup, untrack, useContext, startTransition, resetErrorBoundaries } from \"solid-js\";\nimport { isServer, getRequestEvent } from \"solid-js/web\";\nimport { createBeforeLeave } from \"./lifecycle.js\";\nimport { mockBase, createMemoObject, extractSearchParams, invariant, resolvePath, createMatcher, joinPaths, scoreRoute, mergeSearchString, expandOptionals } from \"./utils.js\";\nconst MAX_REDIRECTS = 100;\nexport const RouterContextObj = createContext();\nexport const RouteContextObj = createContext();\nexport const useRouter = () => invariant(useContext(RouterContextObj), \" and 'use' router primitives can be only used inside a Route.\");\nlet TempRoute;\nexport const useRoute = () => TempRoute || useContext(RouteContextObj) || useRouter().base;\nexport const useResolvedPath = (path) => {\n const route = useRoute();\n return createMemo(() => route.resolvePath(path()));\n};\nexport const useHref = (to) => {\n const router = useRouter();\n return createMemo(() => {\n const to_ = to();\n return to_ !== undefined ? router.renderPath(to_) : to_;\n });\n};\nexport const useNavigate = () => useRouter().navigatorFactory();\nexport const useLocation = () => useRouter().location;\nexport const useIsRouting = () => useRouter().isRouting;\nexport const useMatch = (path, matchFilters) => {\n const location = useLocation();\n const matchers = createMemo(() => expandOptionals(path()).map(path => createMatcher(path, undefined, matchFilters)));\n return createMemo(() => {\n for (const matcher of matchers()) {\n const match = matcher(location.pathname);\n if (match)\n return match;\n }\n });\n};\nexport const useParams = () => useRouter().params;\nexport const useSearchParams = () => {\n const location = useLocation();\n const navigate = useNavigate();\n const setSearchParams = (params, options) => {\n const searchString = untrack(() => location.pathname + mergeSearchString(location.search, params) + location.hash);\n navigate(searchString, {\n scroll: false,\n resolve: false,\n ...options\n });\n };\n return [location.query, setSearchParams];\n};\nexport const useBeforeLeave = (listener) => {\n const s = useRouter().beforeLeave.subscribe({\n listener,\n location: useLocation(),\n navigate: useNavigate()\n });\n onCleanup(s);\n};\nexport function createRoutes(routeDef, base = \"\") {\n const { component, load, children, info } = routeDef;\n const isLeaf = !children || (Array.isArray(children) && !children.length);\n const shared = {\n key: routeDef,\n component,\n load,\n info\n };\n return asArray(routeDef.path).reduce((acc, path) => {\n for (const originalPath of expandOptionals(path)) {\n const path = joinPaths(base, originalPath);\n let pattern = isLeaf ? path : path.split(\"/*\", 1)[0];\n pattern = pattern\n .split(\"/\")\n .map((s) => {\n return s.startsWith(\":\") || s.startsWith(\"*\") ? s : encodeURIComponent(s);\n })\n .join(\"/\");\n acc.push({\n ...shared,\n originalPath,\n pattern,\n matcher: createMatcher(pattern, !isLeaf, routeDef.matchFilters)\n });\n }\n return acc;\n }, []);\n}\nexport function createBranch(routes, index = 0) {\n return {\n routes,\n score: scoreRoute(routes[routes.length - 1]) * 10000 - index,\n matcher(location) {\n const matches = [];\n for (let i = routes.length - 1; i >= 0; i--) {\n const route = routes[i];\n const match = route.matcher(location);\n if (!match) {\n return null;\n }\n matches.unshift({\n ...match,\n route\n });\n }\n return matches;\n }\n };\n}\nfunction asArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function createBranches(routeDef, base = \"\", stack = [], branches = []) {\n const routeDefs = asArray(routeDef);\n for (let i = 0, len = routeDefs.length; i < len; i++) {\n const def = routeDefs[i];\n if (def && typeof def === \"object\") {\n if (!def.hasOwnProperty(\"path\"))\n def.path = \"\";\n const routes = createRoutes(def, base);\n for (const route of routes) {\n stack.push(route);\n const isEmptyArray = Array.isArray(def.children) && def.children.length === 0;\n if (def.children && !isEmptyArray) {\n createBranches(def.children, route.pattern, stack, branches);\n }\n else {\n const branch = createBranch([...stack], branches.length);\n branches.push(branch);\n }\n stack.pop();\n }\n }\n }\n // Stack will be empty on final return\n return stack.length ? branches : branches.sort((a, b) => b.score - a.score);\n}\nexport function getRouteMatches(branches, location) {\n for (let i = 0, len = branches.length; i < len; i++) {\n const match = branches[i].matcher(location);\n if (match) {\n return match;\n }\n }\n return [];\n}\nexport function createLocation(path, state) {\n const origin = new URL(mockBase);\n const url = createMemo(prev => {\n const path_ = path();\n try {\n return new URL(path_, origin);\n }\n catch (err) {\n console.error(`Invalid path ${path_}`);\n return prev;\n }\n }, origin, {\n equals: (a, b) => a.href === b.href\n });\n const pathname = createMemo(() => url().pathname);\n const search = createMemo(() => url().search, true);\n const hash = createMemo(() => url().hash);\n const key = () => \"\";\n return {\n get pathname() {\n return pathname();\n },\n get search() {\n return search();\n },\n get hash() {\n return hash();\n },\n get state() {\n return state();\n },\n get key() {\n return key();\n },\n query: createMemoObject(on(search, () => extractSearchParams(url())))\n };\n}\nlet intent;\nexport function getIntent() {\n return intent;\n}\nexport function createRouterContext(integration, branches, getContext, options = {}) {\n const { signal: [source, setSource], utils = {} } = integration;\n const parsePath = utils.parsePath || (p => p);\n const renderPath = utils.renderPath || (p => p);\n const beforeLeave = utils.beforeLeave || createBeforeLeave();\n const basePath = resolvePath(\"\", options.base || \"\");\n if (basePath === undefined) {\n throw new Error(`${basePath} is not a valid base path`);\n }\n else if (basePath && !source().value) {\n setSource({ value: basePath, replace: true, scroll: false });\n }\n const [isRouting, setIsRouting] = createSignal(false);\n const start = async (callback) => {\n setIsRouting(true);\n try {\n await startTransition(callback);\n }\n finally {\n setIsRouting(false);\n }\n };\n const [reference, setReference] = createSignal(source().value);\n const [state, setState] = createSignal(source().state);\n const location = createLocation(reference, state);\n const referrers = [];\n const submissions = createSignal(isServer ? initFromFlash() : []);\n const matches = createMemo(() => getRouteMatches(branches(), location.pathname));\n const params = createMemoObject(() => {\n const m = matches();\n const params = {};\n for (let i = 0; i < m.length; i++) {\n Object.assign(params, m[i].params);\n }\n return params;\n });\n const baseRoute = {\n pattern: basePath,\n path: () => basePath,\n outlet: () => null,\n resolvePath(to) {\n return resolvePath(basePath, to);\n }\n };\n createRenderEffect(() => {\n const { value, state } = source();\n // Untrack this whole block so `start` doesn't cause Solid's Listener to be preserved\n untrack(() => {\n if (value !== reference()) {\n start(() => {\n intent = \"native\";\n setReference(value);\n setState(state);\n resetErrorBoundaries();\n submissions[1]([]);\n }).then(() => {\n intent = undefined;\n });\n }\n });\n });\n return {\n base: baseRoute,\n location,\n params,\n isRouting,\n renderPath,\n parsePath,\n navigatorFactory,\n matches,\n beforeLeave,\n preloadRoute,\n singleFlight: options.singleFlight === undefined ? true : options.singleFlight,\n submissions\n };\n function navigateFromRoute(route, to, options) {\n // Untrack in case someone navigates in an effect - don't want to track `reference` or route paths\n untrack(() => {\n if (typeof to === \"number\") {\n if (!to) {\n // A delta of 0 means stay at the current location, so it is ignored\n }\n else if (utils.go) {\n utils.go(to);\n }\n else {\n console.warn(\"Router integration does not support relative routing\");\n }\n return;\n }\n const { replace, resolve, scroll, state: nextState } = {\n replace: false,\n resolve: true,\n scroll: true,\n ...options\n };\n const resolvedTo = resolve ? route.resolvePath(to) : resolvePath(\"\", to);\n if (resolvedTo === undefined) {\n throw new Error(`Path '${to}' is not a routable path`);\n }\n else if (referrers.length >= MAX_REDIRECTS) {\n throw new Error(\"Too many redirects\");\n }\n const current = reference();\n if (resolvedTo !== current || nextState !== state()) {\n if (isServer) {\n const e = getRequestEvent();\n e && (e.response = { status: 302, headers: new Headers({ Location: resolvedTo }) });\n setSource({ value: resolvedTo, replace, scroll, state: nextState });\n }\n else if (beforeLeave.confirm(resolvedTo, options)) {\n const len = referrers.push({ value: current, replace, scroll, state: state() });\n start(() => {\n intent = \"navigate\";\n setReference(resolvedTo);\n setState(nextState);\n resetErrorBoundaries();\n submissions[1]([]);\n }).then(() => {\n if (referrers.length === len) {\n intent = undefined;\n navigateEnd({\n value: resolvedTo,\n state: nextState\n });\n }\n });\n }\n }\n });\n }\n function navigatorFactory(route) {\n // Workaround for vite issue (https://github.com/vitejs/vite/issues/3803)\n route = route || useContext(RouteContextObj) || baseRoute;\n return (to, options) => navigateFromRoute(route, to, options);\n }\n function navigateEnd(next) {\n const first = referrers[0];\n if (first) {\n if (next.value !== first.value || next.state !== first.state) {\n setSource({\n ...next,\n replace: first.replace,\n scroll: first.scroll\n });\n }\n referrers.length = 0;\n }\n }\n function preloadRoute(url, preloadData) {\n const matches = getRouteMatches(branches(), url.pathname);\n const prevIntent = intent;\n intent = \"preload\";\n for (let match in matches) {\n const { route, params } = matches[match];\n route.component &&\n route.component.preload &&\n route.component.preload();\n const { load } = route;\n preloadData &&\n load &&\n runWithOwner(getContext(), () => load({\n params,\n location: {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n query: extractSearchParams(url),\n state: null,\n key: \"\"\n },\n intent: \"preload\"\n }));\n }\n intent = prevIntent;\n }\n function initFromFlash() {\n const e = getRequestEvent();\n return (e && e.router && e.router.submission\n ? [e.router.submission]\n : []);\n }\n}\nexport function createRouteContext(router, parent, outlet, match) {\n const { base, location, params } = router;\n const { pattern, component, load } = match().route;\n const path = createMemo(() => match().path);\n component &&\n component.preload &&\n component.preload();\n const data = load ? load({ params, location, intent: intent || \"initial\" }) : undefined;\n const route = {\n parent,\n pattern,\n path,\n outlet: () => component\n ? createComponent(component, {\n params,\n location,\n data,\n get children() {\n return outlet();\n }\n })\n : outlet(),\n resolvePath(to) {\n return resolvePath(base.path(), to, path());\n }\n };\n return route;\n}\n","/*@refresh skip*/\nimport { getRequestEvent, isServer } from \"solid-js/web\";\nimport { children, createMemo, createRoot, getOwner, mergeProps, on, Show, untrack } from \"solid-js\";\nimport { createBranches, createRouteContext, createRouterContext, getRouteMatches, RouteContextObj, RouterContextObj } from \"../routing.js\";\nexport const createRouterComponent = (router) => (props) => {\n const { base } = props;\n const routeDefs = children(() => props.children);\n const branches = createMemo(() => createBranches(routeDefs(), props.base || \"\"));\n let context;\n const routerState = createRouterContext(router, branches, () => context, {\n base,\n singleFlight: props.singleFlight\n });\n router.create && router.create(routerState);\n return (\n \n {(context = getOwner()) && null}\n \n \n );\n};\nfunction Root(props) {\n const location = props.routerState.location;\n const params = props.routerState.params;\n const data = createMemo(() => props.load && untrack(() => props.load({ params, location, intent: \"preload\" })));\n return (\n {Root => (\n {props.children}\n )}\n );\n}\nfunction Routes(props) {\n if (isServer) {\n const e = getRequestEvent();\n if (e && e.router && e.router.dataOnly) {\n dataOnly(e, props.routerState, props.branches);\n return;\n }\n e &&\n ((e.router || (e.router = {})).matches ||\n (e.router.matches = props.routerState.matches().map(({ route, path, params }) => ({\n path: route.originalPath,\n pattern: route.pattern,\n match: path,\n params,\n info: route.info\n }))));\n }\n const disposers = [];\n let root;\n const routeStates = createMemo(on(props.routerState.matches, (nextMatches, prevMatches, prev) => {\n let equal = prevMatches && nextMatches.length === prevMatches.length;\n const next = [];\n for (let i = 0, len = nextMatches.length; i < len; i++) {\n const prevMatch = prevMatches && prevMatches[i];\n const nextMatch = nextMatches[i];\n if (prev && prevMatch && nextMatch.route.key === prevMatch.route.key) {\n next[i] = prev[i];\n }\n else {\n equal = false;\n if (disposers[i]) {\n disposers[i]();\n }\n createRoot(dispose => {\n disposers[i] = dispose;\n next[i] = createRouteContext(props.routerState, next[i - 1] || props.routerState.base, createOutlet(() => routeStates()[i + 1]), () => props.routerState.matches()[i]);\n });\n }\n }\n disposers.splice(nextMatches.length).forEach(dispose => dispose());\n if (prev && equal) {\n return prev;\n }\n root = next[0];\n return next;\n }));\n return createOutlet(() => routeStates() && root)();\n}\nconst createOutlet = (child) => {\n return () => (\n {child => {child.outlet()}}\n );\n};\nexport const Route = (props) => {\n const childRoutes = children(() => props.children);\n return mergeProps(props, {\n get children() {\n return childRoutes();\n }\n });\n};\n// for data only mode with single flight mutations\nfunction dataOnly(event, routerState, branches) {\n const url = new URL(event.request.url);\n const prevMatches = getRouteMatches(branches, new URL(event.router.previousUrl || event.request.url).pathname);\n const matches = getRouteMatches(branches, url.pathname);\n for (let match = 0; match < matches.length; match++) {\n if (!prevMatches[match] || matches[match].route !== prevMatches[match].route)\n event.router.dataOnly = true;\n const { route, params } = matches[match];\n route.load &&\n route.load({\n params,\n location: routerState.location,\n intent: \"preload\"\n });\n }\n}\n","import { createSignal, onCleanup } from \"solid-js\";\nimport { createRouterComponent } from \"./components.jsx\";\nfunction intercept([value, setValue], get, set) {\n return [get ? () => get(value()) : value, set ? (v) => setValue(set(v)) : setValue];\n}\nfunction querySelector(selector) {\n if (selector === \"#\") {\n return null;\n }\n // Guard against selector being an invalid CSS selector\n try {\n return document.querySelector(selector);\n }\n catch (e) {\n return null;\n }\n}\nexport function createRouter(config) {\n let ignore = false;\n const wrap = (value) => (typeof value === \"string\" ? { value } : value);\n const signal = intercept(createSignal(wrap(config.get()), { equals: (a, b) => a.value === b.value }), undefined, next => {\n !ignore && config.set(next);\n return next;\n });\n config.init &&\n onCleanup(config.init((value = config.get()) => {\n ignore = true;\n signal[1](wrap(value));\n ignore = false;\n }));\n return createRouterComponent({\n signal,\n create: config.create,\n utils: config.utils\n });\n}\nexport function bindEvent(target, type, handler) {\n target.addEventListener(type, handler);\n return () => target.removeEventListener(type, handler);\n}\nexport function scrollToHash(hash, fallbackTop) {\n const el = querySelector(`#${hash}`);\n if (el) {\n el.scrollIntoView();\n }\n else if (fallbackTop) {\n window.scrollTo(0, 0);\n }\n}\n","import { $TRACK, createMemo, createSignal, onCleanup, getOwner } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { useRouter } from \"../routing.js\";\nimport { mockBase } from \"../utils.js\";\nimport { cacheKeyOp, hashKey, revalidate, cache } from \"./cache.js\";\nexport const actions = /* #__PURE__ */ new Map();\nexport function useSubmissions(fn, filter) {\n const router = useRouter();\n const subs = createMemo(() => router.submissions[0]().filter(s => s.url === fn.toString() && (!filter || filter(s.input))));\n return new Proxy([], {\n get(_, property) {\n if (property === $TRACK)\n return subs();\n if (property === \"pending\")\n return subs().some(sub => !sub.result);\n return subs()[property];\n }\n });\n}\nexport function useSubmission(fn, filter) {\n const submissions = useSubmissions(fn, filter);\n return new Proxy({}, {\n get(_, property) {\n return submissions[submissions.length - 1]?.[property];\n }\n });\n}\nexport function useAction(action) {\n const r = useRouter();\n return (...args) => action.apply({ r }, args);\n}\nexport function action(fn, name) {\n function mutate(...variables) {\n const router = this.r;\n const form = this.f;\n const p = (router.singleFlight && fn.withOptions\n ? fn.withOptions({ headers: { \"X-Single-Flight\": \"true\" } })\n : fn)(...variables);\n const [result, setResult] = createSignal();\n let submission;\n function handler(error) {\n return async (res) => {\n const result = await handleResponse(res, error, router.navigatorFactory());\n if (!result)\n return submission.clear();\n setResult(result);\n if (result.error && !form)\n throw result.error;\n return result.data;\n };\n }\n router.submissions[1](s => [\n ...s,\n (submission = {\n input: variables,\n url,\n get result() {\n return result()?.data;\n },\n get error() {\n return result()?.error;\n },\n get pending() {\n return !result();\n },\n clear() {\n router.submissions[1](v => v.filter(i => i.input !== variables));\n },\n retry() {\n setResult(undefined);\n const p = fn(...variables);\n return p.then(handler(), handler(true));\n }\n })\n ]);\n return p.then(handler(), handler(true));\n }\n const url = fn.url ||\n (name && `https://action/${name}`) ||\n (!isServer ? `https://action/${hashString(fn.toString())}` : \"\");\n return toAction(mutate, url);\n}\nfunction toAction(fn, url) {\n fn.toString = () => {\n if (!url)\n throw new Error(\"Client Actions need explicit names if server rendered\");\n return url;\n };\n fn.with = function (...args) {\n const newFn = function (...passedArgs) {\n return fn.call(this, ...args, ...passedArgs);\n };\n const uri = new URL(url, mockBase);\n uri.searchParams.set(\"args\", hashKey(args));\n return toAction(newFn, (uri.origin === \"https://action\" ? uri.origin : \"\") + uri.pathname + uri.search);\n };\n fn.url = url;\n if (!isServer) {\n actions.set(url, fn);\n getOwner() && onCleanup(() => actions.delete(url));\n }\n return fn;\n}\nconst hashString = (s) => s.split(\"\").reduce((a, b) => ((a << 5) - a + b.charCodeAt(0)) | 0, 0);\nasync function handleResponse(response, error, navigate) {\n let data;\n let keys;\n let invalidateKeys;\n if (response instanceof Response) {\n if (response.headers.has(\"X-Revalidate\"))\n keys = invalidateKeys = response.headers.get(\"X-Revalidate\").split(\",\");\n if (response.customBody) {\n data = await response.customBody();\n if (response.headers.has(\"X-Single-Flight\")) {\n keys || (keys = []);\n invalidateKeys || (invalidateKeys = []);\n Object.keys(data).forEach(key => {\n if (key === \"_$value\")\n return;\n keys.push(key);\n cache.set(key, data[key]);\n });\n data = data._$value;\n }\n }\n if (response.headers.has(\"Location\")) {\n const locationUrl = response.headers.get(\"Location\") || \"/\";\n if (locationUrl.startsWith(\"http\")) {\n window.location.href = locationUrl;\n }\n else {\n navigate(locationUrl);\n }\n }\n }\n else if (error)\n return { error: response };\n else\n data = response;\n // invalidate\n cacheKeyOp(invalidateKeys, entry => (entry[0] = 0));\n // trigger revalidation\n await revalidate(keys, false);\n return data != null ? { data } : undefined;\n}\n","import { delegateEvents } from \"solid-js/web\";\nimport { onCleanup } from \"solid-js\";\nimport { actions } from \"./action.js\";\nimport { mockBase } from \"../utils.js\";\nexport function setupNativeEvents(preload = true, explicitLinks = false, actionBase = \"/_server\") {\n return (router) => {\n const basePath = router.base.path();\n const navigateFromRoute = router.navigatorFactory(router.base);\n let preloadTimeout = {};\n function isSvg(el) {\n return el.namespaceURI === \"http://www.w3.org/2000/svg\";\n }\n function handleAnchor(evt) {\n if (evt.defaultPrevented ||\n evt.button !== 0 ||\n evt.metaKey ||\n evt.altKey ||\n evt.ctrlKey ||\n evt.shiftKey)\n return;\n const a = evt\n .composedPath()\n .find(el => el instanceof Node && el.nodeName.toUpperCase() === \"A\");\n if (!a || (explicitLinks && !a.hasAttribute(\"link\")))\n return;\n const svg = isSvg(a);\n const href = svg ? a.href.baseVal : a.href;\n const target = svg ? a.target.baseVal : a.target;\n if (target || (!href && !a.hasAttribute(\"state\")))\n return;\n const rel = (a.getAttribute(\"rel\") || \"\").split(/\\s+/);\n if (a.hasAttribute(\"download\") || (rel && rel.includes(\"external\")))\n return;\n const url = svg ? new URL(href, document.baseURI) : new URL(href);\n if (url.origin !== window.location.origin ||\n (basePath && url.pathname && !url.pathname.toLowerCase().startsWith(basePath.toLowerCase())))\n return;\n return [a, url];\n }\n function handleAnchorClick(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n const to = router.parsePath(url.pathname + url.search + url.hash);\n const state = a.getAttribute(\"state\");\n evt.preventDefault();\n navigateFromRoute(to, {\n resolve: false,\n replace: a.hasAttribute(\"replace\"),\n scroll: !a.hasAttribute(\"noscroll\"),\n state: state && JSON.parse(state)\n });\n }\n function handleAnchorPreload(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n if (!preloadTimeout[url.pathname])\n router.preloadRoute(url, a.getAttribute(\"preload\") !== \"false\");\n }\n function handleAnchorIn(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n if (preloadTimeout[url.pathname])\n return;\n preloadTimeout[url.pathname] = setTimeout(() => {\n router.preloadRoute(url, a.getAttribute(\"preload\") !== \"false\");\n delete preloadTimeout[url.pathname];\n }, 200);\n }\n function handleAnchorOut(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [, url] = res;\n if (preloadTimeout[url.pathname]) {\n clearTimeout(preloadTimeout[url.pathname]);\n delete preloadTimeout[url.pathname];\n }\n }\n function handleFormSubmit(evt) {\n let actionRef = evt.submitter && evt.submitter.hasAttribute(\"formaction\")\n ? evt.submitter.getAttribute(\"formaction\")\n : evt.target.getAttribute(\"action\");\n if (!actionRef)\n return;\n if (!actionRef.startsWith(\"https://action/\")) {\n // normalize server actions\n const url = new URL(actionRef, mockBase);\n actionRef = router.parsePath(url.pathname + url.search);\n if (!actionRef.startsWith(actionBase))\n return;\n }\n if (evt.target.method.toUpperCase() !== \"POST\")\n throw new Error(\"Only POST forms are supported for Actions\");\n const handler = actions.get(actionRef);\n if (handler) {\n evt.preventDefault();\n const data = new FormData(evt.target);\n if (evt.submitter && evt.submitter.name)\n data.append(evt.submitter.name, evt.submitter.value);\n handler.call({ r: router, f: evt.target }, data);\n }\n }\n // ensure delegated event run first\n delegateEvents([\"click\", \"submit\"]);\n document.addEventListener(\"click\", handleAnchorClick);\n if (preload) {\n document.addEventListener(\"mouseover\", handleAnchorIn);\n document.addEventListener(\"mouseout\", handleAnchorOut);\n document.addEventListener(\"focusin\", handleAnchorPreload);\n document.addEventListener(\"touchstart\", handleAnchorPreload);\n }\n document.addEventListener(\"submit\", handleFormSubmit);\n onCleanup(() => {\n document.removeEventListener(\"click\", handleAnchorClick);\n if (preload) {\n document.removeEventListener(\"mouseover\", handleAnchorIn);\n document.removeEventListener(\"mouseout\", handleAnchorOut);\n document.removeEventListener(\"focusin\", handleAnchorPreload);\n document.removeEventListener(\"touchstart\", handleAnchorPreload);\n }\n document.removeEventListener(\"submit\", handleFormSubmit);\n });\n };\n}\n","import { setupNativeEvents } from \"../data/events.js\";\nimport { createRouter, scrollToHash, bindEvent } from \"./createRouter.js\";\nimport { createBeforeLeave, keepDepth, notifyIfNotBlocked, saveCurrentDepth } from \"../lifecycle.js\";\nexport function hashParser(str) {\n const to = str.replace(/^.*?#/, \"\");\n // Hash-only hrefs like `#foo` from plain anchors will come in as `/#foo` whereas a link to\n // `/foo` will be `/#/foo`. Check if the to starts with a `/` and if not append it as a hash\n // to the current path so we can handle these in-page anchors correctly.\n if (!to.startsWith(\"/\")) {\n const [, path = \"/\"] = window.location.hash.split(\"#\", 2);\n return `${path}#${to}`;\n }\n return to;\n}\nexport function HashRouter(props) {\n const getSource = () => window.location.hash.slice(1);\n const beforeLeave = createBeforeLeave();\n return createRouter({\n get: getSource,\n set({ value, replace, scroll, state }) {\n if (replace) {\n window.history.replaceState(keepDepth(state), \"\", \"#\" + value);\n }\n else {\n window.location.hash = value;\n }\n const hashIndex = value.indexOf(\"#\");\n const hash = hashIndex >= 0 ? value.slice(hashIndex + 1) : \"\";\n scrollToHash(hash, scroll);\n saveCurrentDepth();\n },\n init: notify => bindEvent(window, \"hashchange\", notifyIfNotBlocked(notify, delta => !beforeLeave.confirm(delta && delta < 0 ? delta : getSource()))),\n create: setupNativeEvents(props.preload, props.explicitLinks, props.actionBase),\n utils: {\n go: delta => window.history.go(delta),\n renderPath: path => `#${path}`,\n parsePath: hashParser,\n beforeLeave\n }\n })(props);\n}\n","import { DEV, equalFn, untrack, getOwner, onCleanup, createSignal, sharedConfig, onMount } from 'solid-js';\nimport { isServer } from 'solid-js/web';\nexport { isServer } from 'solid-js/web';\n\n// src/index.ts\nvar isClient = !isServer;\nvar isDev = isClient && !!DEV;\nvar isProd = !isDev;\nvar noop = () => void 0;\nvar trueFn = () => true;\nvar falseFn = () => false;\nvar defaultEquals = equalFn;\nvar EQUALS_FALSE_OPTIONS = { equals: false };\nvar INTERNAL_OPTIONS = { internal: true };\nvar ofClass = (v, c) => v instanceof c || v && v.constructor === c;\nfunction isObject(value) {\n return value !== null && (typeof value === \"object\" || typeof value === \"function\");\n}\nvar isNonNullable = (i) => i != null;\nvar filterNonNullable = (arr) => arr.filter(isNonNullable);\nvar compare = (a, b) => a < b ? -1 : a > b ? 1 : 0;\nvar arrayEquals = (a, b) => a === b || a.length === b.length && a.every((e, i) => e === b[i]);\nfunction chain(callbacks) {\n return (...args) => {\n for (const callback of callbacks)\n callback && callback(...args);\n };\n}\nfunction reverseChain(callbacks) {\n return (...args) => {\n for (let i = callbacks.length - 1; i >= 0; i--) {\n const callback = callbacks[i];\n callback && callback(...args);\n }\n };\n}\nvar clamp = (n, min, max) => Math.min(Math.max(n, min), max);\nvar access = (v) => typeof v === \"function\" && !v.length ? v() : v;\nvar asArray = (value) => Array.isArray(value) ? value : value ? [value] : [];\nvar accessArray = (list) => list.map((v) => access(v));\nvar withAccess = (value, fn) => {\n const _value = access(value);\n typeof _value != null && fn(_value);\n};\nvar asAccessor = (v) => typeof v === \"function\" ? v : () => v;\nfunction accessWith(valueOrFn, ...args) {\n return typeof valueOrFn === \"function\" ? valueOrFn(...args) : valueOrFn;\n}\nfunction defer(deps, fn, initialValue) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let shouldDefer = true;\n return (prevValue) => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++)\n input[i] = deps[i]();\n } else\n input = deps();\n if (shouldDefer) {\n shouldDefer = false;\n prevInput = input;\n return initialValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nvar entries = Object.entries;\nvar keys = Object.keys;\nvar tryOnCleanup = isDev ? (fn) => getOwner() ? onCleanup(fn) : fn : onCleanup;\nvar createCallbackStack = () => {\n let stack = [];\n const clear = () => stack = [];\n return {\n push: (...callbacks) => stack.push(...callbacks),\n execute(arg0, arg1, arg2, arg3) {\n stack.forEach((cb) => cb(arg0, arg1, arg2, arg3));\n clear();\n },\n clear\n };\n};\nfunction createMicrotask(fn) {\n let calls = 0;\n let args;\n onCleanup(() => calls = 0);\n return (...a) => {\n args = a, calls++;\n queueMicrotask(() => --calls === 0 && fn(...args));\n };\n}\nfunction createHydratableSignal(serverValue, update, options) {\n if (isServer) {\n return createSignal(serverValue, options);\n }\n if (sharedConfig.context) {\n const [state, setState] = createSignal(serverValue, options);\n onMount(() => setState(() => update()));\n return [state, setState];\n }\n return createSignal(update(), options);\n}\nvar createHydrateSignal = createHydratableSignal;\nfunction handleDiffArray(current, prev, handleAdded, handleRemoved) {\n const currLength = current.length;\n const prevLength = prev.length;\n let i = 0;\n if (!prevLength) {\n for (; i < currLength; i++)\n handleAdded(current[i]);\n return;\n }\n if (!currLength) {\n for (; i < prevLength; i++)\n handleRemoved(prev[i]);\n return;\n }\n for (; i < prevLength; i++) {\n if (prev[i] !== current[i])\n break;\n }\n let prevEl;\n let currEl;\n prev = prev.slice(i);\n current = current.slice(i);\n for (prevEl of prev) {\n if (!current.includes(prevEl))\n handleRemoved(prevEl);\n }\n for (currEl of current) {\n if (!prev.includes(currEl))\n handleAdded(currEl);\n }\n}\n\nexport { EQUALS_FALSE_OPTIONS, INTERNAL_OPTIONS, access, accessArray, accessWith, arrayEquals, asAccessor, asArray, chain, clamp, compare, createCallbackStack, createHydratableSignal, createHydrateSignal, createMicrotask, defaultEquals, defer, entries, falseFn, filterNonNullable, handleDiffArray, isClient, isDev, isNonNullable, isObject, isProd, keys, noop, ofClass, reverseChain, trueFn, tryOnCleanup, withAccess };\n","import { tryOnCleanup, entries, createCallbackStack, asArray, access, keys } from '@solid-primitives/utils';\nimport { createEffect, createRenderEffect, createSignal, onCleanup } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/eventListener.ts\nfunction makeEventListener(target, type, handler, options) {\n target.addEventListener(type, handler, options);\n return tryOnCleanup(target.removeEventListener.bind(target, type, handler, options));\n}\nfunction createEventListener(targets, type, handler, options) {\n if (isServer)\n return;\n const attachListeners = () => {\n asArray(access(targets)).forEach((el) => {\n if (el)\n asArray(access(type)).forEach((type2) => makeEventListener(el, type2, handler, options));\n });\n };\n if (typeof targets === \"function\")\n createEffect(attachListeners);\n else\n createRenderEffect(attachListeners);\n}\nfunction createEventSignal(target, type, options) {\n if (isServer) {\n return () => void 0;\n }\n const [lastEvent, setLastEvent] = createSignal();\n createEventListener(target, type, setLastEvent, options);\n return lastEvent;\n}\nvar eventListener = (target, props) => {\n createEffect(() => {\n const [type, handler, options] = props();\n makeEventListener(target, type, handler, options);\n });\n};\nfunction createEventListenerMap(targets, handlersMap, options) {\n if (isServer) {\n return;\n }\n for (const [eventName, handler] of entries(handlersMap)) {\n if (handler)\n createEventListener(targets, eventName, handler, options);\n }\n}\nvar attachPropListeners = (target, props) => {\n keys(props).forEach((attr) => {\n if (attr.startsWith(\"on\") && typeof props[attr] === \"function\")\n makeEventListener(target, attr.substring(2).toLowerCase(), props[attr]);\n });\n};\nvar WindowEventListener = (props) => {\n if (isServer)\n return null;\n attachPropListeners(window, props);\n};\nvar DocumentEventListener = (props) => {\n if (isServer)\n return null;\n attachPropListeners(document, props);\n};\nfunction makeEventListenerStack(target, options) {\n if (isServer) {\n return [() => () => void 0, () => void 0];\n }\n const { push, execute } = createCallbackStack();\n return [\n (type, handler, overwriteOptions) => {\n const clear = makeEventListener(target, type, handler, overwriteOptions ?? options);\n push(clear);\n return clear;\n },\n onCleanup(execute)\n ];\n}\n\n// src/callbackWrappers.ts\nvar preventDefault = (callback) => (e) => {\n e.preventDefault();\n callback(e);\n};\nvar stopPropagation = (callback) => (e) => {\n e.stopPropagation();\n callback(e);\n};\nvar stopImmediatePropagation = (callback) => (e) => {\n e.stopImmediatePropagation();\n callback(e);\n};\n\nexport { DocumentEventListener, WindowEventListener, createEventListener, createEventListenerMap, createEventSignal, eventListener, makeEventListener, makeEventListenerStack, preventDefault, stopImmediatePropagation, stopPropagation };\n","import { getOwner, createRoot, runWithOwner, onCleanup, sharedConfig, createSignal, batch } from 'solid-js';\nimport { isServer } from 'solid-js/web';\nimport { asArray, access, trueFn, noop, createMicrotask } from '@solid-primitives/utils';\n\n// src/index.ts\nfunction createSubRoot(fn, ...owners) {\n if (owners.length === 0)\n owners = [getOwner()];\n return createRoot((dispose) => {\n asArray(access(owners)).forEach(\n (owner) => owner && runWithOwner(owner, onCleanup.bind(void 0, dispose))\n );\n return fn(dispose);\n }, owners[0]);\n}\nvar createBranch = createSubRoot;\nvar createCallback = (callback, owner = getOwner()) => owner ? (...args) => runWithOwner(owner, () => callback(...args)) : callback;\nfunction createDisposable(fn, ...owners) {\n return createSubRoot(\n (dispose) => {\n fn(dispose);\n return dispose;\n },\n ...owners\n );\n}\nfunction createSingletonRoot(factory, detachedOwner = getOwner()) {\n let listeners = 0, value, disposeRoot;\n return () => {\n listeners++;\n onCleanup(() => {\n listeners--;\n queueMicrotask(() => {\n if (!listeners && disposeRoot) {\n disposeRoot();\n disposeRoot = value = void 0;\n }\n });\n });\n if (!disposeRoot) {\n createRoot((dispose) => value = factory(disposeRoot = dispose), detachedOwner);\n }\n return value;\n };\n}\nvar createSharedRoot = createSingletonRoot;\nfunction createHydratableSingletonRoot(factory) {\n const owner = getOwner();\n const singleton = createSingletonRoot(factory, owner);\n return () => isServer || sharedConfig.context ? createRoot(factory, owner) : singleton();\n}\nfunction createRootPool(factory, options = {}) {\n if (isServer) {\n const owner2 = getOwner();\n return (args) => createRoot((dispose) => factory(() => args, trueFn, dispose), owner2);\n }\n let length = 0;\n const { limit = 100 } = options, pool = new Array(limit), owner = getOwner(), mapRoot = factory.length > 1 ? (dispose, [args, set]) => {\n const [active, setA] = createSignal(true);\n const root = {\n dispose,\n set,\n setA,\n active,\n v: factory(args, active, () => disposeRoot(root))\n };\n return root;\n } : (dispose, [args, set]) => ({\n dispose,\n set,\n setA: trueFn,\n active: trueFn,\n v: factory(args, trueFn, noop)\n }), limitPool = createMicrotask(() => {\n if (length > limit) {\n for (let i = limit; i < length; i++) {\n pool[i].dispose();\n pool[i] = void 0;\n }\n length = limit;\n }\n }), cleanupRoot = (root) => {\n if (root.dispose !== noop) {\n pool[length++] = root;\n root.setA(false);\n limitPool();\n }\n }, disposeRoot = (root) => {\n root.dispose();\n root.dispose = noop;\n if (root.active())\n root.setA(false);\n else {\n pool[pool.indexOf(root)] = pool[--length];\n pool[length] = void 0;\n }\n };\n onCleanup(() => {\n for (let i = 0; i < length; i++)\n pool[i].dispose();\n length = 0;\n });\n return (arg) => {\n let root;\n if (length) {\n root = pool[--length];\n pool[length] = void 0;\n batch(() => {\n root.set(() => arg);\n root.setA(true);\n });\n } else\n root = createRoot((dispose) => mapRoot(dispose, createSignal(arg)), owner);\n onCleanup(() => cleanupRoot(root));\n return root.v;\n };\n}\n\nexport { createBranch, createCallback, createDisposable, createHydratableSingletonRoot, createRootPool, createSharedRoot, createSingletonRoot, createSubRoot };\n","import { makeEventListener } from '@solid-primitives/event-listener';\nimport { createSingletonRoot } from '@solid-primitives/rootless';\nimport { arrayEquals } from '@solid-primitives/utils';\nimport { createSignal, untrack, createMemo, createEffect, on } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nfunction equalsKeyHoldSequence(sequence, model) {\n for (let i = sequence.length - 1; i >= 0; i--) {\n const _model = model.slice(0, i + 1);\n if (!arrayEquals(sequence[i], _model))\n return false;\n }\n return true;\n}\nvar useKeyDownEvent = /* @__PURE__ */ createSingletonRoot(\n () => {\n if (isServer) {\n return () => null;\n }\n const [event, setEvent] = createSignal(null);\n makeEventListener(window, \"keydown\", (e) => {\n setEvent(e);\n setTimeout(() => setEvent(null));\n });\n return event;\n }\n);\nvar useKeyDownList = /* @__PURE__ */ createSingletonRoot(() => {\n if (isServer) {\n const keys = () => [];\n keys[0] = keys;\n keys[1] = { event: () => null };\n keys[Symbol.iterator] = function* () {\n yield keys[0];\n yield keys[1];\n };\n return keys;\n }\n const [pressedKeys, setPressedKeys] = createSignal([]), reset = () => setPressedKeys([]), event = useKeyDownEvent();\n makeEventListener(window, \"keydown\", (e) => {\n if (e.repeat || typeof e.key !== \"string\")\n return;\n const key = e.key.toUpperCase(), currentKeys = pressedKeys();\n if (currentKeys.includes(key))\n return;\n const keys = [...currentKeys, key];\n if (currentKeys.length === 0 && key !== \"ALT\" && key !== \"CONTROL\" && key !== \"META\" && key !== \"SHIFT\") {\n if (e.shiftKey)\n keys.unshift(\"SHIFT\");\n if (e.altKey)\n keys.unshift(\"ALT\");\n if (e.ctrlKey)\n keys.unshift(\"CONTROL\");\n if (e.metaKey)\n keys.unshift(\"META\");\n }\n setPressedKeys(keys);\n });\n makeEventListener(window, \"keyup\", (e) => {\n if (typeof e.key !== \"string\")\n return;\n const key = e.key.toUpperCase();\n setPressedKeys((prev) => prev.filter((_key) => _key !== key));\n });\n makeEventListener(window, \"blur\", reset);\n makeEventListener(window, \"contextmenu\", (e) => {\n e.defaultPrevented || reset();\n });\n pressedKeys[0] = pressedKeys;\n pressedKeys[1] = { event };\n pressedKeys[Symbol.iterator] = function* () {\n yield pressedKeys[0];\n yield pressedKeys[1];\n };\n return pressedKeys;\n});\nvar useCurrentlyHeldKey = /* @__PURE__ */ createSingletonRoot(\n () => {\n if (isServer) {\n return () => null;\n }\n const keys = useKeyDownList();\n let prevKeys = untrack(keys);\n return createMemo(() => {\n const _keys = keys();\n const prev = prevKeys;\n prevKeys = _keys;\n if (prev.length === 0 && _keys.length === 1)\n return _keys[0];\n return null;\n });\n }\n);\nvar useKeyDownSequence = /* @__PURE__ */ createSingletonRoot(() => {\n if (isServer) {\n return () => [];\n }\n const keys = useKeyDownList();\n return createMemo((prev) => {\n if (keys().length === 0)\n return [];\n return [...prev, keys()];\n }, []);\n});\nfunction createKeyHold(key, options = {}) {\n if (isServer) {\n return () => false;\n }\n key = key.toUpperCase();\n const { preventDefault = true } = options, event = useKeyDownEvent(), heldKey = useCurrentlyHeldKey();\n return createMemo(() => heldKey() === key && (preventDefault && event()?.preventDefault(), true));\n}\nfunction createShortcut(keys, callback, options = {}) {\n if (isServer || !keys.length) {\n return;\n }\n keys = keys.map((key) => key.toUpperCase());\n const { preventDefault = true } = options, event = useKeyDownEvent(), sequence = useKeyDownSequence();\n let reset = false;\n const handleSequenceWithReset = (sequence2) => {\n if (!sequence2.length)\n return reset = false;\n if (reset)\n return;\n const e = event();\n if (sequence2.length < keys.length) {\n if (equalsKeyHoldSequence(sequence2, keys.slice(0, sequence2.length))) {\n preventDefault && e && e.preventDefault();\n } else {\n reset = true;\n }\n } else {\n reset = true;\n if (equalsKeyHoldSequence(sequence2, keys)) {\n preventDefault && e && e.preventDefault();\n callback(e);\n }\n }\n };\n const handleSequenceWithoutReset = (sequence2) => {\n const last = sequence2.at(-1);\n if (!last)\n return;\n const e = event();\n if (preventDefault && last.length < keys.length) {\n if (arrayEquals(last, keys.slice(0, keys.length - 1))) {\n e && e.preventDefault();\n }\n return;\n }\n if (arrayEquals(last, keys)) {\n const prev = sequence2.at(-2);\n if (!prev || arrayEquals(prev, keys.slice(0, keys.length - 1))) {\n preventDefault && e && e.preventDefault();\n callback(e);\n }\n }\n };\n createEffect(\n on(sequence, options.requireReset ? handleSequenceWithReset : handleSequenceWithoutReset)\n );\n}\n\nexport { createKeyHold, createShortcut, useCurrentlyHeldKey, useKeyDownEvent, useKeyDownList, useKeyDownSequence };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nexport function isFunc(item) {\n return typeof item === 'function';\n}\nexport function isObject(item) {\n return typeof item === 'object';\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isArray(item) {\n return Array.isArray(item);\n}\nexport function isString(item) {\n return typeof item === 'string';\n}\nexport function isNumber(item) {\n return typeof item === 'number';\n}\nexport function isInteger(item) {\n return Number.isInteger(item);\n}\nexport function keyExists(obj, keys) {\n for (const key of keys) {\n if (key in obj) {\n return true;\n }\n }\n return false;\n}\n/**\n * Asserts a condition is truthy, otherwise throws an error\n *\n * @remarks\n * Useful at the top of functions to ensure certain conditions, arguments and\n * properties are set/met before continuing. When using this function,\n * TypeScript will narrow away falsy types from the condition.\n *\n * @param condition\n * @param message\n * @returns\n */\nexport function assertTruthy(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n//# sourceMappingURL=utils.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { createEffect, on, createSignal, untrack, } from 'solid-js';\nimport { useKeyDownEvent } from '@solid-primitives/keyboard';\nimport { activeElement, ElementNode } from '@lightningjs/solid';\nimport { isFunc, isArray } from './utils.js';\nconst keyMapEntries = {\n ArrowLeft: 'Left',\n ArrowRight: 'Right',\n ArrowUp: 'Up',\n ArrowDown: 'Down',\n Enter: 'Enter',\n l: 'Last',\n ' ': 'Space',\n Backspace: 'Back',\n Escape: 'Escape',\n};\nconst [focusPath, setFocusPath] = createSignal([]);\nexport { focusPath };\nexport const useFocusManager = (userKeyMap) => {\n const keypressEvent = useKeyDownEvent();\n if (userKeyMap) {\n // Flatten the userKeyMap to a hash\n for (const [key, value] of Object.entries(userKeyMap)) {\n if (isArray(value)) {\n value.forEach((v) => {\n keyMapEntries[v] = key;\n });\n }\n else {\n keyMapEntries[value] = key;\n }\n }\n }\n createEffect(on(activeElement, (currentFocusedElm, prevFocusedElm, prevFocusPath = []) => {\n const newFocusedElms = [];\n let current = currentFocusedElm;\n const fp = [];\n while (current) {\n if (!current.states.has('focus')) {\n current.states.add('focus');\n isFunc(current.onFocus) &&\n current.onFocus.call(current, currentFocusedElm, prevFocusedElm);\n newFocusedElms.push(current);\n }\n fp.push(current);\n current = current.parent;\n }\n prevFocusPath.forEach((elm) => {\n if (!fp.includes(elm)) {\n elm.states.remove('focus');\n isFunc(elm.onBlur) &&\n elm.onBlur.call(elm, currentFocusedElm, prevFocusedElm);\n }\n });\n setFocusPath(fp);\n return fp;\n }, { defer: true }));\n createEffect(() => {\n const e = keypressEvent();\n if (e) {\n // Search keyMap for the value of the pressed key or keyCode if value undefined\n const mappedKeyEvent = keyMapEntries[e.key] || keyMapEntries[e.keyCode];\n untrack(() => {\n const fp = focusPath();\n let finalFocusElm = undefined;\n for (const elm of fp) {\n finalFocusElm = finalFocusElm || elm;\n if (mappedKeyEvent) {\n const onKeyHandler = elm[`on${mappedKeyEvent}`];\n if (isFunc(onKeyHandler)) {\n if (onKeyHandler.call(elm, e, elm, finalFocusElm) === true) {\n break;\n }\n }\n }\n else {\n console.log(`Unhandled key event: ${e.key}`);\n }\n if (isFunc(elm.onKeyPress)) {\n if (elm.onKeyPress.call(elm, e, mappedKeyEvent, elm, finalFocusElm) === true) {\n break;\n }\n }\n }\n return false;\n });\n }\n });\n return focusPath;\n};\n//# sourceMappingURL=useFocusManager.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { ElementNode } from '@lightningjs/solid';\n// To use with TS import withPadding and then put withPadding; on the next line to prevent tree shaking\nexport function withPadding(el, padding) {\n const pad = padding();\n let top, left, right, bottom;\n if (Array.isArray(pad)) {\n // top right bottom left\n if (pad.length === 2) {\n top = bottom = pad[0];\n left = right = pad[1];\n }\n else if (pad.length === 3) {\n top = pad[0];\n left = right = pad[1];\n bottom = pad[2];\n }\n else {\n [top, right, bottom, left] = pad;\n }\n }\n else {\n top = right = bottom = left = pad;\n }\n el.onBeforeLayout = (node, size) => {\n if (size) {\n el.width =\n el.children.reduce((acc, c) => {\n return acc + (c.width || 0);\n }, 0) +\n left +\n right;\n const firstChild = el.children[0];\n if (firstChild) {\n // set padding or marginLeft for flex\n firstChild.x = left;\n firstChild.marginLeft = left;\n }\n let maxHeight = 0;\n el.children.forEach((c) => {\n c.y = top;\n c.marginTop = top;\n maxHeight = Math.max(maxHeight, c.height || 0);\n });\n el.height = maxHeight + top + bottom;\n // let flex know we need to re-layout\n return true;\n }\n };\n}\n//# sourceMappingURL=withPadding.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n/* global SpeechSynthesisErrorEvent */\nfunction flattenStrings(series = []) {\n const flattenedSeries = [];\n let i;\n for (i = 0; i < series.length; i++) {\n const s = series[i];\n if (typeof s === 'string' && !s.includes('PAUSE-')) {\n flattenedSeries.push(series[i]);\n }\n else {\n break;\n }\n }\n // add a \"word boundary\" to ensure the Announcer doesn't automatically try to\n // interpret strings that look like dates but are not actually dates\n // for example, if \"Rising Sun\" and \"1993\" are meant to be two separate lines,\n // when read together, \"Sun 1993\" is interpretted as \"Sunday 1993\"\n return [flattenedSeries.join(',\\b ')].concat(series.slice(i));\n}\nfunction delay(pause) {\n return new Promise((resolve) => {\n setTimeout(resolve, pause);\n });\n}\n/**\n * Speak a string\n *\n * @param phrase Phrase to speak\n * @param utterances An array which the new SpeechSynthesisUtterance instance representing this utterance will be appended\n * @param lang Language to speak in\n * @return {Promise} Promise resolved when the utterance has finished speaking, and rejected if there's an error\n */\nfunction speak(phrase, utterances, lang = 'en-US') {\n const synth = window.speechSynthesis;\n return new Promise((resolve, reject) => {\n const utterance = new SpeechSynthesisUtterance(phrase);\n utterance.lang = lang;\n utterance.onend = () => {\n resolve();\n };\n utterance.onerror = (e) => {\n reject(e);\n };\n utterances.push(utterance);\n synth.speak(utterance);\n });\n}\nfunction speakSeries(series, lang, root = true) {\n const synth = window.speechSynthesis;\n const remainingPhrases = flattenStrings(Array.isArray(series) ? series : [series]);\n const nestedSeriesResults = [];\n /*\n We hold this array of SpeechSynthesisUtterances in order to prevent them from being\n garbage collected prematurely on STB hardware which can cause the 'onend' events of\n utterances to not fire consistently.\n */\n const utterances = [];\n let active = true;\n const seriesChain = (async () => {\n try {\n while (active && remainingPhrases.length) {\n const phrase = await Promise.resolve(remainingPhrases.shift());\n if (!active) {\n // Exit\n // Need to check this after the await in case it was cancelled in between\n break;\n }\n else if (typeof phrase === 'string' && phrase.includes('PAUSE-')) {\n // Pause it\n let pause = Number(phrase.split('PAUSE-')[1]) * 1000;\n if (isNaN(pause)) {\n pause = 0;\n }\n await delay(pause);\n }\n else if (typeof phrase === 'string' && phrase.length) {\n // Speak it\n const totalRetries = 3;\n let retriesLeft = totalRetries;\n while (active && retriesLeft > 0) {\n try {\n await speak(phrase, utterances, lang);\n retriesLeft = 0;\n }\n catch (e) {\n // eslint-disable-next-line no-undef\n if (e instanceof SpeechSynthesisErrorEvent) {\n if (e.error === 'network') {\n retriesLeft--;\n console.warn(`Speech synthesis network error. Retries left: ${retriesLeft}`);\n await delay(500 * (totalRetries - retriesLeft));\n }\n else if (e.error === 'canceled' ||\n e.error === 'interrupted') {\n // Cancel or interrupt error (ignore)\n retriesLeft = 0;\n }\n else {\n throw new Error(`SpeechSynthesisErrorEvent: ${e.error}`);\n }\n }\n else {\n throw e;\n }\n }\n }\n }\n else if (typeof phrase === 'function') {\n const seriesResult = speakSeries(phrase(), lang, false);\n nestedSeriesResults.push(seriesResult);\n await seriesResult.series;\n }\n else if (Array.isArray(phrase)) {\n // Speak it (recursively)\n const seriesResult = speakSeries(phrase, lang, false);\n nestedSeriesResults.push(seriesResult);\n await seriesResult.series;\n }\n }\n }\n finally {\n active = false;\n }\n })();\n return {\n series: seriesChain,\n get active() {\n return active;\n },\n append: (toSpeak) => {\n remainingPhrases.push(toSpeak);\n },\n cancel: () => {\n if (!active) {\n return;\n }\n if (root) {\n synth.cancel();\n }\n nestedSeriesResults.forEach((nestedSeriesResults) => {\n nestedSeriesResults.cancel();\n });\n active = false;\n },\n };\n}\nlet currentSeries;\nexport default function (toSpeak, lang = 'en-US') {\n currentSeries && currentSeries.cancel();\n currentSeries = speakSeries(toSpeak, lang);\n return currentSeries;\n}\n//# sourceMappingURL=speech.js.map","import { getOwner, onCleanup, createSignal, getListener } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nvar debounce = (callback, wait) => {\n if (isServer) {\n return Object.assign(() => void 0, { clear: () => void 0 });\n }\n let timeoutId;\n const clear = () => clearTimeout(timeoutId);\n if (getOwner())\n onCleanup(clear);\n const debounced = (...args) => {\n if (timeoutId !== void 0)\n clear();\n timeoutId = setTimeout(() => callback(...args), wait);\n };\n return Object.assign(debounced, { clear });\n};\nvar throttle = (callback, wait) => {\n if (isServer) {\n return Object.assign(() => void 0, { clear: () => void 0 });\n }\n let isThrottled = false, timeoutId, lastArgs;\n const throttled = (...args) => {\n lastArgs = args;\n if (isThrottled)\n return;\n isThrottled = true;\n timeoutId = setTimeout(() => {\n callback(...lastArgs);\n isThrottled = false;\n }, wait);\n };\n const clear = () => {\n clearTimeout(timeoutId);\n isThrottled = false;\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(throttled, { clear });\n};\nvar scheduleIdle = isServer ? () => Object.assign(() => void 0, { clear: () => void 0 }) : (\n // requestIdleCallback is not supported in Safari\n window.requestIdleCallback ? (callback, maxWait) => {\n let isDeferred = false, id, lastArgs;\n const deferred = (...args) => {\n lastArgs = args;\n if (isDeferred)\n return;\n isDeferred = true;\n id = requestIdleCallback(\n () => {\n callback(...lastArgs);\n isDeferred = false;\n },\n { timeout: maxWait }\n );\n };\n const clear = () => {\n cancelIdleCallback(id);\n isDeferred = false;\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(deferred, { clear });\n } : (\n // fallback to setTimeout (throttle)\n (callback) => throttle(callback)\n )\n);\nfunction leading(schedule, callback, wait) {\n if (isServer) {\n let called = false;\n const scheduled2 = (...args) => {\n if (called)\n return;\n called = true;\n callback(...args);\n };\n return Object.assign(scheduled2, { clear: () => void 0 });\n }\n let isScheduled = false;\n const scheduled = schedule(() => isScheduled = false, wait);\n const func = (...args) => {\n if (!isScheduled)\n callback(...args);\n isScheduled = true;\n scheduled();\n };\n const clear = () => {\n isScheduled = false;\n scheduled.clear();\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(func, { clear });\n}\nfunction leadingAndTrailing(schedule, callback, wait) {\n if (isServer) {\n let called = false;\n const scheduled2 = (...args) => {\n if (called)\n return;\n called = true;\n callback(...args);\n };\n return Object.assign(scheduled2, { clear: () => void 0 });\n }\n let State;\n ((State2) => {\n State2[State2[\"Ready\"] = 0] = \"Ready\";\n State2[State2[\"Leading\"] = 1] = \"Leading\";\n State2[State2[\"Trailing\"] = 2] = \"Trailing\";\n })(State || (State = {}));\n let state = 0 /* Ready */;\n const scheduled = schedule((args) => {\n state === 2 /* Trailing */ && callback(...args);\n state = 0 /* Ready */;\n }, wait);\n const fn = (...args) => {\n if (state !== 2 /* Trailing */) {\n if (state === 0 /* Ready */)\n callback(...args);\n state += 1;\n }\n scheduled(args);\n };\n const clear = () => {\n state = 0 /* Ready */;\n scheduled.clear();\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(fn, { clear });\n}\nfunction createScheduled(schedule) {\n let listeners = 0;\n let isDirty = false;\n const [track, dirty] = createSignal(void 0, { equals: false });\n const call = schedule(() => {\n isDirty = true;\n dirty();\n });\n return () => {\n if (!isDirty)\n call(), track();\n if (isDirty) {\n isDirty = !!listeners;\n return true;\n }\n if (getListener()) {\n listeners++;\n onCleanup(() => listeners--);\n }\n return false;\n };\n}\n\nexport { createScheduled, debounce, leading, leadingAndTrailing, scheduleIdle, throttle };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { untrack } from 'solid-js';\nimport SpeechEngine, {} from './speech.js';\nimport { debounce } from '@solid-primitives/scheduled';\nimport { focusPath } from '../useFocusManager.js';\nlet resetFocusPathTimer;\nlet prevFocusPath = [];\nlet currentlySpeaking;\nlet voiceOutDisabled = false;\nconst fiveMinutes = 300000;\nfunction debounceWithFlush(callback, time) {\n const trigger = debounce(callback, time);\n let scopedValue;\n const debounced = (newValue) => {\n scopedValue = newValue;\n trigger(newValue);\n };\n debounced.flush = () => {\n trigger.clear();\n callback(scopedValue);\n };\n debounced.clear = trigger.clear;\n return debounced;\n}\nfunction getElmName(elm) {\n return elm.id || elm.name;\n}\nfunction onFocusChangeCore(focusPath = []) {\n if (!Announcer.onFocusChange || !Announcer.enabled) {\n return;\n }\n const loaded = focusPath.every((elm) => !elm.loading);\n const focusDiff = focusPath.filter((elm) => !prevFocusPath.includes(elm));\n resetFocusPathTimer();\n if (!loaded && Announcer.onFocusChange) {\n Announcer.onFocusChange([]);\n return;\n }\n prevFocusPath = focusPath.slice(0);\n const toAnnounceText = [];\n const toAnnounce = focusDiff.reduce((acc, elm) => {\n if (elm.announce) {\n acc.push([getElmName(elm), 'Announce', elm.announce]);\n toAnnounceText.push(elm.announce);\n }\n else if (elm.title) {\n acc.push([getElmName(elm), 'Title', elm.title]);\n toAnnounceText.push(elm.title);\n }\n else {\n acc.push([getElmName(elm), 'No Announce', '']);\n }\n return acc;\n }, []);\n focusDiff.reverse().reduce((acc, elm) => {\n if (elm.announceContext) {\n acc.push([getElmName(elm), 'Context', elm.announceContext]);\n toAnnounceText.push(elm.announceContext);\n }\n else {\n acc.push([getElmName(elm), 'No Context', '']);\n }\n return acc;\n }, toAnnounce);\n if (Announcer.debug) {\n console.table(toAnnounce);\n }\n if (toAnnounceText.length) {\n return Announcer.speak(toAnnounceText.reduce((acc, val) => acc.concat(val), []));\n }\n}\nfunction textToSpeech(toSpeak) {\n if (voiceOutDisabled) {\n return;\n }\n return (currentlySpeaking = SpeechEngine(toSpeak));\n}\nexport const Announcer = {\n debug: false,\n enabled: true,\n cancel: function () {\n currentlySpeaking && currentlySpeaking.cancel();\n },\n clearPrevFocus: function (depth = 0) {\n prevFocusPath = prevFocusPath.slice(0, depth);\n resetFocusPathTimer();\n },\n speak: function (text, { append = false, notification = false } = {}) {\n if (Announcer.onFocusChange && Announcer.enabled) {\n Announcer.onFocusChange.flush();\n if (append && currentlySpeaking && currentlySpeaking.active) {\n currentlySpeaking.append(text);\n }\n else {\n Announcer.cancel();\n textToSpeech(text);\n }\n if (notification) {\n voiceOutDisabled = true;\n currentlySpeaking?.series\n .finally(() => {\n voiceOutDisabled = false;\n Announcer.refresh();\n })\n .catch(console.error);\n }\n }\n return currentlySpeaking;\n },\n refresh: function (depth = 0) {\n Announcer.clearPrevFocus(depth);\n Announcer.onFocusChange &&\n Announcer.onFocusChange(untrack(() => focusPath()));\n },\n setupTimers: function ({ focusDebounce = 400, focusChangeTimeout = fiveMinutes, } = {}) {\n Announcer.onFocusChange = debounceWithFlush(onFocusChangeCore, focusDebounce);\n resetFocusPathTimer = debounceWithFlush(() => {\n // Reset focus path for full announce\n prevFocusPath = [];\n }, focusChangeTimeout);\n },\n};\n//# sourceMappingURL=announcer.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { createEffect, on } from 'solid-js';\nimport { Announcer } from './announcer.js';\nimport { focusPath } from '../useFocusManager.js';\nexport const useAnnouncer = () => {\n Announcer.setupTimers();\n createEffect(on(focusPath, Announcer.onFocusChange, { defer: true }));\n return Announcer;\n};\n//# sourceMappingURL=index.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { renderer } from '@lightningjs/solid';\nimport {} from '@lightningjs/renderer';\nexport function createSpriteMap(src, subTextures) {\n const spriteMapTexture = renderer.createTexture('ImageTexture', {\n src,\n });\n return subTextures.reduce((acc, t) => {\n const { x, y, width, height } = t;\n acc[t.name] = renderer.createTexture('SubTexture', {\n texture: spriteMapTexture,\n x,\n y,\n width,\n height,\n });\n return acc;\n }, {});\n}\n//# sourceMappingURL=createSpriteMap.js.map","import { createSignal } from \"solid-js\";\nexport const [globalBackground, setGlobalBackground] = createSignal(\"\");\n","export default {\n name: 'Base Lightning TV',\n alpha: {\n primary: 1,\n secondary: 0.7,\n tertiary: 0.1,\n inactive: 0.5,\n full: 1,\n none: 0,\n alpha1: 0.1,\n alpha2: 0.3,\n alpha3: 0.5,\n alpha4: 0.7,\n alpha5: 0.9\n },\n animation: {\n duration: {\n none: 0,\n xfast: 0.1,\n fast: 0.25,\n normal: 0.5,\n slow: 0.75,\n xslow: 0.9\n },\n delay: {\n none: 0,\n xfast: 0.01,\n fast: 0.025,\n normal: 0.05,\n slow: 0.075,\n xslow: 0.09\n },\n expressive: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n expressiveEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n expressiveExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standard: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standardEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standardExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utility: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utilityEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utilityExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n }\n },\n asset: {\n arrowLeft:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAi0lEQVRIDWNgGAWjIfD//38JID5Fk5AAGqwKxPeA+D/VLQCaaQLEr0CGgwBVLQCa5wbEn0EGwwDVLAAaGA3Ev2AGw2iqWAA0rBiI/8EMRaYptgBoWDeygehsci1gIlcjWfqArqZdEMFcBLSEdpGMZAntkimSJbTLaEiW0K6oQLKEdoUdzJJRemiHAAD4n+yzPWCs7QAAAABJRU5ErkJggg==',\n arrowRight:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAg0lEQVRIDWNgGAWjIYArBP7//38KiCVwyVMsDjQcBO4BsSrFhmEzAGw8hHgFpEywqaFIDMkCEPMzELtRZCC6ZjQLQNxfQByNro5sPhYLQEL/gLiYbEORNeKwACbcDVPLBGMMOhrmVDSapkFE00imaTKlaUajaVFB28Ju0CXrUQfhDAEAEgHss6NhpLQAAAAASUVORK5CYII=',\n backspaceOutline:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAACmpJREFUeF7tnVmoZUcVhv/feY4gBEVEH/KgCCZxCK2itNo4xQQH+kUN0TjEiDGKKBqnaExwBjUaR6KY+NQgiQkOMSYhYEScIopGJOqDE2hHjfP0y4p1Oqdv33v2qr32Prv2Paug6Ye7Vu2qv75TtWvtGohMqUBAAQZ80zUVQAKUEIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypfPsAJJ0NYC92XRHKPB3AAfLv18BuBLAFSR/NKZWswJI0vkA3jCmILsw75sAvIfkR8eo22wAknQSgMvGEGFD8vwxgFeQvGrI+s4CIEnHAPgugHsMWfkNzevDAM4i+Z8h6t88QJLuXOB5yBAVzjxuVeBaAM8ieXNUjzkAdAmA50Yrmv5HKPATACeQ/GNEm6YBkvRyANblZhpHAXsfekpkOGsWIEmPAHA9gDuOo13mWhS4gOSZfdVoEiBJ9wFwA4D7961Y+lUpsK/v7KxVgL4K4ElOCS4l+Uyn7a41k3Q0gMcC2ANgH4CHV1T2OyStx69OzQEk6TwAZztr8lMAx5P8s9N+Y8wk2cTjfQDu66z080h+zml7yKwpgCSdCOByZyX+BuBRJH/otN84M0kWN/s0gOc4Kv8Nko922B1m0gxAkh4I4AcVwcL9JA/UVnjT7CXdHYD9yEzfVUkAjib5uxqNmgCoBAu/CeBhzsJ/kORZTtuNN5Nk70bXAZ0Hy59G8qIawVoB6LMAnu8suE3tH0/y3077NAMg6esAuoaoC0la7M2dJgdI0ssAXOgs8W8BHEvS/s9UoYCkdwN4bYfL5STto7U7TQpQZbDQehzreawHylSpgKSTAVza4XYDyeNqsp4MoB7BwteQfH9N5dL2NgWK3l0vyAdJWhDXnSYBSNLtANh3GO/KwgMk97trlYbbKiDJPpzea5U8JKuYqDIeql0kvQPAG5352ZLMR5L8q9M+zXZQYFcAJOnJAL7sbGWLMFuk2SLOmYIKzB6gEiz8HoB7O7U4meQXnLZp1qGApD8BuOcsh7AewcL3kuyadg4OjSSbhRxH0j4BjJok2Ufga0j+YdQHlcznDlBNsPAa+xpP8r/rEHbxjAKPbRuyHvKFY0Ik6QUALOprPfIT1gHRbAGSdDoA77aSX5Zg4e8nhGfx6FEgWoJn8Zy1QCTplq5vjc3NwnoEC/eQ/HYD8IwC0TbwrA2i2QHUI1h4JskLGoJnUIhWwLMWiGYFkCSLMX2t5WDhlneeLm5Dw5kDntEhkmRhEVvesWNqZgiTdC6AN3W1Svn72oOFkuxF+WcVIQUrai+IKuA5BBHJ453auc1mA1AJFn7Jsf7EKj9ZsLBHw1ZDtI5neAmaBUBzCxaO2cBj5u2FZtlO0l8A3K3ZIaxHsPB8kt5vYn00c/mM0dBj5OmqzAqjOQDUfLBwJ32HbPAh84pCM5seSNJLAHzcWeFJgoVdZRui4YfIo6ucff8uyVY03LW5IawyWPgvW5u77mChV/QIABFfb/kidk0CVKbDth3Huw35dJLeniqiV2/fniDYx1f7vlWTeoUFah6wZQhrqwcqwUKbrtsaH0+6mOQpHsOpbXpCVFPstcJjBZNkmzHv0swQJultAN7iVO375TyafzjtJzcbEaK1w9McQJXBQlvvYmtsfjE5FZUFGAGiSeBpCqDKYKFtmX0qya9Utl0z5gNCNBk8BSA7CtiODNwxjf4trEew8BySNtTNOg0A0aTwtARQTbDQeh3rfawXmn0KQDQ5PC0B9EkAL3LSkAD9X6hWALIJzJ3mNoSdS9I7U3NyuX6zQO+zKOzkEEmaHqDSFdpZM97tOfkSfRvvk0LUDEAFIgseetf85DS+AYgk/bPr1NvRZ2HLg4ektwI4xzmgZCBxYohaBMjWPeenDOcvaIvZ2oez5gAqQ5mtLbb3oa4z+Bb6nTHW1UP92vFIr54vzJ8BcGplGdYKkSRbCXGHSWdh2z1ckp1taGccroxyFt9cznG4iGuDqFmASk9kZxxakNGTckHZBBA1DVCB6BMAXuwhyA4VmGL/+05l6zlsbdt7DJmXU0uXmSQ7JvD2zQ1hiwJJsotRvlVxXO87SU5+heUYDT5Gni5KVhg1D1DphWqCjOYy6RlAYzb0mHn3gWkWABWIaoKMubHwSBpGebGWZNdc2vmUO6a1BhJXFUSSff/yLuOYamvzzwEcVfFr7tWwPXqi6uN2PXWYG0C1Qca1n8RaDlewl3kPRL3gWXo/XBwo1dXWdk/a3jEOnJoVQGUoqw0yvpLkh7oUHvLvTohC8FRANBo8pT3sxLeVJ/M2M4QtiVYTZJzkNPoOiAaBxwHRqPDMFqBS8Jog4yT3YewA0aDwrIBodHhmDVApvG0mtO3PnjTJjTxbIBoFnm0gWgs8pQ06lxY3N4QtCWZBRgPDezdnHvPr+alV2EiaL0DlF2Dbn20bdB40XtHwQ5nOHqAC0SyCjEM1Wkv57AqACkRvBvB2p7hrDzI6yzU7s90EUPNBxtnR4SjwrgGo9EK1Qca8cM4ByU4mkuz++F93ZHELyZX3iW31n+S+sKWZWfNBxkCbNeUq6ekArugo1I0kH1xT8EkBKj1R80HGGkFbtZVkZ3bb2d2r0tUkn1hTh8kBKhB9DMBLnQWfJMjoLFuTZpJsO/ONAB7UUcBLSHqvX781q1YAqg0yfoDkq5psrQYLJeldAF7nKFr1x+wmACq9kAUZLazvvTV4P8kDDlE22kTSQ4uuK9dCF5HuR/I3NYI1A1CBaB+AK50VsAMj7TJeixNl2kYBSccCsB/ZMQ6Brif5GIfdYSZNAVQg8rzsLSphl/Hapby2LDZTUaBcq/56ALb1fOVxLkuinULy4loRmwOoQGQX7T7DWZnPk3y203bXmkl6AIA91isDOBGADV3e1HsJbasA1QYZvUKl3fYKPI2knXFQnZoEqPRCNUHG6oqnwyEFLiJ5Wl89mgWoQFQTZOyrwSb7WUztcSRtu0+v1DRABaKPADijV+3SaZUCNgE5geTNEZnmAFBtkDGix6b4Xld2BNvJcaHUPEClF6oNMoZE2eXOtm3q1ZFha1mfWQBUINoL4Kqurbm7vPEj1bOAqx3udW0kk62+swGoQHQ2gPOGFGAD8roJgF0t+qkx6jorgApElwE4aQwxZp6n3YNxsPyzA7yst/4iSdvEMFqaHUCjKZEZ91IgAeolWzotFEiAkoWQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnT+H0jPT81J3xWWAAAAAElFTkSuQmCC',\n check:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAOCAYAAAAi2ky3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACtSURBVHgBvdPdDcIgEAfwoy8Nb45QN3AGF2s36Ahu4gpuIDoBfSgfpdoTlCbEWEMh6T8hFzjyg5AAkBHOcQe5UWqspRx435sDpMYj6IYQwwVSEiJ2MKVUBWuzLSLl2HL+uxmNCGFO8yaL7RHxve6qRZoAuS4hxac8735elWVx7jrtMKL1o0Gcat9jhExHSukN/kUIFZ7MpDRtzE1isDRkAUtDvrA8ZI597FUf8gWH9P0b4gko9wAAAABJRU5ErkJggg=='\n },\n color: {\n palette: {\n 'blue-20': '0xbecffeff',\n 'blue-40': '0x93a9fdff',\n 'blue-90': '0x000033ff',\n 'grey-05': '0xf8f7faff',\n 'grey-40': '0x929096ff',\n 'grey-70': '0x48474bff',\n 'grey-90': '0x181819ff'\n },\n white: '0xffffffff',\n black: '0x000000ff',\n grey: '0x929096ff',\n red: '0xe74c3cff',\n orange: '0xdc7633ff',\n yellow: '0xf7dc6fff',\n green: '0x2ecc71ff',\n blue: '0x93a9fdff',\n purple: '0x663399ff',\n material: '0x181819ff',\n materialBrand: '0x000033ff',\n overlay: '0x181819b3',\n textNeutral: '0xf8f7faff',\n textNeutralSecondary: '0xf8f7fab3',\n textNeutralTertiary: '0xf8f7fa1a',\n textNeutralDisabled: '0xf8f7fa80',\n textInverse: '0x181819ff',\n textInverseSecondary: '0x181819b3',\n textInverseTertiary: '0x1818191a',\n textInverseDisabled: '0x18181980',\n textBrand: '0x93a9fdff',\n textBrandSecondary: '0x93a9fdb3',\n textBrandTertiary: '0x93a9fd1a',\n textBrandDisabled: '0x93a9fd80',\n textPositive: '0x2ecc71ff',\n textNegative: '0xe74c3cff',\n textInfo: '0x93a9fdff',\n textCaution: '0xdc7633ff',\n fillTransparent: '0xffffff0',\n fillNeutral: '0xf8f7faff',\n fillNeutralSecondary: '0xf8f7fab3',\n fillNeutralTertiary: '0xf8f7fa1a',\n fillNeutralDisabled: '0xf8f7fa80',\n fillInverse: '0x181819ff',\n fillInverseSecondary: '0x181819b3',\n fillInverseTertiary: '0x1818191a',\n fillInverseDisabled: '0x18181980',\n fillBrand: '0x93a9fdff',\n fillBrandSecondary: '0x93a9fdb3',\n fillBrandTertiary: '0x93a9fd1a',\n fillBrandDisabled: '0x93a9fd80',\n fillPositive: '0x2ecc71ff',\n fillNegative: '0xe74c3cff',\n fillInfo: '0x93a9fdff',\n fillCaution: '0xdc7633ff',\n strokeNeutral: '0xf8f7faff',\n strokeNeutralSecondary: '0xf8f7fab3',\n strokeNeutralTertiary: '0xf8f7fa1a',\n strokeNeutralDisabled: '0xf8f7fa80',\n strokeInverse: '0x181819ff',\n strokeInverseSecondary: '0x181819b3',\n strokeInverseTertiary: '0x1818191a',\n strokeInverseDisabled: '0x18181980',\n strokeBrand: '0x93a9fdff',\n strokeBrandSecondary: '0x93a9fdb3',\n strokeBrandTertiary: '0x93a9fd1a',\n strokeBrandDisabled: '0x93a9fd80',\n strokePositive: '0x2ecc71ff',\n strokeNegative: '0xe74c3cff',\n strokeInfo: '0x93a9fdff',\n strokeCaution: '0xdc7633ff',\n interactiveNeutral: '0xffffff1a',\n interactiveNeutralFocus: '0xffffffff',\n interactiveNeutralFocusSoft: '0xffffff1a',\n interactiveInverse: '0x48474b1a',\n interactiveInverseFocus: '0x48474bff',\n interactiveInverseFocusSoft: '0x48474b1a',\n interactiveBrand: '0xbecffe1a',\n interactiveBrandFocus: '0xbecffeff',\n interactiveBrandFocusSoft: '0xbecffe1a',\n shadowNeutral: '0x000000b3',\n shadowNeutralFocus: '0x000000b3',\n shadowNeutralFocusSoft: '0x000000b3',\n shadowNeutralText: '0x000000ff',\n shadowInverse: '0x000000b3',\n shadowInverseFocus: '0x000000b3',\n shadowInverseFocusSoft: '0x000000b3',\n shadowInverseText: '0x000000ff',\n shadowBrand: '0x000000b3',\n shadowBrandFocus: '0x000000b3',\n shadowBrandFocusSoft: '0x000000b3',\n shadowBrandText: '0x000000ff'\n },\n font: [],\n layout: {\n columnCount: 10,\n focusScale: 1.2,\n gutterX: 20,\n gutterY: 20,\n marginX: 150,\n marginY: 150,\n safe: 50,\n screenW: 1920,\n screenH: 1080\n },\n radius: { none: 0, xs: 2, sm: 4, md: 8, lg: 16, xl: 24 },\n spacer: {\n none: 0,\n xxs: 2,\n xs: 4,\n sm: 8,\n md: 10,\n lg: 20,\n xl: 30,\n xxl: 40,\n xxxl: 50\n },\n stroke: { none: 0, sm: 2, md: 4, lg: 6, xl: 8 },\n typography: {\n display1: {\n fontFamily: 'Arial',\n fontSize: 75,\n lineHeight: 85,\n fontWeight: 500,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n display2: {\n fontFamily: 'Arial',\n fontSize: 50,\n lineHeight: 60,\n fontWeight: 500,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline1: {\n fontFamily: 'Arial',\n fontSize: 35,\n fontWeight: 500,\n lineHeight: 48,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline2: {\n fontFamily: 'Arial',\n fontSize: 30,\n fontWeight: 500,\n lineHeight: 40,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline3: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 500,\n lineHeight: 36,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body1: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 300,\n lineHeight: 40,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body2: {\n fontFamily: 'Arial',\n fontSize: 22,\n fontWeight: 300,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body3: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 300,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n button1: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n button2: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n callout1: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n caption1: {\n fontFamily: 'Arial',\n fontSize: 15,\n fontWeight: 500,\n lineHeight: 24,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n tag1: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 24,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n footnote1: {\n fontFamily: 'Arial',\n fontSize: 22,\n fontWeight: 300,\n lineHeight: 30,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n }\n },\n componentConfig: {\n Keyboard: {\n base: {\n keyProps: {\n delete: {\n title: null,\n icon: 'data:image/png;base64,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'\n }\n }\n }\n }\n }\n};\n","import { type AnimationSettings } from \"@lightningjs/renderer\";\nimport { globalBackground } from \"../state.js\";\nimport {\n type IntrinsicNodeStyleProps,\n View,\n Text,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { createEffect, on } from \"solid-js\";\nimport theme from \"theme\";\n\nexport default function Background() {\n let bg1, bg2, heroMask;\n let active = 0;\n const alpha = 1;\n const animationSettings = {\n duration: 750,\n easing: \"ease-in-out\",\n } satisfies Partial;\n const bgStyles = {\n alpha,\n color: 0xffffffff,\n } satisfies IntrinsicNodeStyleProps;\n\n function changeBackgrounds(img: string) {\n if (img.startsWith(\"#\")) {\n bg1.color = hexColor(img);\n bg1.src = \"\";\n bg1.alpha = 1;\n active = 1;\n bg2.alpha = 0;\n heroMask.alpha = 0;\n return;\n } else {\n bg1.color = 0xffffffff;\n heroMask.alpha = 1;\n }\n\n if (active === 0) {\n bg1.src = img;\n active = 1;\n return;\n }\n\n if (active === 1) {\n bg2.src = img;\n active = 2;\n bg2.alpha = 0;\n bg2.animate({ alpha }, animationSettings).start();\n bg1.animate({ alpha: 0 }, animationSettings).start();\n return;\n }\n\n if (active === 2) {\n bg1.src = img;\n active = 1;\n bg1.alpha = 0;\n bg1.animate({ alpha }, animationSettings).start();\n bg2.animate({ alpha: 0 }, animationSettings).start();\n }\n }\n\n createEffect(\n on(\n globalBackground,\n (img: string) => {\n changeBackgrounds(img);\n },\n { defer: true }\n )\n );\n\n return (\n <>\n \n \n \n \n \n \n );\n}\n","var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;\nimport { ElementNode, createComponent, View, mergeProps, Text as Text$7, createElement, use, spread, memo, insert, Show, For, hexColor } from \"@lightningjs/solid\";\nimport { createMemo, For as For$1, createSignal } from \"solid-js\";\nimport theme from \"theme\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nfunction objectFromEntries(entries) {\n if (!entries || !entries[Symbol.iterator]) {\n throw new Error(\"objectFromEntries requires a single iterable argument\");\n }\n const obj = {};\n for (const [key2, value] of entries) {\n obj[key2] = value;\n }\n return obj;\n}\nconst defaultModeKeys = [\"focus\", \"disabled\"];\nconst defaultToneKeys = [\"brand\", \"inverse\", \"neutral\"];\nfunction makeComponentStyles({ themeKeys, base, modes, tones, themeStyles: themeStyles2, modeKeys = defaultModeKeys, toneKeys = defaultToneKeys }, debug = false) {\n const makeToneStyles = (tones2, themeComponentStyles, modeStyles) => {\n const toneStyles = toneKeys.map((tone) => {\n const styles2 = {};\n const styleList = new Set(\n [].concat.apply([], [(tones2 == null ? void 0 : tones2[tone]) ?? {}, (themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) ?? {}].map(Object.keys))\n );\n styleList.forEach((styleKey) => {\n var _a2, _b2;\n if (!modeKeys.includes(styleKey)) {\n styles2[styleKey] = ((_a2 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _a2[styleKey]) ?? ((_b2 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _b2[styleKey]);\n }\n });\n modeKeys.forEach((mode) => {\n var _a2, _b2;\n styles2[mode] = {\n ...modeStyles[mode],\n // fallbacks from base.mode\n ...(_a2 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _a2[mode],\n // component configured tone.mode\n ...(_b2 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _b2[mode]\n // theme configure tone.mode\n };\n });\n return [tone, styles2];\n });\n return objectFromEntries(toneStyles);\n };\n const makeModeStyles = (modes2, themeComponentStyles) => {\n const modeStyles = modeKeys.map((mode) => {\n return [mode, { ...modes2 == null ? void 0 : modes2[mode], ...themeComponentStyles == null ? void 0 : themeComponentStyles[mode] }];\n });\n const modeObject = objectFromEntries(modeStyles);\n return modeObject;\n };\n const makeBaseStyles = (base2, themeComponentStyles) => {\n const baseStyles = {\n ...base2,\n ...themeComponentStyles.base\n };\n return baseStyles;\n };\n const mapThemeKeysToSolid = (stylesToMap) => objectFromEntries(\n Object.entries(themeKeys).filter(([_, themeKey]) => stylesToMap[themeKey]).map(([solidKey, themeKey]) => [solidKey, stylesToMap[themeKey]])\n );\n const convertComponentConfig = (themeStyles3) => {\n const convertedThemeStyles = objectFromEntries(\n // iterate through each variant\n Object.entries(themeStyles3).map(([variantName, styles2]) => {\n const convertedStyles = mapThemeKeysToSolid(styles2);\n Object.entries(styles2).filter(([styleName, _]) => modeKeys.includes(styleName)).forEach(([modeName, modeStyles]) => {\n convertedStyles[modeName] = mapThemeKeysToSolid(modeStyles);\n });\n return [variantName, convertedStyles];\n })\n );\n return convertedThemeStyles;\n };\n const generateSolidStylesFromLookupObject = (base2, modes2, tones2) => {\n const themeComponentStyles = convertComponentConfig(themeStyles2);\n debug && console.log(themeComponentStyles);\n const baseStyles = makeBaseStyles(base2, themeComponentStyles);\n debug && console.log(baseStyles);\n const modeStyles = makeModeStyles(modes2, themeComponentStyles);\n debug && console.log(modeStyles);\n const toneStyles = makeToneStyles(tones2, themeComponentStyles, modeStyles);\n debug && console.log(toneStyles);\n return {\n base: {\n ...baseStyles,\n ...modeStyles\n },\n tones: toneStyles\n };\n };\n return generateSolidStylesFromLookupObject(base, modes, tones);\n}\nfunction withScrolling(adjustment = 0) {\n return (componentRef, selectedElement, selected = 0, lastSelected) => {\n if (componentRef.children.length === 0) {\n return;\n }\n const dimension = componentRef.flexDirection === \"row\" ? \"width\" : \"height\";\n const axis = componentRef.flexDirection === \"row\" ? \"x\" : \"y\";\n const gap = componentRef.gap || 0;\n const scroll = componentRef.scroll || \"auto\";\n const [lastItem, containerSize] = updateLastIndex(componentRef);\n let rootPosition = componentRef[axis] ?? 0;\n const selectedPosition = (selectedElement == null ? void 0 : selectedElement[axis]) ?? 0;\n const selectedSize = (selectedElement == null ? void 0 : selectedElement[dimension]) ?? 0;\n const direct = lastSelected === void 0 ? \"none\" : selected > lastSelected ? \"positive\" : \"negative\";\n let next = rootPosition;\n if (scroll === \"auto\") {\n if (componentRef.scrollIndex != void 0 && componentRef.scrollIndex >= 0) {\n if (componentRef.selected >= componentRef.scrollIndex) {\n if (direct === \"positive\") {\n next = rootPosition - selectedSize - gap;\n } else {\n next = rootPosition + selectedSize + gap;\n }\n }\n } else if (Math.abs(rootPosition) + containerSize < lastItem.position + lastItem.size || selectedPosition < Math.abs(rootPosition)) {\n next = -selectedPosition + adjustment;\n }\n } else if (scroll === \"always\" || scroll === \"edge\" && direct === \"negative\" && Math.abs(rootPosition) > selectedPosition) {\n next = -selectedPosition + adjustment;\n } else if (scroll === \"edge\" && direct === \"positive\" && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) {\n next = rootPosition - selectedSize - gap;\n } else if (scroll === \"edge\" && direct === \"none\") {\n let currentChildIndex = 0;\n let currentChild, currentChildSize;\n while (currentChildIndex < componentRef.children.length && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) {\n currentChild = componentRef.children[currentChildIndex++];\n currentChildSize = currentChild[dimension] ?? 0;\n rootPosition -= currentChildSize + gap;\n }\n next = rootPosition;\n }\n if (axis === \"x\" && componentRef.x !== next) {\n componentRef.x = next;\n } else if (axis === \"y\" && componentRef.y !== next) {\n componentRef.y = next;\n }\n };\n}\nfunction updateLastIndex(items) {\n let lastItem, containerSize;\n if (items.flexDirection === \"row\") {\n lastItem = {\n position: items.children[items.children.length - 1].x,\n size: items.children[items.children.length - 1].width\n };\n containerSize = items.width;\n } else {\n lastItem = {\n position: items.children[items.children.length - 1].y,\n size: items.children[items.children.length - 1].height\n };\n containerSize = items.height;\n }\n return [lastItem, containerSize];\n}\nconst useItemLayout = (itemLayout) => {\n if (itemLayout) {\n const width = (theme.layout.screenW - theme.layout.marginX * 2) / itemLayout.upCount - theme.layout.gutterX;\n const height = width / itemLayout.ratioX * itemLayout.ratioY;\n return { width, height };\n }\n return {};\n};\nconst chainFunctions = (...args) => {\n const onlyFunctions = args.filter((func) => typeof func === \"function\");\n if (onlyFunctions.length === 0) {\n return void 0;\n }\n if (onlyFunctions.length === 1) {\n return onlyFunctions[0];\n }\n return function(...innerArgs) {\n let result;\n for (const func of onlyFunctions) {\n result = func.apply(this, innerArgs);\n if (result === true) {\n return result;\n }\n }\n return result;\n };\n};\nfunction assertTruthy(condition, message) {\n return;\n}\nfunction onGridFocus() {\n if (!this || this.selected === void 0 || this.children.length === 0)\n return false;\n let child = this.children[this.selected];\n while (child == null ? void 0 : child.skipFocus) {\n this.selected++;\n child = this.children[this.selected];\n }\n if (!(child instanceof ElementNode))\n return false;\n child.setFocus();\n return true;\n}\nfunction handleNavigation(direction) {\n return function() {\n var _a2, _b2, _c2;\n const numChildren = this.children.length;\n const wrap = this.wrap;\n const lastSelected = this.selected || 0;\n if (numChildren === 0) {\n return false;\n }\n if (direction === \"right\" || direction === \"down\") {\n do {\n this.selected = (this.selected || 0) % numChildren + 1;\n if (this.selected >= numChildren) {\n if (!wrap) {\n this.selected = void 0;\n break;\n }\n this.selected = 0;\n }\n } while ((_a2 = this.children[this.selected]) == null ? void 0 : _a2.skipFocus);\n } else if (direction === \"left\" || direction === \"up\") {\n do {\n this.selected = (this.selected || 0) % numChildren - 1;\n if (this.selected < 0) {\n if (!wrap) {\n this.selected = void 0;\n break;\n }\n this.selected = numChildren - 1;\n }\n } while ((_b2 = this.children[this.selected]) == null ? void 0 : _b2.skipFocus);\n }\n if (this.selected === void 0) {\n this.selected = lastSelected;\n if ((_c2 = this.children[this.selected]) == null ? void 0 : _c2.states.has(\"focus\")) {\n return false;\n }\n }\n const active = this.children[this.selected];\n this.onSelectedChanged && this.onSelectedChanged.call(this, this, active, this.selected, lastSelected);\n if (this.plinko && lastSelected !== void 0) {\n const lastSelectedChild = this.children[lastSelected];\n const num = lastSelectedChild.selected || 0;\n active.selected = num < active.children.length ? num : active.children.length - 1;\n }\n active.setFocus();\n return true;\n };\n}\nfunction scrollToIndex(componentRef, selectedIndex) {\n if (!componentRef || componentRef.selected === void 0 || componentRef.children.length === 0 || componentRef.children.length <= selectedIndex || componentRef.selected === selectedIndex) {\n return false;\n }\n componentRef.selected = selectedIndex;\n if (componentRef.flexDirection === \"row\") {\n componentRef.x = -componentRef.children[selectedIndex].x;\n } else if (componentRef.flexDirection === \"column\") {\n componentRef.y = -componentRef.children[selectedIndex].y;\n }\n}\nfunction getWidthByUpCount$1(theme2, upCount = 1) {\n const screenW = theme2.layout.screenW;\n const columnCount = theme2.layout.columnCount;\n const marginX = theme2.layout.marginX;\n const gutterX = theme2.layout.gutterX;\n if (upCount < 1 || upCount > columnCount) {\n console.error(`Column expects a number between 1 & ${columnCount}. Received ${upCount}`);\n return;\n }\n const columnWidth = screenW - marginX * 2;\n const columnGapTotal = (upCount - 1) * gutterX;\n const totalColumnsWidth = columnWidth - columnGapTotal;\n return totalColumnsWidth / upCount;\n}\nfunction getItemRatioDimensions(ratioX, ratioY, upCount) {\n let w, h;\n if (ratioX && ratioY && upCount) {\n w = Math.round(getWidthByUpCount$1(theme, upCount) ?? 0);\n h = Math.round(w / ratioX * ratioY);\n } else {\n w = 0;\n h = 0;\n }\n return { w, h };\n}\nfunction getDimensions(obj = {}, fallback = {}) {\n const { w, h, ratioX, ratioY, upCount } = obj;\n const fallbackW = fallback.w || 0;\n const fallbackH = fallback.h || 0;\n let dimensions = {};\n if (w && h) {\n dimensions = {\n w,\n h\n };\n } else if (h && ratioX && ratioY) {\n dimensions = {\n w: Math.round(h * ratioX / ratioY),\n h\n };\n } else if (ratioX && ratioY && upCount) {\n dimensions = getItemRatioDimensions(ratioX, ratioY, upCount);\n } else if (h && upCount) {\n dimensions = {\n w: Math.round(getWidthByUpCount(theme, upCount)),\n h\n };\n } else if (h) {\n dimensions = {\n w: fallbackW,\n h\n };\n } else if (w) {\n dimensions = {\n w,\n h: fallbackH\n };\n } else {\n dimensions = {\n w: fallbackW,\n h: fallbackH\n };\n }\n dimensions = {\n ...dimensions,\n ratioX,\n ratioY,\n upCount\n };\n return dimensions;\n}\nconst { Artwork: { defaultTone: defaultTone$f, ...themeStyles$e } = { styles: {} } } = (_a = theme) == null ? void 0 : _a.componentConfig;\nconst container$f = {\n themeKeys: {\n fillColor: \"fillColor\",\n scale: \"imageScale\",\n pivotX: \"imageScalePivotX\",\n pivotY: \"imageScalePivotY\"\n },\n base: {\n fallbackSrc: void 0,\n fillColor: theme.color.overlay,\n gradientColor: theme.color.material,\n pivotX: 0.5,\n pivotY: 0.5,\n scale: void 0\n },\n themeStyles: themeStyles$e\n};\nconst Container$e = makeComponentStyles(container$f);\nconst styles$e = {\n tone: defaultTone$f || \"neutral\",\n Container: Container$e\n};\nconst formatArtwork = (props) => {\n let src = props.src ? props.src : props.fallbackSrc;\n if (src && props.srcCallback && typeof props.srcCallback === \"function\") {\n src = props.srcCallback({\n closestAspectRatio: void 0,\n aspectRatio: void 0,\n src,\n width: props.width,\n height: props.height\n });\n }\n return src;\n};\nconst Artwork = (props) => {\n const formattedArtwork = createMemo(() => formatArtwork(props));\n return createComponent(View, mergeProps(props, {\n get color() {\n var _a2;\n return Boolean(formattedArtwork()) ? void 0 : props.color ?? ((_a2 = styles$e.Container.tones[props.tone ?? styles$e.tone]) == null ? void 0 : _a2.fillColor) ?? styles$e.Container.base.fillColor;\n },\n get style() {\n return [...[props.style].flat(), styles$e.Container.tones[props.tone || styles$e.tone], styles$e.Container.base];\n },\n get src() {\n return formattedArtwork();\n }\n }));\n};\nconst { Badge: { defaultTone: defaultTone$e, ...themeStyles$d } = { styles: {} } } = (_b = theme) == null ? void 0 : _b.componentConfig;\nconst container$e = {\n themeKeys: {\n color: \"backgroundColor\"\n },\n base: {\n color: theme.color.fillInverseSecondary,\n borderRadius: theme.radius.sm,\n // borderRadius must be applied _before_ border to prevent the node from breaking\n border: {\n color: theme.color.strokeInverse,\n width: theme.stroke.sm\n },\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n padding: [\n theme.spacer.md - theme.stroke.sm,\n theme.spacer.xs + theme.stroke.sm,\n theme.spacer.md + theme.stroke.sm,\n theme.spacer.md + theme.stroke.sm\n ]\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutralSecondary,\n borderRadius: theme.radius.sm,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: theme.stroke.sm\n }\n },\n brand: {\n color: theme.color.fillBrand,\n borderRadius: theme.radius.sm,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: theme.stroke.sm\n }\n }\n },\n themeStyles: themeStyles$d\n};\nconst text$7 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.tag1,\n color: theme.color.textNeutral\n },\n tones: {\n inverse: {\n color: theme.color.textInverse\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$d\n};\nconst icon$2 = {\n themeKeys: {\n color: \"iconColor\"\n },\n base: {\n color: theme.color.textNeutral\n },\n tones: {\n inverse: {\n color: theme.color.textInverse\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$d\n};\nconst Container$d = makeComponentStyles(container$e);\nconst Icon$3 = makeComponentStyles(icon$2);\nconst Text$6 = makeComponentStyles(text$7);\nconst styles$d = {\n tone: defaultTone$e || \"neutral\",\n Container: Container$d,\n Icon: Icon$3,\n Text: Text$6\n};\nconst BadgeContainer = (props) => {\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2, _b2;\n return props.padding ?? ((_b2 = (_a2 = styles$d.Container) == null ? void 0 : _a2.tones[props.tone ?? styles$d.tone]) == null ? void 0 : _b2.padding) ?? styles$d.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$d.Container.tones[props.tone || styles$d.tone],\n styles$d.Container.base\n ];\n },\n \"forwardStates\": true\n }), false);\n return _el$;\n })();\n};\nconst Badge = (props) => {\n return createComponent(BadgeContainer, {\n get padding() {\n return props.padding;\n },\n get tone() {\n return props.tone;\n },\n get style() {\n return props.style;\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n return [styles$d.Text.tones[props.tone ?? styles$d.tone], styles$d.Text.base];\n },\n get tone() {\n return props.tone || styles$d.tone;\n },\n get children() {\n return props.title;\n }\n });\n }\n });\n};\nconst { Button: { defaultTone: defaultTone$d, ...themeStyles$c } = { styles: {} } } = (_c = theme) == null ? void 0 : _c.componentConfig;\nconst { Surface: { surfaceDefaultTone, ...surfaceThemeStyles$1 } = { styles: {} } } = (_d = theme) == null ? void 0 : _d.componentConfig;\nconst container$d = {\n themeKeys: {\n textAlign: \"textAlign\",\n borderRadius: \"radius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\"\n },\n base: {\n height: theme.typography.button1.lineHeight + theme.spacer.xl * 2,\n display: \"flex\",\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n color: theme.color.interactiveNeutral,\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm,\n contentColor: theme.color.fillNeutral\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse\n },\n brand: {\n color: theme.color.interactiveBrand,\n focus: {\n color: theme.color.fillNeutral\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst content = {\n themeKeys: {\n color: \"contentColor\"\n },\n base: {\n color: theme.color.textNeutral\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.fillBrand\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst text$6 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.button1\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.fillBrand\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst Container$c = makeComponentStyles(container$d);\nconst Content = makeComponentStyles(content);\nconst Text$5 = makeComponentStyles(text$6);\nconst styles$c = {\n tone: defaultTone$d || surfaceDefaultTone || \"neutral\",\n Container: Container$c,\n Content,\n Text: Text$5\n};\nconst Button = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$c.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$c.tone],\n styles$c.Container.base\n ];\n },\n forwardStates: true,\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n ...[(_a2 = props.style) == null ? void 0 : _a2.Text].flat(),\n //\n styles$c.Text.tones[props.tone ?? styles$c.tone],\n styles$c.Text.base\n ];\n },\n get children() {\n return props.children;\n }\n });\n }\n }));\n};\nconst ButtonContainer = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$c.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$c.tone],\n styles$c.Container.base\n ];\n },\n forwardStates: true\n }));\n};\nconst { Checkbox: { defaultTone: defaultTone$c, ...themeStyles$b } = { styles: {} } } = (_e = theme) == null ? void 0 : _e.componentConfig;\nconst strokeWidth = theme.stroke.sm;\nconst size = theme.spacer.xxl;\nconst container$c = {\n themeKeys: {\n color: \"color\",\n borderRadius: \"borderRadius\",\n border: \"border\",\n justifyContent: \"justifyContent\"\n },\n base: {\n width: size,\n height: size,\n display: \"flex\",\n justifyContent: \"center\",\n color: theme.color.fillNeutral,\n alignItems: \"center\",\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverse,\n width: strokeWidth\n }\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n tones: {\n brand: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutralSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillBrand\n }\n },\n neutral: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillInverseSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutral\n }\n },\n inverse: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutralSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: strokeWidth\n },\n color: theme.color.fillInverse\n }\n }\n },\n modeKeys: [\"focus\", \"disabled\", \"checked\"],\n themeStyles: themeStyles$b\n};\nconst icon$1 = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n width: theme.spacer.lg,\n height: theme.spacer.lg,\n src: theme.asset.check\n },\n tones: {\n neutral: {\n color: theme.color.fillInverse\n },\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillInverse\n }\n },\n themeStyles: themeStyles$b\n};\nconst Container$b = makeComponentStyles(container$c);\nconst Icon$2 = makeComponentStyles(icon$1);\nconst styles$b = {\n tone: defaultTone$c || \"neutral\",\n Container: Container$b,\n Icon: Icon$2\n};\nconst { Icon: { defaultTone: defaultTone$b, ...themeStyles$a } = { styles: {} } } = (_f = theme) == null ? void 0 : _f.componentConfig;\nconst container$b = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n width: 100,\n height: 100,\n color: theme.color.fillInverse\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand\n }\n },\n themeStyles: themeStyles$a\n};\nconst Container$a = makeComponentStyles(container$b);\nconst styles$a = {\n tone: defaultTone$b || \"neutral\",\n Container: Container$a\n};\nconst Icon$1 = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$a.Container.tones) == null ? void 0 : _a2[props.tone || styles$a.tone],\n styles$a.Container.base\n ];\n },\n forwardStates: true\n }));\n};\nconst check = \"/assets/images/check-icon.png\";\nconst Checkbox = (props) => {\n return createComponent(View, mergeProps({\n forwardStates: true\n }, props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$b.Container.tones[props.tone ?? styles$b.tone],\n styles$b.Container.base\n ];\n },\n get states() {\n return {\n checked: props.checked\n };\n },\n get children() {\n return memo(() => !!props.checked)() ? props.children || createComponent(Icon$1, {\n src: check,\n get style() {\n var _a2;\n return [\n ...[(_a2 = props.style) == null ? void 0 : _a2.Icon].flat(),\n //\n styles$b.Icon.tones[props.tone || styles$b.tone],\n styles$b.Icon.base\n ];\n }\n }) : \"\";\n }\n }));\n};\nconst { Column: { defaultTone: defaultTone$a, ...themeStyles$9 } = { styles: {} } } = (_g = theme) == null ? void 0 : _g.componentConfig;\nconst container$a = {\n themeKeys: {\n gap: \"itemSpacing\",\n scrollIndex: \"scrollIndex\",\n itemTransition: \"itemTransition\"\n },\n base: {\n display: \"flex\",\n flexBoundary: \"fixed\",\n flexDirection: \"column\",\n gap: theme.layout.gutterY,\n itemTransition: {\n ...theme.animation.standardEntrance,\n duration: theme.animation.duration.fast\n }\n },\n themeStyles: themeStyles$9\n};\nconst Container$9 = makeComponentStyles(container$a);\nconst styles$9 = {\n tone: defaultTone$a || \"neutral\",\n Container: Container$9\n};\nconst Column = (props) => {\n const onUp = handleNavigation(\"up\");\n const onDown = handleNavigation(\"down\");\n return createComponent(View, mergeProps(props, {\n get onUp() {\n return chainFunctions(props.onUp, onUp);\n },\n get onDown() {\n return chainFunctions(props.onDown, onDown);\n },\n get selected() {\n return props.selected || 0;\n },\n forwardFocus: onGridFocus,\n get onCreate() {\n return chainFunctions((elm) => withScrolling(props.y).call(elm, elm, elm.children[props.selected ?? 0], props.selected ?? 0, void 0), props.onCreate);\n },\n get onSelectedChanged() {\n return chainFunctions(props.onSelectedChanged, props.scroll !== \"none\" ? withScrolling(props.y) : void 0);\n },\n get style() {\n return [...[props.style].flat(), styles$9.Container.tones[props.tone ?? styles$9.tone], styles$9.Container.base];\n }\n }));\n};\nconst { Label: { defaultTone: defaultTone$9, ...themeStyles$8 } = { styles: {} } } = (_h = theme) == null ? void 0 : _h.componentConfig;\nconst container$9 = {\n themeKeys: {\n color: \"backgroundColor\",\n borderRadius: \"radius\"\n },\n base: {\n display: \"flex\",\n justifyContent: \"center\",\n color: theme.color.textNeutral,\n padding: [theme.spacer.md, theme.spacer.lg],\n // TODO themed padding values\n borderRadius: [theme.radius.md, theme.radius.md, theme.radius.md, theme.radius.none],\n height: theme.typography.caption1.lineHeight + theme.spacer.md,\n neutral: {\n backgroundColor: theme.color.fillNeutral\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.orange\n }\n }\n },\n themeStyles: themeStyles$8\n};\nconst text$5 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.caption1,\n color: theme.color.textInverse\n },\n tones: {\n inverse: {\n color: theme.color.textNeutral\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$8\n};\nconst Container$8 = makeComponentStyles(container$9);\nconst Text$4 = makeComponentStyles(text$5);\nconst styles$8 = {\n tone: defaultTone$9 || \"neutral\",\n Container: Container$8,\n Text: Text$4\n};\nconst Label = (props) => {\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2;\n return props.padding ?? ((_a2 = styles$8.Container.tones[props.tone ?? styles$8.tone]) == null ? void 0 : _a2.padding) ?? styles$8.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$8.Container.tones[props.tone || styles$8.tone],\n styles$8.Container.base\n ];\n },\n \"forwardStates\": true\n }), true);\n insert(_el$, createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$8.Text.tones[props.tone || styles$8.tone],\n styles$8.Text.base\n ];\n },\n get children() {\n return props.title;\n }\n }));\n return _el$;\n })();\n};\nconst { Rating: { styles: themeStyles$7, defaultTone: defaultTone$8 } = { styles: {}, defaultTone: \"neutral\" } } = (_i = theme) == null ? void 0 : _i.componentConfig;\nconst container$8 = {\n themeKeys: {\n justifyContent: \"justifyContent\",\n itemSpacing: \"itemSpacing\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n itemSpacing: theme.spacer.sm\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst text$4 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n color: theme.color.textNeutral,\n ...theme.typography.body2\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst icon = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n height: theme.typography.body2.lineHeight,\n width: theme.typography.body2.lineHeight,\n color: theme.color.fillNeutral,\n marginRight: theme.spacer.sm\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst Container$7 = makeComponentStyles(container$8);\nconst Icon = makeComponentStyles(icon);\nconst Text$3 = makeComponentStyles(text$4);\nconst styles$7 = {\n tone: defaultTone$8,\n Container: Container$7,\n Text: Text$3,\n Icon\n};\nconst Rating = (props) => {\n const formatTitle = (title) => {\n if (typeof title !== \"string\" && typeof title !== \"number\" || !String(title).trim().length) {\n return;\n }\n let formatted = title;\n if (!Number.isNaN(title) && Number(title) >= 0 && Number(title) <= 100) {\n formatted += \"%\";\n }\n return formatted;\n };\n const formattedTitle = createMemo(() => formatTitle(props.title));\n return createComponent(View, mergeProps(props, {\n forwardStates: true,\n get style() {\n return [...[props.style].flat(), styles$7.Container.tones[props.tone || styles$7.tone], styles$7.Container.base];\n },\n get children() {\n return [createComponent(Show, {\n get when() {\n return props.src;\n },\n get children() {\n return createComponent(Icon$1, {\n forwardStates: true,\n get src() {\n return props.src;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Icon,\n //\n styles$7.Icon.tones[props.tone || styles$7.tone],\n styles$7.Icon.base\n ];\n }\n });\n }\n }), createComponent(Show, {\n get when() {\n return formattedTitle();\n },\n get children() {\n return createComponent(Text$7, {\n get marginRight() {\n return props.marginRight;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$7.Text.tones[props.tone || styles$7.tone],\n styles$7.Text.base\n ];\n },\n get children() {\n return formattedTitle();\n }\n });\n }\n })];\n }\n }));\n};\nconst { Details: { defaultTone: defaultTone$7, ...themeStyles$6 } = { styles: {} } } = (_j = theme) == null ? void 0 : _j.componentConfig;\nconst container$7 = {\n themeKeys: {\n alignItems: \"alignItems\",\n contentSpacing: \"contentSpacing\",\n badgeContentSpacing: \"badgeContentSpacing\",\n ratingContentSpacing: \"ratingContentSpacing\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n contentSpacing: theme.spacer.lg,\n badgeContentSpacing: theme.spacer.sm,\n ratingContentSpacing: theme.spacer.lg\n },\n themeStyles: themeStyles$6\n};\nconst text$3 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.body2,\n marginRight: theme.spacer.lg,\n color: theme.color.textNeutral\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverse,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutral,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$6\n};\nconst Container$6 = makeComponentStyles(container$7);\nconst Text$2 = makeComponentStyles(text$3);\nconst styles$6 = {\n tone: defaultTone$7 || \"neutral\",\n Container: Container$6,\n Text: Text$2\n};\nconst Details = (props) => {\n return createComponent(View, mergeProps({\n get style() {\n return [...[props.style].flat(), styles$6.Container.tones[props.tone || styles$6.tone], styles$6.Container.base];\n },\n forwardStates: true,\n onBeforeLayout: (node, dimensions) => {\n var _a2;\n if ((dimensions == null ? void 0 : dimensions.height) && node.parent) {\n node.parent.height = dimensions.height;\n (_a2 = node.parent) == null ? void 0 : _a2.updateLayout();\n }\n }\n }, props, {\n get children() {\n return [createComponent(Show, {\n get when() {\n return props.title;\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$6.Text.tones[props.tone || styles$6.tone],\n styles$6.Text.base\n ];\n },\n get children() {\n return props.title;\n }\n });\n }\n }), createComponent(For, {\n get each() {\n return props.badges;\n },\n children: (badge, idx) => createComponent(Badge, mergeProps(badge, {\n get marginRight() {\n var _a2, _b2, _c2, _d2, _e2, _f2, _g2;\n return ((_a2 = props.badges) == null ? void 0 : _a2.length) && idx() === props.badges.length - 1 ? ((_c2 = (_b2 = props.style) == null ? void 0 : _b2.Container) == null ? void 0 : _c2.contentSpacing) ?? ((_d2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _d2.contentSpacing) ?? styles$6.Container.base.contentSpacing : ((_f2 = (_e2 = props.style) == null ? void 0 : _e2.Container) == null ? void 0 : _f2.badgeContentSpacing) ?? ((_g2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _g2.badgeContentSpacing) ?? styles$6.Container.base.badgeContentSpacing;\n }\n }))\n }), createComponent(For, {\n get each() {\n return props.ratings;\n },\n children: (rating, idx) => createComponent(Rating, mergeProps(rating, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$6.Text.tones[props.tone || styles$6.tone],\n styles$6.Text.base\n ];\n },\n forwardStates: true,\n get marginRight() {\n var _a2, _b2, _c2, _d2;\n return ((_a2 = props.ratings) == null ? void 0 : _a2.length) && idx() === props.ratings.length - 1 ? 0 : ((_c2 = (_b2 = props.style) == null ? void 0 : _b2.Container) == null ? void 0 : _c2.ratingContentSpacing) ?? ((_d2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _d2.ratingContentSpacing) ?? styles$6.Container.base.ratingContentSpacing;\n }\n }))\n })];\n }\n }));\n};\nconst { Metadata: { defaultTone: defaultTone$6, ...themeStyles$5 } = { styles: {} } } = (_k = theme) == null ? void 0 : _k.componentConfig;\nconst container$6 = {\n themeKeys: {\n justifyContent: \"justifyContent\",\n alpha: \"alpha\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n alpha: theme.alpha.primary\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n themeStyles: themeStyles$5\n};\nconst titleText = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n maxLines: 1,\n contain: \"width\",\n ...theme.typography.headline3,\n color: theme.color.textNeutral\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverse,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutral,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$5\n};\nconst descriptionText = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n contain: \"width\",\n maxLines: 2,\n ...theme.typography.body2,\n color: theme.color.textNeutralSecondary\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverseSecondary,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutralSecondary,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$5\n};\nconst Container$5 = makeComponentStyles(container$6);\nconst DescriptionText = makeComponentStyles(descriptionText);\nconst TitleText = makeComponentStyles(titleText);\nconst styles$5 = {\n tone: defaultTone$6 || \"neutral\",\n Container: Container$5,\n TitleText,\n DescriptionText\n};\nconst Metadata = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n return [...[props.style].flat(), styles$5.Container.tones[props.tone || styles$5.tone], styles$5.Container.base];\n },\n forwardStates: true,\n get children() {\n return [createComponent(Text$7, {\n get width() {\n return props.width;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.TitleText,\n //\n styles$5.TitleText.tones[props.tone || styles$5.tone],\n styles$5.TitleText.base\n ];\n },\n get children() {\n return props.title;\n }\n }), createComponent(Show, {\n get when() {\n return props.description;\n },\n get children() {\n return createComponent(Text$7, {\n get width() {\n return props.width;\n },\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.DescriptionText, styles$5.DescriptionText.tones[props.tone || styles$5.tone], styles$5.DescriptionText.base];\n },\n get children() {\n return props.description;\n }\n });\n }\n }), createComponent(Details, mergeProps({\n get width() {\n return props.width;\n }\n }, () => props.details, {\n get tone() {\n return props.tone ?? styles$5.tone;\n }\n }))];\n }\n }));\n};\nconst { ProgressBar: { defaultTone: defaultTone$5, ...themeStyles$4 } = { styles: {} } } = (_l = theme) == null ? void 0 : _l.componentConfig;\nconst container$5 = {\n themeKeys: {\n color: \"barColor\",\n borderRadius: \"borderRadius\"\n },\n base: {\n height: theme.spacer.md,\n color: theme.color.fillNeutralTertiary,\n borderRadius: theme.radius.xs\n },\n tones: {\n inverse: {\n color: theme.color.fillInverseTertiary\n }\n },\n themeStyles: themeStyles$4\n};\nconst progress = {\n themeKeys: {\n color: \"progressColor\",\n borderRadius: \"borderRadius\"\n },\n base: {\n borderRadius: theme.radius.xs,\n color: theme.color.fillNeutral\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand\n }\n },\n themeStyles: themeStyles$4\n};\nconst Container$4 = makeComponentStyles(container$5);\nconst ProgressBar$1 = makeComponentStyles(progress);\nconst styles$4 = {\n tone: defaultTone$5 || \"neutral\",\n Container: Container$4,\n ProgressBar: ProgressBar$1\n};\nconst ProgressBar = (props) => {\n return createComponent(View, mergeProps(props, {\n forwardStates: true,\n get style() {\n return [...[props.style].flat(), styles$4.Container.tones[props.tone || styles$4.tone], styles$4.Container.base];\n },\n get children() {\n return createComponent(View, {\n forwardStates: true,\n get animationSettings() {\n return props.animationSettings;\n },\n get width() {\n return props.width * props.progress;\n },\n get color() {\n return props.progressColor;\n },\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.ProgressBar, styles$4.ProgressBar.tones[props.tone || styles$4.tone], styles$4.ProgressBar.base];\n }\n });\n }\n }));\n};\nconst { Row: { defaultTone: defaultTone$4, ...themeStyles$3 } = { styles: {} } } = (_m = theme) == null ? void 0 : _m.componentConfig;\nconst container$4 = {\n themeKeys: {\n gap: \"itemSpacing\",\n scrollIndex: \"scrollIndex\",\n itemTransition: \"itemTransition\"\n },\n base: {\n display: \"flex\",\n flexBoundary: \"fixed\",\n flexDirection: \"row\",\n gap: theme.layout.gutterX,\n itemTransition: {\n ...theme.animation.standardEntrance,\n duration: theme.animation.duration.fast\n }\n },\n themeStyles: themeStyles$3\n};\nconst Container$3 = makeComponentStyles(container$4);\nconst styles$3 = {\n tone: defaultTone$4,\n Container: Container$3\n};\nconst Row = (props) => {\n const onLeft = handleNavigation(\"left\");\n const onRight = handleNavigation(\"right\");\n return createComponent(View, mergeProps(props, {\n get selected() {\n return props.selected || 0;\n },\n get onLeft() {\n return chainFunctions(props.onLeft, onLeft);\n },\n get onRight() {\n return chainFunctions(props.onRight, onRight);\n },\n forwardFocus: onGridFocus,\n get onCreate() {\n return chainFunctions((elm) => withScrolling(props.x).call(elm, elm, elm.children[props.selected ?? 0], props.selected ?? 0, void 0), props.onCreate);\n },\n get onSelectedChanged() {\n return chainFunctions(props.onSelectedChanged, props.scroll !== \"none\" ? withScrolling(props.x) : void 0);\n },\n get tone() {\n return props.tone ?? styles$3.tone;\n },\n get style() {\n return [...[props.style].flat(), styles$3.Container.tones[props.tone || styles$3.tone], styles$3.Container.base];\n },\n get states() {\n return props.tone ?? styles$3.tone;\n }\n }));\n};\nconst { Keyboard: { defaultTone: defaultTone$3, ...themeStyles$2 } = { styles: {} } } = (_n = theme) == null ? void 0 : _n.componentConfig;\nconst container$3 = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n screenW: \"screenW\",\n marginX: \"marginX\"\n },\n base: {\n keySpacing: theme.spacer.md,\n screenW: theme.layout.screenW,\n marginX: theme.layout.marginX,\n height: 100\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst key = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n textAlign: \"textAlign\",\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\",\n baseWidth: \"baseWidth\",\n sizes: \"sizes\",\n contentColor: \"contentColor\"\n // what is this used for\n },\n base: {\n keySpacing: theme.spacer.md,\n height: theme.spacer.md * 9,\n paddingX: theme.spacer.md,\n sizes: {\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n xxl: 5\n },\n contentColor: theme.color.fillNeutral,\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n baseWidth: theme.spacer.md * 7,\n color: theme.color.interactiveNeutral,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled,\n contentColor: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse,\n focus: {\n color: theme.color.interactiveInverseFocus,\n contentColor: theme.color.fillNeutral\n }\n },\n brand: {\n focus: {\n contentColor: theme.color.fillNeutral\n }\n }\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst text$2 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.headline2\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n focus: {\n color: theme.color.textNeutral\n }\n }\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst Container$2 = makeComponentStyles(container$3);\nconst Key$1 = makeComponentStyles(key);\nconst Text$1 = makeComponentStyles(text$2);\nconst styles$2 = {\n tone: defaultTone$3,\n Container: Container$2,\n Key: Key$1,\n // TODO why was this wrapped in {}?\n Text: Text$1\n};\nconst { Key: { defaultTone: defaultTone$2, ...themeStyles$1 } = { styles: {} } } = (_o = theme) == null ? void 0 : _o.componentConfig;\nconst container$2 = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n textAlign: \"textAlign\",\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\",\n baseWidth: \"baseWidth\",\n sizes: \"sizes\",\n contentColor: \"contentColor\"\n },\n base: {\n keySpacing: theme.spacer.md,\n height: theme.spacer.md * 9,\n paddingX: theme.spacer.md,\n contentColor: theme.color.fillNeutral,\n sizes: {\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n xxl: 5\n },\n padding: [theme.spacer.md],\n baseWidth: theme.spacer.md * 7,\n color: theme.color.interactiveNeutral,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled,\n contentColor: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse,\n focus: {\n color: theme.color.interactiveInverseFocus,\n contentColor: theme.color.fillNeutral\n }\n },\n brand: {\n focus: {\n contentColor: theme.color.fillNeutral\n }\n }\n },\n themeStyles: themeStyles$1\n};\nconst text$1 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.headline2\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n focus: {\n color: theme.color.textNeutral\n }\n }\n },\n themeStyles: themeStyles$1\n};\nconst Container$1 = makeComponentStyles(container$2);\nconst Text = makeComponentStyles(text$1);\nconst styles$1 = {\n tone: defaultTone$2 || \"neutral\",\n Container: Container$1,\n Text\n};\nconst Key = (props) => {\n const style1 = (props == null ? void 0 : props.style) ?? styles$1;\n return createComponent(ButtonContainer, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$1.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$1.tone],\n styles$1.Container.base\n ];\n },\n forwardStates: true,\n get width() {\n var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2;\n return (((_d2 = (_c2 = (_b2 = (_a2 = style1.Container) == null ? void 0 : _a2.tones) == null ? void 0 : _b2[props.tone ?? styles$1.tone]) == null ? void 0 : _c2.sizes) == null ? void 0 : _d2[props.size || \"sm\"]) ?? style1.Container.base.sizes[props.size || \"sm\"]) * (((_g2 = (_f2 = (_e2 = style1.Container) == null ? void 0 : _e2.tones) == null ? void 0 : _f2[props.tone ?? styles$1.tone]) == null ? void 0 : _g2.baseWidth) ?? style1.Container.base.baseWidth) + (((_i2 = (_h2 = style1.Container.tones) == null ? void 0 : _h2[props.tone ?? styles$1.tone]) == null ? void 0 : _i2.keySpacing) ?? style1.Container.base.keySpacing) * (((_l2 = (_k2 = (_j2 = style1.Container.tones) == null ? void 0 : _j2[props.tone ?? styles$1.tone]) == null ? void 0 : _k2.sizes) == null ? void 0 : _l2[props.size || \"sm\"]) ?? style1.Container.base.sizes[props.size || \"sm\"] - 1);\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$1.Text.tones[props.tone ?? styles$1.tone],\n styles$1.Text.base\n ];\n },\n get children() {\n return props.title ? props.title : \"\";\n }\n });\n }\n }));\n};\nconst KeyboardSimple = (props) => {\n return createComponent(Column, {\n get autofocus() {\n return props.autofocus;\n },\n scroll: \"none\",\n plinko: true,\n get itemSpacing() {\n var _a2;\n return props.keySpacing ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.keySpacing) ?? styles$2.Container.base.keySpacing;\n },\n get justifyContent() {\n return props.centerKeyboard ? \"center\" : \"flexStart\";\n },\n get width() {\n return props.width;\n },\n get children() {\n return createComponent(For$1, {\n get each() {\n return props.formats;\n },\n children: (row) => createComponent(Row, {\n get width() {\n return props.width;\n },\n get justifyContent() {\n return props.centerKeys ? \"center\" : \"flexStart\";\n },\n get itemSpacing() {\n var _a2;\n return props.keySpacing ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.keySpacing) ?? styles$2.Container.base.keySpacing;\n },\n get height() {\n var _a2;\n return (props == null ? void 0 : props.height) ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.height) ?? styles$2.Container.base.height;\n },\n get wrap() {\n return props.rowWrap;\n },\n get children() {\n return createComponent(For$1, {\n each: row,\n children: (key2) => createComponent(Key, mergeProps({\n get style() {\n var _a2;\n return (_a2 = props.style) == null ? void 0 : _a2.Key;\n }\n }, typeof key2 === \"string\" ? {} : key2, {\n onEnter: () => props.keySignal[1](typeof key2 === \"string\" ? key2 : key2.title ?? \"\"),\n get title() {\n return key2.title || key2.icon ? key2.title : key2;\n }\n }))\n });\n }\n })\n });\n }\n });\n};\nconst Keyboard = (props) => {\n return createComponent(KeyboardSimple, mergeProps(props, {\n get style() {\n return [...[props.style].flat(), styles$2.Container.tones[props.tone ?? styles$2.tone], styles$2.Container.base];\n }\n }));\n};\nconst { Input: { defaultTone: defaultTone$1, ...themeStyles } = { styles: {} } } = (_p = theme) == null ? void 0 : _p.componentConfig;\nconst container$1 = {\n themeKeys: {\n justifyContent: \"justifyContent\"\n },\n base: {\n display: \"flex\",\n justifyContent: \"flexStart\",\n flexDirection: \"column\",\n width: 100,\n height: 100,\n actualTitle: \"\"\n },\n themeStyles\n};\nconst input = {\n themeKeys: {\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\"\n },\n base: {\n width: getWidthByUpCount$1(theme, 4),\n height: 100,\n display: \"flex\",\n flexDirection: \"column\",\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n color: theme.color.interactiveNeutral,\n contentColor: theme.color.fillInverse,\n borderRadius: theme.radius.sm,\n marginX: theme.spacer.xxxl\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus\n },\n disabled: {\n color: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse\n },\n brand: {\n color: theme.color.interactiveBrand,\n focus: {\n color: theme.color.fillNeutral\n }\n }\n },\n themeStyles\n};\nconst text = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.button1\n },\n themeStyles\n};\nmakeComponentStyles(container$1);\nmakeComponentStyles(input);\nmakeComponentStyles(text);\nconst { Tile: { defaultTone, ...tileThemeStyles } = { styles: {} } } = (_q = theme) == null ? void 0 : _q.componentConfig;\nconst { Surface: { defaultSurfaceTone, ...surfaceThemeStyles } = { styles: {} } } = (_r = theme) == null ? void 0 : _r.componentConfig;\nconst container = {\n themeKeys: {\n alpha: \"alpha\",\n paddingYProgress: \"paddingYProgress\"\n },\n base: {\n width: 400,\n height: 240,\n padding: [40, 10],\n // TODO support separate paddingX and paddingY values from theme, possibly formatter\n paddingYProgress: theme.spacer.xl,\n paddingYBetweenContent: theme.spacer.md,\n borderRadius: theme.radius.md,\n alpha: theme.alpha.primary\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n themeStyles: {\n ...surfaceThemeStyles,\n ...tileThemeStyles\n }\n};\nconst insetBottom = {\n themeKeys: {},\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n mountY: 1\n },\n themeStyles: tileThemeStyles\n};\nconst standardBottom = {\n themeKeys: {},\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\"\n },\n themeStyles: tileThemeStyles\n};\nconst logoContainer = {\n themeKeys: {},\n base: {\n width: theme.spacer.lg * 5,\n height: theme.spacer.xxl + theme.spacer.md\n },\n themeStyles: tileThemeStyles\n};\nconst Container = makeComponentStyles(container);\nconst InsetBottom = makeComponentStyles(insetBottom);\nconst StandardBottom = makeComponentStyles(standardBottom);\nconst LogoContainer = makeComponentStyles(logoContainer);\nconst styles = {\n tone: defaultTone || defaultSurfaceTone || \"neutral\",\n Container,\n InsetBottom,\n StandardBottom,\n LogoContainer\n};\nconst Tile = (props) => {\n const [isFocused, setIsFocused] = createSignal(false);\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2;\n return props.padding ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.padding) ?? styles.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n \"onFocus\": () => setIsFocused(true),\n \"onBlur\": () => setIsFocused(false),\n get style() {\n return [...[props.style].flat(), styles.Container.tones[props.tone ?? styles.tone], styles.Container.base];\n }\n }), true);\n insert(_el$, createComponent(Artwork, mergeProps(() => props.artwork, {\n get states() {\n return props.states;\n },\n get style() {\n return props.style;\n },\n get tone() {\n return props.tone ?? styles.tone;\n }\n })), null);\n insert(_el$, createComponent(Show, {\n get when() {\n return props.persistentMetadata || isFocused();\n },\n get children() {\n return [createComponent(View, {\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[1]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[1]) ?? styles.Container.base.padding[1];\n },\n get children() {\n return props.topLeft;\n }\n }), createComponent(View, {\n get x() {\n var _a2, _b2, _c2;\n return ((props == null ? void 0 : props.width) ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[0]) ?? ((_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0]);\n },\n get y() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[1]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[1]) ?? styles.Container.base.padding[1];\n },\n mountX: 1,\n get children() {\n return props.topRight;\n }\n }), createComponent(View, {\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.InsetBottom, styles.InsetBottom.tones[props.tone ?? styles.tone], styles.InsetBottom.base];\n },\n get width() {\n var _a2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - styles.Container.base.padding[0] * 2;\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2, _d2, _e2, _f2;\n return (props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) - (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]) - (((_e2 = props.progressBar) == null ? void 0 : _e2.progress) > 0 ? props.paddingYProgress ?? ((_f2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _f2.paddingYProgress) ?? styles.Container.base.paddingYProgress : 0);\n },\n get children() {\n return props.inset;\n }\n }), createComponent(View, {\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.StandardBottom, styles.StandardBottom.tones[props.tone ?? styles.tone], styles.StandardBottom.base];\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2, _d2;\n return Number(props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) + (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]);\n },\n get width() {\n var _a2, _b2, _c2, _d2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]) * 2;\n },\n get children() {\n return props.bottom;\n }\n })];\n }\n }), null);\n insert(_el$, createComponent(Show, {\n get when() {\n var _a2;\n return ((_a2 = props.progressBar) == null ? void 0 : _a2.progress) ? props.progressBar.progress > 0 : 0;\n },\n get children() {\n return createComponent(ProgressBar, mergeProps(() => props.progressBar, {\n get width() {\n var _a2, _b2, _c2, _d2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[0]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[0]) ?? styles.Container.base.padding[0]) * 2;\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2;\n return (props.height ?? props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) - (props.paddingYProgress ?? ((_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.paddingYProgress) ?? styles.Container.base.paddingYProgress) - (((_c2 = props == null ? void 0 : props.progressBar) == null ? void 0 : _c2.height) || 0);\n }\n }));\n }\n }), null);\n return _el$;\n })();\n};\nconst fpsStyle = {\n color: 255,\n height: 150,\n width: 330,\n x: 1910,\n y: 10,\n mountX: 1,\n alpha: 0.8,\n zIndex: 100\n};\nconst fpsLabel = {\n x: 10,\n fontSize: 22,\n textColor: hexColor(\"#f6f6f6\")\n};\nconst fpsValue = {\n fontSize: 22,\n textColor: hexColor(\"#f6f6f6\")\n};\nconst [fps, setFps] = createSignal(0);\nconst [avgFps, setAvgFps] = createSignal(0);\nconst [minFps, setMinFps] = createSignal(99);\nconst [maxFps, setMaxFps] = createSignal(0);\nconst [isLoadedCount, setIsLoadedCount] = createSignal(0);\nconst [isLoadingCount, setIsLoadingCount] = createSignal(0);\nconst [isFailedCount, setIsFailedCount] = createSignal(0);\nlet count = 0;\nlet totalFps = 0;\nconst resetCounter = () => {\n totalFps = 0;\n count = 0;\n setMinFps(99);\n};\nconst calcFps = (fps2) => {\n if (!fps2)\n return;\n setFps(fps2);\n setMinFps((prev) => Math.min(fps2, prev));\n setMaxFps((prev) => Math.max(fps2, prev));\n totalFps += fps2;\n count++;\n setAvgFps(Math.round(totalFps / count));\n};\nconst calcPerformanceMetrics = (stage) => {\n let isLoadedCount2 = 0;\n let isLoadingCount2 = 0;\n let isFailedCount2 = 0;\n stage.txManager.textureIdCache.forEach((value, key2, map) => {\n if (value.state === \"loaded\") {\n isLoadedCount2++;\n }\n if (value.state === \"loading\") {\n isLoadingCount2++;\n }\n if (value.state === \"failed\") {\n isFailedCount2++;\n }\n });\n setIsLoadedCount(isLoadedCount2);\n setIsLoadingCount(isLoadingCount2);\n setIsFailedCount(isFailedCount2);\n};\nfunction setupFPS(root) {\n root.renderer.on(\"fpsUpdate\", (target, fpsData) => {\n const fps2 = typeof fpsData === \"number\" ? fpsData : fpsData.fps;\n if (fps2 > 5) {\n calcFps(fps2);\n calcPerformanceMetrics(target.root.stage);\n }\n });\n}\nconst FPSCounter = (props) => {\n return createComponent(View, mergeProps(props, {\n style: fpsStyle,\n get children() {\n return [createComponent(View, {\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"FPS:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 90,\n get children() {\n return fps();\n }\n })];\n }\n }), createComponent(View, {\n x: 160,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"AVG:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 100,\n get children() {\n return avgFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 20,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"MIN:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 90,\n get children() {\n return minFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 160,\n y: 20,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"MAX:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 100,\n get children() {\n return maxFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 50,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Loaded Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isLoadedCount();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 80,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Loading Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isLoadingCount();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 110,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Failed Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isFailedCount();\n }\n })];\n }\n })];\n }\n }));\n};\nexport {\n Artwork,\n Badge,\n Button,\n ButtonContainer,\n Checkbox,\n Column,\n FPSCounter,\n Icon$1 as Icon,\n Keyboard,\n Label,\n Metadata,\n ProgressBar,\n Row,\n Tile,\n styles$e as artworkStyles,\n assertTruthy,\n styles$d as badgeStyles,\n styles$c as buttonStyles,\n chainFunctions,\n styles$b as checkboxStyles,\n styles$9 as columnStyles,\n getDimensions,\n getItemRatioDimensions,\n getWidthByUpCount$1 as getWidthByUpCount,\n handleNavigation,\n styles$a as iconStyles,\n styles$2 as keyboardStyles,\n styles$8 as labelStyles,\n makeComponentStyles,\n styles$5 as metadataStyles,\n onGridFocus,\n styles$4 as progressBarStyles,\n resetCounter,\n styles$3 as rowStyles,\n scrollToIndex,\n setupFPS,\n styles as tileStyles,\n useItemLayout,\n withScrolling\n};\n//# sourceMappingURL=index.js.map\n","import { IntrinsicNodeStyleProps, hexColor } from \"@lightningjs/solid\";\nimport theme from \"theme\";\n\nexport default {\n Column: {\n flexDirection: \"column\",\n display: \"flex\",\n width: 320,\n height: 600,\n y: 360,\n gap: 20,\n zIndex: 101,\n transition: {\n x: {\n duration: 250,\n easing: \"ease-in-out\",\n },\n },\n x: 8,\n focus: {\n x: theme.layout.marginX,\n },\n } satisfies IntrinsicNodeStyleProps,\n Gradient: {\n zIndex: 99,\n color: hexColor(\"#000000\"),\n src: \"./assets/sidenav.png\",\n alpha: 0,\n width: 1200,\n height: 1080,\n focus: {\n alpha: 1,\n },\n transition: { alpha: true },\n } satisfies IntrinsicNodeStyleProps,\n NavButton: {\n zIndex: 102,\n height: 70,\n width: 100,\n borderRadius: 8,\n focus: {\n color: hexColor(\"#424242\"),\n },\n active: {\n width: 328,\n height: 70,\n },\n } satisfies IntrinsicNodeStyleProps,\n};\n","import { For, IntrinsicNodeProps, View } from \"@lightningjs/solid\";\nimport { createSpriteMap } from \"@lightningjs/solid-primitives\";\n// Icons from https://uxwing.com/\n\nconst basePath = import.meta.env.BASE_URL;\n\nconst icons = [\n { name: \"experiment\", width: 81, height: 100, x: 0, y: 0 },\n { name: \"trending\", width: 100, height: 56, x: 81, y: 0 },\n { name: \"tv\", width: 100, height: 68, x: 181, y: 0 },\n { name: \"movie\", width: 94, height: 100, x: 282, y: 0 },\n];\n\ninterface IconProps extends IntrinsicNodeProps {\n name: string;\n}\n\nfunction Icon(props: IconProps) {\n const sprite = createSpriteMap(basePath + \"assets/icons_white.png\", icons);\n\n return (\n \n );\n}\n\nexport default Icon;\nexport function PreviewIcons() {\n return (\n <>\n \n \n {(icon, i) => }\n \n \n );\n}\n","import { useMatch, useNavigate } from \"@solidjs/router\";\nimport {\n View,\n Text,\n IntrinsicNodeProps,\n ElementNode,\n} from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport styles from \"./NavDrawer.styles\";\nimport Icon from \"../Icon\";\nimport theme from \"theme\";\n\ninterface NavButtonProps extends IntrinsicNodeProps {\n icon: string;\n children: string;\n}\n\nfunction NavButton(props: NavButtonProps) {\n return (\n \n \n \n \n \n {props.children}\n \n \n );\n}\n\nexport default function NavDrawer(props) {\n let backdrop;\n const navigate = useNavigate();\n function onFocus(this: ElementNode) {\n backdrop.states.add(\"focus\");\n this.children.forEach((c) => c.states!.add(\"active\"));\n this.children.selected!.setFocus();\n }\n\n function onBlur(this: ElementNode) {\n backdrop.states.remove(\"focus\");\n this.selected = 0;\n this.children.forEach((c) => c.states!.remove(\"active\"));\n }\n\n function handleNavigate(page: string) {\n const isOnPage = useMatch(() => page);\n if (isOnPage()) {\n return props.focusPage();\n }\n\n navigate(page);\n }\n\n return (\n <>\n \n \n Built With:\n \n \n \n \n handleNavigate(\"/browse/all\")}\n icon=\"trending\"\n >\n Trending\n \n handleNavigate(\"/browse/movie\")}>\n Movies\n \n handleNavigate(\"/browse/tv\")}>\n TV\n \n handleNavigate(\"/examples\")}\n >\n Examples\n \n \n \n \n );\n}\n","import { useLocation, useNavigate } from \"@solidjs/router\";\nimport { View, activeElement, renderer } from \"@lightningjs/solid\";\nimport { useFocusManager, useAnnouncer } from \"@lightningjs/solid-primitives\";\nimport Background from \"../components/Background\";\nimport NavDrawer from \"../components/NavDrawer/NavDrawer\";\nimport { FPSCounter, setupFPS } from \"@lightningjs/solid-ui\";\nimport { createEffect, createSignal } from \"solid-js\";\n\ndeclare module \"@lightningjs/solid-primitives\" {\n // Augment the FocusManager KeyMap interface with our custom keys\n interface KeyMap {\n Announcer: (string | number)[];\n Menu: (string | number)[];\n Escape: (string | number)[];\n Backspace: (string | number)[];\n }\n}\n\ndeclare module \"@lightningjs/solid\" {\n interface ElementNode {\n heroContent?: boolean;\n backdrop?: any;\n entityInfo?: any;\n href?: string;\n }\n}\n\nconst App = (props) => {\n useFocusManager({\n Announcer: [\"a\"],\n Menu: [\"m\"],\n Escape: [\"Escape\", 27],\n Backspace: [\"Backspace\", 8],\n Left: [\"ArrowLeft\", 37],\n Right: [\"ArrowRight\", 39],\n Up: [\"ArrowUp\", 38],\n Down: [\"ArrowDown\", 40],\n Enter: [\"Enter\", 13],\n });\n const announcer = useAnnouncer();\n announcer.enabled = false;\n const navigate = useNavigate();\n\n let navDrawer, lastFocused;\n\n setupFPS({ renderer });\n\n function focusNavDrawer() {\n if (navDrawer.states.has(\"focus\")) {\n return false;\n }\n lastFocused = activeElement();\n return navDrawer.setFocus();\n }\n\n const [showWidgets, setShowWidgets] = createSignal(true);\n const location = useLocation();\n const showOnPaths = [\"/browse\", \"/entity\"];\n createEffect(() => {\n const currentPath = location.pathname;\n let matchesPartial = showOnPaths.some((path) =>\n currentPath.startsWith(path)\n );\n if (currentPath === \"/\") {\n matchesPartial = true;\n }\n setShowWidgets(matchesPartial);\n });\n\n return (\n (announcer.enabled = !announcer.enabled)}\n onLast={() => history.back()}\n onMenu={() => navigate(\"/\")}\n style={{ width: 1920, height: 1080 }}\n onBackspace={focusNavDrawer}\n onLeft={focusNavDrawer}\n onRight={() => navDrawer.states.has(\"focus\") && lastFocused.setFocus()}\n >\n \n \n\n {props.children}\n lastFocused.setFocus()}\n showWidgets={showWidgets()}\n />\n \n );\n};\n\nexport default App;\n","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n hexColor,\n} from \"@lightningjs/solid\";\nimport theme from \"theme\";\n\n// Augment existing intrinsic style prop interfaces to include our own\n// app-specific states\ndeclare module \"@lightningjs/solid\" {\n interface IntrinsicNodeStyleProps {\n // TODO: Refactor states to use a $ prefix\n active?: IntrinsicNodeStyleProps;\n disabled?: IntrinsicNodeStyleProps;\n }\n\n interface IntrinsicTextNodeStyleProps {\n // TODO: Refactor states to use a $ prefix\n active?: IntrinsicTextNodeStyleProps;\n disabled?: IntrinsicTextNodeStyleProps;\n }\n}\n\nexport default {\n Page: {\n width: 1920,\n height: 1080,\n },\n headlineText: {\n width: 1200,\n height: 240,\n x: 360,\n // lineHeight: 170, // TODO: Add back when lineHeight is supported\n y: 455,\n contain: \"both\",\n fontSize: 66,\n textAlign: \"center\",\n } satisfies IntrinsicTextNodeStyleProps,\n headlineSubText: {\n width: 960,\n height: 170,\n // lineHeight: 170, // TODO: Add back when lineHeight is supported\n x: 530,\n y: 655,\n contain: \"both\",\n fontSize: 48,\n textAlign: \"center\",\n } satisfies IntrinsicTextNodeStyleProps,\n itemsContainer: {\n width: theme.layout.screenW,\n height: 600,\n y: 560,\n x: 0,\n zIndex: 2,\n },\n Thumbnail: {\n borderRadius: 16,\n width: 185,\n height: 278,\n scale: 1,\n zIndex: 2,\n transition: { scale: { duration: 250, easing: \"ease-in-out\" } },\n border: { width: 0, color: 0x00000000 },\n focus: { scale: 1.1, border: { color: 0xffffff66, width: 8 } },\n },\n FocusRing: {\n borderRadius: 16,\n width: 194,\n height: 286,\n y: -5,\n x: -5,\n zIndex: -1,\n },\n FPS: {\n color: 0x000000ff,\n height: 42,\n width: 140,\n x: 20,\n y: 20,\n zIndex: 100,\n } as const,\n FPSLabel: {\n x: 10,\n y: 0,\n fontSize: 36,\n textColor: hexColor(\"#ffffff\"),\n },\n FPSValue: {\n x: 90,\n y: 0,\n fontSize: 36,\n textColor: hexColor(\"#ffffff\"),\n },\n showHeadline: { x: 70, y: 20 },\n headlineBlur: {\n width: 1920,\n height: 150,\n x: 0,\n y: 0,\n zIndex: 14,\n alpha: 0.9,\n color: hexColor(\"#000000\"),\n },\n RowTitle: {\n height: 60,\n width: 300,\n marginBottom: -40,\n fontSize: 36,\n color: hexColor(\"#f0f0f0\"),\n zIndex: 2,\n } satisfies IntrinsicTextNodeStyleProps,\n Row: {\n display: \"flex\",\n justifyContent: \"spaceBetween\",\n height: 300,\n },\n Column: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n gap: 64,\n width: theme.layout.screenW - 2 * theme.layout.marginX,\n x: theme.layout.marginX + theme.layout.gutterX,\n y: 48,\n transition: { y: { duration: 250, easing: \"ease-in-out\" } },\n zIndex: 2,\n },\n Rect: {\n width: 250,\n height: 100,\n y: 10,\n x: 300,\n color: hexColor(\"#0000ff\"),\n },\n peopleBio: {\n ...theme.typography.body1,\n fontFamily: \"Ubuntu\",\n fontWeight: \"normal\",\n contain: \"both\",\n width: 780,\n height: 340,\n } satisfies IntrinsicTextNodeStyleProps,\n} as const;\n\nconst Button = {\n width: 120,\n height: 40,\n color: hexColor(\"#000000\"),\n borderRadius: 8,\n border: { width: 2, color: hexColor(\"#3333ff\") },\n scale: 1,\n focus: {\n scale: 1.1,\n border: { width: 5, color: hexColor(\"#333333\") },\n },\n transition: { scale: true, color: true },\n} satisfies IntrinsicNodeStyleProps;\n\nconst TopBar = {\n color: hexColor(\"#00A699\"),\n height: 8,\n y: 2,\n x: -4,\n width: Button.width + 8,\n} satisfies IntrinsicNodeStyleProps;\n\nconst ButtonText = {\n fontSize: 12,\n y: 12,\n // lineHeight: Button.height, // TODO: Add back when lineHeight is supported\n contain: \"width\",\n textAlign: \"center\",\n color: hexColor(\"#F6F6F9\"),\n height: Button.height,\n width: Button.width,\n} satisfies IntrinsicTextNodeStyleProps;\n\nexport const buttonStyles = {\n container: Button,\n topBar: TopBar,\n text: ButtonText,\n} satisfies Record;\n\nexport const MaterialButton = {\n width: 386,\n height: 136,\n color: hexColor(\"#715cab\"),\n focus: {\n color: hexColor(\"#5a39a2\"),\n },\n disabled: {\n color: hexColor(\"#291d43\"),\n },\n} satisfies IntrinsicNodeStyleProps;\n\nexport const MaterialButtonText = {\n fontSize: 32,\n contain: \"width\",\n textAlign: \"center\",\n mountY: -0.35,\n color: hexColor(\"#FFFFFF\"),\n height: MaterialButton.height,\n width: MaterialButton.width,\n // lineHeight: MaterialButton.height, // TODO: Add back when lineHeight is supported\n focus: {\n fontSize: 40,\n },\n disabled: {\n color: hexColor(\"#909090\"),\n },\n} satisfies IntrinsicTextNodeStyleProps;\n","import { IntrinsicNodeProps, View, Text } from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { For, splitProps } from \"solid-js\";\nimport styles, { buttonStyles } from \"../styles\";\nimport { type Tile } from \"../api/formatters/ItemFormatter\";\n\nexport function Thumbnail(props: IntrinsicNodeProps) {\n return ;\n}\n\nexport function FocusRing(props: IntrinsicNodeProps) {\n return ;\n}\n\nexport interface TileRowProps extends IntrinsicNodeProps {\n items: Tile[];\n}\n\nexport function TileRow(props: TileRowProps) {\n const [local, others] = splitProps(props, [\"items\"]);\n\n return (\n \n {(item) => }\n \n );\n}\n\nexport function Button(props) {\n return (\n \n {props.children}\n \n );\n}\n","export default 'eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIyZDE4YjEwMTA0YjdiZTlkNjFiMWYwYjVlMGEwNzM2OCIsInN1YiI6IjYwZTVjMTdlNGNhNjc2MDA3NTA4Njc3MSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.D_nqH9kd-bhhWzeVsTDPYhHnsUaNAuyAa6YATmKHqsA';\n","import API_KEY_V4 from \"./key\";\nconst API_BASE = \"https://api.themoviedb.org/3\";\nlet tmdbConfig;\nlet baseImageUrl;\nconst basePosterSize = \"w185\";\n\nconst defaultFetchParams = {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + API_KEY_V4,\n },\n};\n\nexport function getImageUrl(path: string, posterSize: string = basePosterSize) {\n return baseImageUrl + posterSize + path;\n}\n\nfunction get(path: string, params: RequestInit = {}) {\n if (tmdbConfig) {\n return _get(path, params);\n } else {\n return loadConfig().then(() => _get(path, params));\n }\n}\n\nfunction _get(path: string, params: RequestInit = {}) {\n return fetch(API_BASE + path, {\n ...defaultFetchParams,\n ...params,\n }).then((r) => r.json());\n}\n\nfunction loadConfig() {\n return _get(\"/configuration\").then((data) => {\n tmdbConfig = data;\n baseImageUrl = data.images?.secure_base_url;\n return data;\n });\n}\n\nexport default {\n get,\n loadConfig,\n};\n","import { getImageUrl } from \"../index\";\n\nfunction truncateString(str: string, maxLength: number): string {\n if (str.length > maxLength) {\n return str.substring(0, maxLength - 3) + \"...\";\n }\n return str;\n}\n\nexport function chunkArray(array: string[], size = 7) {\n let result: string[][] = [];\n for (let i = 0, j = array.length; i < j; i += size) {\n result.push(array.slice(i, i + size));\n }\n return result;\n}\n\nexport interface Tile {\n src: string;\n tileSrc: string;\n backdrop: string;\n href: string;\n shortTitle: string;\n title: string;\n data: unknown;\n entityInfo: {\n type: string;\n id: string;\n };\n heroContent: {\n title: string;\n description: string;\n };\n}\n\n// TODO: Remove `any` type\nexport function convertItemsToTiles(items: any[] = []): Tile[] {\n return items.map((item) => ({\n src: getImageUrl(item.poster_path || item.profile_path),\n tileSrc: getImageUrl(item.backdrop_path || item.profile_path, \"w300\"),\n backdrop: getImageUrl(item.backdrop_path, \"w1280\"),\n href: `/entity/${item.media_type || \"people\"}/${item.id}`,\n shortTitle: truncateString(item.title || item.name, 30),\n title: item.title || item.name,\n data: item,\n entityInfo: {\n type: item.media_type || \"people\",\n id: item.id,\n },\n heroContent: {\n title: item.title || item.name,\n description: item.overview,\n },\n }));\n}\n","import api from \"..\";\nimport { convertItemsToTiles, chunkArray } from \"../formatters/ItemFormatter\";\n\nlet cache = new Map();\nconst leftoverTiles = new Map();\n\nexport default function (filter: string) {\n return (pageIndex: number): Promise => {\n const url = `/trending/${filter}/week?page=${pageIndex}`;\n if (cache.has(url)) {\n return cache.get(url);\n }\n\n let result = api.get(url).then((trending) => {\n let results = trending.results.filter((r) => !r.adult);\n let tiles = (\n leftoverTiles.has(filter) ? leftoverTiles.get(filter) : []\n ).concat(convertItemsToTiles(results));\n let chunks = chunkArray(tiles);\n if (chunks[chunks.length - 1].length < 7) {\n leftoverTiles.set(filter, chunks.pop());\n } else {\n leftoverTiles.delete(filter);\n }\n return chunks;\n });\n\n cache.set(url, result);\n return result;\n };\n}\n","import { createSignal, createComputed, batch, createResource } from \"solid-js\";\n\nexport function createInfiniteScroll(fetcher: (page: number) => Promise) {\n const [pages, setPages] = createSignal([]);\n const [page, setPage] = createSignal(1);\n const [end, setEnd] = createSignal(false);\n\n const [contents] = createResource(page, fetcher);\n\n createComputed(() => {\n const content = contents();\n if (!content) return;\n batch(() => {\n if (content.length === 0) setEnd(true);\n setPages((p) => [...p, ...content]);\n });\n });\n\n return {\n pages,\n page,\n setPage,\n setPages,\n end,\n setEnd,\n };\n}\n","import { View, Text } from \"@lightningjs/solid\";\nimport { For, Show } from \"solid-js\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nimport theme from \"theme\";\nwithPadding;\n\nconst blockWidth = 900;\n\nconst ContentBlockStyle = {\n display: \"flex\",\n flexDirection: \"column\",\n x: 50,\n y: 100,\n width: blockWidth,\n height: 220,\n gap: 16,\n};\n\nconst HeadlineStyles = {\n ...theme.typography.display2,\n fontFamily: \"Ubuntu\",\n fontWeight: 700,\n maxLines: 1,\n width: blockWidth,\n contain: \"width\",\n};\nconst Headline = (props) => ;\n\nconst DescriptionStyles = {\n ...theme.typography.body1,\n fontFamily: \"Ubuntu\",\n fontWeight: 400,\n lineHeight: 32,\n width: blockWidth,\n maxLines: 3,\n contain: \"width\",\n};\n\nconst BadgeStyle = {\n fontSize: 16,\n lineHeight: 20,\n};\n\nconst Description = (props) => (\n \n {props.children}\n \n);\n\nconst Badge = (props) => {\n return (\n \n {props.children}\n \n );\n};\n\nconst MetaTextStyle = {\n ...theme.typography.body2,\n fontFamily: \"Ubuntu\",\n fontWeight: 400,\n};\n\nconst Metadata = (props) => (\n \n \n \n \n \n {props.voteCount} reviews\n {props.metaText}\n {(item) => {item}}\n \n);\n\nconst ContentBlock = (props) => (\n \n {props.title}\n {props.description}\n \n \n \n \n);\n\nexport default ContentBlock;\n","import api, { getImageUrl } from \"..\";\nimport { convertItemsToTiles } from \"../formatters/ItemFormatter\";\n\nexport function minutesToHMM(minutes) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return (\n hours + \"h \" + (remainingMinutes < 10 ? \"0\" : \"\") + remainingMinutes + \"min\"\n );\n}\n\nfunction formatDate(dateString) {\n const parts = dateString.split(\"-\");\n return parts[1] + \"/\" + parts[2] + \"/\" + parts[0];\n}\n\nfunction justYear(dateString) {\n const parts = dateString.split(\"-\");\n return parts[0];\n}\n\nexport function getRecommendations({ type, id }) {\n return api.get(`/${type}/${id}/recommendations`).then(({ results }) => {\n if (results.length) {\n return convertItemsToTiles(results.slice(0, 7));\n }\n return api\n .get(`/trending/${type}/week?page=1`)\n .then(({ results }) => convertItemsToTiles(results.slice(0, 7)));\n });\n}\n\nexport function getCredits({ type, id }) {\n return api\n .get(`/${type}/${id}/credits`)\n .then(({ cast }) => convertItemsToTiles(cast.slice(0, 7)));\n}\n\nexport function getInfo({ type, id }) {\n let rt =\n type === \"movie\"\n ? {\n rtCrit: 86,\n rtFan: 92,\n }\n : {};\n\n return api.get(`/${type}/${id}`).then((data) => ({\n backgroundImage: getImageUrl(data.backdrop_path, \"w1280\"),\n heroContent: {\n title: data.title || data.name,\n description: data.overview,\n badges: [\"HD\", \"CC\"],\n voteAverage: data.vote_average,\n voteCount: data.vote_count,\n metaText:\n type === \"movie\"\n ? minutesToHMM(data.runtime) + \" \" + formatDate(data.release_date)\n : `${justYear(data.first_air_date)} - ${justYear(data.last_air_date)}`,\n reviews: rt,\n },\n ...data,\n }));\n}\n","import {\n createEffect,\n createMemo,\n on,\n createSignal,\n Show,\n createResource,\n createSelector,\n For,\n} from \"solid-js\";\nimport { ElementNode, View, activeElement } from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport { useNavigate, useParams } from \"@solidjs/router\";\nimport { TileRow } from \"../components\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\nimport browseProvider from \"../api/providers/browse\";\nimport { createInfiniteScroll } from \"../components/pagination\";\nimport ContentBlock from \"../components/ContentBlock\";\nimport * as entityProvider from \"../api/providers/entity\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\nimport { debounce } from \"@solid-primitives/scheduled\";\n\nconst Browse = () => {\n const params = useParams();\n const [columnY, setcolumnY] = createSignal(0);\n const [entityInfo, setEntityInfo] = createSignal();\n const [entityData] = createResource(entityInfo, entityProvider.getInfo);\n const [heroContent, setHeroContent] = createSignal({});\n const navigate = useNavigate();\n const isFirst = createSelector(() => {\n return 0;\n });\n\n const provider = createMemo(() => {\n return createInfiniteScroll(browseProvider(params.filter || \"all\"));\n });\n\n const delayedBackgrounds = debounce(\n (img: string) => setGlobalBackground(img),\n 400\n );\n const delayedHero = debounce((content: {}) => setHeroContent(content), 200);\n\n createEffect(\n on(\n activeElement,\n (elm) => {\n if (elm.backdrop) {\n delayedBackgrounds(elm.backdrop);\n }\n\n if (elm.heroContent) {\n delayedHero(elm.heroContent);\n }\n },\n { defer: true }\n )\n );\n\n function onRowFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setcolumnY((this.y || 0) * -1 + 24);\n let numPages = provider().pages().length;\n\n if (\n numPages === 0 ||\n (this.parent.selected && this.parent.selected >= numPages - 2)\n ) {\n provider().setPage((p) => p + 1);\n }\n }\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n return true;\n }\n\n return (\n \n \n \n \n \n {(items, i) => (\n \n )}\n \n \n \n \n );\n};\n\nexport default Browse;\n","import { createSignal, createSelector, For } from \"solid-js\";\nimport { ElementNode, View, Text, activeElement } from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { useNavigate } from \"@solidjs/router\";\nimport styles from \"../styles\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\n\nconst Portal = () => {\n const navigate = useNavigate();\n const isFirst = createSelector(() => {\n return 0;\n });\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.id);\n navigate(\"/\" + entity.id);\n }\n\n const demos = [\n {\n title: \"Flex Row\",\n id: \"flex\",\n description: \"Flex Row Implementation\",\n },\n {\n title: \"Flex Column\",\n id: \"flexcolumn\",\n description: \"Flex Column Implementation\",\n },\n {\n title: \"Flex Row Vertical Align\",\n id: \"flexsize\",\n description: \"Flex Row Vertical Align Implementation\",\n },\n {\n title: \"Flex Column Vertical Align\",\n id: \"flexcolumnsize\",\n description: \"Flex Column Vertical Align Implementation\",\n },\n {\n title: \"Buttons\",\n id: \"buttons\",\n description: \"Demo a few buttons\",\n },\n {\n title: \"Text\",\n id: \"text\",\n description: \"Text layout with flexbox\",\n },\n {\n title: \"Create Elements\",\n id: \"create\",\n description: \"Testing Show + children + inserting text\",\n },\n {\n title: \"Viewport\",\n id: \"viewport\",\n description: \"Events going in and out of viewport\",\n },\n ];\n\n function DemoTile(props) {\n const Container = {\n width: 370,\n height: 320,\n borderRadius: 6,\n scale: 1,\n color: 0x182b44ff,\n transition: { color: true, scale: true },\n focus: {\n scale: 1.1,\n color: 0xffffffff,\n },\n };\n const [color, setColor] = createSignal(0xffffffff);\n\n return (\n setColor(0x000000ff)}\n onBlur={() => setColor(0xffffffff)}\n style={Container}\n >\n \n \n {props.index}\n \n \n {props.title}\n \n \n {props.description}\n \n \n \n );\n }\n\n const [rowX, setRowX] = createSignal(140);\n\n function moveRow(row) {\n setRowX(row.selected * -400 + 140);\n }\n\n return (\n \n \n \n \n Examples\n \n \n \n \n \n {(demo, i) => (\n \n )}\n \n \n \n );\n};\n\nexport default Portal;\n","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst TextPage = () => {\n const OverviewContainer = {\n width: 900,\n height: 500,\n y: 350,\n x: 150,\n gap: 25,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const SublineContainer = {\n width: 900,\n height: 36,\n gap: 6,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const Title = {\n fontSize: 42,\n };\n\n const Overview = {\n width: OverviewContainer.width,\n fontSize: 26,\n contain: \"width\",\n } satisfies IntrinsicTextNodeStyleProps;\n\n const Subline = {\n fontSize: 26,\n };\n\n onMount(() => {\n setGlobalBackground(\"#000000\");\n });\n\n return (\n \n Title of the Page\n \n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel\n tempor tellus. Sed eu leo purus. Vestibulum sollicitudin eget tellus a\n varius. Phasellus est turpis, volutpat sed blandit sit amet, rutrum sit\n amet mauris. In dignissim elit orci, a sollicitudin ipsum faucibus et.\n Quisque vel quam rutrum, faucibus augue sed, scelerisque nunc.\n \n \n Subline Text\n \n More Text\n \n \n );\n};\n\nexport default TextPage;\n","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Show, children, createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst CreatePage = () => {\n const OverviewContainer = {\n width: 900,\n height: 500,\n y: 50,\n x: 150,\n gap: 25,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const SublineContainer = {\n width: 900,\n height: 36,\n gap: 6,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const Title = {\n fontSize: 42,\n };\n\n const Subline = {\n fontSize: 26,\n };\n\n let myBox, childRef;\n onMount(() => {\n setGlobalBackground(\"#000000\");\n myBox.animate({ x: 100 }, { duration: 2000 }).start();\n });\n\n const [insertTest, setInsertTest] = createSignal();\n const [emptyTest, setEmptyTest] = createSignal();\n\n setTimeout(() => {\n setInsertTest(\"- Inserted -\");\n childRef\n .getChildById(\"child1\")\n //.searchChildrenById('subChild') - more expensive version of getChildById\n ?.animate({ x: 600 }, { duration: 2000 })\n .start();\n }, 2000);\n\n const styleChild = {\n width: 400,\n height: 300,\n // Solid blue\n color: hexColor(\"#0000ff\"),\n } as const;\n\n const someOtherStyle = {\n // pretty red\n color: hexColor(\"#f54242\"),\n focus: {\n // pretty blue\n color: hexColor(\"#4287f5\"),\n },\n };\n\n function ChildTest(props) {\n // This causes a parent not rendered error since we're rendering it twice in the template\n const resolved = children(() => props.children);\n return (\n \n \n {resolved()}\n \n {props.title}\n \n \n {resolved()}\n \n \n );\n }\n\n const borderStyles = {\n borderLeft: {\n width: 8,\n color: 0x05b2b626,\n },\n borderTop: {\n width: 8,\n color: 0x25a2bd26,\n },\n borderRight: {\n width: 8,\n color: 0x05b2b626,\n },\n borderBottom: {\n width: 8,\n color: 0xc5b23626,\n },\n } as const;\n\n const childTestPassedStyles = {\n // grey color\n color: hexColor(\"#cccccc\"),\n focus: {\n // black\n color: hexColor(\"#000000\"),\n },\n };\n\n const childTestPassedStyles2 = {\n // white color\n color: hexColor(\"#ffffff\"),\n focus: {\n // white something...\n color: hexColor(\"#f6f6cc\"),\n },\n };\n\n function hasFocus(elm) {\n // This doesnt work yet - need to make states reactive\n return elm.states.has(\"focus\");\n }\n\n return (\n \n Title of the Page\n \n {emptyTest()}\n Sub {insertTest()} Text\n \n \n \n More Text\n \n \n Child Test\n \n \n \n );\n};\n\nexport default CreatePage;\n","import { Text, View, hexColor } from \"@lightningjs/solid\";\nimport { onMount, onCleanup, createSignal } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nexport default () => {\n let ball, invervalTimer;\n\n const [ballStatus, setBallStatus] = createSignal([]);\n\n const styleBall = {\n width: 100,\n height: 100,\n x: -400,\n y: -400,\n rotation: 0,\n borderRadius: 50,\n color: hexColor(\"#4287f5\"),\n transition: {\n x: { duration: 1250, easing: \"linear\" },\n y: { duration: 1250, easing: \"linear\" },\n rotation: { duration: 1400, easing: \"ease-in-out\" },\n },\n } as const;\n\n const Title = {\n fontSize: 32,\n x: 960,\n y: 540,\n mount: 0.5,\n lineheight: 52,\n };\n\n const randomIntBetween = (from, to) =>\n Math.floor(Math.random() * (to - from + 1) + from);\n\n onMount(() => {\n setGlobalBackground(\"#000000\");\n\n ball.x = (1920 - 100) / 2;\n ball.y = (1080 - 100) / 2;\n invervalTimer = setInterval(() => {\n ball.rotation = randomIntBetween(-90, 90);\n ball.x = randomIntBetween(-300, 2220);\n ball.y = randomIntBetween(-300, 1380);\n }, 2500);\n });\n\n function logEvent(name, elm) {\n setBallStatus((prev) => {\n return [...prev, name].slice(-4);\n });\n console.log(name);\n }\n\n onCleanup(() => {\n clearInterval(invervalTimer);\n });\n\n return (\n \n {ballStatus().join(\"\\n\")}\n logEvent(\"inBounds\", elm)],\n [\"outOfBounds\", (elm) => logEvent(\"outOfBounds\", elm)],\n [\"inViewport\", (elm) => logEvent(\"inViewport\", elm)],\n [\"outOfViewport\", (elm) => logEvent(\"outOfViewport\", elm)],\n ]}\n />\n \n );\n};\n","import {\n View,\n Text,\n ElementNode,\n IntrinsicNodeProps,\n hexColor,\n IntrinsicNodeStyleProps,\n} from \"@lightningjs/solid\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { buttonStyles } from \"../styles\";\nwithPadding;\n\nconst ButtonsPage = () => {\n function onEnter(this: ElementNode, event, elm) {\n this.states.toggle(\"disabled\");\n }\n\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1500,\n height: 300,\n color: hexColor(\"00000000\"),\n gap: 26,\n y: 400,\n } satisfies IntrinsicNodeStyleProps;\n\n function Button(props) {\n return (\n \n {props.children}\n \n );\n }\n\n const Badge = (props: IntrinsicNodeProps) => {\n return (\n \n \n {props.children as string}\n \n \n );\n };\n return (\n <>\n \n HD\n PG13\n NC17\n I like bananas\n DOLBY\n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default ButtonsPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1600,\n height: 110,\n color: hexColor(\"#4dabf5\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n marginTop: 25,\n marginBottom: -20,\n skipFocus: true,\n };\n\n function Block(props) {\n const styles = {\n width: 200,\n height: 100,\n y: 5,\n color: 0x1769aaff,\n };\n\n return ;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Flex Start\n \n \n \n \n \n \n \n Flex Start - Margin Left\n \n \n \n \n \n \n \n Flex End\n \n \n \n \n \n \n \n\n Flex End - Margin Right\n \n \n \n \n \n \n \n\n Center - No Margin Support\n \n \n \n \n \n \n \n\n Space Between - No Margin Support\n \n \n \n \n \n \n \n\n Space Evenly - No Margin Support\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexSizePage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1600,\n height: 110,\n color: hexColor(\"#4dabf5\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n marginTop: 25,\n marginBottom: -20,\n skipFocus: true,\n };\n\n function Block(props) {\n const styles = {\n width: 200,\n height: 100,\n y: 5,\n color: 0x1769aaff,\n };\n\n return ;\n }\n\n function randSize() {\n // size 21 to 100\n return Math.floor(Math.random() * 91) + 10;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Flex Start - AlignItems: center\n \n \n \n \n \n \n \n \n Flex Start - Margin Left - AlignItems: flexStart\n \n \n \n \n \n \n \n \n Flex End - AlignItems: flexEnd\n \n \n \n \n \n \n \n\n Flex End - Margin Right\n \n \n \n \n \n \n \n\n Center - No Margin Support\n \n \n \n \n \n \n \n\n Space Between - No Margin Support\n \n \n \n \n \n \n \n\n Space Evenly - No Margin Support\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexSizePage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexColumnPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n width: 1920,\n y: 100,\n height: 880,\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const ColumnStyles = {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"#4dabf5\"),\n height: 850,\n width: 80,\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n y: 20,\n x: 150,\n };\n\n function Block(props) {\n const styles = {\n width: randSize(),\n height: 80,\n x: 5,\n color: hexColor(\"#1769aa\"),\n };\n\n return ;\n }\n\n function randSize() {\n // size 10 to 70\n return Math.floor(Math.random() * 61) + 10;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Start, MarginTop, End, MarginBottom, Center, Between, Evenly\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexColumnPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexColumnPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n width: 1920,\n y: 100,\n height: 880,\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const ColumnStyles = {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"#4dabf5\"),\n height: 850,\n width: 60,\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n y: 20,\n x: 150,\n };\n\n function Block(props) {\n const styles = {\n width: 50,\n height: 80,\n x: 5,\n color: hexColor(\"#1769aa\"),\n };\n\n return ;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Start, MarginTop, End, MarginBottom, Center, Between, Evenly\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexColumnPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\n\nimport { MaterialButtonText } from \"../styles\";\n\nconst MaterialButtonsPage = () => {\n function onEnter(this: ElementNode, event, elm) {\n this.states.toggle(\"disabled\");\n }\n\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1500,\n height: 300,\n color: hexColor(\"00000000\"),\n gap: 26,\n y: 400,\n x: 100,\n } satisfies IntrinsicNodeStyleProps;\n\n const MaterialButton = {\n width: 386,\n height: 136,\n color: \"0x715cabff\",\n focus: {\n color: \"0x5a39a2ff\",\n },\n disabled: {\n color: \"0x291d43ff\",\n },\n };\n const RoundedRectangle = [\"RoundedRectangle\", { radius: 65 }];\n function Button(props) {\n return (\n \n {props.children}\n \n );\n }\n\n return (\n \n \n \n \n \n );\n};\n\nexport default MaterialButtonsPage;\n","// Documentation from Shaka player:\n// https://shaka-player-demo.appspot.com/docs/api/tutorial-basic-usage.html\n\nconst manifestUri =\n \"https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd\";\n\nfunction initApp() {\n // Install built-in polyfills to patch browser incompatibilities.\n shaka.polyfill.installAll();\n\n // Check to see if the browser supports the basic APIs Shaka needs.\n if (shaka.Player.isBrowserSupported()) {\n // Everything looks good!\n initPlayer();\n } else {\n // This browser does not have the minimum set of APIs we need.\n console.error(\"Browser not supported!\");\n }\n}\n\nasync function initPlayer() {\n // Create a Player instance.\n const video = document.getElementById(\"video\");\n const player = new shaka.Player();\n await player.attach(video);\n\n // Attach player to the window to make it easy to access in the JS console.\n window.player = player;\n\n // Listen for error events.\n player.addEventListener(\"error\", onErrorEvent);\n\n // Try to load a manifest.\n // This is an asynchronous process.\n try {\n await player.load(manifestUri);\n // This runs if the asynchronous load is successful.\n console.log(\"The video has now been loaded!\");\n } catch (e) {\n // onError is executed if the asynchronous load fails.\n onError(e);\n }\n}\n\nfunction onErrorEvent(event) {\n // Extract the shaka.util.Error object from the event.\n onError(event.detail);\n}\n\nfunction onError(error) {\n // Log the error.\n console.error(\"Error code\", error.code, \"object\", error);\n}\n\nexport function playVideo() {\n const video = document.getElementById(\"video\");\n video.hidden = false;\n // Needs delay from hidden to play in Chrome\n setTimeout(() => video.play(), 50);\n video.focus();\n return video;\n}\n\nexport function closeVideo() {\n const video = document.getElementById(\"video\");\n video.hidden = true;\n video.pause();\n return video;\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", initApp);\n","import {\n ElementNode,\n Text,\n View,\n Show,\n hexColor,\n setActiveElement,\n} from \"@lightningjs/solid\";\nimport { Column, Button, Row } from \"@lightningjs/solid-ui\";\nimport { useParams } from \"@solidjs/router\";\nimport { createEffect, createResource, on, createSignal } from \"solid-js\";\nimport { TileRow } from \"../components\";\nimport { setGlobalBackground } from \"../state\";\nimport ContentBlock from \"../components/ContentBlock\";\nimport { useNavigate } from \"@solidjs/router\";\nimport styles from \"../styles\";\nimport * as provider from \"../api/providers/entity\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\nimport type { Tile } from \"../api/formatters/ItemFormatter\";\nimport { playVideo, closeVideo } from \"../video\";\n\nconst Entity = () => {\n const params = useParams();\n const navigate = useNavigate();\n\n const [data] = createResource(() => ({ ...params }), provider.getInfo);\n const [credits] = createResource(\n () => ({ ...params }),\n provider.getCredits\n );\n const [recommendations] = createResource(\n () => ({ ...params }),\n provider.getRecommendations\n );\n const [backdropAlpha, setBackdropAlpha] = createSignal(0);\n\n createEffect(\n on(\n data,\n (data) => {\n setGlobalBackground(data.backgroundImage);\n },\n { defer: true }\n )\n );\n\n const columnY = 640;\n\n const Backdrop = {\n color: hexColor(\"#000000\"),\n alpha: 0,\n width: 1900,\n height: 890,\n x: -160,\n y: columnY,\n borderRadius: 30,\n };\n\n function onRowFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n columnRef.y = columnY;\n backdropRef.y = columnY;\n backdropRef.alpha = 0;\n }\n\n function onRowFocusAnimate(this: ElementNode) {\n this.children.selected?.setFocus();\n columnRef.y = 200;\n backdropRef.y = 160;\n backdropRef.alpha = 0.9;\n }\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n }\n\n function onEscape() {\n closeVideo();\n // Set focus back to lightning app\n document.getElementsByTagName(\"canvas\")[0].focus();\n entityActions.setFocus();\n setBackdropAlpha(0);\n }\n\n function onEnterTrailer() {\n const video = playVideo();\n setActiveElement(video);\n setBackdropAlpha(0.9);\n }\n\n let columnRef, backdropRef, entityActions;\n\n return (\n \n entityActions.setFocus()} onEscape={onEscape}>\n \n columnRef.setFocus()}\n onEnter={onEnterTrailer}\n >\n \n \n \n\n \n \n \n Recommendations\n \n \n \n Cast and Crew\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Entity;\n","import api, { getImageUrl } from \"..\";\nimport { convertItemsToTiles } from \"../formatters/ItemFormatter\";\n\nexport function minutesToHMM(minutes) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return (\n hours + \"h \" + (remainingMinutes < 10 ? \"0\" : \"\") + remainingMinutes + \"m\"\n );\n}\n\nfunction justYear(dateString) {\n const parts = dateString.split(\"-\");\n return parts[0];\n}\n\nexport function getCredits({ id }) {\n return api\n .get(`/person/${id}/combined_credits`)\n .then(({ cast }) => convertItemsToTiles(cast.slice(0, 7)));\n}\n\nexport function getInfo({ id }) {\n return api.get(`/person/${id}`).then((data) => ({\n backgroundImage: getImageUrl(data.profile_path, \"original\"),\n heroContent: {\n title: data.title || data.name,\n description: data.biography,\n },\n ...data,\n }));\n}\n","import { ElementNode, Text, View, Show, hexColor } from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport { useParams } from \"@solidjs/router\";\nimport { createResource, onMount } from \"solid-js\";\nimport { TileRow } from \"../components\";\nimport { setGlobalBackground } from \"../state\";\nimport { useNavigate } from \"@solidjs/router\";\nimport theme from \"theme\";\nimport styles from \"../styles\";\nimport * as provider from \"../api/providers/people\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\n\nconst People = () => {\n const params = useParams();\n const navigate = useNavigate();\n\n const [data] = createResource(() => ({ ...params }), provider.getInfo);\n const [credits] = createResource(() => ({ ...params }), provider.getCredits);\n\n const Backdrop = {\n color: hexColor(\"#000000\"),\n alpha: 0.8,\n width: 800,\n height: 440,\n x: 130,\n y: 180,\n borderRadius: 30,\n };\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n return (\n \n \n \n \n {data().name}\n \n \n {data().biography}\n \n \n \n \n \n \n Credits\n \n \n \n \n \n );\n};\n\nexport default People;\n","const NotFound = () => {\n return ;\n};\n\nexport default NotFound;\n","export default import.meta.ROLLUP_FILE_URL_DM04K3OB;","import {\n render,\n Config,\n SolidNode,\n SolidRendererOptions,\n hexColor,\n ElementNode,\n} from \"@lightningjs/solid\";\nimport { HashRouter, Route } from \"@solidjs/router\";\nimport App from \"./pages/App\";\nimport Browse from \"./pages/Browse\";\nimport Portal from \"./pages/Portal\";\nimport TextPage from \"./pages/Text\";\nimport CreatePage from \"./pages/Create\";\nimport ViewportPage from \"./pages/Viewport\";\nimport ButtonsPage from \"./pages/Buttons\";\nimport FlexPage from \"./pages/Flex\";\nimport FlexSizePage from \"./pages/FlexSize\";\nimport FlexColumnSizePage from \"./pages/FlexColumnSize\";\nimport FlexColumnPage from \"./pages/FlexColumn\";\nimport ButtonsMaterialPage from \"./pages/ButtonsMaterial\";\nimport Entity from \"./pages/Entity\";\nimport People from \"./pages/People\";\nimport NotFound from \"./pages/NotFound\";\nimport coreExtensionModuleUrl from \"./AppCoreExtensions.js?importChunkUrl\";\n\nconst logFps = true;\nConfig.debug = false;\nConfig.animationsEnabled = true;\nConfig.fontSettings.fontFamily = \"Ubuntu\";\nConfig.fontSettings.color = hexColor(\"#f6f6f6\");\nConfig.fontSettings.fontSize = 32;\nConfig.rendererOptions = {\n coreExtensionModule: coreExtensionModuleUrl,\n fpsUpdateInterval: logFps ? 200 : 0,\n enableInspector: true,\n // deviceLogicalPixelRatio: 1\n};\n\nrender(() => (\n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n));\n"],"file":"assets/index-CK5NAQdx.js"} \ No newline at end of file diff --git a/assets/index-CpsHex51.css b/assets/index-CpsHex51.css new file mode 100644 index 0000000..7e914a3 --- /dev/null +++ b/assets/index-CpsHex51.css @@ -0,0 +1,8 @@ +html, body, * { padding: 0; margin: 0 } +video { position: absolute; top: 0; left: 0; z-index: 2; outline: none; } +.center-element { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} \ No newline at end of file diff --git a/assets/index-legacy-BO0hRFKN.js b/assets/index-legacy-BO0hRFKN.js deleted file mode 100644 index 21cdc1b..0000000 --- a/assets/index-legacy-BO0hRFKN.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){var e=["defaultTone"],t=["defaultTone"],r=["defaultTone"],n=["surfaceDefaultTone"],o=["defaultTone"],i=["defaultTone"],s=["defaultTone"],a=["defaultTone"],l=["defaultTone"],d=["defaultTone"],u=["defaultTone"],h=["defaultTone"],c=["defaultTone"],f=["defaultTone"],p=["defaultTone"],v=["defaultTone"],g=["defaultSurfaceTone"];function m(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function x(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,s,a=[],l=!0,d=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(a.push(n.value),a.length!==t);l=!0);}catch(e){d=!0,o=e}finally{try{if(!l&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(d)throw o}}return a}}(e,t)||_(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */y=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},s=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function d(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{d({},"")}catch(e){d=function(e,t,r){return e[t]=r}}function u(e,t,r,n){var i=t&&t.prototype instanceof m?t:m,s=Object.create(i.prototype),a=new E(n||[]);return o(s,"_invoke",{value:R(e,r,a)}),s}function h(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var c="suspendedStart",f="suspendedYield",p="executing",v="completed",g={};function m(){}function x(){}function b(){}var w={};d(w,s,(function(){return this}));var S=Object.getPrototypeOf,A=S&&S(S(N([])));A&&A!==r&&n.call(A,s)&&(w=A);var C=b.prototype=m.prototype=Object.create(w);function T(e){["next","throw","return"].forEach((function(t){d(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function r(o,i,s,a){var l=h(e[o],e,i);if("throw"!==l.type){var d=l.arg,u=d.value;return u&&"object"==typeof u&&n.call(u,"__await")?t.resolve(u.__await).then((function(e){r("next",e,s,a)}),(function(e){r("throw",e,s,a)})):t.resolve(u).then((function(e){d.value=e,s(d)}),(function(e){return r("throw",e,s,a)}))}a(l.arg)}var i;o(this,"_invoke",{value:function(e,n){function o(){return new t((function(t,o){r(e,n,t,o)}))}return i=i?i.then(o,o):o()}})}function R(t,r,n){var o=c;return function(i,s){if(o===p)throw Error("Generator is already running");if(o===v){if("throw"===i)throw s;return{value:e,done:!0}}for(n.method=i,n.arg=s;;){var a=n.delegate;if(a){var l=k(a,n);if(l){if(l===g)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===c)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=p;var d=h(t,r,n);if("normal"===d.type){if(o=n.done?v:f,d.arg===g)continue;return{value:d.arg,done:n.done}}"throw"===d.type&&(o=v,n.method="throw",n.arg=d.arg)}}}function k(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,k(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var i=h(o,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,g;var s=i.arg;return s?s.done?(r[t.resultName]=s.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,g):s:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,g)}function B(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function I(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function E(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(B,this),this.reset(!0)}function N(t){if(t||""===t){var r=t[s];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,i=function r(){for(;++o=0;--i){var s=this.tryEntries[i],a=s.completion;if("root"===s.tryLoc)return o("end");if(s.tryLoc<=this.prev){var l=n.call(s,"catchLoc"),d=n.call(s,"finallyLoc");if(l&&d){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),I(r),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;I(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:N(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),g}},t}function b(e,t,r,n,o,i,s){try{var a=e[i](s),l=a.value}catch(d){return void r(d)}a.done?t(l):Promise.resolve(l).then(n,o)}function w(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function s(e){b(i,n,o,s,a,"next",e)}function a(e){b(i,n,o,s,a,"throw",e)}s(void 0)}))}}function S(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function A(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw i}}}}function _(e,t){if(e){if("string"==typeof e)return R(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?R(e,t):void 0}}function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{_=e.a,R=e.i,k=e.T,B=e.g,I=e.c,E=e.E,N=e.b,F=e.d,L=e.e,z=e.f,M=e.m,P=e.W,D=e.h,O=e.j,U=e.k,W=e.l,Y=e.S,H=e.B,j=e.n,Q=e.o,K=e.p,$=e.q,X=e.C,G=e.r,V=e.s,Z=e.t,q=e.u,J=e.v,ee=e.R,te=e.w}],execute:function(){var b,re,ne,oe=y().mark(qe),ie=document.createElement("style");ie.textContent="html,body,*{padding:0;margin:0}video{position:absolute;top:0;left:0;z-index:2;outline:none}.center-element{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}\n",document.head.appendChild(ie);class se{constructor(e){C(this,"releaseCallback",void 0),this.releaseCallback=e}}class ae extends se{constructor(e,t){var r,n;super(e),C(this,"textureMap",new Map),C(this,"zeroReferenceTextureSet",new Set),C(this,"options",void 0),this.options={textureCleanupIntervalMs:null!==(r=t.textureCleanupIntervalMs)&&void 0!==r?r:1e4,textureCleanupAgeThreadholdMs:null!==(n=t.textureCleanupAgeThreadholdMs)&&void 0!==n?n:6e4},setInterval((()=>{var e,t=Date.now(),r=this.options.textureCleanupAgeThreadholdMs,n=T(this.zeroReferenceTextureSet);try{for(n.s();!(e=n.n()).done;){var o=e.value;t-o.lastUpdate>r&&(this.releaseCallback(o.id),this.textureMap.delete(o.id),this.zeroReferenceTextureSet.delete(o))}}catch(i){n.e(i)}finally{n.f()}}),this.options.textureCleanupIntervalMs)}registerTexture(e){var t,r=null===(t=e.options)||void 0===t?void 0:t.id;if(_(r,"Texture must have an id to be registered"),!this.textureMap.has(r)){var n={id:r,nodeRefCount:0,lastUpdate:Date.now()};this.textureMap.set(r,n),this.zeroReferenceTextureSet.add(n)}}incrementTextureRefCount(e){var t,r=null===(t=e.options)||void 0===t?void 0:t.id;_(r,"Texture must have an id to be registered");var n=this.textureMap.get(r);n||(this.registerTexture(e),n=this.textureMap.get(r)),_(n,"Texture must have been registered"),"SubTexture"===e.txType&&this.incrementTextureRefCount(e.props.texture),n.nodeRefCount++,n.lastUpdate=Date.now(),this.zeroReferenceTextureSet.has(n)&&this.zeroReferenceTextureSet.delete(n)}decrementTextureRefCount(e){var t,r=null===(t=e.options)||void 0===t?void 0:t.id;_(r,"Texture must have an id to be registered");var n=this.textureMap.get(r);_(n,"Texture must have been registered"),n.nodeRefCount--,n.lastUpdate=Date.now(),0===n.nodeRefCount&&this.zeroReferenceTextureSet.add(n),"SubTexture"===e.txType&&this.decrementTextureRefCount(e.props.texture)}}class le extends se{constructor(e){super(e),C(this,"registry",void 0),this.registry=new FinalizationRegistry(e)}registerTexture(e){var t,r;_(null===(t=e.options)||void 0===t?void 0:t.id,"Texture must have an ID to be registered"),this.registry.register(e,null===(r=e.options)||void 0===r?void 0:r.id)}incrementTextureRefCount(){}decrementTextureRefCount(){}}var de={alpha:e=>1===e?null:{prop:"opacity",value:`${e}`},x:e=>({prop:"left",value:`${e}px`}),y:e=>({prop:"top",value:`${e}px`}),width:e=>0===e?null:{prop:"width",value:`${e}px`},height:e=>0===e?null:{prop:"height",value:`${e}px`},zIndex:()=>"zIndex",fontFamily:()=>"font-family",fontSize:()=>"font-size",fontStyle:()=>"font-style",fontWeight:()=>"font-weight",fontStretch:()=>"font-stretch",lineHeight:()=>"line-height",letterSpacing:()=>"letter-spacing",textAlign:()=>"text-align",overflowSuffix:()=>"overflow-suffix",maxLines:()=>"max-lines",contain:()=>"contain",verticalAlign:()=>"vertical-align",clipping:e=>!1===e?null:{prop:"overflow",value:e?"hidden":"visible"},rotation:e=>0===e?null:{prop:"transform",value:`rotate(${e}rad)`},scale:e=>1===e?null:{prop:"transform",value:`scale(${e})`},scaleX:e=>1===e?null:{prop:"transform",value:`scaleX(${e})`},scaleY:e=>1===e?null:{prop:"transform",value:`scaleY(${e})`},color:e=>0===e?null:{prop:"color",value:ue(e)}},ue=e=>`rgba(${e>>24&255},${e>>16&255},${e>>8&255},${(255&e)/255})`,he={id:"id"};class ce{constructor(e,t){var r,n,o,i,s,a;if(C(this,"root",null),C(this,"canvas",null),C(this,"height",1080),C(this,"width",1920),C(this,"scaleX",1),C(this,"scaleY",1),!R()){if(!t)throw new Error("settings is required");this.height=Math.ceil(null!==(r=t.appHeight)&&void 0!==r?r:1080/(null!==(n=t.deviceLogicalPixelRatio)&&void 0!==n?n:1)),this.width=Math.ceil(null!==(o=t.appWidth)&&void 0!==o?o:1900/(null!==(i=t.deviceLogicalPixelRatio)&&void 0!==i?i:1)),this.scaleX=null!==(s=t.deviceLogicalPixelRatio)&&void 0!==s?s:1,this.scaleY=null!==(a=t.deviceLogicalPixelRatio)&&void 0!==a?a:1,this.canvas=e,this.root=document.createElement("div"),this.setRootPosition(),document.body.appendChild(this.root),new MutationObserver(this.setRootPosition.bind(this)).observe(e,{attributes:!0,childList:!1,subtree:!1}),new ResizeObserver(this.setRootPosition.bind(this)).observe(e),window.addEventListener("resize",this.setRootPosition.bind(this)),console.warn("Inspector is enabled, this will impact performance")}}setRootPosition(){if(null!==this.root&&null!==this.canvas){var e=this.canvas.getBoundingClientRect(),t=document.documentElement.scrollTop+e.top,r=document.documentElement.scrollLeft+e.left;this.root.id="root",this.root.style.left=`${r}px`,this.root.style.top=`${t}px`,this.root.style.width=`${this.width}px`,this.root.style.height=`${this.height}px`,this.root.style.position="absolute",this.root.style.transformOrigin="0 0 0",this.root.style.transform=`scale(${this.scaleX}, ${this.scaleY})`,this.root.style.overflow="hidden",this.root.style.zIndex="65534"}}createDiv(e,t){var r=document.createElement("div");for(var n in r.style.position="absolute",r.id=e.id.toString(),t)this.updateNodeProperty(r,n,t[n]);return r}createNode(e,t){var r=e.createNode(t),n=this.createDiv(r,t);return n.node=r,r.div=n,this.createProxy(r,n)}createTextNode(e,t){var r=e.createTextNode(t),n=this.createDiv(r,t);return n.node=r,r.div=n,this.createProxy(r,n)}createProxy(e,t){return new Proxy(e,{set:(e,r,n)=>(this.updateNodeProperty(t,r,n),Reflect.set(e,r,n)),get:(r,n,o)=>("destroy"===n&&this.destroyNode(r),"animate"===n?(n,o)=>{var i=r.animate(n,o);return new Proxy(i,{get:(r,i,s)=>("start"===i&&this.animateNode(t,e,n,o),Reflect.get(r,i,s))})}:Reflect.get(r,n,o))})}destroyNode(e){var t=document.getElementById(e.id.toString());null==t||t.remove()}updateNodeProperty(e,t,r){if(null!==this.root&&null!=r)if("parent"!==t){if("text"===t)return e.innerHTML=String(r),void(e.style.visibility="hidden");if("src"===t&&r)e.setAttribute("data-src",String(r));else{if(de[t]){var n,o=null===(n=de[t])||void 0===n?void 0:n.call(de,r);if(null===o)return;return"string"==typeof o?void e.style.setProperty(o,String(r)):void("object"==typeof o&&e.style.setProperty(o.prop,o.value))}if(he[t])e.setAttribute(String(de[t]),String(r));else if("data"!==t);else for(var i in r)e.setAttribute(`data-${i}`,String(r[i]))}}else{var s=r.id;if(1===s)return void this.root.appendChild(e);var a=document.getElementById(s.toString());null==a||a.appendChild(e)}}animateNode(e,t,r,n){var o=n.duration,i=void 0===o?1e3:o,s=n.delay,a=void 0===s?0:s,l=r.x,d=r.y,u=r.width,h=r.height,c=r.alpha,f=void 0===c?1:c,p=r.rotation,v=void 0===p?0:p,g=r.scale,m=void 0===g?1:g,x=r.color;setTimeout((function(){setTimeout((()=>{e.style.top=`${d}px`,e.style.left=`${l}px`,e.style.width=`${u}px`,e.style.height=`${h}px`,e.style.opacity=`${f}`,e.style.rotate=`${v}rad`,e.style.scale=`${m}`,e.style.color=ue(x)}),i)}),a)}}var fe=function(e,t,r){var n=Promise.resolve();return n.then((()=>e())).catch((e=>{var t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}))};class pe{static getEffectKey(e){return""}static getMethodParameters(e,t){var r=[];for(var n in e){var o=e[n],i="";o.size&&(i=`[${o.size(t)}]`),r.push(`${o.type} ${n}${i}`)}return r.join(",")}constructor(e){C(this,"priority",1),C(this,"name",""),C(this,"ref",void 0),C(this,"target",void 0),C(this,"passParameters",""),C(this,"declaredUniforms",""),C(this,"uniformInfo",{});var t=e.ref,r=e.target,n=e.props,o=void 0===n?{}:n;this.ref=t,this.target=r;var i={},s=[],a="",l=this.constructor.uniforms||{};for(var d in l){var u=l[d],h=u.type,c=`${t}_${d}`,f="";u.size&&(f=`[${u.size(o)}]`),s.push(c),a+=`uniform ${h} ${c}${f};`,i[d]={name:c,uniform:l[d].method}}this.passParameters=s.join(","),this.declaredUniforms=a,this.uniformInfo=i}static resolveDefaults(e){return{}}static makeEffectKey(e){return!1}}C(pe,"uniforms",{}),C(pe,"methods",void 0),C(pe,"onShaderMask",void 0),C(pe,"onColorize",void 0),C(pe,"onEffectMask",void 0);var ve={x:(e,t)=>{e.props.x=t},y:(e,t)=>{e.props.y=t},width:(e,t)=>{e.props.width=t},height:(e,t)=>{e.props.height=t},color:(e,t)=>{e.props.color=t},zIndex:(e,t)=>{e.props.zIndex=t},fontFamily:(e,t)=>{e.props.fontFamily=t},fontWeight:(e,t)=>{e.props.fontWeight=t},fontStyle:(e,t)=>{e.props.fontStyle=t},fontStretch:(e,t)=>{e.props.fontStretch=t},fontSize:(e,t)=>{e.props.fontSize=t},text:(e,t)=>{e.props.text=t},textAlign:(e,t)=>{e.props.textAlign=t},contain:(e,t)=>{e.props.contain=t},offsetY:(e,t)=>{e.props.offsetY=t},scrollable:(e,t)=>{e.props.scrollable=t},scrollY:(e,t)=>{e.props.scrollY=t},letterSpacing:(e,t)=>{e.props.letterSpacing=t},lineHeight:(e,t)=>{e.props.lineHeight=t},maxLines:(e,t)=>{e.props.maxLines=t},textBaseline:(e,t)=>{e.props.textBaseline=t},verticalAlign:(e,t)=>{e.props.verticalAlign=t},overflowSuffix:(e,t)=>{e.props.overflowSuffix=t},debug:(e,t)=>{e.props.debug=t}};class ge{constructor(e){C(this,"stage",void 0),C(this,"set",void 0),this.stage=e;var t=A(A({},ve),this.getPropertySetters());this.set=Object.freeze(Object.fromEntries(Object.entries(t).map((([e,t])=>[e,(r,n)=>{r.props[e]!==n&&(t(r,n),this.stage.requestRender())}]))))}setStatus(e,t,r){e.status!==t&&(e.status=t,e.emitter.emit(t,r))}setIsRenderable(e,t){e.isRenderable=t}destroyState(e){["loading","loaded","failed"].forEach((t=>{e.emitter.off(t)}))}scheduleUpdateState(e){e.updateScheduled||(e.updateScheduled=!0,queueMicrotask((()=>{e.updateScheduled=!1,this.updateState(e)})))}}class me extends k{constructor(e,t,r){super(e,t),C(this,"fontFace",void 0),C(this,"fontUrl",void 0);var n=r.replace(/\(|\)/g,""),o=this.descriptors,i={style:o.style,weight:"number"==typeof o.weight?`${o.weight}`:o.weight,stretch:o.stretch,unicodeRange:o.unicodeRange,variant:o.variant,featureSettings:o.featureSettings,display:o.display},s=new FontFace(e,`url(${n})`,i);s.load().then((()=>{this.loaded=!0,this.emit("loaded")})).catch(console.error),this.fontFace=s,this.fontUrl=r}}function xe(e,t,r,n,o){return r*(n-1)+("bottom"!==e?.5*t:0)+Math.max(r,t)+(o||0)}class ye{constructor(e,t){C(this,"_canvas",void 0),C(this,"_context",void 0),C(this,"_settings",void 0),C(this,"renderInfo",void 0),this._canvas=e,this._context=t,this._settings=this.mergeDefaults({})}set settings(e){this._settings=this.mergeDefaults(e)}get settings(){return this._settings}getPrecision(){return this._settings.precision}setFontProperties(){this._context.font=this._getFontSetting(),this._context.textBaseline=this._settings.textBaseline}_getFontSetting(){for(var e=[this._settings.fontFace],t=[],r=0,n=e.length;r{console.warn("[Lightning] Font load error",t,e)})).then((()=>{document.fonts.check(e,this._settings.text)||console.warn("[Lightning] Font not found",e)}))}catch(t){console.warn("[Lightning] Can't check font loading for "+e)}}}calculateRenderInfo(){var e={},t=this.getPrecision(),r=this._settings.paddingLeft*t,n=this._settings.paddingRight*t,o=this._settings.fontSize*t,i=null===this._settings.offsetY?null:this._settings.offsetY*t,s=(this._settings.lineHeight||o)*t,a=this._settings.w*t,l=this._settings.h*t,d=this._settings.wordWrapWidth*t,u=this._settings.cutSx*t,h=this._settings.cutEx*t,c=this._settings.cutSy*t,f=this._settings.cutEy*t,p=(this._settings.letterSpacing||0)*t,v=this._settings.textIndent*t;this.setFontProperties();var g,m=a||2048/this.getPrecision(),x=m-r;if(x<10&&(m+=10-x,x=10),d||(d=x),this._settings.textOverflow&&!this._settings.wordWrap){var y;switch(this._settings.textOverflow){case"clip":y="";break;case"ellipsis":y=this._settings.overflowSuffix;break;default:y=this._settings.textOverflow}this._settings.text=this.wrapWord(this._settings.text,d-v,y)}if(this._settings.wordWrap)g=this.wrapText(this._settings.text,d,p,v);else for(var b=(g={l:this._settings.text.split(/(?:\r\n|\r|\n)/),n:[]}).l.length,w=0;wthis._settings.maxLines){var A,C=S.slice(0,this._settings.maxLines),T=null;if(this._settings.overflowSuffix){var _=this._settings.overflowSuffix?this.measureText(this._settings.overflowSuffix):0,R=this.wrapText(C[C.length-1],d-_,p,v);C[C.length-1]=`${R.l[0]}${this._settings.overflowSuffix}`,T=[R.l.length>1?R.l[1]:""]}else T=[""];var k=S.length,B=0,I=g.n.length;for(A=this._settings.maxLines;A=128&&(this._context.globalAlpha=.01,this._context.fillRect(0,0,.01,.01),this._context.globalAlpha=1),(e.cutSx||e.cutSy)&&this._context.translate(-e.cutSx,-e.cutSy);for(var l=[],d=0,u=i.length;dt)for(;s>0&&(a=this._context.measureText(e.substring(0,s)).width+n)>t;)s-=1;else for(;s=n?r:"")}wrapText(e,t,r,n=0){for(var o=e.split(/\r?\n/g),i=[],s=[],a=0;au?(c>0&&(l.push(d),d=""),d+=h[c],u=t-f-(0===c?n:0)):(u-=p,d+=` ${h[c]}`)}l.push(d),d="",i=i.concat(l),ae+this._context.measureText(r).width+t),0):this._context.measureText(e).width}mergeDefaults(e){return A({text:"",w:0,h:0,fontStyle:"normal",fontSize:40,fontFace:null,wordWrap:!0,wordWrapWidth:0,wordBreak:!1,textOverflow:"",lineHeight:null,textBaseline:"alphabetic",textAlign:"left",verticalAlign:"top",offsetY:null,maxLines:0,overflowSuffix:"...",textColor:[1,1,1,1],paddingLeft:0,paddingRight:0,shadow:!1,shadowColor:[0,0,0,1],shadowOffsetX:0,shadowOffsetY:0,shadowBlur:5,highlight:!1,highlightHeight:0,highlightColor:[0,0,0,1],highlightOffset:0,highlightPaddingLeft:0,highlightPaddingRight:0,letterSpacing:0,textIndent:0,cutSx:0,cutEx:0,cutSy:0,cutEy:0,advancedRenderer:!1,fontBaselineRatio:0,precision:1,textRenderIssueMargin:0},e)}}var be="undefined"==typeof self?globalThis:self,we=(null===(b=be.document)||void 0===b?void 0:b.fonts)||be.fonts;var Se=I(0,0,0,0);class Ae extends ge{constructor(e){super(e),C(this,"canvas",void 0),C(this,"context",void 0),C(this,"rendererBounds",void 0),"undefined"!=typeof OffscreenCanvas?this.canvas=new OffscreenCanvas(0,0):this.canvas=document.createElement("canvas");var t=this.canvas.getContext("2d");t||(this.canvas=document.createElement("canvas"),t=this.canvas.getContext("2d")),_(t),this.context=t,this.rendererBounds={x1:0,y1:0,x2:this.stage.options.appWidth,y2:this.stage.options.appHeight}}getPropertySetters(){return{fontFamily:(e,t)=>{e.props.fontFamily=t,e.fontInfo=void 0,this.invalidateLayoutCache(e)},fontWeight:(e,t)=>{e.props.fontWeight=t,e.fontInfo=void 0,this.invalidateLayoutCache(e)},fontStyle:(e,t)=>{e.props.fontStyle=t,e.fontInfo=void 0,this.invalidateLayoutCache(e)},fontStretch:(e,t)=>{e.props.fontStretch=t,e.fontInfo=void 0,this.invalidateLayoutCache(e)},fontSize:(e,t)=>{e.props.fontSize=t,e.fontInfo=void 0,this.invalidateLayoutCache(e)},text:(e,t)=>{e.props.text=t,this.invalidateLayoutCache(e)},textAlign:(e,t)=>{e.props.textAlign=t,this.invalidateLayoutCache(e)},color:(e,t)=>{e.props.color=t,this.invalidateLayoutCache(e)},x:(e,t)=>{e.props.x=t,this.invalidateVisibleWindowCache(e)},y:(e,t)=>{e.props.y=t,this.invalidateVisibleWindowCache(e)},contain:(e,t)=>{e.props.contain=t,this.invalidateLayoutCache(e)},width:(e,t)=>{e.props.width=t,"none"!==e.props.contain&&this.invalidateLayoutCache(e)},height:(e,t)=>{e.props.height=t,"both"===e.props.contain&&this.invalidateLayoutCache(e)},offsetY:(e,t)=>{e.props.offsetY=t,this.invalidateLayoutCache(e)},scrollY:(e,t)=>{e.props.scrollY=t},letterSpacing:(e,t)=>{e.props.letterSpacing=t,this.invalidateLayoutCache(e)},lineHeight:(e,t)=>{e.props.lineHeight=t,this.invalidateLayoutCache(e)},maxLines:(e,t)=>{e.props.maxLines=t,this.invalidateLayoutCache(e)},textBaseline:(e,t)=>{e.props.textBaseline=t,this.invalidateLayoutCache(e)},verticalAlign:(e,t)=>{e.props.verticalAlign=t,this.invalidateLayoutCache(e)},overflowSuffix:(e,t)=>{e.props.overflowSuffix=t,this.invalidateLayoutCache(e)}}}canRenderFont(e){return!0}isFontFaceSupported(e){return e instanceof me}addFontFace(e){_(e instanceof me),we.add(e.fontFace)}createState(e){return{props:e,status:"initialState",updateScheduled:!1,emitter:new E,canvasPages:void 0,lightning2TextRenderer:new ye(this.canvas,this.context),renderWindow:void 0,visibleWindow:{x1:0,y1:0,x2:0,y2:0,valid:!1},renderInfo:void 0,forceFullLayoutCalc:!1,textW:0,textH:0,fontInfo:void 0,fontFaceLoadedHandler:void 0,isRenderable:!1,debugData:{updateCount:0,layoutCount:0,drawCount:0,lastLayoutNumCharacters:0,layoutSum:0,drawSum:0,bufferSize:0}}}updateState(e){if("initialState"===e.status&&this.setStatus(e,"loading"),!e.fontInfo){var t=(r=e.props,n=r.fontFamily,[r.fontStyle,r.fontWeight,r.fontStretch,`${r.fontSize}px`,n].join(" "));if(e.fontInfo={cssString:t,loaded:!1},!e.fontInfo.loaded)return void we.load(t).then(this.onFontLoaded.bind(this,e,t)).catch(this.onFontLoadError.bind(this,e,t))}var r,n;if(e.fontInfo.loaded){if(!e.renderInfo){var o=e.props.maxLines,i="both"===e.props.contain?Math.floor((e.props.height-e.props.offsetY)/e.props.lineHeight):0,s=i>0&&o>0?Math.min(i,o):Math.max(i,o);e.lightning2TextRenderer.settings={text:e.props.text,textAlign:e.props.textAlign,fontFace:e.props.fontFamily,fontSize:e.props.fontSize,fontStyle:[e.props.fontStretch,e.props.fontStyle,e.props.fontWeight].join(" "),textColor:N(e.props.color),offsetY:e.props.fontSize+e.props.offsetY,wordWrap:"none"!==e.props.contain,wordWrapWidth:"none"===e.props.contain?void 0:e.props.width,letterSpacing:e.props.letterSpacing,lineHeight:e.props.lineHeight,maxLines:s,textBaseline:e.props.textBaseline,verticalAlign:e.props.verticalAlign,overflowSuffix:e.props.overflowSuffix},e.renderInfo=e.lightning2TextRenderer.calculateRenderInfo(),e.textH=e.renderInfo.lineHeight*e.renderInfo.lines.length,e.textW=e.renderInfo.width,e.renderWindow=void 0}var a=e.props,l=a.x,d=a.y,u=a.width,h=a.height,c=a.scrollY,f=a.contain,p=e.visibleWindow,v=e.renderWindow,g=e.canvasPages;if(!p.valid){var m=I(l,d,"none"!==f?l+u:1/0,"both"===f?d+h:1/0,Se);F(this.rendererBounds,m,p),p.valid=!0}var x=p.y2-p.y1,y=Math.ceil(x/e.renderInfo.lineHeight);if(0===x)return g=void 0,v=void 0,void this.setStatus(e,"loaded");if(v&&g){var b=l+v.x1,w=d-c+v.y1,S=l+v.x2,A=d-c+v.y2;if(b<=p.x1&&S>=p.x2&&w<=p.y1&&A>=p.y2)return void this.setStatus(e,"loaded");Ap.y1&&(v.y1-=y*e.renderInfo.lineHeight,v.y2-=y*e.renderInfo.lineHeight,g.unshift(g.pop()),g[0].lineNumStart=g[1].lineNumStart-y,g[0].lineNumEnd=g[0].lineNumStart+y,g[0].valid=!1)}else{var C,_,R,k=e.renderInfo.lineHeight*y,B=Math.ceil(c/k),E=B*y,L=E-y,z=E+y;g=[{texture:null===(C=g)||void 0===C?void 0:C[0].texture,lineNumStart:L,lineNumEnd:L+y,valid:!1},{texture:null===(_=g)||void 0===_?void 0:_[1].texture,lineNumStart:E,lineNumEnd:E+y,valid:!1},{texture:null===(R=g)||void 0===R?void 0:R[2].texture,lineNumStart:z,lineNumEnd:z+y,valid:!1}],e.canvasPages=g;var M=B*k;v={x1:0,y1:M-k,x2:u,y2:M+2*k}}e.renderWindow=v,performance.now();var P,D=T(g);try{for(D.s();!(P=D.n()).done;){var O=P.value;if(!O.valid)if(O.lineNumStart<0){var U;null===(U=O.texture)||void 0===U||U.setRenderableOwner(e,!1),O.texture=this.stage.txManager.loadTexture("ImageTexture",{src:""}),O.texture.setRenderableOwner(e,e.isRenderable),O.valid=!0}else{var W;if(e.lightning2TextRenderer.draw(e.renderInfo,{lines:e.renderInfo.lines.slice(O.lineNumStart,O.lineNumEnd),lineWidths:e.renderInfo.lineWidths.slice(O.lineNumStart,O.lineNumEnd)}),0!==this.canvas.width&&0!==this.canvas.height)null===(W=O.texture)||void 0===W||W.setRenderableOwner(e,!1),O.texture=this.stage.txManager.loadTexture("ImageTexture",{src:this.context.getImageData(0,0,this.canvas.width,this.canvas.height)},{preload:!0}),O.texture.setRenderableOwner(e,e.isRenderable);O.valid=!0}}}catch(Y){D.e(Y)}finally{D.f()}this.setStatus(e,"loaded")}}renderQuads(e,t,r,n){var o=this.stage,i=e.canvasPages,s=e.textW,a=void 0===s?0:s,l=e.textH,d=void 0===l?0:l,u=e.renderWindow;if(i&&u){var h=e.props,c=h.x,f=h.y,p=h.scrollY,v=h.contain,g=h.width,m=h.height,x={x:c,y:f,width:"none"!==v?g:a,height:"both"===v?m:d};L({x:0,y:0,width:o.options.appWidth,height:o.options.appHeight},x),_(i,"canvasPages is not defined"),_(u,"renderWindow is not defined");var y,b,w,S,A,C,T=(u.y2-u.y1)/3,R=e.props,k=R.zIndex,B=R.color,I=n*z(B),E=M(4294967295,I);if(i[0].valid)this.stage.renderer.addQuad({alpha:I,clippingRect:r,colorBl:E,colorBr:E,colorTl:E,colorTr:E,width:(null===(y=i[0].texture)||void 0===y||null===(y=y.dimensions)||void 0===y?void 0:y.width)||0,height:(null===(b=i[0].texture)||void 0===b||null===(b=b.dimensions)||void 0===b?void 0:b.height)||0,texture:i[0].texture,textureOptions:{},shader:null,shaderProps:null,zIndex:k,tx:t.tx,ty:t.ty-p+u.y1,ta:t.ta,tb:t.tb,tc:t.tc,td:t.td});if(i[1].valid)this.stage.renderer.addQuad({alpha:I,clippingRect:r,colorBl:E,colorBr:E,colorTl:E,colorTr:E,width:(null===(w=i[1].texture)||void 0===w||null===(w=w.dimensions)||void 0===w?void 0:w.width)||0,height:(null===(S=i[1].texture)||void 0===S||null===(S=S.dimensions)||void 0===S?void 0:S.height)||0,texture:i[1].texture,textureOptions:{},shader:null,shaderProps:null,zIndex:k,tx:t.tx,ty:t.ty-p+u.y1+T,ta:t.ta,tb:t.tb,tc:t.tc,td:t.td});if(i[2].valid)this.stage.renderer.addQuad({alpha:I,clippingRect:r,colorBl:E,colorBr:E,colorTl:E,colorTr:E,width:(null===(A=i[2].texture)||void 0===A||null===(A=A.dimensions)||void 0===A?void 0:A.width)||0,height:(null===(C=i[2].texture)||void 0===C||null===(C=C.dimensions)||void 0===C?void 0:C.height)||0,texture:i[2].texture,textureOptions:{},shader:null,shaderProps:null,zIndex:k,tx:t.tx,ty:t.ty-p+u.y1+T+T,ta:t.ta,tb:t.tb,tc:t.tc,td:t.td})}}setIsRenderable(e,t){var r;super.setIsRenderable(e,t),null===(r=e.canvasPages)||void 0===r||r.forEach((r=>{var n;null===(n=r.texture)||void 0===n||n.setRenderableOwner(e,t)}))}destroyState(e){var t;null===(t=e.canvasPages)||void 0===t||t.forEach((t=>{var r;null===(r=t.texture)||void 0===r||r.setRenderableOwner(e,!1)}))}invalidateVisibleWindowCache(e){e.visibleWindow.valid=!1,this.setStatus(e,"loading"),this.scheduleUpdateState(e)}invalidateLayoutCache(e){e.renderInfo=void 0,e.visibleWindow.valid=!1,this.setStatus(e,"loading"),this.scheduleUpdateState(e)}onFontLoaded(e,t){var r;t===(null===(r=e.fontInfo)||void 0===r?void 0:r.cssString)&&e.fontInfo&&(e.fontInfo.loaded=!0,this.scheduleUpdateState(e))}onFontLoadError(e,t,r){var n;t===(null===(n=e.fontInfo)||void 0===n?void 0:n.cssString)&&e.fontInfo&&(e.fontInfo.loaded=!0,console.error(`CanvasTextRenderer: Error loading font '${e.fontInfo.cssString}'`,r),this.scheduleUpdateState(e))}}class Ce extends P{constructor(e){super({renderer:e,attributes:["a_position","a_textureCoordinate","a_color"],uniforms:[{name:"u_resolution",uniform:"uniform2fv"},{name:"u_pixelRatio",uniform:"uniform1f"},{name:"u_texture",uniform:"uniform2fv"}]})}bindTextures(e){var t=this.glw;t.activeTexture(0),t.bindTexture(e[0].ctxTexture)}}C(Ce,"shaderSources",{vertex:"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio;\n vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);\n\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);\n gl_Position.y = -sign(screenSpace.y) * gl_Position.y;\n }\n ",fragment:"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate);\n gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoordinate);\n }\n "});class Te extends P{constructor(e){super({renderer:e,attributes:["a_position","a_textureCoordinate","a_color","a_textureIndex"],uniforms:[{name:"u_resolution",uniform:"uniform2fv"},{name:"u_pixelRatio",uniform:"uniform1f"},{name:"u_textures[0]",uniform:"uniform1iv"}]}),C(this,"supportsIndexedTextures",!0)}bindTextures(e){var t=this.renderer,r=this.glw;if(e.length>t.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS)throw new Error(`DefaultShaderBatched: Cannot bind more than ${t.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS} textures`);e.forEach(((e,t)=>{r.activeTexture(t),r.bindTexture(e.ctxTexture)}));var n=Array.from(Array(e.length).keys());this.setUniform("u_textures[0]",n)}}C(Te,"shaderSources",{vertex:"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n ",fragment:e=>`\n #define txUnits ${e}\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_image;\n uniform sampler2D u_textures[txUnits];\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n vec4 sampleFromTexture(sampler2D textures[${e}], int idx, vec2 uv) {\n ${Array.from(Array(e).keys()).map((e=>`\n ${0!==e?"else ":""}if (idx == ${e}) {\n return texture2D(textures[${e}], uv);\n }\n `)).join("")}\n return texture2D(textures[0], uv);\n }\n\n void main(){\n gl_FragColor = vec4(v_color) * sampleFromTexture(u_textures, int(v_textureIndex), v_textureCoordinate);\n }\n `});var _e=new Map,Re=(e,t)=>{var r=JSON.stringify(e);if(_e.has(r))return _e.get(r);var n=(null!=e?e:[]).map((e=>({type:e.type,props:t[e.type].resolveDefaults(e.props||{})})));return _e.set(r,n),n};class ke extends P{constructor(e,t,r){var n=ke.createShader(t,r);super({renderer:e,attributes:["a_position","a_textureCoordinate","a_color"],uniforms:[{name:"u_resolution",uniform:"uniform2fv"},{name:"u_pixelRatio",uniform:"uniform1f"},{name:"u_texture",uniform:"uniform2fv"},{name:"u_dimensions",uniform:"uniform2fv"},{name:"u_alpha",uniform:"uniform1f"},...n.uniforms],shaderSources:{vertex:n.vertex,fragment:n.fragment}}),C(this,"effects",[]),this.effects=n.effects,this.calculateProps=D(this.calculateProps.bind(this))}bindTextures(e){var t=this.glw;t.activeTexture(0),t.bindTexture(e[0].ctxTexture)}calculateProps(e){var t=this.renderer.shManager.getRegisteredEffects(),r=[];return null==e||e.forEach(((e,n)=>{var o,i=this.effects[n],s=t[i.name],a=null!==(o=e.props)&&void 0!==o?o:{},l=i.uniformInfo;Object.keys(a).forEach((e=>{var t=s.uniforms[e],n=l[e],o=t.validator?t.validator(a[e],a):a[e];Array.isArray(o)&&(o=new Float32Array(o)),r.push({name:n.name,value:o})}))})),r}bindProps(e){this.calculateProps(e.effects).forEach((e=>{this.setUniform(e.name,e.value)}))}canBatchShaderProps(e,t){if(e.$dimensions.width!==t.$dimensions.width||e.$dimensions.height!==t.$dimensions.height||e.effects.length!==t.effects.length)return!1;for(var r=e.effects.length,n=0;n{var n=t[e.type],a=n.getEffectKey(e.props||{});r[a]=r[a]?++r[a]:1;var l=r[a];1===l&&s.push({key:a,type:e.type,props:e.props});var d=new n({ref:`${a}${1===l?"":l}`,target:a,props:e.props});return o+=d.declaredUniforms,i.push(...Object.values(d.uniformInfo)),d})),l="";null==s||s.forEach((e=>{var r,o=t[e.type],i=o.resolveDefaults(null!==(r=e.props)&&void 0!==r?r:{}),s=[];for(var a in o.methods){var d=a,u=o.methods[a];n[a]&&n[a]!==u&&(d=ke.resolveMethodDuplicate(a,u,n)),n[d]=u.replace("function",d),s.push({m:a,cm:d})}var h=o.onShaderMask instanceof Function?o.onShaderMask(i):o.onShaderMask,c=o.onColorize instanceof Function?o.onColorize(i):o.onColorize,f=o.onEffectMask instanceof Function?o.onEffectMask(i):o.onEffectMask;s.forEach((e=>{var t=e.m,r=e.cm,n=new RegExp(`\\$${t}`,"g");h&&(h=h.replace(n,r)),c&&(c=c.replace(n,r)),f&&(f=f.replace(n,r))}));var p=o.getMethodParameters(o.uniforms,i),v=p.length>0?`, ${p}`:"";h&&(l+=`\n float fx_${e.key}_onShaderMask(float shaderMask ${v}) {\n ${h}\n }\n `),c&&(l+=`\n vec4 fx_${e.key}_onColorize(float shaderMask, vec4 maskColor, vec4 shaderColor${v}) {\n ${c}\n }\n `),f&&(l+=`\n vec4 fx_${e.key}_onEffectMask(float shaderMask, vec4 maskColor, vec4 shaderColor${v}) {\n ${f}\n }\n `)}));var d="";for(var u in n)d+=n[u];for(var h="mix(shaderColor, maskColor, clamp(-(lng_DefaultMask), 0.0, 1.0))",c="\n\n ",f=0;f0?`, ${p.passParameters}`:"",g=t[p.name];g.onShaderMask&&(c+=`\n shaderMask = fx_${p.target}_onShaderMask(shaderMask ${v});\n `),g.onColorize&&(c+=`\n maskColor = fx_${p.target}_onColorize(shaderMask, maskColor, shaderColor${v});\n `),g.onEffectMask&&(h=`fx_${p.target}_onEffectMask(shaderMask, maskColor, shaderColor${v})`);var m=a[f+1];(void 0===m||t[m.name].onEffectMask)&&(c+=`\n shaderColor = ${h};\n `)}return{effects:a,uniforms:i,fragment:ke.fragment(o,d,l,c),vertex:ke.vertex()}}static resolveMethodDuplicate(e,t,r,n=0){var o=e+(n>0?n:"");return r[o]&&r[o]!==t?this.resolveMethodDuplicate(e,t,r,++n):o}static resolveDefaults(e,t){return{effects:Re(e.effects,t),$dimensions:{width:0,height:0},$alpha:0}}static makeCacheKey(e,t){var r,n="";return null===(r=e.effects)||void 0===r||r.forEach((e=>{var r=t[e.type].getEffectKey(e.props||{});n+=`,${r}`})),`DynamicShader${n}`}}C(ke,"z$__type__Props",void 0),C(ke,"vertex",(()=>"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n ")),C(ke,"fragment",((e,t,r,n)=>`\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n #define PI 3.14159265359\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_alpha;\n uniform float u_radius;\n uniform sampler2D u_texture;\n uniform float u_pixelRatio;\n\n ${e}\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n ${t}\n\n ${r}\n\n void main() {\n vec2 p = v_textureCoordinate.xy * u_dimensions - u_dimensions * 0.5;\n vec2 d = abs(p) - (u_dimensions) * 0.5;\n float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n\n vec4 shaderColor = vec4(0.0);\n float shaderMask = lng_DefaultMask;\n\n vec4 maskColor = texture2D(u_texture, v_textureCoordinate) * v_color;\n\n shaderColor = mix(shaderColor, maskColor, clamp(-(lng_DefaultMask + 0.5), 0.0, 1.0));\n\n ${n}\n\n gl_FragColor = shaderColor * u_alpha;\n }\n `));class Be extends P{constructor(e){super({renderer:e,attributes:["a_position","a_textureCoordinate","a_color"],uniforms:[{name:"u_resolution",uniform:"uniform2fv"},{name:"u_pixelRatio",uniform:"uniform1f"},{name:"u_texture",uniform:"uniform2f"},{name:"u_dimensions",uniform:"uniform2fv"},{name:"u_radius",uniform:"uniform1f"}]})}static resolveDefaults(e){return{radius:e.radius||10,$dimensions:{width:0,height:0}}}bindTextures(e){var t=this.glw;t.activeTexture(0),t.bindTexture(e[0].ctxTexture)}bindProps(e){this.setUniform("u_radius",e.radius)}canBatchShaderProps(e,t){return e.radius===t.radius&&e.$dimensions.width===t.$dimensions.width&&e.$dimensions.height===t.$dimensions.height}}C(Be,"z$__type__Props",void 0),C(Be,"shaderSources",{vertex:"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n ",fragment:"\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_radius;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n float boxDist(vec2 p, vec2 size, float radius){\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n\n float fillMask(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color;\n vec2 halfDimensions = u_dimensions * 0.5;\n\n float d = boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);\n gl_FragColor = mix(vec4(0.0), color, fillMask(d));\n }\n "});var Ie=new Float32Array([1,0,0,0,1,0,0,0,1]);class Ee extends P{constructor(e){super({renderer:e,attributes:["a_position","a_textureCoordinate"],uniforms:[{name:"u_resolution",uniform:"uniform2fv"},{name:"u_transform",uniform:"uniformMatrix3fv"},{name:"u_scrollY",uniform:"uniform1f"},{name:"u_pixelRatio",uniform:"uniform1f"},{name:"u_texture",uniform:"uniform2f"},{name:"u_color",uniform:"uniform4fv"},{name:"u_size",uniform:"uniform1f"},{name:"u_distanceRange",uniform:"uniform1f"},{name:"u_debug",uniform:"uniform1i"}]})}bindTextures(e){var t=this.glw;t.activeTexture(0),t.bindTexture(e[0].ctxTexture)}bindProps(e){var t=Ee.resolveDefaults(e);for(var r in t)if("transform"===r)this.setUniform("u_transform",!1,t[r]);else if("scrollY"===r)this.setUniform("u_scrollY",t[r]);else if("color"===r){var n=N(t.color);this.setUniform("u_color",n)}else"size"===r?this.setUniform("u_size",t[r]):"distanceRange"===r?this.setUniform("u_distanceRange",t[r]):"debug"===r&&this.setUniform("u_debug",t[r]?1:0)}static resolveDefaults(e={}){var t,r,n,o,i,s;return{transform:null!==(t=e.transform)&&void 0!==t?t:Ie,scrollY:null!==(r=e.scrollY)&&void 0!==r?r:0,color:null!==(n=e.color)&&void 0!==n?n:4294967295,size:null!==(o=e.size)&&void 0!==o?o:16,distanceRange:null!==(i=e.distanceRange)&&void 0!==i?i:1,debug:null!==(s=e.debug)&&void 0!==s&&s}}}C(Ee,"shaderSources",{vertex:"\n // an attribute is an input (in) to a vertex shader.\n // It will receive data from a buffer\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n\n uniform vec2 u_resolution;\n uniform mat3 u_transform;\n uniform float u_scrollY;\n uniform float u_pixelRatio;\n uniform float u_size;\n\n varying vec2 v_texcoord;\n\n void main() {\n vec2 scrolledPosition = a_position * u_size - vec2(0, u_scrollY);\n vec2 transformedPosition = (u_transform * vec3(scrolledPosition, 1)).xy;\n\n // Calculate screen space with pixel ratio\n vec2 screenSpace = (transformedPosition * u_pixelRatio / u_resolution * 2.0 - 1.0) * vec2(1, -1);\n\n gl_Position = vec4(screenSpace, 0.0, 1.0);\n v_texcoord = a_textureCoordinate;\n\n }\n ",fragment:"\n precision highp float;\n\n uniform vec4 u_color;\n uniform sampler2D u_texture;\n uniform float u_distanceRange;\n uniform float u_pixelRatio;\n uniform int u_debug;\n\n varying vec2 v_texcoord;\n\n float median(float r, float g, float b) {\n return max(min(r, g), min(max(r, g), b));\n }\n\n void main() {\n vec3 sample = texture2D(u_texture, v_texcoord).rgb;\n if (u_debug == 1) {\n gl_FragColor = vec4(sample.r, sample.g, sample.b, 1.0);\n return;\n }\n float scaledDistRange = u_distanceRange * u_pixelRatio;\n float sigDist = scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);\n float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_color.a;\n\n // Build the final color.\n // IMPORTANT: We must premultiply the color by the alpha value before returning it.\n gl_FragColor = vec4(u_color.r * opacity, u_color.g * opacity, u_color.b * opacity, opacity);\n }\n "});class Ne extends pe{constructor(...e){super(...e),C(this,"name","radius")}static getEffectKey(){return"radius"}static resolveDefaults(e){var t;return{radius:null!==(t=e.radius)&&void 0!==t?t:10}}}C(Ne,"z$__type__Props",void 0),C(Ne,"uniforms",{radius:{value:0,method:"uniform4fv",type:"vec4",validator:e=>{var t=e;return Array.isArray(t)?2===t.length?t=[t[0],t[1],t[0],t[1]]:3===t.length?t=[t[0],t[1],t[2],t[0]]:4!==t.length&&(t=[t[0],t[0],t[0],t[0]]):"number"==typeof t&&(t=[t,t,t,t]),t}}}),C(Ne,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",boxDist:"\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n "}),C(Ne,"onShaderMask","\n vec2 halfDimensions = u_dimensions * 0.5;\n float r = radius[0] * step(v_textureCoordinate.x, 0.5) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[1] * step(0.5, v_textureCoordinate.x) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[2] * step(0.5, v_textureCoordinate.x) * step(0.5, v_textureCoordinate.y);\n r = r + radius[3] * step(v_textureCoordinate.x, 0.5) * step(0.5, v_textureCoordinate.y);\n return $boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions, r);\n "),C(Ne,"onEffectMask","\n return mix(vec4(0.0), maskColor, $fillMask(shaderMask));\n ");class Fe extends pe{constructor(...e){super(...e),C(this,"name","border")}static getEffectKey(){return"border"}static resolveDefaults(e){var t,r;return{width:null!==(t=e.width)&&void 0!==t?t:10,color:null!==(r=e.color)&&void 0!==r?r:4294967295}}}C(Fe,"z$__type__Props",void 0),C(Fe,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>N(e),method:"uniform4fv",type:"vec4"}}),C(Fe,"onEffectMask","\n float mask = clamp(shaderMask + width, 0.0, 1.0) - clamp(shaderMask, 0.0, 1.0);\n return mix(shaderColor, mix(shaderColor, maskColor, maskColor.a), mask);\n "),C(Fe,"onColorize","\n return color;\n ");class Le extends pe{constructor(...e){super(...e),C(this,"name","linearGradient")}static getEffectKey(e){return`linearGradient${e.colors.length}`}static resolveDefaults(e){var t,r,n=null!==(t=e.colors)&&void 0!==t?t:[4278190080,4294967295],o=e.stops||[];if(0===o.length||o.length!==n.length){for(var i=n.length,s=0,a=o;se.map((e=>N(e))).reduce(((e,t)=>e.concat(t)),[]),size:e=>e.colors.length,method:"uniform4fv",type:"vec4"},stops:{value:[],size:e=>e.colors.length,method:"uniform1fv",type:"float"}}),C(Le,"methods",{fromLinear:"\n vec4 function(vec4 linearRGB) {\n vec4 higher = vec4(1.055)*pow(linearRGB, vec4(1.0/2.4)) - vec4(0.055);\n vec4 lower = linearRGB * vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n ",toLinear:"\n vec4 function(vec4 sRGB) {\n vec4 higher = pow((sRGB + vec4(0.055))/vec4(1.055), vec4(2.4));\n vec4 lower = sRGB/vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n ",calcPoint:"\n vec2 function(float d, float angle) {\n return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);\n }\n "}),C(Le,"ColorLoop",(e=>{for(var t="",r=2;r{var t=e.colors.length||1;return`\n float a = angle - (PI / 180.0 * 90.0);\n float lineDist = abs(u_dimensions.x * cos(a)) + abs(u_dimensions.y * sin(a));\n vec2 f = $calcPoint(lineDist * 0.5, a);\n vec2 t = $calcPoint(lineDist * 0.5, a + PI);\n vec2 gradVec = t - f;\n float dist = dot(v_textureCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = $fromLinear(mix($toLinear(colors[0]), $toLinear(colors[1]), stopCalc));\n ${re.ColorLoop(t)}\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n `}));class ze extends pe{constructor(...e){super(...e),C(this,"name","grayscale")}static getEffectKey(){return"grayscale"}static resolveDefaults(e){var t;return{amount:null!==(t=e.amount)&&void 0!==t?t:1}}}C(ze,"uniforms",{amount:{value:1,method:"uniform1f",type:"float"}}),C(ze,"onColorize","\n float grayness = 0.2 * maskColor.r + 0.6 * maskColor.g + 0.2 * maskColor.b;\n return vec4(amount * vec3(grayness) + (1.0 - amount) * maskColor.rgb, maskColor.a);\n ");class Me extends pe{constructor(...e){super(...e),C(this,"name","borderRight")}static getEffectKey(){return"borderRight"}static resolveDefaults(e){var t,r;return{width:null!==(t=e.width)&&void 0!==t?t:10,color:null!==(r=e.color)&&void 0!==r?r:4294967295}}}C(Me,"z$__type__Props",void 0),C(Me,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>N(e),method:"uniform4fv",type:"vec4"}}),C(Me,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",rectDist:"\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n "}),C(Me,"onEffectMask","\n vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "),C(Me,"onColorize","\n return color;\n ");class Pe extends pe{constructor(...e){super(...e),C(this,"name","borderTop")}static getEffectKey(){return"borderTop"}static resolveDefaults(e){var t,r;return{width:null!==(t=e.width)&&void 0!==t?t:10,color:null!==(r=e.color)&&void 0!==r?r:4294967295}}}C(Pe,"z$__type__Props",void 0),C(Pe,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>N(e),method:"uniform4fv",type:"vec4"}}),C(Pe,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",rectDist:"\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n "}),C(Pe,"onEffectMask","\n vec2 pos = vec2(0.0, width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "),C(Pe,"onColorize","\n return color;\n ");class De extends pe{constructor(...e){super(...e),C(this,"name","borderBottom")}static getEffectKey(){return"borderBottom"}static resolveDefaults(e){var t,r;return{width:null!==(t=e.width)&&void 0!==t?t:10,color:null!==(r=e.color)&&void 0!==r?r:4294967295}}}C(De,"z$__type__Props",void 0),C(De,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>N(e),method:"uniform4fv",type:"vec4"}}),C(De,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",rectDist:"\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n "}),C(De,"onEffectMask","\n vec2 pos = vec2(0.0, u_dimensions.y - width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "),C(De,"onColorize","\n return color;\n ");class Oe extends pe{constructor(...e){super(...e),C(this,"name","borderLeft")}static getEffectKey(){return"borderLeft"}static resolveDefaults(e){var t,r;return{width:null!==(t=e.width)&&void 0!==t?t:10,color:null!==(r=e.color)&&void 0!==r?r:4294967295}}}C(Oe,"z$__type__Props",void 0),C(Oe,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>N(e),method:"uniform4fv",type:"vec4"}}),C(Oe,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",rectDist:"\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n "}),C(Oe,"onEffectMask","\n vec2 pos = vec2(width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n "),C(Oe,"onColorize","\n return color;\n ");class Ue extends pe{constructor(...e){super(...e),C(this,"name","glitch")}static getEffectKey(e){return"glitch"}static resolveDefaults(e){var t,r,n,o,i;return{amplitude:null!==(t=e.amplitude)&&void 0!==t?t:.2,narrowness:null!==(r=e.narrowness)&&void 0!==r?r:4,blockiness:null!==(n=e.blockiness)&&void 0!==n?n:2,minimizer:null!==(o=e.minimizer)&&void 0!==o?o:8,time:null!==(i=e.time)&&void 0!==i?i:Date.now()}}}C(Ue,"z$__type__Props",void 0),C(Ue,"uniforms",{amplitude:{value:0,method:"uniform1f",type:"float"},narrowness:{value:0,method:"uniform1f",type:"float"},blockiness:{value:0,method:"uniform1f",type:"float"},minimizer:{value:0,method:"uniform1f",type:"float"},time:{value:0,method:"uniform1f",validator:e=>(Date.now()-e)%1e3,type:"float"}}),C(Ue,"methods",{rand:"\n float function(vec2 p, float time) {\n float t = floor(time * 20.) / 10.;\n return fract(sin(dot(p, vec2(t * 12.9898, t * 78.233))) * 43758.5453);\n }\n ",noise:"\n float function(vec2 uv, float blockiness, float time) {\n vec2 lv = fract(uv);\n vec2 id = floor(uv);\n\n float n1 = rand(id, time);\n float n2 = rand(id+vec2(1,0), time);\n float n3 = rand(id+vec2(0,1), time);\n float n4 = rand(id+vec2(1,1), time);\n vec2 u = smoothstep(0.0, 1.0 + blockiness, lv);\n return mix(mix(n1, n2, u.x), mix(n3, n4, u.x), u.y);\n }\n ",fbm:"\n float function(vec2 uv, int count, float blockiness, float complexity, float time) {\n float val = 0.0;\n float amp = 0.5;\n const int MAX_ITERATIONS = 10;\n\n for(int i = 0; i < MAX_ITERATIONS; i++) {\n if(i >= count) {break;}\n val += amp * noise(uv, blockiness, time);\n amp *= 0.5;\n uv *= complexity;\n }\n return val;\n }\n "}),C(Ue,"onColorize","\n vec2 uv = v_textureCoordinate.xy;\n float aspect = u_dimensions.x / u_dimensions.y;\n vec2 a = vec2(uv.x * aspect , uv.y);\n vec2 uv2 = vec2(a.x / u_dimensions.x, exp(a.y));\n\n float shift = amplitude * pow($fbm(uv2, 4, blockiness, narrowness, time), minimizer);\n float colR = texture2D(u_texture, vec2(uv.x + shift, uv.y)).r * (1. - shift);\n float colG = texture2D(u_texture, vec2(uv.x - shift, uv.y)).g * (1. - shift);\n float colB = texture2D(u_texture, vec2(uv.x - shift, uv.y)).b * (1. - shift);\n\n vec3 f = vec3(colR, colG, colB);\n return vec4(f, texture2D(u_texture, vec2(uv.x - shift, uv.y)).a);\n ");class We extends pe{constructor(...e){super(...e),C(this,"name","fadeOut")}static getEffectKey(){return"fadeOut"}static resolveDefaults(e){var t;return{fade:null!==(t=e.fade)&&void 0!==t?t:10}}}C(We,"z$__type__Props",void 0),C(We,"uniforms",{fade:{value:0,method:"uniform4fv",type:"vec4",validator:e=>{var t=e;return Array.isArray(t)?2===t.length?t=[t[0],t[1],t[0],t[1]]:3===t.length?t=[t[0],t[1],t[2],t[0]]:4!==t.length&&(t=[t[0],t[0],t[0],t[0]]):"number"==typeof t&&(t=[t,t,t,t]),t}}}),C(We,"onColorize","\n vec2 point = v_textureCoordinate.xy * u_dimensions.xy;\n vec2 pos1;\n vec2 pos2;\n vec2 d;\n float c;\n vec4 result = maskColor;\n\n\n if(fade[0] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x, point.y + fade[0]);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[1] > 0.0) {\n pos1 = vec2(point.x - u_dimensions.x - fade[1], v_textureCoordinate.y);\n pos2 = vec2(point.x - u_dimensions.x, v_textureCoordinate.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[2] > 0.0) {\n pos1 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y - fade[2]);\n pos2 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[3] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x + fade[3], point.y);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n return result;\n ");class Ye extends pe{constructor(...e){super(...e),C(this,"name","radialGradient")}static getEffectKey(e){return`radialGradient${e.colors.length}`}static resolveDefaults(e){var t,r,n,o,i,s=null!==(t=e.colors)&&void 0!==t?t:[4278190080,4294967295],a=e.stops||[];if(0===a.length||a.length!==s.length){for(var l=s.length,d=0,u=a;de.map((e=>N(e))).reduce(((e,t)=>e.concat(t)),[]),size:e=>e.colors.length,method:"uniform4fv",type:"vec4"},stops:{value:[],size:e=>e.colors.length,method:"uniform1fv",type:"float"}}),C(Ye,"ColorLoop",(e=>{for(var t="",r=2;r{var t=e.colors.length||1;return`\n vec2 point = v_textureCoordinate.xy * u_dimensions;\n vec2 projection = vec2(pivot.x * u_dimensions.x, pivot.y * u_dimensions.y);\n\n float dist = length((point - projection) / vec2(width, height));\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = mix(colors[0], colors[1], stopCalc);\n ${ne.ColorLoop(t)}\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n `}));class He extends pe{constructor(...e){super(...e),C(this,"name","radialProgress")}static getEffectKey(){return"radialProgress"}static resolveDefaults(e){var t,r,n,o,i,s,a;return{width:null!==(t=e.width)&&void 0!==t?t:10,progress:null!==(r=e.progress)&&void 0!==r?r:.5,offset:null!==(n=e.offset)&&void 0!==n?n:0,range:null!==(o=e.range)&&void 0!==o?o:2*Math.PI,rounded:null!==(i=e.rounded)&&void 0!==i&&i,radius:null!==(s=e.radius)&&void 0!==s?s:1,color:null!==(a=e.color)&&void 0!==a?a:4294967295}}}C(He,"z$__type__Props",void 0),C(He,"uniforms",{width:{value:0,method:"uniform1f",type:"float"},progress:{value:.5,method:"uniform1f",type:"float"},offset:{value:0,method:"uniform1f",type:"float"},range:{value:0,method:"uniform1f",type:"float"},rounded:{value:0,method:"uniform1f",type:"float",validator:e=>e?1:0},radius:{value:1,method:"uniform1f",type:"float"},color:{value:4294967295,validator:e=>N(e),method:"uniform4fv",type:"vec4"}}),C(He,"methods",{rotateUV:"\n vec2 function(vec2 uv, float d) {\n float s = sin(d);\n float c = cos(d);\n mat2 rotMatrix = mat2(c, -s, s, c);\n return uv * rotMatrix;\n }\n ",drawDot:"\n float function(vec2 uv, vec2 p, float r) {\n uv += p;\n float circle = length(uv) - r;\n return clamp(-circle, 0.0, 1.0);\n }\n "}),C(He,"onEffectMask","\n float outerRadius = radius * u_dimensions.y * 0.5;\n\n float endAngle = range * progress - 0.0005;\n\n vec2 uv = v_textureCoordinate.xy * u_dimensions.xy - u_dimensions * 0.5;\n\n uv = $rotateUV(uv, -(offset));\n float linewidth = width * u_pixelRatio;\n float circle = length(uv) - (outerRadius - linewidth) ;\n circle = abs(circle) - linewidth;\n circle = clamp(-circle, 0.0, 1.0);\n\n float angle = (atan(uv.x, -uv.y) / 3.14159265359 * 0.5);\n float p = endAngle / (PI * 2.);\n\n circle *= step(fract(angle), fract(p));\n\n circle = rounded < 1. ? circle : max(circle, $drawDot(uv, vec2(0, outerRadius - linewidth), linewidth));\n circle = rounded < 1. ? circle : max(circle, $drawDot($rotateUV(uv, -(endAngle)), vec2(0, outerRadius - linewidth), linewidth));\n\n return mix(shaderColor, maskColor, circle);\n "),C(He,"onColorize","\n return color;\n ");class je extends pe{constructor(...e){super(...e),C(this,"name","holePunch")}static getEffectKey(){return"holePunch"}static resolveDefaults(e){var t;return{x:e.x||0,y:e.y||0,width:e.width||50,height:e.height||50,radius:null!==(t=e.radius)&&void 0!==t?t:0}}}C(je,"z$__type__Props",void 0),C(je,"uniforms",{x:{value:0,method:"uniform1f",type:"float"},y:{value:0,method:"uniform1f",type:"float"},width:{value:0,method:"uniform1f",type:"float"},height:{value:0,method:"uniform1f",type:"float"},radius:{value:0,method:"uniform4fv",type:"vec4",validator:e=>{var t=e;return Array.isArray(t)?2===t.length?t=[t[0],t[1],t[0],t[1]]:3===t.length?t=[t[0],t[1],t[2],t[0]]:4!==t.length&&(t=[t[0],t[0],t[0],t[0]]):"number"==typeof t&&(t=[t,t,t,t]),t}}}),C(je,"methods",{fillMask:"\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n ",boxDist:"\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n "}),C(je,"onShaderMask","\n vec2 halfDimensions = u_dimensions * 0.5;\n vec2 size = vec2(width, height) * 0.5;\n vec2 basePos = v_textureCoordinate.xy * u_dimensions.xy - vec2(x, y);\n vec2 pos = basePos - size;\n float r = radius[0] * step(pos.x, 0.5) * step(pos.y, 0.5);\n r = r + radius[1] * step(0.5, pos.x) * step(pos.y, 0.5);\n r = r + radius[2] * step(0.5, pos.x) * step(0.5, pos.y);\n r = r + radius[3] * step(pos.x, 0.5) * step(0.5, pos.y);\n return $boxDist(pos, size, r);\n "),C(je,"onEffectMask","\n return mix(maskColor, vec4(0.0), $fillMask(shaderMask));\n ");class Qe{constructor(){C(this,"shCache",new Map),C(this,"shConstructors",{}),C(this,"attachedShader",null),C(this,"effectConstructors",{}),C(this,"renderer",void 0),this.registerShaderType("DefaultShader",Ce),this.registerShaderType("DefaultShaderBatched",Te),this.registerShaderType("RoundedRectangle",Be),this.registerShaderType("DynamicShader",ke),this.registerShaderType("SdfShader",Ee),this.registerEffectType("border",Fe),this.registerEffectType("borderBottom",De),this.registerEffectType("borderLeft",Oe),this.registerEffectType("borderRight",Me),this.registerEffectType("borderTop",Pe),this.registerEffectType("fadeOut",We),this.registerEffectType("linearGradient",Le),this.registerEffectType("radialGradient",Ye),this.registerEffectType("grayscale",ze),this.registerEffectType("glitch",Ue),this.registerEffectType("radius",Ne),this.registerEffectType("radialProgress",He),this.registerEffectType("holePunch",je)}registerShaderType(e,t){this.shConstructors[e]=t}registerEffectType(e,t){this.effectConstructors[e]=t}getRegisteredEffects(){return this.effectConstructors}getRegisteredShaders(){return this.shConstructors}loadShader(e,t){if(!this.renderer)throw new Error("Renderer is not been defined");var r=this.shConstructors[e];if(!r)throw new Error(`Shader type "${e}" is not registered`);if("DynamicShader"===e)return this.loadDynamicShader(t);var n=r.resolveDefaults(t),o=r.makeCacheKey(n)||r.name;if(o&&this.shCache.has(o))return{shader:this.shCache.get(o),props:n};var i=new r(this.renderer,t);return o&&this.shCache.set(o,i),{shader:i,props:n}}loadDynamicShader(e){if(!this.renderer)throw new Error("Renderer is not been defined");var t=ke.resolveDefaults(e,this.effectConstructors),r=ke.makeCacheKey(t,this.effectConstructors);if(r&&this.shCache.has(r))return{shader:this.shCache.get(r),props:t};var n=new ke(this.renderer,e,this.effectConstructors);return r&&this.shCache.set(r,n),{shader:n,props:t}}useShader(e){this.attachedShader!==e&&(this.attachedShader&&this.attachedShader.detach(),e.attach(),this.attachedShader=e)}}class Ke{constructor(){C(this,"data",{})}reset(){this.data={}}increment(e){this.data[e]||(this.data[e]=0),this.data[e]++}getData(){return A({},this.data)}}var $e=function(){var e=w(y().mark((function e(t){var r,n;return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:return r=e.sent,e.next=5,r.arrayBuffer();case 5:if(n=e.sent,-1===t.indexOf(".ktx")){e.next=8;break}return e.abrupt("return",Xe(n));case 8:return e.abrupt("return",Ge(n));case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Xe=function(){var e=w(y().mark((function e(t){var r,n,o,i,s,a,l;return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(r=new DataView(t),n=16909060===r.getUint32(12),o=[],i={glInternalFormat:r.getUint32(28,n),pixelWidth:r.getUint32(36,n),pixelHeight:r.getUint32(40,n),numberOfMipmapLevels:r.getUint32(56,n),bytesOfKeyValueData:r.getUint32(60,n)},s=64,s+=i.bytesOfKeyValueData,a=0;a>2)*(u+3>>2)*8,f=new Uint8Array(r,i.byteOffset+l,c),s.push(f),l+=c,d>>=1,u>>=1;return e.abrupt("return",{data:{glInternalFormat:36196,mipmaps:s,width:a.pixelWidth||0,height:a.pixelHeight||0,type:"pvr"},premultiplyAlpha:!1});case 17:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();class Ve extends O{constructor(e,t){super(e),C(this,"props",void 0),this.props=Ve.resolveDefaults(t)}hasAlphaChannel(e){return-1!==e.indexOf("image/png")}getTextureData(){var e=this;return w(y().mark((function t(){var r,n,o,i,s,a,l;return y().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.props,n=r.src,o=r.premultiplyAlpha,n){t.next=3;break}return t.abrupt("return",{data:null});case 3:if(!(n instanceof ImageData)){t.next=5;break}return t.abrupt("return",{data:n,premultiplyAlpha:o});case 5:if(!/\.(ktx|pvr)$/.test(n)){t.next=7;break}return t.abrupt("return",$e(n));case 7:if(!e.txManager.imageWorkerManager){t.next=13;break}return t.next=10,e.txManager.imageWorkerManager.getImage(n,o);case 10:return t.abrupt("return",t.sent);case 13:if(!e.txManager.hasCreateImageBitmap){t.next=28;break}return t.next=16,fetch(n);case 16:return i=t.sent,t.next=19,i.blob();case 19:return s=t.sent,a=null!=o?o:e.hasAlphaChannel(s.type),t.next=23,createImageBitmap(s,{premultiplyAlpha:a?"premultiply":"none",colorSpaceConversion:"none",imageOrientation:"none"});case 23:return t.t0=t.sent,t.t1=a,t.abrupt("return",{data:t.t0,premultiplyAlpha:t.t1});case 28:return l=new Image,"data:"!=n.substr(0,5)&&(l.crossOrigin="Anonymous"),l.src=n,t.next=33,new Promise(((e,t)=>{l.onload=()=>e(),l.onerror=()=>t(new Error("Failed to load image"))})).catch((e=>{console.error(e)}));case 33:return t.abrupt("return",{data:l,premultiplyAlpha:null==o||o});case 34:case"end":return t.stop()}}),t)})))()}static makeCacheKey(e){var t=Ve.resolveDefaults(e);return!(t.src instanceof ImageData)&&`ImageTexture,${t.src},${t.premultiplyAlpha}`}static resolveDefaults(e){var t,r;return{src:null!==(t=e.src)&&void 0!==t?t:"",premultiplyAlpha:null===(r=e.premultiplyAlpha)||void 0===r||r}}}C(Ve,"z$__type__Props",void 0);class Ze{constructor(e,t=0){C(this,"iterator",void 0),C(this,"peekBuffer",[]),C(this,"_lastIndex",void 0),this.iterator=e,this.iterator=e,this._lastIndex=t-1,this.peekBuffer=[]}next(){var e=this.peekBuffer.length>0?this.peekBuffer.pop():this.iterator.next();return e.done?this._lastIndex=-1:this._lastIndex++,e}peek(){if(this.peekBuffer.length>0)return this.peekBuffer[0];var e=this.iterator.next();return this.peekBuffer.push(e),e}get lastIndex(){return this._lastIndex}}function qe(e,t=0){var r,n;return y().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:r=t;case 1:if(!(r=f.y1,K=E<=f.y2,$=Q&&K;(y=M.next())&&!y.done;){var X=y.value;if(e===c.length)c.push({codepointIndex:X.cluster,maxY:B,maxX:k});else if(e>c.length)throw new Error("Unexpected lineCache length");if(32===X.codepoint||10===X.codepoint?-1!==F.codepointIndex&&(F.codepointIndex=-1,j=I):-1===F.codepointIndex&&(F.codepointIndex=X.cluster,F.bufferOffset=N,F.xStart=j),X.mapped){var G=I+X.xOffset+X.width;if("none"!==h&&G>=H&&-1!==F.codepointIndex&&F.xStart>0){if(Y){M=L.shapeText(z,new Ze(qe(n,F.codepointIndex),F.codepointIndex)),N=F.bufferOffset;break}M=L.shapeText(z,new Ze(qe(m,0),0)),I=F.xStart,N=F.bufferOffset,h="none"}else{var V=I+X.xOffset,Z=E+X.yOffset;if($){-1===P&&(P=N);var q=p.getAtlasEntry(X.glyphId),J=q.x/p.data.common.scaleW,ee=q.y/p.data.common.scaleH,te=q.width/p.data.common.scaleW,re=q.height/p.data.common.scaleH;u[N++]=V,u[N++]=Z,u[N++]=J,u[N++]=ee,u[N++]=V+X.width,u[N++]=Z,u[N++]=J+te,u[N++]=ee,u[N++]=V,u[N++]=Z+X.height,u[N++]=J,u[N++]=ee+re,u[N++]=V+X.width,u[N++]=Z+X.height,u[N++]=J+te,u[N++]=ee+re}B=Math.max(B,Z+X.height),k=Math.max(k,V+X.width),I+=X.xAdvance}}else if(10===X.codepoint){if(Y)break;M=L.shapeText(z,new Ze(qe(m,0),0)),h="none"}}-1!==P&&(D.push({bufferStart:P,bufferEnd:N}),P=-1),I=0,E+=w,e++,F.codepointIndex=-1,j=0,!v&&"both"===h&&E>f.y2||y&&y.done?W=!1:Y||(W=!1)}if("center"===o)for(var ne="none"===h?k:S,oe=0;oe"number"==typeof e?e:tt[e]||400;var nt=D((function(e,t,r,n,o){var i,s=rt(r),a=T(e);try{for(a.s();!(i=a.n()).done;){var l=i.value[t];if(l){if(1===l.size)return console.warn(`TrFontManager: Only one font face found for family: '${t}' - will be used for all weights and styles`),l.values().next().value;var d,u=new Map,h=T(l);try{for(h.s();!(d=h.n()).done;){var c=d.value,f=rt(c.descriptors.weight);if(f===s&&c.descriptors.style===n&&c.descriptors.stretch===o)return c;u.set(f,c)}}catch(v){h.e(v)}finally{h.f()}var p=`TrFontManager: No exact match: '${t} Weight: ${s} Style: ${n} Stretch: ${o}'`;if(console.error(p),400===s&&u.has(500))return u.get(500);if(500===s&&u.has(400))return u.get(400);if(s<400){for(;s>0;){if(u.has(s))return u.get(s);s-=100}s=600}for(;s<1e3;){if(u.has(s))return u.get(s);s+=100}for(s=500;s>0;){if(u.has(s))return u.get(s);s-=100}}}}catch(v){a.e(v)}finally{a.f()}}));class ot{constructor(e){C(this,"textRenderers",void 0),this.textRenderers=e}addFontFace(e){for(var t in this.textRenderers){var r=this.textRenderers[t];r&&r.isFontFaceSupported(e)&&r.addFontFace(e)}}static resolveFontFace(e,t){var r=t.fontFamily,n=t.fontWeight,o=t.fontStyle,i=t.fontStretch;return nt(e,r,n,o,i)}}var it={x:0,y:0,width:0,height:0};class st extends ge{constructor(e){super(e),C(this,"ssdfFontFamilies",{}),C(this,"msdfFontFamilies",{}),C(this,"fontFamilyArray",[this.ssdfFontFamilies,this.msdfFontFamilies]),C(this,"sdfShader",void 0),C(this,"rendererBounds",void 0),this.sdfShader=this.stage.shManager.loadShader("SdfShader").shader,this.rendererBounds={x1:0,y1:0,x2:this.stage.options.appWidth,y2:this.stage.options.appHeight}}getPropertySetters(){return{fontFamily:(e,t)=>{e.props.fontFamily=t,this.releaseFontFace(e),this.invalidateLayoutCache(e)},fontWeight:(e,t)=>{e.props.fontWeight=t,this.releaseFontFace(e),this.invalidateLayoutCache(e)},fontStyle:(e,t)=>{e.props.fontStyle=t,this.releaseFontFace(e),this.invalidateLayoutCache(e)},fontStretch:(e,t)=>{e.props.fontStretch=t,this.releaseFontFace(e),this.invalidateLayoutCache(e)},fontSize:(e,t)=>{e.props.fontSize=t,this.invalidateLayoutCache(e)},text:(e,t)=>{e.props.text=t,this.invalidateLayoutCache(e)},textAlign:(e,t)=>{e.props.textAlign=t,this.invalidateLayoutCache(e)},color:(e,t)=>{e.props.color=t},x:(e,t)=>{e.props.x=t,e.elementBounds.valid&&(this.setElementBoundsX(e),!e.renderWindow.valid&&W(e.elementBounds,this.rendererBounds)&&this.scheduleUpdateState(e))},y:(e,t)=>{e.props.y=t,e.elementBounds.valid&&(this.setElementBoundsY(e),!e.renderWindow.valid&&W(e.elementBounds,this.rendererBounds)&&this.scheduleUpdateState(e))},contain:(e,t)=>{e.props.contain=t,this.invalidateLayoutCache(e)},width:(e,t)=>{e.props.width=t,"none"!==e.props.contain&&this.invalidateLayoutCache(e)},height:(e,t)=>{e.props.height=t,"both"===e.props.contain&&this.invalidateLayoutCache(e)},offsetY:(e,t)=>{e.props.offsetY=t,this.invalidateLayoutCache(e)},scrollable:(e,t)=>{e.props.scrollable=t,this.invalidateLayoutCache(e)},scrollY:(e,t)=>{e.props.scrollY=t,this.scheduleUpdateState(e)},letterSpacing:(e,t)=>{e.props.letterSpacing=t,this.invalidateLayoutCache(e)},lineHeight:(e,t)=>{e.props.lineHeight=t,this.invalidateLayoutCache(e)},maxLines:(e,t)=>{e.props.maxLines=t,this.invalidateLayoutCache(e)},textBaseline:(e,t)=>{e.props.textBaseline=t,this.invalidateLayoutCache(e)},verticalAlign:(e,t)=>{e.props.verticalAlign=t,this.invalidateLayoutCache(e)},overflowSuffix:(e,t)=>{e.props.overflowSuffix=t,this.invalidateLayoutCache(e)},debug:(e,t)=>{e.props.debug=t}}}canRenderFont(e){var t=e.fontFamily;return t in this.ssdfFontFamilies||t in this.msdfFontFamilies||"$$SDF_FAILURE_TEST$$"===t}isFontFaceSupported(e){return e instanceof Y}addFontFace(e){_(e instanceof Y);var t=e.fontFamily,r="ssdf"===e.type?this.ssdfFontFamilies:"msdf"===e.type?this.msdfFontFamilies:void 0;if(r){var n=r[t];n||(n=new Set,r[t]=n),n.add(e)}else console.warn(`Invalid font face type: ${e.type}`)}createState(e){return{props:e,status:"initialState",updateScheduled:!1,emitter:new E,lineCache:[],forceFullLayoutCalc:!1,renderWindow:{screen:{x1:0,y1:0,x2:0,y2:0},sdf:{x1:0,y1:0,x2:0,y2:0},firstLineIdx:0,numLines:0,valid:!1},elementBounds:{x1:0,y1:0,x2:0,y2:0,valid:!1},clippingRect:{x:0,y:0,width:0,height:0,valid:!1},bufferNumFloats:0,bufferNumQuads:0,vertexBuffer:void 0,webGlBuffers:null,bufferUploaded:!1,textH:void 0,textW:void 0,distanceRange:0,trFontFace:void 0,isRenderable:!1,debugData:{updateCount:0,layoutCount:0,lastLayoutNumCharacters:0,layoutSum:0,drawSum:0,drawCount:0,bufferSize:0}}}updateState(e){var t=e.trFontFace,r=e.textH,n=e.lineCache,o=e.debugData,i=e.forceFullLayoutCalc;if(o.updateCount++,"initialState"===e.status&&this.setStatus(e,"loading"),!t){if(t=this.resolveFontFace(e.props),e.trFontFace=t,!t){var s=`SdfTextRenderer: Could not resolve font face for family: '${e.props.fontFamily}'`;return console.error(s),void this.setStatus(e,"failed",new Error(s))}t.texture.setRenderableOwner(e,e.isRenderable)}if(t.loaded){_(t.data,"Font face data should be loaded");var a=e.props,l=a.text,d=a.fontSize,u=a.x,h=a.y,c=a.contain,f=a.width,p=a.height,v=a.lineHeight,g=a.verticalAlign,m=a.scrollable,x=a.overflowSuffix,y=a.maxLines,b="both"===c&&m?e.props.scrollY:0,w=e.renderWindow,S=t.data.info.size,A=d/S,C=v/A;e.distanceRange=A*t.data.distanceField.distanceRange;var T=24*l.length,R=e.vertexBuffer;(!R||R.length=k.x2&&h-b+B.y1<=k.y1&&h-b+B.y2>=k.y2)return void this.setStatus(e,"loaded");w.valid=!1,this.setStatus(e,"loading")}var I=e.props,E=I.offsetY,N=I.textAlign;if(!w.valid){if(!W(k,this.rendererBounds))return;et(w,u,h,b,v,"both"===c?k.y2-k.y1:0,k,A)}var F=function(e,t,r,n,o,i,s,a,l){var d=Math.min(Math.max(s.firstLineIdx,0),a.length),u=0;"middle"===n?u=(t-e)/2:"bottom"===n&&(u=t-e);var h=o/i+d*t+u;if(!(l&&h>=l/i))return{sdfX:0,sdfY:h,lineIndex:d}}(S,C,0,g,E,A,w,n,r);if(F){var L=e.props.letterSpacing,z=Je(F.lineIndex,F.sdfX,F.sdfY,l,N,f,p,d,v,L,R,c,n,w.sdf,t,i,m,x,y);e.bufferUploaded=!1,e.bufferNumFloats=z.bufferNumFloats,e.bufferNumQuads=z.bufferNumQuads,e.vertexBuffer=R,e.renderWindow=w,o.lastLayoutNumCharacters=z.layoutNumCharacters,o.bufferSize=R.byteLength,z.fullyProcessed&&(e.textW=z.maxX*A,e.textH=z.maxY*A),this.setStatus(e,"loaded")}else this.setStatus(e,"loaded")}else t.once("loaded",(()=>{this.scheduleUpdateState(e)}))}renderQuads(e,t,r,n,o,i){var s,a;if(e.vertexBuffer){var l=this.stage.renderer,d=e.props,u=d.fontSize,h=d.color,c=d.contain,f=d.scrollable,p=d.zIndex,v=d.debug,g="both"===c&&f?e.props.scrollY:0,m=e.textW,x=void 0===m?0:m,y=e.textH,b=void 0===y?0:y,w=e.distanceRange,S=e.vertexBuffer,A=e.bufferUploaded,C=e.trFontFace,T=e.elementBounds,R=e.webGlBuffers;if(!R){var k=l.glw,B=4*Float32Array.BYTES_PER_ELEMENT,I=k.createBuffer();_(I),e.webGlBuffers=new H([{buffer:I,attributes:{a_position:{name:"a_position",size:2,type:k.FLOAT,normalized:!1,stride:B,offset:0},a_textureCoordinate:{name:"a_textureCoordinate",size:2,type:k.FLOAT,normalized:!1,stride:B,offset:2*Float32Array.BYTES_PER_ELEMENT}}}]),e.bufferUploaded=!1,_(e.webGlBuffers),R=e.webGlBuffers}if(!A){var E,N,F=l.glw,z=null!==(E=null===(N=R)||void 0===N?void 0:N.getBuffer("a_textureCoordinate"))&&void 0!==E?E:null;F.arrayBufferData(z,S,F.STATIC_DRAW),e.bufferUploaded=!0}if(_(C),f&&"both"===c){_(T.valid);var M=j(T,it);r.valid?(e.clippingRect.valid=!0,r=L(r,M,e.clippingRect)):(e.clippingRect.valid=!0,r=Q(M,e.clippingRect))}var P=new K(l.glw,l.options,R,this.sdfShader,{transform:t.data,color:$(h,n),size:u/((null===(s=C.data)||void 0===s?void 0:s.info.size)||0),scrollY:g,distanceRange:w,debug:v.sdfShaderDebug},n,r,{height:b,width:x},0,p,!1,o,i),D=null===(a=e.trFontFace)||void 0===a?void 0:a.texture;_(D);var O=this.stage.txManager.getCtxTexture(D);P.addTexture(O),P.length=e.bufferNumFloats,P.numQuads=e.bufferNumQuads,l.addRenderOp(P)}}setIsRenderable(e,t){var r;super.setIsRenderable(e,t),null===(r=e.trFontFace)||void 0===r||r.texture.setRenderableOwner(e,t)}destroyState(e){var t;super.destroyState(e),null===(t=e.trFontFace)||void 0===t||t.texture.setRenderableOwner(e,!1)}resolveFontFace(e){return ot.resolveFontFace(this.fontFamilyArray,e)}releaseFontFace(e){e.trFontFace&&(e.trFontFace.texture.setRenderableOwner(e,!1),e.trFontFace=void 0)}invalidateLayoutCache(e){e.renderWindow.valid=!1,e.elementBounds.valid=!1,e.textH=void 0,e.textW=void 0,e.lineCache=[],this.setStatus(e,"loading"),this.scheduleUpdateState(e)}setElementBoundsX(e){var t=e.props,r=t.x,n=t.contain,o=t.width,i=e.elementBounds;i.x1=r,i.x2="none"!==n?r+o:1/0}setElementBoundsY(e){var t=e.props,r=t.y,n=t.contain,o=t.height,i=e.elementBounds;i.y1=r,i.y2="both"===n?r+o:1/0}}function at(e,t){return lt.apply(this,arguments)}function lt(){return(lt=w(y().mark((function e(t,r){var n,o,i;return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,console.log("Loading core extension",t),e.next=4,fe((()=>S.import(t)),void 0);case 4:n=e.sent,e.next=12;break;case 7:return e.prev=7,e.t0=e.catch(0),console.error(`The core extension module at '${t}' could not be loaded.`),console.error(e.t0),e.abrupt("return");case 12:if(n.default){e.next=15;break}return console.error(`The core extension module at '${t}' does not have a default export.`),e.abrupt("return");case 15:if(o=n.default,!(o.prototype instanceof X)){e.next=29;break}return i=new o,e.prev=18,e.next=21,i.run(r);case 21:e.next=27;break;case 23:e.prev=23,e.t1=e.catch(18),console.error(`The core extension at '${t}' threw an error.`),console.error(e.t1);case 27:e.next=30;break;case 29:console.error(`The core extension at '${t}' does not extend CoreExtension.`);case 30:case"end":return e.stop()}}),e,null,[[0,7],[18,23]])})))).apply(this,arguments)}function dt(e){for(var t={boolean:!0,string:!0,number:!0},r=Object.keys(e),n=0;n2048&&(console.warn(`Custom Data value for ${o} is too long, it will be truncated to 2048 characters`),e[o]=i.substring(0,2048)),t[s]||(console.warn(`Custom Data value for ${o} is not a boolean, string, or number, it will be ignored`),delete e[o])}}return e}class ut extends E{constructor(e,t,r){var n,o,i,s;super(),C(this,"root",null),C(this,"driver",void 0),C(this,"canvas",void 0),C(this,"settings",void 0),C(this,"inspector",null),C(this,"nodes",new Map),C(this,"nextTextureId",1),C(this,"textureTracker",void 0);var a={appWidth:e.appWidth||1920,appHeight:e.appHeight||1080,txMemByteThreshold:e.txMemByteThreshold||124e6,boundsMargin:e.boundsMargin||0,deviceLogicalPixelRatio:e.deviceLogicalPixelRatio||1,devicePhysicalPixelRatio:e.devicePhysicalPixelRatio||window.devicePixelRatio,clearColor:null!==(n=e.clearColor)&&void 0!==n?n:0,coreExtensionModule:e.coreExtensionModule||null,experimental_FinalizationRegistryTextureUsageTracker:null!==(o=e.experimental_FinalizationRegistryTextureUsageTracker)&&void 0!==o&&o,textureCleanupOptions:e.textureCleanupOptions||{},fpsUpdateInterval:e.fpsUpdateInterval||0,numImageWorkers:void 0!==e.numImageWorkers?e.numImageWorkers:2,enableContextSpy:null!==(i=e.enableContextSpy)&&void 0!==i&&i,enableInspector:null!==(s=e.enableInspector)&&void 0!==s&&s};this.settings=a;var l=a.appWidth,d=a.appHeight,u=a.deviceLogicalPixelRatio,h=a.devicePhysicalPixelRatio,c=a.enableInspector,f=e=>{this.driver.releaseTexture(e)},p=a.experimental_FinalizationRegistryTextureUsageTracker&&"function"==typeof FinalizationRegistry;this.textureTracker=p?new le(f):new ae(f,this.settings.textureCleanupOptions);var v=l*u,g=d*u;this.driver=r;var m,x=document.createElement("canvas");if(this.canvas=x,x.width=v*h,x.height=g*h,x.style.width=`${v}px`,x.style.height=`${g}px`,!(m="string"==typeof t?document.getElementById(t):t))throw new Error("Could not find target element");r.onCreateNode=e=>{this.nodes.set(e.id,e)},r.onBeforeDestroyNode=e=>{this.nodes.delete(e.id)},r.onFpsUpdate=e=>{this.emit("fpsUpdate",e)},r.onFrameTick=e=>{this.emit("frameTick",e)},r.onIdle=()=>{this.emit("idle")},m.appendChild(x),c&&!R()&&(this.inspector=new ce(x,a))}init(){var e=this;return w(y().mark((function t(){return y().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.driver.init(e,e.settings,e.canvas);case 2:e.root=e.driver.getRootNode();case 3:case"end":return t.stop()}}),t)})))()}createNode(e){return this.inspector?this.inspector.createNode(this.driver,this.resolveNodeDefaults(e)):this.driver.createNode(this.resolveNodeDefaults(e))}createTextNode(e){var t,r,n,o,i,s,a,l,d,u,h,c,f,p,v,g,m,x,y,b=null!==(t=e.fontSize)&&void 0!==t?t:16,w=A(A({},this.resolveNodeDefaults(e)),{},{text:null!==(r=e.text)&&void 0!==r?r:"",textRendererOverride:null!==(n=e.textRendererOverride)&&void 0!==n?n:null,fontSize:b,fontFamily:null!==(o=e.fontFamily)&&void 0!==o?o:"sans-serif",fontStyle:null!==(i=e.fontStyle)&&void 0!==i?i:"normal",fontWeight:null!==(s=e.fontWeight)&&void 0!==s?s:"normal",fontStretch:null!==(a=e.fontStretch)&&void 0!==a?a:"normal",textAlign:null!==(l=e.textAlign)&&void 0!==l?l:"left",contain:null!==(d=e.contain)&&void 0!==d?d:"none",scrollable:null!==(u=e.scrollable)&&void 0!==u&&u,scrollY:null!==(h=e.scrollY)&&void 0!==h?h:0,offsetY:null!==(c=e.offsetY)&&void 0!==c?c:0,letterSpacing:null!==(f=e.letterSpacing)&&void 0!==f?f:0,lineHeight:null!==(p=e.lineHeight)&&void 0!==p?p:b,maxLines:null!==(v=e.maxLines)&&void 0!==v?v:0,textBaseline:null!==(g=e.textBaseline)&&void 0!==g?g:"alphabetic",verticalAlign:null!==(m=e.verticalAlign)&&void 0!==m?m:"top",overflowSuffix:null!==(x=e.overflowSuffix)&&void 0!==x?x:"...",debug:null!==(y=e.debug)&&void 0!==y?y:{}});return this.inspector?this.inspector.createTextNode(this.driver,w):this.driver.createTextNode(w)}resolveNodeDefaults(e){var t,r,n,o,i,s,a,l,d,u,h,c,f,p,v,g,m,x,y,b,w,S,A,C,T,_,R,k,B,I,E,N,F,L,z,M,P,D,O,U,W,Y,H,j,Q,K,$,X,G,V,Z,q,J=null!==(t=e.color)&&void 0!==t?t:4294967295,ee=null!==(r=null!==(n=null!==(o=e.colorTl)&&void 0!==o?o:e.colorTop)&&void 0!==n?n:e.colorLeft)&&void 0!==r?r:J,te=null!==(i=null!==(s=null!==(a=e.colorTr)&&void 0!==a?a:e.colorTop)&&void 0!==s?s:e.colorRight)&&void 0!==i?i:J,re=null!==(l=null!==(d=null!==(u=e.colorBl)&&void 0!==u?u:e.colorBottom)&&void 0!==d?d:e.colorLeft)&&void 0!==l?l:J,ne=null!==(h=null!==(c=null!==(f=e.colorBr)&&void 0!==f?f:e.colorBottom)&&void 0!==c?c:e.colorRight)&&void 0!==h?h:J,oe=dt(null!==(p=e.data)&&void 0!==p?p:{}),ie=null!==(v=null!==(g=null===(m=e.parent)||void 0===m?void 0:m.rtt)&&void 0!==g?g:null===(x=e.parent)||void 0===x?void 0:x.parentHasRenderTexture)&&void 0!==v&&v;return{x:null!==(y=e.x)&&void 0!==y?y:0,y:null!==(b=e.y)&&void 0!==b?b:0,width:null!==(w=e.width)&&void 0!==w?w:0,height:null!==(S=e.height)&&void 0!==S?S:0,alpha:null!==(A=e.alpha)&&void 0!==A?A:1,autosize:null!==(C=e.autosize)&&void 0!==C&&C,clipping:null!==(T=e.clipping)&&void 0!==T&&T,color:J,colorTop:null!==(_=e.colorTop)&&void 0!==_?_:J,colorBottom:null!==(R=e.colorBottom)&&void 0!==R?R:J,colorLeft:null!==(k=e.colorLeft)&&void 0!==k?k:J,colorRight:null!==(B=e.colorRight)&&void 0!==B?B:J,colorBl:re,colorBr:ne,colorTl:ee,colorTr:te,zIndex:null!==(I=e.zIndex)&&void 0!==I?I:0,zIndexLocked:null!==(E=e.zIndexLocked)&&void 0!==E?E:0,parent:null!==(N=e.parent)&&void 0!==N?N:null,texture:null!==(F=e.texture)&&void 0!==F?F:null,shader:null!==(L=e.shader)&&void 0!==L?L:null,src:null!==(z=e.src)&&void 0!==z?z:"",scale:null!==(M=e.scale)&&void 0!==M?M:null,scaleX:null!==(P=null!==(D=e.scaleX)&&void 0!==D?D:e.scale)&&void 0!==P?P:1,scaleY:null!==(O=null!==(U=e.scaleY)&&void 0!==U?U:e.scale)&&void 0!==O?O:1,mount:null!==(W=e.mount)&&void 0!==W?W:0,mountX:null!==(Y=null!==(H=e.mountX)&&void 0!==H?H:e.mount)&&void 0!==Y?Y:0,mountY:null!==(j=null!==(Q=e.mountY)&&void 0!==Q?Q:e.mount)&&void 0!==j?j:0,pivot:null!==(K=e.pivot)&&void 0!==K?K:.5,pivotX:null!==($=null!==(X=e.pivotX)&&void 0!==X?X:e.pivot)&&void 0!==$?$:.5,pivotY:null!==(G=null!==(V=e.pivotY)&&void 0!==V?V:e.pivot)&&void 0!==G?G:.5,rotation:null!==(Z=e.rotation)&&void 0!==Z?Z:0,rtt:null!==(q=e.rtt)&&void 0!==q&&q,parentHasRenderTexture:ie,data:oe}}destroyNode(e){return this.inspector&&this.inspector.destroyNode(e),this.driver.destroyNode(e)}createTexture(e,t,r){var n=this.nextTextureId++,o={descType:"texture",txType:e,props:t,options:A(A({},r),{},{id:n})};return this.textureTracker.registerTexture(o),o}createShader(e,t){return{descType:"shader",shType:e,props:t}}getNodeById(e){return this.nodes.get(e)||null}toggleFreeze(){throw new Error("Not implemented")}advanceFrame(){throw new Error("Not implemented")}rerender(){throw new Error("Not implemented")}}class ht extends E{constructor(e,t,r){super(),C(this,"node",void 0),C(this,"props",void 0),C(this,"settings",void 0),C(this,"propStartValues",{}),C(this,"restoreValues",{}),C(this,"progress",0),C(this,"delayFor",0),C(this,"timingFunction",void 0),C(this,"propsList",void 0),this.node=e,this.props=t,this.settings=r,this.propStartValues={},this.propsList=Object.keys(t),this.propsList.forEach((t=>{this.propStartValues[t]=e[t]})),this.timingFunction=e=>e,r.easing&&"string"==typeof r.easing&&(this.timingFunction=G(r.easing)),this.delayFor=r.delay||0}reset(){this.progress=0,this.delayFor=this.settings.delay||0,this.update(0)}restore(){this.reset(),Object.keys(this.props).forEach((e=>{this.node[e]=this.propStartValues[e]}))}reverse(){this.progress=0,Object.keys(this.props).forEach((e=>{var t=this.props[e],r=this.propStartValues[e];this.props[e]=r,this.propStartValues[e]=t})),this.settings.loop||(this.settings.stopMethod=!1)}applyEasing(e,t,r){return(this.timingFunction(e)||e)*(r-t)+t}update(e){var t=this.settings,r=t.duration,n=t.loop,o=t.easing,i=t.stopMethod;if(r)if(this.delayFor>0)this.delayFor-=e;else if(this.delayFor<=0&&0===this.progress&&this.emit("start",{}),this.progress+=e/r,this.progress>1&&(this.progress=n?0:1,i))this.emit("finished",{});else{for(var s=0;s{this.startedResolve=e})))}makeStoppedPromise(){null===this.stoppedResolve&&(this.stoppedPromise=new Promise((e=>{this.stoppedResolve=e})))}started(){_(this.startedResolve),this.startedResolve(this),this.startedResolve=null}finished(){_(this.stoppedResolve);var e=this.animation.settings,t=e.loop;if("reverse"===e.stopMethod)return this.animation.reverse(),void this.start();this.stoppedResolve(),this.stoppedResolve=null,t||this.manager.unregisterAnimation(this.animation)}}class ft{constructor(e){C(this,"data",void 0),e?(this.data=new Float32Array(9),this.data[0]=e[0],this.data[3]=e[3],this.data[6]=e[6],this.data[1]=e[1],this.data[4]=e[4],this.data[7]=e[7],this.data[2]=e[2],this.data[5]=e[5],this.data[8]=e[8]):this.data=new Float32Array(9)}static get temp(){return vt}static multiply(e,t,r){var n=e.data[0]*t.data[0]+e.data[3]*t.data[1]+e.data[6]*t.data[2],o=e.data[0]*t.data[3]+e.data[3]*t.data[4]+e.data[6]*t.data[5],i=e.data[0]*t.data[6]+e.data[3]*t.data[7]+e.data[6]*t.data[8],s=e.data[1]*t.data[0]+e.data[4]*t.data[1]+e.data[7]*t.data[2],a=e.data[1]*t.data[3]+e.data[4]*t.data[4]+e.data[7]*t.data[5],l=e.data[1]*t.data[6]+e.data[4]*t.data[7]+e.data[7]*t.data[8],d=e.data[2]*t.data[0]+e.data[5]*t.data[1]+e.data[8]*t.data[2],u=e.data[2]*t.data[3]+e.data[5]*t.data[4]+e.data[8]*t.data[5],h=e.data[2]*t.data[6]+e.data[5]*t.data[7]+e.data[8]*t.data[8];return r||(r=new ft),r.data[0]=n,r.data[3]=o,r.data[6]=i,r.data[1]=s,r.data[4]=a,r.data[7]=l,r.data[2]=d,r.data[5]=u,r.data[8]=h,r}static identity(e){return e||(e=new ft),e.data[0]=1,e.data[3]=0,e.data[6]=0,e.data[1]=0,e.data[4]=1,e.data[7]=0,e.data[2]=0,e.data[5]=0,e.data[8]=1,e}static translate(e,t,r){return r||(r=new ft),r.data[0]=1,r.data[3]=0,r.data[6]=e,r.data[1]=0,r.data[4]=1,r.data[7]=t,r.data[2]=0,r.data[5]=0,r.data[8]=1,r}static scale(e,t,r){return r||(r=new ft),r.data[0]=e,r.data[3]=0,r.data[6]=0,r.data[1]=0,r.data[4]=t,r.data[7]=0,r.data[2]=0,r.data[5]=0,r.data[8]=1,r}static rotate(e,t){var r=Math.cos(e),n=Math.sin(e);return t||(t=new ft),t.data[0]=r,t.data[3]=-n,t.data[6]=0,t.data[1]=n,t.data[4]=r,t.data[7]=0,t.data[2]=0,t.data[5]=0,t.data[8]=1,t}static copy(e,t,r){return t||(t=new ft),t.data[0]=e.data[0],t.data[1]=e.data[1],t.data[2]=e.data[2],t.data[3]=e.data[3],t.data[4]=e.data[4],t.data[5]=e.data[5],t.data[6]=e.data[6],t.data[7]=e.data[7],t.data[8]=e.data[8],t}translate(e,t){return this.data[6]=this.data[0]*e+this.data[3]*t+this.data[6],this.data[7]=this.data[1]*e+this.data[4]*t+this.data[7],this}scale(e,t){return this.data[0]=this.data[0]*e,this.data[3]=this.data[3]*t,this.data[1]=this.data[1]*e,this.data[4]=this.data[4]*t,this}rotate(e){if(0===e||!(e%Math.PI*2))return this;var t=Math.cos(e),r=Math.sin(e),n=this.data[0]*t+this.data[3]*r,o=this.data[3]*t-this.data[0]*r,i=this.data[1]*t+this.data[4]*r,s=this.data[4]*t-this.data[1]*r;return this.data[0]=n,this.data[3]=o,this.data[1]=i,this.data[4]=s,this}multiply(e){return ft.multiply(this,e,this)}get tx(){return this.data[6]}get ty(){return this.data[7]}get ta(){return this.data[0]}get tb(){return this.data[3]}get tc(){return this.data[1]}get td(){return this.data[4]}transformPoint(e,t){return[this.data[0]*e+this.data[3]*t+this.data[6],this.data[1]*e+this.data[4]*t+this.data[1]]}}var pt,vt=new ft;class gt{constructor(e){C(this,"data",void 0),this.data=new Float32Array(8),e&&(this.data[0]=e[0],this.data[2]=e[2],this.data[4]=e[4],this.data[6]=e[6],this.data[1]=e[1],this.data[3]=e[3],this.data[5]=e[5],this.data[7]=e[7])}static translate(e,t,r,n,o,i,s,a,l){return l||(l=new gt),l.data[0]=e,l.data[2]=r,l.data[4]=o,l.data[6]=s,l.data[1]=t,l.data[3]=n,l.data[5]=i,l.data[7]=a,l}get x1(){return this.data[0]}get x2(){return this.data[2]}get x3(){return this.data[4]}get x4(){return this.data[6]}get y1(){return this.data[1]}get y2(){return this.data[3]}get y3(){return this.data[5]}get y4(){return this.data[7]}}!function(e){e[e.Init=0]="Init",e[e.OutOfBounds=2]="OutOfBounds",e[e.InBounds=4]="InBounds",e[e.InViewport=8]="InViewport"}(pt||(pt={}));var mt,xt=new Map;xt.set(pt.Init,"init"),xt.set(pt.OutOfBounds,"outOfBounds"),xt.set(pt.InBounds,"inBounds"),xt.set(pt.InViewport,"inViewport"),function(e){e[e.Children=1]="Children",e[e.ScaleRotate=2]="ScaleRotate",e[e.Local=4]="Local",e[e.Global=8]="Global",e[e.Clipping=16]="Clipping",e[e.CalculatedZIndex=32]="CalculatedZIndex",e[e.ZIndexSortedChildren=64]="ZIndexSortedChildren",e[e.PremultipliedColors=128]="PremultipliedColors",e[e.WorldAlpha=256]="WorldAlpha",e[e.RenderState=512]="RenderState",e[e.IsRenderable=1024]="IsRenderable",e[e.None=0]="None",e[e.All=2047]="All"}(mt||(mt={}));class yt extends E{constructor(e,t){super(),C(this,"stage",void 0),C(this,"children",[]),C(this,"props",void 0),C(this,"updateType",mt.All),C(this,"globalTransform",void 0),C(this,"scaleRotateTransform",void 0),C(this,"localTransform",void 0),C(this,"renderCoords",void 0),C(this,"renderBound",void 0),C(this,"strictBound",void 0),C(this,"preloadBound",void 0),C(this,"clippingRect",{x:0,y:0,width:0,height:0,valid:!1}),C(this,"isRenderable",!1),C(this,"renderState",pt.Init),C(this,"worldAlpha",1),C(this,"premultipliedColorTl",0),C(this,"premultipliedColorTr",0),C(this,"premultipliedColorBl",0),C(this,"premultipliedColorBr",0),C(this,"calcZIndex",0),C(this,"hasRTTupdates",!1),C(this,"onTextureLoaded",((e,t)=>{this.autosizeNode(t),this.parentHasRenderTexture&&this.setRTTUpdates(1),this.emit("loaded",{type:"texture",dimensions:t}),queueMicrotask((()=>{this.stage.requestRender()}))})),C(this,"onTextureFailed",((e,t)=>{this.emit("failed",{type:"texture",error:t})})),C(this,"onTextureFreed",(e=>{this.emit("freed",{type:"texture"})})),this.stage=e,this.props=A(A({},t),{},{parent:null,parentHasRenderTexture:!1}),this.parent=t.parent,this.rtt=t.rtt,this.updateScaleRotateTransform()}loadTexture(e,t,r=null){this.props.texture&&this.unloadTexture();var n=this.stage.txManager.loadTexture(e,t,r);this.props.texture=n,this.props.textureOptions=r,this.setUpdateType(mt.IsRenderable),queueMicrotask((()=>{"loaded"===n.state?this.onTextureLoaded(n,n.dimensions):"failed"===n.state?this.onTextureFailed(n,n.error):"freed"===n.state&&this.onTextureFreed(n),n.on("loaded",this.onTextureLoaded),n.on("failed",this.onTextureFailed),n.on("freed",this.onTextureFreed)}))}unloadTexture(){if(this.props.texture){var e=this.props.texture;e.off("loaded",this.onTextureLoaded),e.off("failed",this.onTextureFailed),e.off("freed",this.onTextureFreed),e.setRenderableOwner(this,!1)}this.props.texture=null,this.props.textureOptions=null,this.setUpdateType(mt.IsRenderable)}autosizeNode(e){this.autosize&&(this.width=e.width,this.height=e.height)}loadShader(e,t){var r=this.stage.renderer.getShaderManager();_(r);var n=r.loadShader(e,t),o=n.shader,i=n.props;this.props.shader=o,this.props.shaderProps=i,this.setUpdateType(mt.IsRenderable)}setUpdateType(e){this.updateType|=e;var t=this.props.parent;!t||t.updateType&mt.Children||t.setUpdateType(mt.Children),this.parentHasRenderTexture&&this.setRTTUpdates(e)}sortChildren(){this.children.sort(((e,t)=>e.calcZIndex-t.calcZIndex))}updateScaleRotateTransform(){this.scaleRotateTransform=ft.rotate(this.props.rotation,this.scaleRotateTransform).scale(this.props.scaleX,this.props.scaleY)}updateLocalTransform(){_(this.scaleRotateTransform);var e=this.props.pivotX*this.props.width,t=this.props.pivotY*this.props.height,r=this.props.mountX*this.props.width,n=this.props.mountY*this.props.height;this.localTransform=ft.translate(e-r+this.props.x,t-n+this.props.y,this.localTransform).multiply(this.scaleRotateTransform).translate(-e,-t),this.setUpdateType(mt.Global)}update(e,t){this.updateType&mt.ScaleRotate&&(this.updateScaleRotateTransform(),this.setUpdateType(mt.Local)),this.updateType&mt.Local&&(this.updateLocalTransform(),this.setUpdateType(mt.Global));var r,n=this.props.parent,o=mt.None;this.updateType&mt.Global&&(_(this.localTransform),this.globalTransform=ft.copy((null==n?void 0:n.globalTransform)||this.localTransform,this.globalTransform),this.parentHasRenderTexture&&null!==(r=this.props.parent)&&void 0!==r&&r.rtt&&(this.globalTransform=ft.identity()),n&&this.globalTransform.multiply(this.localTransform),this.calculateRenderCoords(),this.updateBoundingRect(),this.setUpdateType(mt.Clipping|mt.RenderState|mt.Children),o|=mt.Global);this.updateType&mt.Clipping&&(this.calculateClippingRect(t),this.setUpdateType(mt.Children),o|=mt.Clipping),this.updateType&mt.WorldAlpha&&(this.worldAlpha=n?n.worldAlpha*this.props.alpha:this.props.alpha,this.setUpdateType(mt.Children|mt.PremultipliedColors|mt.IsRenderable),o|=mt.WorldAlpha),this.updateType&mt.PremultipliedColors&&(this.premultipliedColorTl=M(this.props.colorTl,this.worldAlpha,!0),this.props.colorTl===this.props.colorTr&&this.props.colorBl===this.props.colorBr&&this.props.colorTl===this.props.colorBl?this.premultipliedColorTr=this.premultipliedColorBl=this.premultipliedColorBr=this.premultipliedColorTl:(this.premultipliedColorTr=M(this.props.colorTr,this.worldAlpha,!0),this.premultipliedColorBl=M(this.props.colorBl,this.worldAlpha,!0),this.premultipliedColorBr=M(this.props.colorBr,this.worldAlpha,!0))),this.updateType&mt.RenderState&&(this.updateRenderState(t),this.setUpdateType(mt.IsRenderable)),this.updateType&mt.IsRenderable&&this.updateIsRenderable(),n&&this.updateType&mt.CalculatedZIndex&&(this.calculateZIndex(),n.setUpdateType(mt.ZIndexSortedChildren)),this.updateType&mt.Children&&this.children.length&&!this.rtt&&this.children.forEach((t=>{t.setUpdateType(o),0!==t.updateType&&t.update(e,this.clippingRect)})),this.updateType&mt.ZIndexSortedChildren&&this.sortChildren(),this.updateType=0}checkRenderProps(){return!!this.props.texture||!(!this.props.width||!this.props.height)&&(!!this.props.shader||(!!this.props.clipping||(0!==this.props.color||(0!==this.props.colorTop||(0!==this.props.colorBottom||(0!==this.props.colorLeft||(0!==this.props.colorRight||(0!==this.props.colorTl||(0!==this.props.colorTr||(0!==this.props.colorBl||0!==this.props.colorBr))))))))))}checkRenderBounds(e){_(this.renderBound);var t=e.width||this.stage.root.width,r=e.height||this.stage.root.height;this.strictBound=I(e.x,e.y,e.x+t,e.y+r,this.strictBound);var n=this.stage.boundsMargin;return this.preloadBound=I(e.x-n[3],e.y-n[0],e.x+t+n[1],e.y+r+n[2],this.preloadBound),Z(this.renderBound,this.strictBound)?pt.InViewport:Z(this.renderBound,this.preloadBound)?pt.InBounds:pt.OutOfBounds}updateRenderState(e){var t=this.checkRenderBounds(e);if(t!==this.renderState){var r=this.renderState;this.renderState=t,r===pt.InViewport&&this.emit("outOfViewport",{previous:r,current:t}),(rpt.InBounds&&t===pt.OutOfBounds)&&(this.emit(xt.get(pt.InBounds),{previous:r,current:t}),r=pt.InBounds);var n=xt.get(t);_(n),this.emit(n,{previous:r,current:t})}}setRenderState(e){e!==this.renderState&&(this.renderState=e,this.emit(pt[e]))}updateIsRenderable(){var e;e=!(0===this.worldAlpha||!this.checkRenderProps())&&this.renderState>pt.OutOfBounds,this.isRenderable!==e&&(this.isRenderable=e,this.onChangeIsRenderable(e))}onChangeIsRenderable(e){var t;null===(t=this.props.texture)||void 0===t||t.setRenderableOwner(this,e)}calculateRenderCoords(){var e=this.width,t=this.height,r=this.globalTransform;_(r);var n=r.tx,o=r.ty,i=r.ta,s=r.tb,a=r.tc,l=r.td;if(0===s&&0===a){var d=n,u=n+e*i,h=o,c=o+t*l;this.renderCoords=gt.translate(d,h,u,h,u,c,d,c,this.renderCoords)}else this.renderCoords=gt.translate(n,o,n+e*i,o+e*a,n+e*i+t*s,o+e*a+t*l,n+t*s,o+t*l,this.renderCoords)}updateBoundingRect(){var e=this.renderCoords,t=this.globalTransform;_(t),_(e);var r=t.tb,n=t.tc,o=e.x1,i=e.y1,s=e.x3,a=e.y3;if(0===r||0===n)this.renderBound=I(o,i,s,a,this.renderBound);else{var l=e.x2,d=e.x4,u=e.y2,h=e.y4;this.renderBound=I(Math.min(o,l,s,d),Math.min(i,u,a,h),Math.max(o,l,s,d),Math.max(i,u,a,h),this.renderBound)}}calculateClippingRect(e){_(this.globalTransform);var t=this.clippingRect,r=this.props,n=this.globalTransform,o=r.clipping,i=0!==n.tb||0!==n.tc;o&&!i?(t.x=n.tx,t.y=n.ty,t.width=this.width*n.ta,t.height=this.height*n.td,t.valid=!0):t.valid=!1,e.valid&&t.valid?L(e,t,t):e.valid&&(Q(e,t),t.valid=!0)}calculateZIndex(){var e,t,r=this.props,n=r.zIndex||0,o=(null===(e=r.parent)||void 0===e?void 0:e.zIndex)||0,i=n;null!==(t=r.parent)&&void 0!==t&&t.zIndexLocked&&(i=n{e.setUpdateType(mt.CalculatedZIndex)}))}get zIndex(){return this.props.zIndex}set zIndex(e){this.props.zIndex=e,this.setUpdateType(mt.CalculatedZIndex|mt.Children),this.children.forEach((e=>{e.setUpdateType(mt.CalculatedZIndex)}))}get parent(){return this.props.parent}set parent(e){var t=this.props.parent;if(t!==e){if(this.props.parent=e,t){var r=t.children.indexOf(this);_(-1!==r,"CoreNode.parent: Node not found in old parent's children!"),t.children.splice(r,1),t.setUpdateType(mt.Children|mt.ZIndexSortedChildren)}e&&(e.children.push(this),this.setUpdateType(mt.All),e.setUpdateType(mt.Children|mt.ZIndexSortedChildren),(e.rtt||e.parentHasRenderTexture)&&this.setRTTUpdates(mt.All)),this.parentHasRenderTexture=(null==e?void 0:e.rtt)||(null==e?void 0:e.parentHasRenderTexture),this.updateScaleRotateTransform()}}get rtt(){return this.props.rtt}set rtt(e){var t;e&&(this.props.rtt=!0,this.hasRTTupdates=!0,null===(t=this.stage.renderer)||void 0===t||t.renderToTexture(this))}set parentHasRenderTexture(e){this.props.parentHasRenderTexture=!!e}get parentHasRenderTexture(){return this.props.parentHasRenderTexture}get framebufferDimensions(){var e;return this.parentHasRenderTexture&&!this.rtt?null===(e=this.parent)||void 0===e?void 0:e.framebufferDimensions:{width:this.width,height:this.height}}get parentRenderTexture(){for(var e=this.parent;e;){if(e.rtt)return e;e=e.parent}return null}get texture(){return this.props.texture}setRTTUpdates(e){var t;this.hasRTTupdates=!0,null===(t=this.parent)||void 0===t||t.setRTTUpdates(e)}}var bt=1;function wt(){return bt++}class St extends E{constructor(e,t,r,n){var o;super(),C(this,"rendererMain",void 0),C(this,"stage",void 0),C(this,"id",void 0),C(this,"coreNode",void 0),C(this,"_children",[]),C(this,"_src",""),C(this,"_parent",null),C(this,"_texture",null),C(this,"_shader",null),C(this,"_data",{}),C(this,"onTextureLoaded",((e,t)=>{this.emit("loaded",t)})),C(this,"onTextureFailed",((e,t)=>{this.emit("failed",t)})),C(this,"onTextureFreed",((e,t)=>{this.emit("freed",t)})),C(this,"onOutOfBounds",((e,t)=>{this.emit("outOfBounds",t)})),C(this,"onInBounds",((e,t)=>{this.emit("inBounds",t)})),C(this,"onOutOfViewport",((e,t)=>{this.emit("outOfViewport",t)})),C(this,"onInViewport",((e,t)=>{this.emit("inViewport",t)})),this.rendererMain=t,this.stage=r,this.id=null!==(o=null==n?void 0:n.id)&&void 0!==o?o:wt(),this.coreNode=n||new yt(this.stage,{id:this.id,x:e.x,y:e.y,width:e.width,height:e.height,alpha:e.alpha,autosize:e.autosize,clipping:e.clipping,color:e.color,colorTop:e.colorTop,colorBottom:e.colorBottom,colorLeft:e.colorLeft,colorRight:e.colorRight,colorTl:e.colorTl,colorTr:e.colorTr,colorBl:e.colorBl,colorBr:e.colorBr,zIndex:e.zIndex,zIndexLocked:e.zIndexLocked,scaleX:e.scaleX,scaleY:e.scaleY,mountX:e.mountX,mountY:e.mountY,mount:e.mount,pivot:e.pivot,pivotX:e.pivotX,pivotY:e.pivotY,rotation:e.rotation,parent:null,shader:null,shaderProps:null,texture:null,textureOptions:null,rtt:e.rtt,parentHasRenderTexture:e.parentHasRenderTexture}),this.coreNode.on("loaded",this.onTextureLoaded),this.coreNode.on("failed",this.onTextureFailed),this.coreNode.on("freed",this.onTextureFreed),this.coreNode.on("outOfBounds",this.onOutOfBounds),this.coreNode.on("inBounds",this.onInBounds),this.coreNode.on("outOfViewport",this.onOutOfViewport),this.coreNode.on("inViewport",this.onInViewport),this.parent=e.parent,this.shader=e.shader,this.texture=e.texture,this.src=e.src,this.rtt=e.rtt,this._data=e.data}get x(){return this.coreNode.x}set x(e){this.coreNode.x=e}get y(){return this.coreNode.y}set y(e){this.coreNode.y=e}get width(){return this.coreNode.width}set width(e){this.coreNode.width=e}get height(){return this.coreNode.height}set height(e){this.coreNode.height=e}get alpha(){return this.coreNode.alpha}set alpha(e){this.coreNode.alpha=e}get autosize(){return this.coreNode.autosize}set autosize(e){this.coreNode.autosize=e}get clipping(){return this.coreNode.clipping}set clipping(e){this.coreNode.clipping=e}get color(){return this.coreNode.color}set color(e){this.coreNode.color=e}get colorTop(){return this.coreNode.colorTop}set colorTop(e){this.coreNode.colorTop=e}get colorBottom(){return this.coreNode.colorBottom}set colorBottom(e){this.coreNode.colorBottom=e}get colorLeft(){return this.coreNode.colorLeft}set colorLeft(e){this.coreNode.colorLeft=e}get colorRight(){return this.coreNode.colorRight}set colorRight(e){this.coreNode.colorRight=e}get colorTl(){return this.coreNode.colorTl}set colorTl(e){this.coreNode.colorTl=e}get colorTr(){return this.coreNode.colorTr}set colorTr(e){this.coreNode.colorTr=e}get colorBl(){return this.coreNode.colorBl}set colorBl(e){this.coreNode.colorBl=e}get colorBr(){return this.coreNode.colorBr}set colorBr(e){this.coreNode.colorBr=e}get scale(){return this.scaleX!==this.scaleY?null:this.coreNode.scaleX}set scale(e){null!==e&&(this.coreNode.scaleX=e,this.coreNode.scaleY=e)}get scaleX(){return this.coreNode.scaleX}set scaleX(e){this.coreNode.scaleX=e}get scaleY(){return this.coreNode.scaleY}set scaleY(e){this.coreNode.scaleY=e}get mount(){return this.coreNode.mount}set mount(e){this.coreNode.mount=e}get mountX(){return this.coreNode.mountX}set mountX(e){this.coreNode.mountX=e}get mountY(){return this.coreNode.mountY}set mountY(e){this.coreNode.mountY=e}get pivot(){return this.coreNode.pivot}set pivot(e){this.coreNode.pivot=e}get pivotX(){return this.coreNode.pivotX}set pivotX(e){this.coreNode.pivotX=e}get pivotY(){return this.coreNode.pivotY}set pivotY(e){this.coreNode.pivotY=e}get rotation(){return this.coreNode.rotation}set rotation(e){this.coreNode.rotation=e}get parent(){return this._parent}set parent(e){var t,r=this._parent;if(this._parent=e,this.coreNode.parent=null!==(t=null==e?void 0:e.coreNode)&&void 0!==t?t:null,r){var n=r.children.indexOf(this);_(-1!==n,"MainOnlyNode.parent: Node not found in old parent's children!"),r.children.splice(n,1)}e&&e.children.push(this)}get children(){return this._children}get zIndex(){return this.coreNode.zIndex}set zIndex(e){this.coreNode.zIndex=e}get zIndexLocked(){return this.coreNode.zIndexLocked}set zIndexLocked(e){this.coreNode.zIndexLocked=e}get src(){return this._src}set src(e){this._src!==e&&(this._src=e,this.texture=e?this.rendererMain.createTexture("ImageTexture",{src:e}):null)}get texture(){return this._texture}set texture(e){this._texture!==e&&(this._texture&&this.rendererMain.textureTracker.decrementTextureRefCount(this._texture),e&&this.rendererMain.textureTracker.incrementTextureRefCount(e),this._texture=e,e?this.coreNode.loadTexture(e.txType,e.props,e.options):this.coreNode.unloadTexture())}get rtt(){return this.coreNode.rtt}set rtt(e){e&&(this.texture=this.rendererMain.createTexture("RenderTexture",{width:this.width,height:this.height},{preload:!0,flipY:!0})),this.coreNode.rtt=e}get parentHasRenderTexture(){return this.coreNode.parentHasRenderTexture}set parentHasRenderTexture(e){this.coreNode.parentHasRenderTexture=e}get shader(){return this._shader}set shader(e){this._shader!==e&&(this._shader=e,e&&this.coreNode.loadShader(e.shType,e.props))}get data(){return this._data}set data(e){this._data=dt(e)}destroy(){this.emit("beforeDestroy",{});for(var e=this.children[0];e;)e.destroy(),e=this.children[0];this.coreNode.destroy(),this.parent=null,this.texture=null,this.emit("afterDestroy",{}),this.removeAllListeners()}flush(){}animate(e,t){var r=new ht(this.coreNode,e,t);return new ct(this.stage.animationManager,r)}}class At{constructor(){C(this,"activeAnimations",new Set)}registerAnimation(e){this.activeAnimations.add(e)}unregisterAnimation(e){this.activeAnimations.delete(e)}update(e){this.activeAnimations.forEach((t=>{t.update(e)}))}}class Ct{constructor(e){C(this,"imageWorkersEnabled",!0),C(this,"messageManager",{}),C(this,"workers",[]),C(this,"workerIndex",0),this.workers=this.createWorkers(e),this.workers.forEach((e=>{e.onmessage=this.handleMessage.bind(this)}))}handleMessage(e){var t=e.data,r=t.src,n=t.data,o=t.error,i=this.messageManager[r];if(i){var s=x(i,2),a=s[0],l=s[1];delete this.messageManager[r],o?l(new Error(o)):a(n)}}createWorkers(e=1){for(var t=new Blob(["\n function hasAlphaChannel(mimeType) {\n return (mimeType.indexOf(\"image/png\") !== -1);\n }\n\n function getImage(src, premultiplyAlpha) {\n return new Promise(function(resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', src, true);\n xhr.responseType = 'blob';\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n var blob = xhr.response;\n var hasAlphaChannel = premultiplyAlpha !== undefined ? premultiplyAlpha : hasAlphaChannel(blob.type);\n\n createImageBitmap(blob, {\n premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',\n colorSpaceConversion: 'none',\n imageOrientation: 'none'\n }).then(function(data) {\n resolve({ data: data, premultiplyAlpha: premultiplyAlpha });\n }).catch(function(error) {\n reject(error);\n });\n } else {\n reject(new Error('Failed to load image: ' + xhr.statusText));\n }\n };\n\n xhr.onerror = function() {\n reject(new Error('Network error occurred while trying to fetch the image.'));\n };\n\n xhr.send();\n });\n }\n\n self.onmessage = (event) => {\n var src = event.data.src;\n var premultiplyAlpha = event.data.premultiplyAlpha;\n\n getImage(src, premultiplyAlpha)\n .then(function(data) {\n self.postMessage({ src: src, data: data }, [data.data]);\n })\n .catch(function(error) {\n self.postMessage({ src: src, error: error.message });\n });\n };\n ".replace('"use strict";',"")],{type:"application/javascript"}),r=(self.URL?URL:webkitURL).createObjectURL(t),n=[],o=0;o{try{if(this.workers){var o=this.convertUrlToAbsolute(e);this.messageManager[o]=[r,n],this.getNextWorker().postMessage({src:o,premultiplyAlpha:t})}}catch(i){n(i)}}))}}class Tt extends O{constructor(e,t){super(e),C(this,"props",void 0),this.props=Tt.resolveDefaults(t)}getTextureData(){var e=this;return w(y().mark((function t(){var r,n,o,i,s,a,l;return y().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(r=e.props,n=r.width,o=r.height,i=n*o*4,s=new Uint8ClampedArray(i),a=0;a{})}setTextureMemUse(e,t){this.textures.has(e)&&(this.memUsed-=this.textures.get(e)),0!==t?(this.memUsed+=t,this.textures.set(e,t),this.memUsed>this.threshold&&this.gc()):this.textures.delete(e)}gc(){this.textures.forEach(((e,t)=>{t.renderable||t.free()}))}}class kt extends E{constructor(e){super(),C(this,"options",void 0),C(this,"animationManager",void 0),C(this,"txManager",void 0),C(this,"txMemManager",void 0),C(this,"fontManager",void 0),C(this,"textRenderers",void 0),C(this,"shManager",void 0),C(this,"renderer",void 0),C(this,"root",void 0),C(this,"boundsMargin",void 0),C(this,"deltaTime",0),C(this,"lastFrameTime",0),C(this,"currentFrameTime",0),C(this,"fpsNumFrames",0),C(this,"fpsElapsedTime",0),C(this,"renderRequested",!1),C(this,"contextSpy",null),this.options=e;var t=e.canvas,r=e.clearColor,n=e.rootId,o=e.debug,i=e.appWidth,s=e.appHeight,a=e.boundsMargin,l=e.enableContextSpy,d=e.numImageWorkers,u=e.txMemByteThreshold;this.txManager=new _t(d),this.txMemManager=new Rt(u),this.shManager=new Qe,this.animationManager=new At,this.contextSpy=l?new Ke:null;var h=[0,0,0,0];a&&(h=Array.isArray(a)?a:[a,a,a,a]),this.boundsMargin=h,null!=o&&o.monitorTextureCache&&setInterval((()=>{_(this.txManager);var e=this.txManager.getDebugInfo();console.log("Texture ID Cache Size: ",e.idCacheSize),console.log("Texture Key Cache Size: ",e.keyCacheSize)}),1e3),this.renderer=new te({stage:this,canvas:t,pixelRatio:e.devicePhysicalPixelRatio*e.deviceLogicalPixelRatio,clearColor:null!=r?r:4278190080,bufferMemory:2e6,txManager:this.txManager,txMemManager:this.txMemManager,shManager:this.shManager,contextSpy:this.contextSpy}),this.txManager.renderer=this.renderer,this.textRenderers={canvas:new Ae(this),sdf:new st(this)},this.fontManager=new ot(this.textRenderers);var c,f,p,v=new yt(this,{id:n,x:0,y:0,width:i,height:s,alpha:1,autosize:!1,clipping:!1,color:0,colorTop:0,colorBottom:0,colorLeft:0,colorRight:0,colorTl:0,colorTr:0,colorBl:0,colorBr:0,zIndex:0,zIndexLocked:0,scaleX:1,scaleY:1,mountX:0,mountY:0,mount:0,pivot:.5,pivotX:.5,pivotY:.5,rotation:0,parent:null,texture:null,textureOptions:null,shader:null,shaderProps:null,rtt:!1});this.root=v,c=this,f=!1,p=()=>{if(c.updateAnimations(),!c.hasSceneUpdates())return c.calculateFps(),setTimeout(p,16.666666666666668),void(f||(c.emit("idle"),f=!0));f=!1,c.drawFrame(),requestAnimationFrame(p)},requestAnimationFrame(p)}updateAnimations(){var e=this.animationManager;this.root&&(this.lastFrameTime=this.currentFrameTime,this.currentFrameTime=performance?performance.now():Date.now(),this.deltaTime=this.lastFrameTime?this.currentFrameTime-this.lastFrameTime:100/6,this.emit("frameTick",{time:this.currentFrameTime,delta:this.deltaTime}),e.update(this.deltaTime))}hasSceneUpdates(){return!!this.root.updateType||this.renderRequested}drawFrame(){var e=this.renderer,t=this.renderRequested;0!==this.root.updateType&&this.root.update(this.deltaTime,this.root.clippingRect),null==e||e.reset(),e.rttNodes.length>0&&e.renderRTTNodes(),this.addQuads(this.root),null==e||e.render(),this.calculateFps(),t&&(this.renderRequested=!1)}calculateFps(){var e=this.options.fpsUpdateInterval;if(e&&(this.fpsNumFrames++,this.fpsElapsedTime+=this.deltaTime,this.fpsElapsedTime>=e)){var t,r,n,o=Math.round(1e3*this.fpsNumFrames/this.fpsElapsedTime);this.fpsNumFrames=0,this.fpsElapsedTime=0,this.emit("fpsUpdate",{fps:o,contextSpyData:null!==(t=null===(r=this.contextSpy)||void 0===r?void 0:r.getData())&&void 0!==t?t:null}),null===(n=this.contextSpy)||void 0===n||n.reset()}}addQuads(e){_(this.renderer&&e.globalTransform),e.isRenderable&&e.renderQuads(this.renderer);for(var t=0;t{var e=this.contain,t=this.trState.props.width,r=this.trState.props.height,n=this.trState.textW||0,o=this.trState.textH||0;"both"===e?(this.props.width=t,this.props.height=r):"width"===e?(this.props.width=t,this.props.height=o):"none"===e&&(this.props.width=n,this.props.height=o),this.updateLocalTransform(),this.stage.requestRender(),this.emit("loaded",{type:"text",dimensions:{width:this.trState.textW||0,height:this.trState.textH||0}})})),C(this,"onTextFailed",((e,t)=>{this.emit("failed",{type:"text",error:t})})),this._textRendererOverride=t.textRendererOverride;var r=this.resolveTextRendererAndState({x:this.absX,y:this.absY,width:t.width,height:t.height,textAlign:t.textAlign,color:t.color,zIndex:t.zIndex,contain:t.contain,scrollable:t.scrollable,scrollY:t.scrollY,offsetY:t.offsetY,letterSpacing:t.letterSpacing,debug:t.debug,fontFamily:t.fontFamily,fontSize:t.fontSize,fontStretch:t.fontStretch,fontStyle:t.fontStyle,fontWeight:t.fontWeight,text:t.text,lineHeight:t.lineHeight,maxLines:t.maxLines,textBaseline:t.textBaseline,verticalAlign:t.verticalAlign,overflowSuffix:t.overflowSuffix}),n=r.resolvedTextRenderer,o=r.textRendererState;this.textRenderer=n,this.trState=o}get width(){return this.props.width}set width(e){this.props.width=e,this.textRenderer.set.width(this.trState,e),"none"===this.contain&&this.setUpdateType(mt.Local)}get height(){return this.props.height}set height(e){this.props.height=e,this.textRenderer.set.height(this.trState,e),"both"!==this.contain&&this.setUpdateType(mt.Local)}get color(){return this.trState.props.color}set color(e){this.textRenderer.set.color(this.trState,e)}get text(){return this.trState.props.text}set text(e){this.textRenderer.set.text(this.trState,e)}get textRendererOverride(){return this._textRendererOverride}set textRendererOverride(e){this._textRendererOverride=e,this.textRenderer.destroyState(this.trState);var t=this.resolveTextRendererAndState(this.trState.props),r=t.resolvedTextRenderer,n=t.textRendererState;this.textRenderer=r,this.trState=n}get fontSize(){return this.trState.props.fontSize}set fontSize(e){this.textRenderer.set.fontSize(this.trState,e)}get fontFamily(){return this.trState.props.fontFamily}set fontFamily(e){this.textRenderer.set.fontFamily(this.trState,e)}get fontStretch(){return this.trState.props.fontStretch}set fontStretch(e){this.textRenderer.set.fontStretch(this.trState,e)}get fontStyle(){return this.trState.props.fontStyle}set fontStyle(e){this.textRenderer.set.fontStyle(this.trState,e)}get fontWeight(){return this.trState.props.fontWeight}set fontWeight(e){this.textRenderer.set.fontWeight(this.trState,e)}get textAlign(){return this.trState.props.textAlign}set textAlign(e){this.textRenderer.set.textAlign(this.trState,e)}get contain(){return this.trState.props.contain}set contain(e){this.textRenderer.set.contain(this.trState,e)}get scrollable(){return this.trState.props.scrollable}set scrollable(e){this.textRenderer.set.scrollable(this.trState,e)}get scrollY(){return this.trState.props.scrollY}set scrollY(e){this.textRenderer.set.scrollY(this.trState,e)}get offsetY(){return this.trState.props.offsetY}set offsetY(e){this.textRenderer.set.offsetY(this.trState,e)}get letterSpacing(){return this.trState.props.letterSpacing}set letterSpacing(e){this.textRenderer.set.letterSpacing(this.trState,e)}get lineHeight(){return this.trState.props.lineHeight}set lineHeight(e){this.textRenderer.set.lineHeight&&this.textRenderer.set.lineHeight(this.trState,e)}get maxLines(){return this.trState.props.maxLines}set maxLines(e){this.textRenderer.set.maxLines&&this.textRenderer.set.maxLines(this.trState,e)}get textBaseline(){return this.trState.props.textBaseline}set textBaseline(e){this.textRenderer.set.textBaseline&&this.textRenderer.set.textBaseline(this.trState,e)}get verticalAlign(){return this.trState.props.verticalAlign}set verticalAlign(e){this.textRenderer.set.verticalAlign&&this.textRenderer.set.verticalAlign(this.trState,e)}get overflowSuffix(){return this.trState.props.overflowSuffix}set overflowSuffix(e){this.textRenderer.set.overflowSuffix&&this.textRenderer.set.overflowSuffix(this.trState,e)}get debug(){return this.trState.props.debug}set debug(e){this.textRenderer.set.debug(this.trState,e)}update(e,t){super.update(e,t),_(this.globalTransform),this.textRenderer.set.x(this.trState,this.globalTransform.tx),this.textRenderer.set.y(this.trState,this.globalTransform.ty)}checkRenderProps(){return""!==this.trState.props.text||super.checkRenderProps()}onChangeIsRenderable(e){super.onChangeIsRenderable(e),this.textRenderer.setIsRenderable(this.trState,e)}renderQuads(e){var t,r;if(_(this.globalTransform),this.parentHasRenderTexture){if(!e.renderToTextureActive)return;if(this.parentRenderTexture!==e.activeRttNode)return}this.parentHasRenderTexture&&null!==(t=this.props.parent)&&void 0!==t&&t.rtt&&(this.globalTransform=ft.identity(),this.globalTransform.multiply(null!==(r=this.localTransform)&&void 0!==r?r:ft.identity()));_(this.globalTransform),this.textRenderer.renderQuads(this.trState,this.globalTransform,this.clippingRect,this.worldAlpha,this.parentHasRenderTexture,this.framebufferDimensions)}destroy(){super.destroy(),this.textRenderer.destroyState(this.trState)}resolveTextRendererAndState(e){var t=this.stage.resolveTextRenderer(e,this._textRendererOverride),r=t.createState(e);return r.emitter.on("loaded",this.onTextLoaded),r.emitter.on("failed",this.onTextFailed),t.scheduleUpdateState(r),{resolvedTextRenderer:t,textRendererState:r}}}class It extends St{constructor(e,t,r){super(e,t,r,new Bt(r,{id:wt(),x:e.x,y:e.y,width:e.width,height:e.height,alpha:e.alpha,autosize:e.autosize,clipping:e.clipping,color:e.color,colorTop:e.colorTop,colorBottom:e.colorBottom,colorLeft:e.colorLeft,colorRight:e.colorRight,colorTl:e.colorTl,colorTr:e.colorTr,colorBl:e.colorBl,colorBr:e.colorBr,zIndex:e.zIndex,zIndexLocked:e.zIndexLocked,scaleX:e.scaleX,scaleY:e.scaleY,mountX:e.mountX,mountY:e.mountY,mount:e.mount,pivot:e.pivot,pivotX:e.pivotX,pivotY:e.pivotY,rotation:e.rotation,text:e.text,fontSize:e.fontSize,fontFamily:e.fontFamily,fontWeight:e.fontWeight,fontStretch:e.fontStretch,fontStyle:e.fontStyle,contain:e.contain,scrollable:e.scrollable,letterSpacing:e.letterSpacing,textAlign:e.textAlign,scrollY:e.scrollY,offsetY:e.offsetY,textRendererOverride:e.textRendererOverride,lineHeight:e.lineHeight,maxLines:e.maxLines,textBaseline:e.textBaseline,verticalAlign:e.verticalAlign,overflowSuffix:e.overflowSuffix,debug:e.debug,parent:null,texture:null,textureOptions:null,shader:null,shaderProps:null,rtt:!1,parentHasRenderTexture:!1}))}get text(){return this.coreNode.text}set text(e){this.coreNode.text=e}get textRendererOverride(){return this.coreNode.textRendererOverride}set textRendererOverride(e){this.coreNode.textRendererOverride=e}get fontSize(){return this.coreNode.fontSize}set fontSize(e){this.coreNode.fontSize=e}get fontFamily(){return this.coreNode.fontFamily}set fontFamily(e){this.coreNode.fontFamily=e}get fontWeight(){return this.coreNode.fontWeight}set fontWeight(e){this.coreNode.fontWeight=e}get fontStretch(){return this.coreNode.fontStretch}set fontStretch(e){this.coreNode.fontStretch=e}get fontStyle(){return this.coreNode.fontStyle}set fontStyle(e){this.coreNode.fontStyle=e}get textAlign(){return this.coreNode.textAlign}set textAlign(e){this.coreNode.textAlign=e}get contain(){return this.coreNode.contain}set contain(e){this.coreNode.contain=e}get scrollable(){return this.coreNode.scrollable}set scrollable(e){this.coreNode.scrollable=e}get scrollY(){return this.coreNode.scrollY}set scrollY(e){this.coreNode.scrollY=e}get offsetY(){return this.coreNode.offsetY}set offsetY(e){this.coreNode.offsetY=e}get letterSpacing(){return this.coreNode.letterSpacing}set letterSpacing(e){this.coreNode.letterSpacing=e}get lineHeight(){return this.coreNode.lineHeight}set lineHeight(e){e&&(this.coreNode.lineHeight=e)}get maxLines(){return this.coreNode.maxLines}set maxLines(e){e&&(this.coreNode.maxLines=e)}get textBaseline(){return this.coreNode.textBaseline}set textBaseline(e){e&&(this.coreNode.textBaseline=e)}get verticalAlign(){return this.coreNode.verticalAlign}set verticalAlign(e){e&&(this.coreNode.verticalAlign=e)}get overflowSuffix(){return this.coreNode.overflowSuffix}set overflowSuffix(e){e&&(this.coreNode.overflowSuffix=e)}get debug(){return this.coreNode.debug}set debug(e){this.coreNode.debug=e}}class Et{constructor(){C(this,"root",null),C(this,"stage",null),C(this,"rendererMain",null)}init(e,t,r){var n=this;return w(y().mark((function o(){var i;return y().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(n.stage=new kt({rootId:wt(),appWidth:t.appWidth,appHeight:t.appHeight,txMemByteThreshold:t.txMemByteThreshold,boundsMargin:t.boundsMargin,deviceLogicalPixelRatio:t.deviceLogicalPixelRatio,devicePhysicalPixelRatio:t.devicePhysicalPixelRatio,clearColor:t.clearColor,canvas:r,fpsUpdateInterval:t.fpsUpdateInterval,enableContextSpy:t.enableContextSpy,numImageWorkers:t.numImageWorkers,debug:{monitorTextureCache:!1}}),n.rendererMain=e,_(n.stage.root),i=new St(e.resolveNodeDefaults({}),n.rendererMain,n.stage,n.stage.root),n.root=i,i.once("beforeDestroy",n.onBeforeDestroyNode.bind(n,i)),n.onCreateNode(i),!t.coreExtensionModule){o.next=10;break}return o.next=10,at(t.coreExtensionModule,n.stage);case 10:n.stage.on("fpsUpdate",((e,t)=>{n.onFpsUpdate(t)})),n.stage.on("frameTick",((e,t)=>{n.onFrameTick(t)})),n.stage.on("idle",(()=>{n.onIdle()}));case 13:case"end":return o.stop()}}),o)})))()}createNode(e){_(this.rendererMain),_(this.stage);var t=new St(e,this.rendererMain,this.stage);return t.once("beforeDestroy",this.onBeforeDestroyNode.bind(this,t)),this.onCreateNode(t),t}createTextNode(e){_(this.rendererMain),_(this.stage);var t=new It(e,this.rendererMain,this.stage);return t.once("beforeDestroy",this.onBeforeDestroyNode.bind(this,t)),this.onCreateNode(t),t}destroyNode(e){e.destroy()}releaseTexture(e){var t=this.stage;_(t),t.txManager.removeTextureIdFromCache(e)}getRootNode(){return _(this.root),this.root}onCreateNode(e){throw new Error("Method not implemented.")}onBeforeDestroyNode(e){throw new Error("Method not implemented.")}onFpsUpdate(e){throw new Error("Method not implemented.")}onFrameTick(e){throw new Error("Method not implemented.")}onIdle(){throw new Error("Method not implemented.")}}var Nt,Ft=(e,t)=>e===t,Lt=Symbol("solid-proxy"),zt=Symbol("solid-track"),Mt={equals:Ft},Pt=xr,Dt=1,Ot=2,Ut={owned:null,cleanups:null,context:null,owner:null},Wt={},Yt=null,Ht=null,jt=null,Qt=null,Kt=null,$t=0;function Xt(e,t){var r=jt,n=Yt,o=0===e.length,i=void 0===t?n:t,s=o?Ut:{owned:null,cleanups:null,context:i?i.context:null,owner:i},a=o?e:()=>e((()=>rr((()=>Sr(s)))));Yt=s,jt=null;try{return mr(a,!0)}finally{jt=r,Yt=n}}function Gt(e,t){var r={value:e,observers:null,observerSlots:null,comparator:(t=t?Object.assign({},Mt,t):Mt).equals||void 0};return[cr.bind(r),e=>("function"==typeof e&&(e=e(r.value)),fr(r,e))]}function Vt(e,t,r){pr(vr(e,t,!0,Dt))}function Zt(e,t,r){pr(vr(e,t,!1,Dt))}function qt(e,t,r){Pt=yr;var n=vr(e,t,!1,Dt);r&&r.render||(n.user=!0),Kt?Kt.push(n):pr(n)}function Jt(e,t,r){r=r?Object.assign({},Mt,r):Mt;var n=vr(e,t,!0,0);return n.observers=null,n.observerSlots=null,n.comparator=r.equals||void 0,pr(n),cr.bind(n)}function er(e,t,r){var n,o,i;2===arguments.length&&"object"==typeof t||1===arguments.length?(n=!0,o=e,i=t||{}):(n=e,o=t,i=r||{});var s=null,a=Wt,l=!1,d="initialValue"in i,u="function"==typeof n&&Jt(n),h=new Set,c=x((i.storage||Gt)(i.initialValue),2),f=c[0],p=c[1],v=x(Gt(void 0),2),g=v[0],m=v[1],y=x(Gt(void 0,{equals:!1}),2),b=y[0],w=y[1],S=x(Gt(d?"ready":"unresolved"),2),A=S[0],C=S[1];function _(e,t,r,n){return s===e&&(s=null,void 0!==n&&(d=!0),e!==a&&t!==a||!i.onHydrated||queueMicrotask((()=>i.onHydrated(n,{value:t}))),a=Wt,function(e,t){mr((()=>{void 0===t&&p((()=>e)),C(void 0!==t?"errored":d?"ready":"unresolved"),m(t);var r,n=T(h.keys());try{for(n.s();!(r=n.n()).done;){r.value.decrement()}}catch(t){n.e(t)}finally{n.f()}h.clear()}),!1)}(t,r)),t}function R(){var e=Nt,t=f(),r=g();if(void 0!==r&&!s)throw r;return jt&&!jt.user&&e&&Vt((()=>{b(),s&&(e.resolved||h.has(e)||(e.increment(),h.add(e)))})),t}function k(e=!0){if(!1===e||!l){l=!1;var t=u?u():n;if(null!=t&&!1!==t){var r,i=a!==Wt?a:rr((()=>o(t,{value:f(),refetching:e})));return(r=i)&&"object"==typeof r&&"then"in r?(s=i,"value"in i?("success"===i.status?_(s,i.value,void 0,t):_(s,void 0,void 0,t),i):(l=!0,queueMicrotask((()=>l=!1)),mr((()=>{C(d?"refreshing":"pending"),w()}),!1),i.then((e=>_(i,e,void 0,t)),(e=>_(i,void 0,Ar(e),t))))):(_(s,i,void 0,t),i)}_(s,rr(f))}}return Object.defineProperties(R,{state:{get:()=>A()},error:{get:()=>g()},loading:{get(){var e=A();return"pending"===e||"refreshing"===e}},latest:{get(){if(!d)return R();var e=g();if(e&&!s)throw e;return f()}}}),u?Vt((()=>k(!1))):k(!1),[R,{refetch:k,mutate:p}]}function tr(e,t=Ft,r){var n=new Map,o=vr((r=>{var o,i=e(),s=T(n.entries());try{for(s.s();!(o=s.n()).done;){var a=x(o.value,2),l=a[0],d=a[1];if(t(l,i)!==t(l,r)){var u,h=T(d.values());try{for(h.s();!(u=h.n()).done;){var c=u.value;c.state=Dt,c.pure?Qt.push(c):Kt.push(c)}}catch(f){h.e(f)}finally{h.f()}}}}catch(f){s.e(f)}finally{s.f()}return i}),void 0,!0,Dt);return pr(o),e=>{var r,i=jt;i&&((r=n.get(e))?r.add(i):n.set(e,r=new Set([i])),ir((()=>{r.delete(i),!r.size&&n.delete(e)})));return t(e,o.value)}}function rr(e){if(null===jt)return e();var t=jt;jt=null;try{return e()}finally{jt=t}}function nr(e,t,r){var n,o=Array.isArray(e),i=r&&r.defer;return r=>{var s;if(o){s=Array(e.length);for(var a=0;at(s,n,r)));return n=s,l}}function or(e){qt((()=>rr(e)))}function ir(e){return null===Yt||(null===Yt.cleanups?Yt.cleanups=[e]:Yt.cleanups.push(e)),e}function sr(){return Yt}function ar(e,t){var r=Yt,n=jt;Yt=e,jt=null;try{return mr(t,!0)}catch(o){Cr(o)}finally{Yt=r,jt=n}}function lr(e){var t=jt,r=Yt;return Promise.resolve().then((()=>{jt=t,Yt=r,mr(e,!1),jt=Yt=null}))}function dr(e,t){var r=Symbol("context");return{id:r,Provider:_r(r),defaultValue:e}}function ur(e){return Yt&&Yt.context&&void 0!==Yt.context[e.id]?Yt.context[e.id]:e.defaultValue}function hr(e){var t=Jt(e),r=Jt((()=>Tr(t())));return r.toArray=()=>{var e=r();return Array.isArray(e)?e:null!=e?[e]:[]},r}function cr(){if(this.sources&&this.state)if(this.state===Dt)pr(this);else{var e=Qt;Qt=null,mr((()=>br(this)),!1),Qt=e}if(jt){var t=this.observers?this.observers.length:0;jt.sources?(jt.sources.push(this),jt.sourceSlots.push(t)):(jt.sources=[this],jt.sourceSlots=[t]),this.observers?(this.observers.push(jt),this.observerSlots.push(jt.sources.length-1)):(this.observers=[jt],this.observerSlots=[jt.sources.length-1])}return this.value}function fr(e,t,r){var n=e.value;return e.comparator&&e.comparator(n,t)||(e.value=t,e.observers&&e.observers.length&&mr((()=>{for(var t=0;t1e6)throw Qt=[],new Error}),!1)),t}function pr(e){if(e.fn){Sr(e);var t=$t;!function(e,t,r){var n,o=Yt,i=jt;jt=Yt=e;try{n=e.fn(t)}catch(s){return e.pure&&(e.state=Dt,e.owned&&e.owned.forEach(Sr),e.owned=null),e.updatedAt=r+1,Cr(s)}finally{jt=i,Yt=o}(!e.updatedAt||e.updatedAt<=r)&&(null!=e.updatedAt&&"observers"in e?fr(e,n):e.value=n,e.updatedAt=r)}(e,e.value,t)}}function vr(e,t,r,n=Dt,o){var i={fn:e,state:n,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:Yt,context:Yt?Yt.context:null,pure:r};return null===Yt||Yt!==Ut&&(Yt.owned?Yt.owned.push(i):Yt.owned=[i]),i}function gr(e){if(0!==e.state){if(e.state===Ot)return br(e);if(e.suspense&&rr(e.suspense.inFallback))return e.suspense.effects.push(e);for(var t=[e];(e=e.owner)&&(!e.updatedAt||e.updatedAt<$t);)e.state&&t.push(e);for(var r=t.length-1;r>=0;r--)if((e=t[r]).state===Dt)pr(e);else if(e.state===Ot){var n=Qt;Qt=null,mr((()=>br(e,t[0])),!1),Qt=n}}}function mr(e,t){if(Qt)return e();var r=!1;t||(Qt=[]),Kt?r=!0:Kt=[],$t++;try{var n=e();return function(e){Qt&&(xr(Qt),Qt=null);if(e)return;var t=Kt;Kt=null,t.length&&mr((()=>Pt(t)),!1)}(r),n}catch(o){r||(Kt=null),Qt=null,Cr(o)}}function xr(e){for(var t=0;t=0;t--)Sr(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}e.state=0}function Ar(e){return e instanceof Error?e:new Error("string"==typeof e?e:"Unknown error",{cause:e})}function Cr(e,t=Yt){throw Ar(e)}function Tr(e){if("function"==typeof e&&!e.length)return Tr(e());if(Array.isArray(e)){for(var t=[],r=0;rr=rr((()=>(Yt.context=A(A({},Yt.context),{},{[e]:t.value}),hr((()=>t.children)))))),void 0),r}}var Rr=Symbol("fallback");function kr(e){for(var t=0;te(t||{})))}function Ir(){return!0}var Er={get:(e,t,r)=>t===Lt?r:e.get(t),has:(e,t)=>t===Lt||e.has(t),set:Ir,deleteProperty:Ir,getOwnPropertyDescriptor:(e,t)=>({configurable:!0,enumerable:!0,get:()=>e.get(t),set:Ir,deleteProperty:Ir}),ownKeys:e=>e.keys()};function Nr(e){return(e="function"==typeof e?e():e)?e:{}}function Fr(){for(var e=0,t=this.length;e=0;r--){var n=Nr(e[r])[t];if(void 0!==n)return n}},has(t){for(var r=e.length-1;r>=0;r--)if(t in Nr(e[r]))return!0;return!1},keys(){for(var t=[],r=0;r=0;s--){var a=e[s];if(a)for(var l=Object.getOwnPropertyNames(a),d=function(){var e=l[u];if("__proto__"===e||"constructor"===e)return 1;var t=Object.getOwnPropertyDescriptor(a,e);if(i[e]){var r=o[e];r&&(t.get?r.push(t.get.bind(a)):void 0!==t.value&&r.push((()=>t.value)))}else i[e]=t.get?{enumerable:!0,configurable:!0,get:Fr.bind(o[e]=[t.get.bind(a)])}:void 0!==t.value?t:void 0},u=l.length-1;u>=0;u--)d()}for(var h={},c=Object.keys(i),f=c.length-1;f>=0;f--){var p=c[f],v=i[p];v&&v.get?Object.defineProperty(h,p,v):h[p]=v?v.value:void 0}return h}var zr=e=>`Stale read from <${e}>.`;function Mr(e){var t="fallback"in e&&{fallback:()=>e.fallback};return Jt(function(e,t,r={}){var n=[],o=[],i=[],s=0,a=t.length>1?[]:null;return ir((()=>kr(i))),()=>{var l,d,u=e()||[];return u[zt],rr((()=>{var e,t,c,f,p,v,g,m,x,y=u.length;if(0===y)0!==s&&(kr(i),i=[],n=[],o=[],s=0,a&&(a=[])),r.fallback&&(n=[Rr],o[0]=Xt((e=>(i[0]=e,r.fallback()))),s=1);else if(0===s){for(o=new Array(y),d=0;d=v&&m>=v&&n[g]===u[m];g--,m--)c[m]=o[g],f[m]=i[g],a&&(p[m]=a[g]);for(e=new Map,t=new Array(m+1),d=m;d>=v;d--)x=u[d],l=e.get(x),t[d]=void 0===l?-1:l,e.set(x,d);for(l=v;l<=g;l++)x=n[l],void 0!==(d=e.get(x))&&-1!==d?(c[d]=o[l],f[d]=i[l],a&&(p[d]=a[l]),d=t[d],e.set(x,d)):i[l]();for(d=v;de.each),e.children,t||void 0))}function Pr(e){var t=e.keyed,r=Jt((()=>e.when),void 0,{equals:(e,r)=>t?e===r:!e==!r});return Jt((()=>{var n=r();if(n){var o=e.children;return"function"==typeof o&&o.length>0?rr((()=>o(t?n:()=>{if(!rr(r))throw zr("Show");return e.when}))):o}return e.fallback}),void 0,void 0)}var Dr,Or;function Ur(e={},t="app"){var r=new Et;return Dr=new ut(e,t,r),Or=Dr.createShader.bind(Dr),Dr}class Wr extends Array{constructor(e){super(),C(this,"_parent",void 0),this._parent=e}get selected(){return this[this._parent.selected||0]}get firstChild(){return this[0]}insert(e,t){if(t){var r=this.indexOf(t);this.splice(r,0,e)}else this.push(e);e.parent=this._parent,this._parent._isDirty=!0}remove(e){var t=this.indexOf(e);t>=0&&this.splice(t,1)}}var Yr={debug:!1,animationsEnabled:!0,animationSettings:{duration:250,easing:"ease-in-out"},fontSettings:{fontFamily:"Ubuntu",fontSize:100}};function Hr(e,t,...r){false}function jr(e){return"function"==typeof e}function Qr(e){return Array.isArray(e)}function Kr(e,t={}){if(Qr(e))e.forEach((e=>{Kr(e,t)}));else if(e)for(var r in e)void 0===t[r]&&(t[r]=e[r]);return t}class $r extends Array{constructor(e,t={}){return Qr(t)?(super(...t),C(this,"onChange",void 0)):"string"==typeof t?(super(t),C(this,"onChange",void 0)):(super(...Object.entries(t).filter((([e,t])=>t)).map((([e])=>e))),C(this,"onChange",void 0)),this.onChange=e,this}has(e){return this.indexOf(e)>=0}is(e){return this.indexOf(e)>=0}add(e){this.push(e),this.onChange()}toggle(e){this.has(e)?this.remove(e):this.add(e)}remove(e){var t=this.indexOf(e);t>=0&&(this.splice(t,1),this.onChange())}}var Xr=x(Gt(void 0),2),Gr=Xr[0],Vr=Xr[1],Zr=Yr.animationSettings;function qr(e){for(var t=[],r=0,n=Object.entries(e);rVr(this)))}else this.autofocus=!0}isTextNode(){return"text"===this.name}_resizeOnTextLoad(){this.lng.on("loaded",((e,t)=>{if("text"===t.type){var r=t.dimensions;this.parent.updateLayout(this,r)}}))}getText(){return this.children.map((e=>e.text)).join("")}destroy(){var e;this._queueDelete&&(null===(e=this.lng)||void 0===e||e.destroy())}set onEvents(e){this._events=e}get onEvents(){return this._events||[]}set style(e){for(var t in Qr(e)?this._style=Kr(e):this._style=e,this._style)void 0===this[t]&&(this[t]=this._style[t])}get style(){return this._style}get hasChildren(){return this.children.length>0}getChildById(e){return this.children.find((t=>t.id===e))}searchChildrenById(e){for(var t=0;t(e.flexOrder||0)-(t.flexOrder||0)));var i=t.length,s="row"===(e.flexDirection||"row"),a=s?"width":"height",l=s?"height":"width",d=s?"marginLeft":"marginTop",u=s?"marginRight":"marginBottom",h=s?"x":"y",c=s?"y":"x",f=e[a]||0,p=e[l]||0,v=e.gap||0,g=e.justifyContent||"flexStart",m=e.alignItems,x=0;["center","spaceBetween","spaceEvenly"].includes(g)&&(x=t.reduce(((e,t)=>e+(t[a]||0)),0));var y=p&&m?e=>{"flexStart"===m?e[c]=0:"center"===m?e[c]=(p-(e[l]||0))/2:"flexEnd"===m&&(e[c]=p-(e[l]||0))}:e=>e;if("flexStart"===g){var b=0;if(t.forEach((e=>{e[h]=b+(e[d]||0),b+=(e[a]||0)+v+(e[d]||0)+(e[u]||0),y(e)})),"fixed"!==e.flexBoundary){var w=b-v;if(w!==e[a])return e[a]=w,!0}}else if("flexEnd"===g)for(var S=f,A=i-1;A>=0;A--){var C=t[A];_(C),C[h]=S-(C[a]||0)-(C[u]||0),S-=(C[a]||0)+v+(C[d]||0)+(C[u]||0),y(C)}else if("center"===g){var T=(f-(x+v*(i-1)))/2;t.forEach((e=>{e[h]=T,T+=(e[a]||0)+v,y(e)}))}else if("spaceBetween"===g){var R=(f-x)/(i-1),k=0;t.forEach((e=>{e[h]=k,k+=(e[a]||0)+R,y(e)}))}else if("spaceEvenly"===g){var B=(f-x)/(i+1),I=B;t.forEach((e=>{e[h]=I,I+=(e[a]||0)+B,y(e)}))}return!1}(this)||n)null===(r=this.parent)||void 0===r||r.updateLayout()}else if(n){var o;null===(o=this.parent)||void 0===o||o.updateLayout()}jr(this.onLayout)&&this.onLayout.call(this,e,t)}}_stateChanged(){if(Hr(0,0,this.states),this.forwardStates){var e=this.states.slice();this.children.forEach((t=>t.states=e))}var t=this.states;if(this._undoStyles||this.style&&function(e,t){var r,n=T(t);try{for(n.s();!(r=n.n()).done;)if(r.value in e)return!0}catch(o){n.e(o)}finally{n.f()}return!1}(this.style,t)){this._undoStyles=this._undoStyles||[];var r={};this._undoStyles.forEach((e=>{r[e]=this.style[e]}));var n=t.reduce(((e,t)=>{var r=this.style[t];return r&&(e=A(A({},e),r)),e}),{});this._undoStyles=Object.keys(n),void 0!==n.transition&&(this.transition=n.transition),Object.assign(this,r,n)}}render(){var e=this,t=this.parent;if(t)if(t.lng)if(this.lng)console.warn("Node already rendered: ",this);else{t._isDirty&&(t.updateLayout(),t._isDirty=!1),this.states.length&&this._stateChanged();var r=e._renderProps;if(r.x=r.x||0,r.y=r.y||0,t.lng&&(r.parent=t.lng),e._effects&&(this.shader=qr(e._effects)),e.isTextNode()){if(Yr.fontSettings)for(var n in Yr.fontSettings)void 0===r[n]&&(r[n]=Yr.fontSettings[n]);r.text=e.getText(),r.contain&&(r.width||(r.width=(t.width||0)-r.x-(r.marginRight||0),e._autosized=!0),"both"!==r.contain||r.height||r.maxLines||(r.height=(t.height||0)-r.y-(r.marginBottom||0),e._autosized=!0)),Hr(0,0),e.lng=Dr.createTextNode(r),r.width&&r.height||(e._autosized=!0,e._resizeOnTextLoad())}else r.texture||(isNaN(r.width)&&(r.width=(t.width||0)-r.x,e._autosized=!0),isNaN(r.height)&&(r.height=(t.height||0)-r.y,e._autosized=!0),r.color||r.src||(r.color=0)),Hr(0,0),e.lng=Dr.createNode(r);e.onFail&&e.lng.on("failed",e.onFail),e.onLoad&&e.lng.on("loaded",e.onLoad),jr(this.onCreate)&&this.onCreate.call(this,e),e.onEvents.forEach((([t,r])=>{var n;null===(n=e.lng)||void 0===n||n.on(t,((t,n)=>r(e,n)))})),e.lng.div&&(e.lng.div.solid=e),"text"!==e.name&&e.children.forEach((e=>{e.render?e.render():""!==e.text&&console.warn("TextNode outside of : ",e)})),e.autofocus&&e.setFocus(),delete this._renderProps}else console.warn("Parent not rendered yet: ",this);else console.warn("Parent not set - no node created for: ",this)}}for(var tn=function(){var e=nn[rn];Object.defineProperty(en.prototype,e,{get(){return this.lng?this.lng[e]:this._renderProps[e]},set(t){this._sendToLightningAnimatable(e,t)}})},rn=0,nn=["alpha","color","colorTop","colorRight","colorLeft","colorBottom","colorTl","colorTr","colorBl","colorBr","height","fontSize","lineHeight","mount","mountX","mountY","pivot","pivotX","pivotY","rotation","scale","width","worldX","worldY","x","y","zIndex","zIndexLocked"];rn{return t=gn("text"),xn(t,e,!1),t;var t},dn=e=>{return t=gn("node"),xn(t,e,!1),t;var t};function un({createElement:e,createTextNode:t,isTextNode:r,replaceText:n,insertNode:o,removeNode:i,setProperty:s,getParentNode:a,getFirstChild:l,getNextSibling:d}){function u(e,t,r,n){if(void 0===r||n||(n=[]),"function"!=typeof t)return h(e,t,n,r);Zt((n=>h(e,t(),n,r)),n)}function h(e,i,s,a,d){for(;"function"==typeof s;)s=s();if(i===s)return s;var u=typeof i,m=void 0!==a;if("string"===u||"number"===u)if("number"===u&&(i=i.toString()),m){var x=s[0];x&&r(x)?n(x,i):x=t(i),s=p(e,s,a,x)}else""!==s&&"string"==typeof s?n(l(e),s=i):(p(e,s,a,t(i)),s=i);else if(null==i||"boolean"===u)s=p(e,s,a);else{if("function"===u)return Zt((()=>{for(var t=i();"function"==typeof t;)t=t();s=h(e,t,s,a)})),()=>s;if(Array.isArray(i)){var y=[];if(c(y,i,d))return Zt((()=>s=h(e,y,s,a,!0))),()=>s;if(0===y.length){var b=p(e,s,a);if(m)return s=b}else Array.isArray(s)?0===s.length?v(e,y,a):f(e,s,y):null==s||""===s?v(e,y):f(e,m&&s||[l(e)],y);s=y}else{if(Array.isArray(s)){if(m)return s=p(e,s,a,i);p(e,s,null,i)}else null!=s&&""!==s&&l(e)?g(e,i,l(e)):o(e,i);s=i}}return s}function c(e,r,n){for(var o=!1,i=0,s=r.length;im-u)for(var w=t[l];u=0;c--){var f=r[c];if(u!==f){var p=a(f)===e;h||c?p&&i(e,f):p?g(e,u,f):o(e,u,n)}else h=!0}else o(e,u,n);return[u]}function v(e,t,r){for(var n=0,i=t.length;nr.children=h(e,t.children,r.children))),Zt((()=>t.ref&&t.ref(e))),Zt((()=>{for(var n in t)if("children"!==n&&"ref"!==n){var o=t[n];o!==r[n]&&(s(e,n,o,r[n]),r[n]=o)}})),r}return{render(e,t){var r;return Xt((n=>{r=n,u(t,e())})),r},insert:u,spread(e,t,r){"function"==typeof t?Zt((n=>m(e,t(),n,r))):m(e,t,void 0,r)},createElement:e,createTextNode:t,insertNode:o,setProp:(e,t,r,n)=>(s(e,t,r,n),r),mergeProps:Lr,effect:Zt,memo:Jt,createComponent:Br,use:(e,t,r)=>rr((()=>e(t,r)))}}var hn={createElement:e=>new en(e),createTextNode:e=>({name:"TextNode",text:e,parent:void 0}),replaceText(e,t){Hr(0,0),e.text=t;var r=e.parent;_(r),r.text=r.getText()},setProperty(e,t,r=!0){e[t]=r},insertNode(e,t,r){Hr(0,0),e.children.insert(t,r),t._queueDelete=!1,t instanceof en?e.lng&&t.render():e.isTextNode()&&(e.text=e.getText())},isTextNode:e=>e.isTextNode(),removeNode(e,t){Hr(0,0),e.children.remove(t),t._queueDelete=!0,t instanceof en&&queueMicrotask((()=>t.destroy()))},getParentNode:e=>e.parent,getFirstChild:e=>e.children[0],getNextSibling(e){var t=e.parent.children||[],r=t.indexOf(e)+1;if(rr||document});r;){var n=r[t];if(n&&!r.disabled){var o=r[`${t}Data`];if(void 0!==o?n.call(r,o,e):n.call(r,e),e.cancelBubble)return}r=r._$host||r.parentNode||r.host}}var Tn;function _n(){var e=new Set;var t=!1;return{subscribe:function(t){return e.add(t),()=>e.delete(t)},confirm:function(r,n){if(t)return!(t=!1);var o,i={to:r,options:n,defaultPrevented:!1,preventDefault:()=>i.defaultPrevented=!0},s=T(e);try{var a=function(){var e=o.value;e.listener(A(A({},i),{},{from:e.location,retry:o=>{o&&(t=!0),e.navigate(r,A(A({},n),{},{resolve:!1}))}}))};for(s.s();!(o=s.n()).done;)a()}catch(l){s.e(l)}finally{s.f()}return!i.defaultPrevented}}}function Rn(){window.history.state&&null!=window.history.state._depth||window.history.replaceState(A(A({},window.history.state),{},{_depth:window.history.length-1}),""),Tn=window.history.state._depth}Rn();var kn=/^(?:[a-z0-9]+:)?\/\//i,Bn=/^\/+|(\/)\/+$/g,In="http://sr";function En(e,t=!1){var r=e.replace(Bn,"$1");return r?t||/^[?#]/.test(r)?r:"/"+r:""}function Nn(e,t,r){if(!kn.test(t)){var n=En(e),o=r&&En(r),i="";return((i=!o||t.startsWith("/")?n:0!==o.toLowerCase().indexOf(n.toLowerCase())?n+o:o)||"/")+En(t,!i)}}function Fn(e){var t={};return e.searchParams.forEach(((e,r)=>{t[r]=e})),t}function Ln(e,t,r){var n=x(e.split("/*",2),2),o=n[0],i=n[1],s=o.split("/").filter(Boolean),a=s.length;return e=>{var n=e.split("/").filter(Boolean),o=n.length-a;if(o<0||o>0&&void 0===i&&!t)return null;for(var l={path:a?"":"/",params:{}},d=e=>void 0===r?void 0:r[e],u=0;u0===t.localeCompare(e,void 0,{sensitivity:"base"});return void 0===t||("string"==typeof t?r(t):"function"==typeof t?t(e):Array.isArray(t)?t.some(r):t instanceof RegExp&&t.test(e))}function Mn(e){var t=new Map,r=sr();return new Proxy({},{get:(n,o)=>(t.has(o)||ar(r,(()=>t.set(o,Jt((()=>e()[o]))))),t.get(o)()),getOwnPropertyDescriptor:()=>({enumerable:!0,configurable:!0}),ownKeys:()=>Reflect.ownKeys(e())})}function Pn(e){var t=/(\/?\:[^\/]+)\?/.exec(e);if(!t)return[e];for(var r=e.slice(0,t.index),n=e.slice(t.index+t[0].length),o=[r,r+=t[1]];t=/^(\/\:[^\/]+)\?/.exec(n);)o.push(r+=t[1]),n=n.slice(t[0].length);return Pn(n).reduce(((e,t)=>[...e,...o.map((e=>e+t))]),[])}var Dn,On=dr(),Un=dr(),Wn=()=>function(e,t){if(null==e)throw new Error(t);return e}(ur(On)," and 'use' router primitives can be only used inside a Route."),Yn=()=>Wn().navigatorFactory(),Hn=()=>Wn().location,jn=()=>Wn().params;function Qn(e,t=""){var r=e.component,n=e.load,o=e.children,i=e.info,s=!o||Array.isArray(o)&&!o.length,a={key:e,component:r,load:n,info:i};return $n(e.path).reduce(((r,n)=>{var o,i,l=T(Pn(n));try{for(l.s();!(o=l.n()).done;){var d=o.value,u=(i=d,En(t).replace(/\/*(\*.*)?$/g,"")+En(i)),h=s?u:u.split("/*",1)[0];h=h.split("/").map((e=>e.startsWith(":")||e.startsWith("*")?e:encodeURIComponent(e))).join("/"),r.push(A(A({},a),{},{originalPath:d,pattern:h,matcher:Ln(h,!s,e.matchFilters)}))}}catch(c){l.e(c)}finally{l.f()}return r}),[])}function Kn(e,t=0){return{routes:e,score:1e4*(r=e[e.length-1],n=x(r.pattern.split("/*",2),2),o=n[0],i=n[1],s=o.split("/").filter(Boolean),s.reduce(((e,t)=>e+(t.startsWith(":")?2:3)),s.length-(void 0===i?0:1)))-t,matcher(t){for(var r=[],n=e.length-1;n>=0;n--){var o=e[n],i=o.matcher(t);if(!i)return null;r.unshift(A(A({},i),{},{route:o}))}return r}};var r,n,o,i,s}function $n(e){return Array.isArray(e)?e:[e]}function Xn(e,t="",r=[],n=[]){for(var o=$n(e),i=0,s=o.length;it.score-e.score))}function Gn(e,t){for(var r=0,n=e.length;re),u=l.renderPath||(e=>e),h=l.beforeLeave||_n(),c=Nn("",n.base||"");if(void 0===c)throw new Error(`${c} is not a valid base path`);c&&!i().value&&s({value:c,replace:!0,scroll:!1});var f=x(Gt(!1),2),p=f[0],v=f[1],g=function(){var e=w(y().mark((function e(t){return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return v(!0),e.prev=1,e.next=4,lr(t);case 4:return e.prev=4,v(!1),e.finish(4);case 7:case"end":return e.stop()}}),e,null,[[1,,4,7]])})));return function(t){return e.apply(this,arguments)}}(),m=x(Gt(i().value),2),b=m[0],S=m[1],C=x(Gt(i().state),2),T=C[0],_=C[1],R=function(e,t){var r=new URL(In),n=Jt((t=>{var n=e();try{return new URL(n,r)}catch(o){return console.error(`Invalid path ${n}`),t}}),r,{equals:(e,t)=>e.href===t.href}),o=Jt((()=>n().pathname)),i=Jt((()=>n().search),!0),s=Jt((()=>n().hash));return{get pathname(){return o()},get search(){return i()},get hash(){return s()},get state(){return t()},get key(){return""},query:Mn(nr(i,(()=>Fn(n()))))}}(b,T),k=[],B=Gt([]),I=Jt((()=>Gn(t(),R.pathname))),E=Mn((()=>{for(var e=I(),t={},r=0;rc,outlet:()=>null,resolvePath:e=>Nn(c,e)};return Zt((()=>{var e=i(),t=e.value,r=e.state;rr((()=>{t!==b()&&g((()=>{Dn="native",S(t),_(r),B[1]([])})).then((()=>{Dn=void 0}))}))})),{base:N,location:R,params:E,isRouting:p,renderPath:u,parsePath:d,navigatorFactory:function(e){return e=e||ur(Un)||N,(t,r)=>function(e,t,r){rr((()=>{if("number"!=typeof t){var n=A({replace:!1,resolve:!0,scroll:!0},r),o=n.replace,i=n.resolve,a=n.scroll,d=n.state,u=i?e.resolvePath(t):Nn("",t);if(void 0===u)throw new Error(`Path '${t}' is not a routable path`);if(k.length>=100)throw new Error("Too many redirects");var c=b();if((u!==c||d!==T())&&h.confirm(u,r)){var f=k.push({value:c,replace:o,scroll:a,state:T()});g((()=>{Dn="navigate",S(u),_(d),B[1]([])})).then((()=>{var e,t;k.length===f&&(Dn=void 0,e={value:u,state:d},(t=k[0])&&(e.value===t.value&&e.state===t.state||s(A(A({},e),{},{replace:t.replace,scroll:t.scroll})),k.length=0))}))}}else t&&(l.go?l.go(t):console.warn("Router integration does not support relative routing"))}))}(e,t,r)},matches:I,beforeLeave:h,preloadRoute:function(e,n){var o=Gn(t(),e.pathname),i=Dn;Dn="preload";var s=function(){var t=o[a],i=t.route,s=t.params;i.component&&i.component.preload&&i.component.preload();var l=i.load;n&&l&&ar(r(),(()=>l({params:s,location:{pathname:e.pathname,search:e.search,hash:e.hash,query:Fn(e),state:null,key:""},intent:"preload"})))};for(var a in o)s();Dn=i},singleFlight:void 0===n.singleFlight||n.singleFlight,submissions:B}}var Zn=e=>t=>{var r,n=t.base,o=hr((()=>t.children)),i=Jt((()=>Xn(o(),t.base||""))),s=Vn(e,i,(()=>r),{base:n,singleFlight:t.singleFlight});return e.create&&e.create(s),vn(On.Provider,{value:s,get children(){return vn(qn,{routerState:s,get root(){return t.root},get load(){return t.rootLoad},get children(){return[pn((()=>(r=sr())&&null)),vn(Jn,{routerState:s,get branches(){return i()}})]}})}})};function qn(e){var t=e.routerState.location,r=e.routerState.params,n=Jt((()=>e.load&&rr((()=>e.load({params:r,location:t,intent:"preload"})))));return vn(Pr,{get when(){return e.root},keyed:!0,get fallback(){return e.children},children:o=>vn(o,{params:r,location:t,get data(){return n()},get children(){return e.children}})})}function Jn(e){var t,r=[],n=Jt(nr(e.routerState.matches,((o,i,s)=>{for(var a=i&&o.length===i.length,l=[],d=function(t){var d=i&&i[t],u=o[t];s&&d&&u.route.key===d.route.key?l[t]=s[t]:(a=!1,r[t]&&r[t](),Xt((o=>{r[t]=o,l[t]=function(e,t,r,n){var o=e.base,i=e.location,s=e.params,a=n().route,l=a.pattern,d=a.component,u=a.load,h=Jt((()=>n().path));d&&d.preload&&d.preload();var c=u?u({params:s,location:i,intent:Dn||"initial"}):void 0;return{parent:t,pattern:l,path:h,outlet:()=>d?Br(d,{params:s,location:i,data:c,get children(){return r()}}):r(),resolvePath:e=>Nn(o.path(),e,h())}}(e.routerState,l[t-1]||e.routerState.base,eo((()=>n()[t+1])),(()=>e.routerState.matches()[t]))})))},u=0,h=o.length;ue())),s&&a?s:(t=l[0],l)})));return eo((()=>n()&&t))()}var eo=e=>()=>vn(Pr,{get when(){return e()},keyed:!0,children:e=>vn(Un.Provider,{value:e,get children(){return e.outlet()}})}),to=e=>{var t=hr((()=>e.children));return Lr(e,{get children(){return t()}})};function ro(e,t){var r=function(e){if("#"===e)return null;try{return document.querySelector(e)}catch(t){return null}}(`#${e}`);r?r.scrollIntoView():t&&window.scrollTo(0,0)}var no=new Map;function oo(e=!0,t=!1,r="/_server"){return n=>{var o=n.base.path(),i=n.navigatorFactory(n.base),s={};function a(e){if(!(e.defaultPrevented||0!==e.button||e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)){var r=e.composedPath().find((e=>e instanceof Node&&"A"===e.nodeName.toUpperCase()));if(r&&(!t||r.hasAttribute("link"))){var n="http://www.w3.org/2000/svg"===r.namespaceURI,i=n?r.href.baseVal:r.href;if(!(n?r.target.baseVal:r.target)&&(i||r.hasAttribute("state"))){var s=(r.getAttribute("rel")||"").split(/\s+/);if(!(r.hasAttribute("download")||s&&s.includes("external"))){var a=n?new URL(i,document.baseURI):new URL(i);if(!(a.origin!==window.location.origin||o&&a.pathname&&!a.pathname.toLowerCase().startsWith(o.toLowerCase())))return[r,a]}}}}}function l(e){var t=a(e);if(t){var r=x(t,2),o=r[0],s=r[1],l=n.parsePath(s.pathname+s.search+s.hash),d=o.getAttribute("state");e.preventDefault(),i(l,{resolve:!1,replace:o.hasAttribute("replace"),scroll:!o.hasAttribute("noscroll"),state:d&&JSON.parse(d)})}}function d(e){var t=a(e);if(t){var r=x(t,2),o=r[0],i=r[1];s[i.pathname]||n.preloadRoute(i,"false"!==o.getAttribute("preload"))}}function u(e){var t=a(e);if(t){var r=x(t,2),o=r[0],i=r[1];s[i.pathname]||(s[i.pathname]=setTimeout((()=>{n.preloadRoute(i,"false"!==o.getAttribute("preload")),delete s[i.pathname]}),200))}}function h(e){var t=a(e);if(t){var r=x(t,2)[1];s[r.pathname]&&(clearTimeout(s[r.pathname]),delete s[r.pathname])}}function c(e){var t=e.submitter&&e.submitter.hasAttribute("formaction")?e.submitter.getAttribute("formaction"):e.target.getAttribute("action");if(t){if(!t.startsWith("https://action/")){var o=new URL(t,In);if(!(t=n.parsePath(o.pathname+o.search)).startsWith(r))return}if("POST"!==e.target.method.toUpperCase())throw new Error("Only POST forms are supported for Actions");var i=no.get(t);if(i){e.preventDefault();var s=new FormData(e.target);e.submitter&&e.submitter.name&&s.append(e.submitter.name,e.submitter.value),i.call({r:n,f:e.target},s)}}}!function(e,t=window.document){for(var r=t[An]||(t[An]=new Set),n=0,o=e.length;n{document.removeEventListener("click",l),e&&(document.removeEventListener("mouseover",u),document.removeEventListener("mouseout",h),document.removeEventListener("focusin",d),document.removeEventListener("touchstart",d)),document.removeEventListener("submit",c)}))}}function io(e){var t=e.replace(/^.*?#/,"");if(!t.startsWith("/")){var r=x(window.location.hash.split("#",2),2)[1];return`${void 0===r?"/":r}#${t}`}return t}function so(e){var t=()=>window.location.hash.slice(1),r=_n();return function(e){var t=!1,r=e=>"string"==typeof e?{value:e}:e,n=function([e,t],r,n){return[r?()=>r(e()):e,n?e=>t(n(e)):t]}(Gt(r(e.get()),{equals:(e,t)=>e.value===t.value}),void 0,(r=>(!t&&e.set(r),r)));return e.init&&ir(e.init(((o=e.get())=>{t=!0,n[1](r(o)),t=!1}))),Zn({signal:n,create:e.create,utils:e.utils})}({get:t,set({value:e,replace:t,scroll:r,state:n}){t?window.history.replaceState(function(e){return A(A({},e),{},{_depth:window.history.state&&window.history.state._depth})}(n),"","#"+e):window.location.hash=e;var o=e.indexOf("#");ro(o>=0?e.slice(o+1):"",r),Rn()},init:e=>{return n=window,o="hashchange",i=function(e,t){var r=!1;return()=>{var n=Tn;Rn();var o=null==n?null:Tn-n;r?r=!1:o&&t(o)?(r=!0,window.history.go(-o)):e()}}(e,(e=>!r.confirm(e&&e<0?e:t()))),n.addEventListener(o,i),()=>n.removeEventListener(o,i);var n,o,i},create:oo(e.preload,e.explicitLinks,e.actionBase),utils:{go:e=>window.history.go(e),renderPath:e=>`#${e}`,parsePath:io,beforeLeave:r}})(e)}var ao=ir;function lo(e,t=sr()){var r,n,o=0;return()=>(o++,ir((()=>{o--,queueMicrotask((()=>{!o&&n&&(n(),n=r=void 0)}))})),n||Xt((t=>r=e(n=t)),t),r)}var uo=lo((()=>{var e,t,r,n,o=x(Gt(null),2),i=o[0],s=o[1];return e=window,t="keydown",r=e=>{s(e),setTimeout((()=>s(null)))},e.addEventListener(t,r,n),ao(e.removeEventListener.bind(e,t,r,n)),i}));function ho(e){return"function"==typeof e}var co,fo={ArrowLeft:"Left",ArrowRight:"Right",ArrowUp:"Up",ArrowDown:"Down",Enter:"Enter",l:"Last"," ":"Space",Backspace:"Back",Escape:"Escape"},po=x(Gt([]),2),vo=po[0],go=po[1],mo=e=>{var t=uo();if(e)for(var r=function(){var e,t=x(o[n],2),r=t[0],i=t[1];e=i,Array.isArray(e)?i.forEach((e=>{fo[e]=r})):fo[i]=r},n=0,o=Object.entries(e);n{for(var n=e,o=[];n;)n.states.has("focus")||(n.states.add("focus"),ho(n.onFocus)&&n.onFocus.call(n,e,t)),o.push(n),n=n.parent;return r.forEach((r=>{o.includes(r)||(r.states.remove("focus"),ho(r.onBlur)&&r.onBlur.call(r,e,t))})),go(o),o}),{defer:!0})),qt((()=>{var e=t();if(e){var r=fo[e.key]||fo[e.keyCode];rr((()=>{var t,n=void 0,o=T(vo());try{for(o.s();!(t=o.n()).done;){var i=t.value;if(n=n||i,r){var s=i[`on${r}`];if(ho(s)&&!0===s.call(i,e,i,n))break}else console.log(`Unhandled key event: ${e.key}`);if(ho(i.onKeyPress)&&!0===i.onKeyPress.call(i,e,r,i,n))break}}catch(a){o.e(a)}finally{o.f()}return!1}))}})),vo};function xo(e,t){var r,n,o,i,s=t();if(Array.isArray(s))if(2===s.length)r=i=s[0],n=o=s[1];else if(3===s.length)r=s[0],n=o=s[1],i=s[2];else{var a=x(s,4);r=a[0],o=a[1],i=a[2],n=a[3]}else r=o=i=n=s;e.onBeforeLayout=(t,s)=>{if(s){e.width=e.children.reduce(((e,t)=>e+(t.width||0)),0)+n+o;var a=e.children[0];a&&(a.x=n,a.marginLeft=n);var l=0;return e.children.forEach((e=>{e.y=r,e.marginTop=r,l=Math.max(l,e.height||0)})),e.height=l+r+i,!0}}}function yo(e){return new Promise((t=>{setTimeout(t,e)}))}function bo(e,t,r="en-US"){var n=window.speechSynthesis;return new Promise(((o,i)=>{var s=new SpeechSynthesisUtterance(e);s.lang=r,s.onend=()=>{o()},s.onerror=e=>{i(e)},t.push(s),n.speak(s)}))}function wo(e,t,r=!0){var n=window.speechSynthesis,o=function(e=[]){var t,r=[];for(t=0;t0)){e.next=46;break}return e.prev=20,e.next=23,bo(r,s,t);case 23:d=0,e.next=44;break;case 26:if(e.prev=26,e.t0=e.catch(20),!(e.t0 instanceof SpeechSynthesisErrorEvent)){e.next=43;break}if("network"!==e.t0.error){e.next=36;break}return d--,console.warn(`Speech synthesis network error. Retries left: ${d}`),e.next=34,yo(500*(l-d));case 34:e.next=41;break;case 36:if("canceled"!==e.t0.error&&"interrupted"!==e.t0.error){e.next=40;break}d=0,e.next=41;break;case 40:throw new Error(`SpeechSynthesisErrorEvent: ${e.t0.error}`);case 41:e.next=44;break;case 43:throw e.t0;case 44:e.next=19;break;case 46:e.next=60;break;case 48:if("function"!=typeof r){e.next=55;break}return u=wo(r(),t,!1),i.push(u),e.next=53,u.series;case 53:e.next=60;break;case 55:if(!Array.isArray(r)){e.next=60;break}return h=wo(r,t,!1),i.push(h),e.next=60,h.series;case 60:e.next=1;break;case 62:return e.prev=62,a=!1,e.finish(62);case 65:case"end":return e.stop()}}),e,null,[[0,,62,65],[20,26]])})))(),get active(){return a},append:e=>{o.push(e)},cancel:()=>{a&&(r&&n.cancel(),i.forEach((e=>{e.cancel()})),a=!1)}}}function So(e,t="en-US"){return co&&co.cancel(),co=wo(e,t)}var Ao,Co,To=(e,t)=>{var r,n=()=>clearTimeout(r);sr()&&ir(n);return Object.assign(((...o)=>{void 0!==r&&n(),r=setTimeout((()=>e(...o)),t)}),{clear:n})},_o=[],Ro=!1;function ko(e,t){var r,n=To(e,t),o=e=>{r=e,n(e)};return o.flush=()=>{n.clear(),e(r)},o.clear=n.clear,o}function Bo(e){return e.id||e.name}function Io(e=[]){if(Eo.onFocusChange&&Eo.enabled){var t=e.every((e=>!e.loading)),r=e.filter((e=>!_o.includes(e)));if(Ao(),t||!Eo.onFocusChange){_o=e.slice(0);var n=[],o=r.reduce(((e,t)=>(t.announce?(e.push([Bo(t),"Announce",t.announce]),n.push(t.announce)):t.title?(e.push([Bo(t),"Title",t.title]),n.push(t.title)):e.push([Bo(t),"No Announce",""]),e)),[]);return r.reverse().reduce(((e,t)=>(t.announceContext?(e.push([Bo(t),"Context",t.announceContext]),n.push(t.announceContext)):e.push([Bo(t),"No Context",""]),e)),o),Eo.debug&&console.table(o),n.length?Eo.speak(n.reduce(((e,t)=>e.concat(t)),[])):void 0}Eo.onFocusChange([])}}var Eo={debug:!1,enabled:!0,cancel:function(){Co&&Co.cancel()},clearPrevFocus:function(e=0){_o=_o.slice(0,e),Ao()},speak:function(e,{append:t=!1,notification:r=!1}={}){var n;Eo.onFocusChange&&Eo.enabled&&(Eo.onFocusChange.flush(),t&&Co&&Co.active?Co.append(e):(Eo.cancel(),function(e){if(!Ro)Co=So(e)}(e)),r&&(Ro=!0,null===(n=Co)||void 0===n||n.series.finally((()=>{Ro=!1,Eo.refresh()})).catch(console.error)));return Co},refresh:function(e=0){Eo.clearPrevFocus(e),Eo.onFocusChange&&Eo.onFocusChange(rr((()=>vo())))},setupTimers:function({focusDebounce:e=400,focusChangeTimeout:t=3e5}={}){Eo.onFocusChange=ko(Io,e),Ao=ko((()=>{_o=[]}),t)}};var No,Fo,Lo,zo,Mo,Po,Do,Oo,Uo,Wo,Yo,Ho,jo,Qo,Ko,$o,Xo,Go,Vo=x(Gt(""),2),Zo=Vo[0],qo=Vo[1],Jo={name:"Base Lightning TV",alpha:{primary:1,secondary:.7,tertiary:.1,inactive:.5,full:1,none:0,alpha1:.1,alpha2:.3,alpha3:.5,alpha4:.7,alpha5:.9},animation:{duration:{none:0,xfast:.1,fast:.25,normal:.5,slow:.75,xslow:.9},delay:{none:0,xfast:.01,fast:.025,normal:.05,slow:.075,xslow:.09},expressive:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},expressiveEntrance:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},expressiveExit:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},standard:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},standardEntrance:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},standardExit:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},utility:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},utilityEntrance:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25},utilityExit:{timingFunction:"cubic-bezier(0, 0, 1, 1)",delay:0,duration:.25}},asset:{arrowLeft:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAi0lEQVRIDWNgGAWjIfD//38JID5Fk5AAGqwKxPeA+D/VLQCaaQLEr0CGgwBVLQCa5wbEn0EGwwDVLAAaGA3Ev2AGw2iqWAA0rBiI/8EMRaYptgBoWDeygehsci1gIlcjWfqArqZdEMFcBLSEdpGMZAntkimSJbTLaEiW0K6oQLKEdoUdzJJRemiHAAD4n+yzPWCs7QAAAABJRU5ErkJggg==",arrowRight:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAg0lEQVRIDWNgGAWjIYArBP7//38KiCVwyVMsDjQcBO4BsSrFhmEzAGw8hHgFpEywqaFIDMkCEPMzELtRZCC6ZjQLQNxfQByNro5sPhYLQEL/gLiYbEORNeKwACbcDVPLBGMMOhrmVDSapkFE00imaTKlaUajaVFB28Ju0CXrUQfhDAEAEgHss6NhpLQAAAAASUVORK5CYII=",backspaceOutline:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAACmpJREFUeF7tnVmoZUcVhv/feY4gBEVEH/KgCCZxCK2itNo4xQQH+kUN0TjEiDGKKBqnaExwBjUaR6KY+NQgiQkOMSYhYEScIopGJOqDE2hHjfP0y4p1Oqdv33v2qr32Prv2Paug6Ye7Vu2qv75TtWvtGohMqUBAAQZ80zUVQAKUEIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypXMClAyEFEiAQvKlcwKUDIQUSIBC8qVzApQMhBRIgELypfPsAJJ0NYC92XRHKPB3AAfLv18BuBLAFSR/NKZWswJI0vkA3jCmILsw75sAvIfkR8eo22wAknQSgMvGEGFD8vwxgFeQvGrI+s4CIEnHAPgugHsMWfkNzevDAM4i+Z8h6t88QJLuXOB5yBAVzjxuVeBaAM8ieXNUjzkAdAmA50Yrmv5HKPATACeQ/GNEm6YBkvRyANblZhpHAXsfekpkOGsWIEmPAHA9gDuOo13mWhS4gOSZfdVoEiBJ9wFwA4D7961Y+lUpsK/v7KxVgL4K4ElOCS4l+Uyn7a41k3Q0gMcC2ANgH4CHV1T2OyStx69OzQEk6TwAZztr8lMAx5P8s9N+Y8wk2cTjfQDu66z080h+zml7yKwpgCSdCOByZyX+BuBRJH/otN84M0kWN/s0gOc4Kv8Nko922B1m0gxAkh4I4AcVwcL9JA/UVnjT7CXdHYD9yEzfVUkAjib5uxqNmgCoBAu/CeBhzsJ/kORZTtuNN5Nk70bXAZ0Hy59G8qIawVoB6LMAnu8suE3tH0/y3077NAMg6esAuoaoC0la7M2dJgdI0ssAXOgs8W8BHEvS/s9UoYCkdwN4bYfL5STto7U7TQpQZbDQehzreawHylSpgKSTAVza4XYDyeNqsp4MoB7BwteQfH9N5dL2NgWK3l0vyAdJWhDXnSYBSNLtANh3GO/KwgMk97trlYbbKiDJPpzea5U8JKuYqDIeql0kvQPAG5352ZLMR5L8q9M+zXZQYFcAJOnJAL7sbGWLMFuk2SLOmYIKzB6gEiz8HoB7O7U4meQXnLZp1qGApD8BuOcsh7AewcL3kuyadg4OjSSbhRxH0j4BjJok2Ufga0j+YdQHlcznDlBNsPAa+xpP8r/rEHbxjAKPbRuyHvKFY0Ik6QUALOprPfIT1gHRbAGSdDoA77aSX5Zg4e8nhGfx6FEgWoJn8Zy1QCTplq5vjc3NwnoEC/eQ/HYD8IwC0TbwrA2i2QHUI1h4JskLGoJnUIhWwLMWiGYFkCSLMX2t5WDhlneeLm5Dw5kDntEhkmRhEVvesWNqZgiTdC6AN3W1Svn72oOFkuxF+WcVIQUrai+IKuA5BBHJ453auc1mA1AJFn7Jsf7EKj9ZsLBHw1ZDtI5neAmaBUBzCxaO2cBj5u2FZtlO0l8A3K3ZIaxHsPB8kt5vYn00c/mM0dBj5OmqzAqjOQDUfLBwJ32HbPAh84pCM5seSNJLAHzcWeFJgoVdZRui4YfIo6ucff8uyVY03LW5IawyWPgvW5u77mChV/QIABFfb/kidk0CVKbDth3Huw35dJLeniqiV2/fniDYx1f7vlWTeoUFah6wZQhrqwcqwUKbrtsaH0+6mOQpHsOpbXpCVFPstcJjBZNkmzHv0swQJultAN7iVO375TyafzjtJzcbEaK1w9McQJXBQlvvYmtsfjE5FZUFGAGiSeBpCqDKYKFtmX0qya9Utl0z5gNCNBk8BSA7CtiODNwxjf4trEew8BySNtTNOg0A0aTwtARQTbDQeh3rfawXmn0KQDQ5PC0B9EkAL3LSkAD9X6hWALIJzJ3mNoSdS9I7U3NyuX6zQO+zKOzkEEmaHqDSFdpZM97tOfkSfRvvk0LUDEAFIgseetf85DS+AYgk/bPr1NvRZ2HLg4ektwI4xzmgZCBxYohaBMjWPeenDOcvaIvZ2oez5gAqQ5mtLbb3oa4z+Bb6nTHW1UP92vFIr54vzJ8BcGplGdYKkSRbCXGHSWdh2z1ckp1taGccroxyFt9cznG4iGuDqFmASk9kZxxakNGTckHZBBA1DVCB6BMAXuwhyA4VmGL/+05l6zlsbdt7DJmXU0uXmSQ7JvD2zQ1hiwJJsotRvlVxXO87SU5+heUYDT5Gni5KVhg1D1DphWqCjOYy6RlAYzb0mHn3gWkWABWIaoKMubHwSBpGebGWZNdc2vmUO6a1BhJXFUSSff/yLuOYamvzzwEcVfFr7tWwPXqi6uN2PXWYG0C1Qca1n8RaDlewl3kPRL3gWXo/XBwo1dXWdk/a3jEOnJoVQGUoqw0yvpLkh7oUHvLvTohC8FRANBo8pT3sxLeVJ/M2M4QtiVYTZJzkNPoOiAaBxwHRqPDMFqBS8Jog4yT3YewA0aDwrIBodHhmDVApvG0mtO3PnjTJjTxbIBoFnm0gWgs8pQ06lxY3N4QtCWZBRgPDezdnHvPr+alV2EiaL0DlF2Dbn20bdB40XtHwQ5nOHqAC0SyCjEM1Wkv57AqACkRvBvB2p7hrDzI6yzU7s90EUPNBxtnR4SjwrgGo9EK1Qca8cM4ByU4mkuz++F93ZHELyZX3iW31n+S+sKWZWfNBxkCbNeUq6ekArugo1I0kH1xT8EkBKj1R80HGGkFbtZVkZ3bb2d2r0tUkn1hTh8kBKhB9DMBLnQWfJMjoLFuTZpJsO/ONAB7UUcBLSHqvX781q1YAqg0yfoDkq5psrQYLJeldAF7nKFr1x+wmACq9kAUZLazvvTV4P8kDDlE22kTSQ4uuK9dCF5HuR/I3NYI1A1CBaB+AK50VsAMj7TJeixNl2kYBSccCsB/ZMQ6Brif5GIfdYSZNAVQg8rzsLSphl/Hapby2LDZTUaBcq/56ALb1fOVxLkuinULy4loRmwOoQGQX7T7DWZnPk3y203bXmkl6AIA91isDOBGADV3e1HsJbasA1QYZvUKl3fYKPI2knXFQnZoEqPRCNUHG6oqnwyEFLiJ5Wl89mgWoQFQTZOyrwSb7WUztcSRtu0+v1DRABaKPADijV+3SaZUCNgE5geTNEZnmAFBtkDGix6b4Xld2BNvJcaHUPEClF6oNMoZE2eXOtm3q1ZFha1mfWQBUINoL4Kqurbm7vPEj1bOAqx3udW0kk62+swGoQHQ2gPOGFGAD8roJgF0t+qkx6jorgApElwE4aQwxZp6n3YNxsPyzA7yst/4iSdvEMFqaHUCjKZEZ91IgAeolWzotFEiAkoWQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnROgJKBkAIJUEi+dE6AkoGQAglQSL50ToCSgZACCVBIvnT+H0jPT81J3xWWAAAAAElFTkSuQmCC",check:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAOCAYAAAAi2ky3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACtSURBVHgBvdPdDcIgEAfwoy8Nb45QN3AGF2s36Ahu4gpuIDoBfSgfpdoTlCbEWEMh6T8hFzjyg5AAkBHOcQe5UWqspRx435sDpMYj6IYQwwVSEiJ2MKVUBWuzLSLl2HL+uxmNCGFO8yaL7RHxve6qRZoAuS4hxac8735elWVx7jrtMKL1o0Gcat9jhExHSukN/kUIFZ7MpDRtzE1isDRkAUtDvrA8ZI597FUf8gWH9P0b4gko9wAAAABJRU5ErkJggg=="},color:{palette:{"blue-20":"0xbecffeff","blue-40":"0x93a9fdff","blue-90":"0x000033ff","grey-05":"0xf8f7faff","grey-40":"0x929096ff","grey-70":"0x48474bff","grey-90":"0x181819ff"},white:"0xffffffff",black:"0x000000ff",grey:"0x929096ff",red:"0xe74c3cff",orange:"0xdc7633ff",yellow:"0xf7dc6fff",green:"0x2ecc71ff",blue:"0x93a9fdff",purple:"0x663399ff",material:"0x181819ff",materialBrand:"0x000033ff",overlay:"0x181819b3",textNeutral:"0xf8f7faff",textNeutralSecondary:"0xf8f7fab3",textNeutralTertiary:"0xf8f7fa1a",textNeutralDisabled:"0xf8f7fa80",textInverse:"0x181819ff",textInverseSecondary:"0x181819b3",textInverseTertiary:"0x1818191a",textInverseDisabled:"0x18181980",textBrand:"0x93a9fdff",textBrandSecondary:"0x93a9fdb3",textBrandTertiary:"0x93a9fd1a",textBrandDisabled:"0x93a9fd80",textPositive:"0x2ecc71ff",textNegative:"0xe74c3cff",textInfo:"0x93a9fdff",textCaution:"0xdc7633ff",fillTransparent:"0xffffff0",fillNeutral:"0xf8f7faff",fillNeutralSecondary:"0xf8f7fab3",fillNeutralTertiary:"0xf8f7fa1a",fillNeutralDisabled:"0xf8f7fa80",fillInverse:"0x181819ff",fillInverseSecondary:"0x181819b3",fillInverseTertiary:"0x1818191a",fillInverseDisabled:"0x18181980",fillBrand:"0x93a9fdff",fillBrandSecondary:"0x93a9fdb3",fillBrandTertiary:"0x93a9fd1a",fillBrandDisabled:"0x93a9fd80",fillPositive:"0x2ecc71ff",fillNegative:"0xe74c3cff",fillInfo:"0x93a9fdff",fillCaution:"0xdc7633ff",strokeNeutral:"0xf8f7faff",strokeNeutralSecondary:"0xf8f7fab3",strokeNeutralTertiary:"0xf8f7fa1a",strokeNeutralDisabled:"0xf8f7fa80",strokeInverse:"0x181819ff",strokeInverseSecondary:"0x181819b3",strokeInverseTertiary:"0x1818191a",strokeInverseDisabled:"0x18181980",strokeBrand:"0x93a9fdff",strokeBrandSecondary:"0x93a9fdb3",strokeBrandTertiary:"0x93a9fd1a",strokeBrandDisabled:"0x93a9fd80",strokePositive:"0x2ecc71ff",strokeNegative:"0xe74c3cff",strokeInfo:"0x93a9fdff",strokeCaution:"0xdc7633ff",interactiveNeutral:"0xffffff1a",interactiveNeutralFocus:"0xffffffff",interactiveNeutralFocusSoft:"0xffffff1a",interactiveInverse:"0x48474b1a",interactiveInverseFocus:"0x48474bff",interactiveInverseFocusSoft:"0x48474b1a",interactiveBrand:"0xbecffe1a",interactiveBrandFocus:"0xbecffeff",interactiveBrandFocusSoft:"0xbecffe1a",shadowNeutral:"0x000000b3",shadowNeutralFocus:"0x000000b3",shadowNeutralFocusSoft:"0x000000b3",shadowNeutralText:"0x000000ff",shadowInverse:"0x000000b3",shadowInverseFocus:"0x000000b3",shadowInverseFocusSoft:"0x000000b3",shadowInverseText:"0x000000ff",shadowBrand:"0x000000b3",shadowBrandFocus:"0x000000b3",shadowBrandFocusSoft:"0x000000b3",shadowBrandText:"0x000000ff"},font:[],layout:{columnCount:10,focusScale:1.2,gutterX:20,gutterY:20,marginX:150,marginY:150,safe:50,screenW:1920,screenH:1080},radius:{none:0,xs:2,sm:4,md:8,lg:16,xl:24},spacer:{none:0,xxs:2,xs:4,sm:8,md:10,lg:20,xl:30,xxl:40,xxxl:50},stroke:{none:0,sm:2,md:4,lg:6,xl:8},typography:{display1:{fontFamily:"Arial",fontSize:75,lineHeight:85,fontWeight:500,verticalAlign:"middle",textBaseline:"bottom"},display2:{fontFamily:"Arial",fontSize:50,lineHeight:60,fontWeight:500,verticalAlign:"middle",textBaseline:"bottom"},headline1:{fontFamily:"Arial",fontSize:35,fontWeight:500,lineHeight:48,verticalAlign:"middle",textBaseline:"bottom"},headline2:{fontFamily:"Arial",fontSize:30,fontWeight:500,lineHeight:40,verticalAlign:"middle",textBaseline:"bottom"},headline3:{fontFamily:"Arial",fontSize:25,fontWeight:500,lineHeight:36,verticalAlign:"middle",textBaseline:"bottom"},body1:{fontFamily:"Arial",fontSize:25,fontWeight:300,lineHeight:40,verticalAlign:"middle",textBaseline:"bottom"},body2:{fontFamily:"Arial",fontSize:22,fontWeight:300,lineHeight:32,verticalAlign:"middle",textBaseline:"bottom"},body3:{fontFamily:"Arial",fontSize:20,fontWeight:300,lineHeight:32,verticalAlign:"middle",textBaseline:"bottom"},button1:{fontFamily:"Arial",fontSize:25,fontWeight:500,lineHeight:32,verticalAlign:"middle",textBaseline:"bottom"},button2:{fontFamily:"Arial",fontSize:20,fontWeight:500,lineHeight:32,verticalAlign:"middle",textBaseline:"bottom"},callout1:{fontFamily:"Arial",fontSize:20,fontWeight:500,lineHeight:32,verticalAlign:"middle",textBaseline:"bottom"},caption1:{fontFamily:"Arial",fontSize:15,fontWeight:500,lineHeight:24,verticalAlign:"middle",textBaseline:"bottom"},tag1:{fontFamily:"Arial",fontSize:20,fontWeight:500,lineHeight:24,verticalAlign:"middle",textBaseline:"bottom"},footnote1:{fontFamily:"Arial",fontSize:22,fontWeight:300,lineHeight:30,verticalAlign:"middle",textBaseline:"bottom"}},componentConfig:{Keyboard:{base:{keyProps:{delete:{title:null,icon:"data:image/png;base64,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"}}}}}};function ei(){var e,t,r,n=0,o={duration:750,easing:"ease-in-out"},i={alpha:1,color:4294967295};return qt(nr(Zo,(i=>{!function(i){i.startsWith("#")?(e.color=Sn(i),e.src="",e.alpha=1,n=1,t.alpha=0,r.alpha=0):(e.color=4294967295,r.alpha=1,0===n?(e.src=i,n=1):1===n?(t.src=i,n=2,t.alpha=0,t.animate({alpha:1},o).start(),e.animate({alpha:0},o).start()):2===n&&(e.src=i,n=1,e.alpha=0,e.animate({alpha:1},o).start(),t.animate({alpha:0},o).start()))}(i)}),{defer:!0})),vn(dn,{width:1920,height:1080,zIndex:-5,get children(){return[vn(dn,{ref(t){"function"==typeof e?e(t):e=t},style:i}),vn(dn,{ref(e){"function"==typeof t?t(e):t=e},style:i,alpha:0}),vn(dn,{ref(e){"function"==typeof r?r(e):r=e},src:"./assets/hero-mask-inverted.png",get color(){return Sn(Jo.color.materialBrand)},width:1920,height:1080})]}})}function ti(e){if(!e||!e[Symbol.iterator])throw new Error("objectFromEntries requires a single iterable argument");var t,r={},n=T(e);try{for(n.s();!(t=n.n()).done;){var o=x(t.value,2),i=o[0],s=o[1];r[i]=s}}catch(a){n.e(a)}finally{n.f()}return r}var ri=["focus","disabled"],ni=["brand","inverse","neutral"];function oi({themeKeys:e,base:t,modes:r,tones:n,themeStyles:o,modeKeys:i=ri,toneKeys:s=ni},a=!1){var l=t=>ti(Object.entries(e).filter((([e,r])=>t[r])).map((([e,r])=>[e,t[r]])));return((e,t,r)=>{var n,d=(n=o,ti(Object.entries(n).map((([e,t])=>{var r=l(t);return Object.entries(t).filter((([e,t])=>i.includes(e))).forEach((([e,t])=>{r[e]=l(t)})),[e,r]}))));a&&console.log(d);var u=((e,t)=>A(A({},e),t.base))(e,d);a&&console.log(u);var h=((e,t)=>ti(i.map((r=>[r,A(A({},null==e?void 0:e[r]),null==t?void 0:t[r])]))))(t,d);a&&console.log(h);var c=((e,t,r)=>ti(s.map((n=>{var o,s,a={};return new Set([].concat.apply([],[null!==(o=null==e?void 0:e[n])&&void 0!==o?o:{},null!==(s=null==t?void 0:t[n])&&void 0!==s?s:{}].map(Object.keys))).forEach((r=>{var o,s,l;i.includes(r)||(a[r]=null!==(l=null==(o=null==t?void 0:t[n])?void 0:o[r])&&void 0!==l?l:null==(s=null==e?void 0:e[n])?void 0:s[r])})),i.forEach((o=>{var i,s;a[o]=A(A(A({},r[o]),null==(i=null==e?void 0:e[n])?void 0:i[o]),null==(s=null==t?void 0:t[n])?void 0:s[o])})),[n,a]}))))(r,d,h);return a&&console.log(c),{base:A(A({},u),h),tones:c}})(t,r,n)}function ii(e=0){return(t,r,n=0,o)=>{var i,s,a;if(0!==t.children.length){var l="row"===t.flexDirection?"width":"height",d="row"===t.flexDirection?"x":"y",u=t.gap||0,h=t.scroll||"auto",c=function(e){var t,r;"row"===e.flexDirection?(t={position:e.children[e.children.length-1].x,size:e.children[e.children.length-1].width},r=e.width):(t={position:e.children[e.children.length-1].y,size:e.children[e.children.length-1].height},r=e.height);return[t,r]}(t),f=x(c,2),p=f[0],v=f[1],g=null!==(i=t[d])&&void 0!==i?i:0,m=null!==(s=null==r?void 0:r[d])&&void 0!==s?s:0,y=null!==(a=null==r?void 0:r[l])&&void 0!==a?a:0,b=void 0===o?"none":n>o?"positive":"negative",w=g;if("auto"===h)null!=t.scrollIndex&&t.scrollIndex>=0?t.selected>=t.scrollIndex&&(w="positive"===b?g-y-u:g+y+u):(Math.abs(g)+vm)w=-m+e;else if("edge"===h&&"positive"===b&&Math.abs(g)+v{var t=e.filter((e=>"function"==typeof e));if(0!==t.length)return 1===t.length?t[0]:function(...e){var r,n,o=T(t);try{for(o.s();!(n=o.n()).done;){if(!0===(r=n.value.apply(this,e)))return r}}catch(i){o.e(i)}finally{o.f()}return r}};function ai(){if(!this||void 0===this.selected||0===this.children.length)return!1;for(var e=this.children[this.selected];null==e?void 0:e.skipFocus;)this.selected++,e=this.children[this.selected];return e instanceof en&&(e.setFocus(),!0)}function li(e){return function(){var t,r,n,o=this.children.length,i=this.wrap,s=this.selected||0;if(0===o)return!1;if("right"===e||"down"===e){do{if(this.selected=(this.selected||0)%o+1,this.selected>=o){if(!i){this.selected=void 0;break}this.selected=0}}while(null==(t=this.children[this.selected])?void 0:t.skipFocus)}else if("left"===e||"up"===e)do{if(this.selected=(this.selected||0)%o-1,this.selected<0){if(!i){this.selected=void 0;break}this.selected=o-1}}while(null==(r=this.children[this.selected])?void 0:r.skipFocus);if(void 0===this.selected&&(this.selected=s,null==(n=this.children[this.selected])?void 0:n.states.has("focus")))return!1;var a=this.children[this.selected];if(this.onSelectedChanged&&this.onSelectedChanged.call(this,this,a,this.selected,s),this.plinko&&void 0!==s){var l=this.children[s].selected||0;a.selected=lvn(dn,bn(e,{get style(){var t,r;return[...[e.style].flat(),null==(r=Bi.Container.tones)?void 0:r[null!==(t=e.tone)&&void 0!==t?t:Bi.tone],Bi.Container.base]},forwardStates:!0,get children(){return vn(ln,{get style(){var t,r;return[...[null==(r=e.style)?void 0:r.Text].flat(),Bi.Text.tones[null!==(t=e.tone)&&void 0!==t?t:Bi.tone],Bi.Text.base]},get children(){return e.children}})}})),Ei=(null==(Mo=Jo)?void 0:Mo.componentConfig).Checkbox,Ni=void 0===Ei?{styles:{}}:Ei,Fi=(Ni.defaultTone,m(Ni,o)),Li=Jo.stroke.sm,zi=Jo.spacer.xxl,Mi={themeKeys:{color:"color",borderRadius:"borderRadius",border:"border",justifyContent:"justifyContent"},base:{width:zi,height:zi,display:"flex",justifyContent:"center",color:Jo.color.fillNeutral,alignItems:"center",borderRadius:zi/4,border:{color:Jo.color.strokeInverse,width:Li}},modes:{disabled:{alpha:Jo.alpha.inactive}},tones:{brand:{borderRadius:zi/4,border:{color:Jo.color.strokeNeutralSecondary,width:Li},color:Jo.color.fillNeutralSecondary,checked:{borderRadius:zi/4,border:{color:Jo.color.strokeNeutralSecondary,width:Li},color:Jo.color.fillBrand}},neutral:{borderRadius:zi/4,border:{color:Jo.color.strokeNeutralSecondary,width:Li},color:Jo.color.fillInverseSecondary,checked:{borderRadius:zi/4,border:{color:Jo.color.strokeNeutralSecondary,width:Li},color:Jo.color.fillNeutral}},inverse:{borderRadius:zi/4,border:{color:Jo.color.strokeInverseSecondary,width:Li},color:Jo.color.fillNeutralSecondary,checked:{borderRadius:zi/4,border:{color:Jo.color.strokeInverseSecondary,width:Li},color:Jo.color.fillInverse}}},modeKeys:["focus","disabled","checked"],themeStyles:Fi},Pi={themeKeys:{color:"color"},base:{width:Jo.spacer.lg,height:Jo.spacer.lg,src:Jo.asset.check},tones:{neutral:{color:Jo.color.fillInverse},inverse:{color:Jo.color.fillNeutral},brand:{color:Jo.color.fillInverse}},themeStyles:Fi};oi(Mi),oi(Pi);var Di=(null==(Po=Jo)?void 0:Po.componentConfig).Icon,Oi=void 0===Di?{styles:{}}:Di,Ui=(Oi.defaultTone,m(Oi,i));oi({themeKeys:{color:"color"},base:{width:100,height:100,color:Jo.color.fillInverse},tones:{inverse:{color:Jo.color.fillInverse},brand:{color:Jo.color.fillBrand}},themeStyles:Ui});var Wi=(null==(Do=Jo)?void 0:Do.componentConfig).Column,Yi=void 0===Wi?{styles:{}}:Wi,Hi=Yi.defaultTone,ji=m(Yi,s),Qi={tone:Hi||"neutral",Container:oi({themeKeys:{gap:"itemSpacing",scrollIndex:"scrollIndex",itemTransition:"itemTransition"},base:{display:"flex",flexBoundary:"fixed",flexDirection:"column",gap:Jo.layout.gutterY,itemTransition:A(A({},Jo.animation.standardEntrance),{},{duration:Jo.animation.duration.fast})},themeStyles:ji})},Ki=e=>{var t=li("up"),r=li("down");return vn(dn,bn(e,{get onUp(){return si(e.onUp,t)},get onDown(){return si(e.onDown,r)},get selected(){return e.selected||0},forwardFocus:ai,get onCreate(){return si((t=>{var r,n;return ii(e.y).call(t,t,t.children[null!==(r=e.selected)&&void 0!==r?r:0],null!==(n=e.selected)&&void 0!==n?n:0,void 0)}),e.onCreate)},get onSelectedChanged(){return si(e.onSelectedChanged,"none"!==e.scroll?ii(e.y):void 0)},get style(){var t;return[...[e.style].flat(),Qi.Container.tones[null!==(t=e.tone)&&void 0!==t?t:Qi.tone],Qi.Container.base]}}))},$i=(null==(Oo=Jo)?void 0:Oo.componentConfig).Label,Xi=void 0===$i?{styles:{}}:$i,Gi=(Xi.defaultTone,m(Xi,a)),Vi={themeKeys:{color:"backgroundColor",borderRadius:"radius"},base:{display:"flex",justifyContent:"center",color:Jo.color.textNeutral,padding:[Jo.spacer.md,Jo.spacer.lg],borderRadius:[Jo.radius.md,Jo.radius.md,Jo.radius.md,Jo.radius.none],height:Jo.typography.caption1.lineHeight+Jo.spacer.md,neutral:{backgroundColor:Jo.color.fillNeutral}},tones:{inverse:{color:Jo.color.fillInverse},brand:{color:Jo.color.fillBrand,focus:{color:Jo.color.orange}}},themeStyles:Gi},Zi={themeKeys:{color:"textColor"},base:A(A({},Jo.typography.caption1),{},{color:Jo.color.textInverse}),tones:{inverse:{color:Jo.color.textNeutral},brand:{color:Jo.color.textNeutral}},themeStyles:Gi};oi(Vi),oi(Zi);var qi=(null==(Uo=Jo)?void 0:Uo.componentConfig).Rating,Ji=void 0===qi?{styles:{},defaultTone:"neutral"}:qi,es=Ji.styles,ts=(Ji.defaultTone,{themeKeys:{justifyContent:"justifyContent",itemSpacing:"itemSpacing"},base:{display:"flex",flexDirection:"column",justifyContent:"flexStart",itemSpacing:Jo.spacer.sm},toneModes:{},themeStyles:es}),rs={themeKeys:{color:"textColor"},base:A({color:Jo.color.textNeutral},Jo.typography.body2),toneModes:{},themeStyles:es},ns={themeKeys:{color:"color"},base:{height:Jo.typography.body2.lineHeight,width:Jo.typography.body2.lineHeight,color:Jo.color.fillNeutral,marginRight:Jo.spacer.sm},toneModes:{},themeStyles:es};oi(ts),oi(ns),oi(rs);var os=(null==(Wo=Jo)?void 0:Wo.componentConfig).Details,is=void 0===os?{styles:{}}:os,ss=(is.defaultTone,m(is,l)),as={themeKeys:{alignItems:"alignItems",contentSpacing:"contentSpacing",badgeContentSpacing:"badgeContentSpacing",ratingContentSpacing:"ratingContentSpacing"},base:{display:"flex",flexDirection:"row",alignItems:"center",contentSpacing:Jo.spacer.lg,badgeContentSpacing:Jo.spacer.sm,ratingContentSpacing:Jo.spacer.lg},themeStyles:ss},ls={themeKeys:{color:"textColor"},base:A(A({},Jo.typography.body2),{},{marginRight:Jo.spacer.lg,color:Jo.color.textNeutral}),tones:{neutral:{disabled:{color:Jo.color.textNeutralDisabled}},inverse:{color:Jo.color.textInverse,disabled:{color:Jo.color.textNeutralDisabled}},brand:{color:Jo.color.textNeutral,disabled:{color:Jo.color.textNeutralDisabled}}},themeStyles:ss};oi(as),oi(ls);var ds=(null==(Yo=Jo)?void 0:Yo.componentConfig).Metadata,us=void 0===ds?{styles:{}}:ds,hs=(us.defaultTone,m(us,d)),cs={themeKeys:{justifyContent:"justifyContent",alpha:"alpha"},base:{display:"flex",flexDirection:"column",justifyContent:"flexStart",alpha:Jo.alpha.primary},modes:{disabled:{alpha:Jo.alpha.inactive}},themeStyles:hs},fs={themeKeys:{color:"textColor"},base:A(A({maxLines:1,contain:"width"},Jo.typography.headline3),{},{color:Jo.color.textNeutral}),tones:{neutral:{disabled:{color:Jo.color.textNeutralDisabled}},inverse:{color:Jo.color.textInverse,disabled:{color:Jo.color.textNeutralDisabled}},brand:{color:Jo.color.textNeutral,disabled:{color:Jo.color.textNeutralDisabled}}},themeStyles:hs},ps={themeKeys:{color:"textColor"},base:A(A({contain:"width",maxLines:2},Jo.typography.body2),{},{color:Jo.color.textNeutralSecondary}),tones:{neutral:{disabled:{color:Jo.color.textNeutralDisabled}},inverse:{color:Jo.color.textInverseSecondary,disabled:{color:Jo.color.textNeutralDisabled}},brand:{color:Jo.color.textNeutralSecondary,disabled:{color:Jo.color.textNeutralDisabled}}},themeStyles:hs};oi(cs),oi(ps),oi(fs);var vs=(null==(Ho=Jo)?void 0:Ho.componentConfig).ProgressBar,gs=void 0===vs?{styles:{}}:vs,ms=(gs.defaultTone,m(gs,u)),xs={themeKeys:{color:"barColor",borderRadius:"borderRadius"},base:{height:Jo.spacer.md,color:Jo.color.fillNeutralTertiary,borderRadius:Jo.radius.xs},tones:{inverse:{color:Jo.color.fillInverseTertiary}},themeStyles:ms},ys={themeKeys:{color:"progressColor",borderRadius:"borderRadius"},base:{borderRadius:Jo.radius.xs,color:Jo.color.fillNeutral},tones:{inverse:{color:Jo.color.fillInverse},brand:{color:Jo.color.fillBrand}},themeStyles:ms};oi(xs),oi(ys);var bs=(null==(jo=Jo)?void 0:jo.componentConfig).Row,ws=void 0===bs?{styles:{}}:bs,Ss=ws.defaultTone,As=m(ws,h),Cs={tone:Ss,Container:oi({themeKeys:{gap:"itemSpacing",scrollIndex:"scrollIndex",itemTransition:"itemTransition"},base:{display:"flex",flexBoundary:"fixed",flexDirection:"row",gap:Jo.layout.gutterX,itemTransition:A(A({},Jo.animation.standardEntrance),{},{duration:Jo.animation.duration.fast})},themeStyles:As})},Ts=e=>{var t=li("left"),r=li("right");return vn(dn,bn(e,{get selected(){return e.selected||0},get onLeft(){return si(e.onLeft,t)},get onRight(){return si(e.onRight,r)},forwardFocus:ai,get onCreate(){return si((t=>{var r,n;return ii(e.x).call(t,t,t.children[null!==(r=e.selected)&&void 0!==r?r:0],null!==(n=e.selected)&&void 0!==n?n:0,void 0)}),e.onCreate)},get onSelectedChanged(){return si(e.onSelectedChanged,"none"!==e.scroll?ii(e.x):void 0)},get tone(){var t;return null!==(t=e.tone)&&void 0!==t?t:Cs.tone},get style(){return[...[e.style].flat(),Cs.Container.tones[e.tone||Cs.tone],Cs.Container.base]},get states(){var t;return null!==(t=e.tone)&&void 0!==t?t:Cs.tone}}))},_s=(null==(Qo=Jo)?void 0:Qo.componentConfig).Keyboard,Rs=void 0===_s?{styles:{}}:_s,ks=(Rs.defaultTone,m(Rs,c)),Bs={themeKeys:{keySpacing:"keySpacing",screenW:"screenW",marginX:"marginX"},base:{keySpacing:Jo.spacer.md,screenW:Jo.layout.screenW,marginX:Jo.layout.marginX,height:100},themeStyles:ks},Is={themeKeys:{keySpacing:"keySpacing",textAlign:"textAlign",borderRadius:"borderRadius",color:"backgroundColor",justifyContent:"justifyContent",baseWidth:"baseWidth",sizes:"sizes",contentColor:"contentColor"},base:{keySpacing:Jo.spacer.md,height:9*Jo.spacer.md,paddingX:Jo.spacer.md,sizes:{sm:1,md:2,lg:3,xl:4,xxl:5},contentColor:Jo.color.fillNeutral,padding:[Jo.spacer.xxxl,Jo.spacer.xl],baseWidth:7*Jo.spacer.md,color:Jo.color.interactiveNeutral,display:"flex",justifyContent:"center",alignItems:"center",borderRadius:Jo.radius.sm},modes:{focus:{color:Jo.color.interactiveNeutralFocus,contentColor:Jo.color.fillInverse},disabled:{color:Jo.color.fillNeutralDisabled,contentColor:Jo.color.fillNeutralDisabled}},tones:{inverse:{color:Jo.color.interactiveInverse,focus:{color:Jo.color.interactiveInverseFocus,contentColor:Jo.color.fillNeutral}},brand:{focus:{contentColor:Jo.color.fillNeutral}}},themeStyles:ks},Es={themeKeys:{color:"textColor"},base:A({textAlign:"left",color:Jo.color.textNeutral},Jo.typography.headline2),modes:{focus:{color:Jo.color.textInverse},disabled:{color:Jo.color.textNeutralDisabled}},tones:{inverse:{focus:{color:Jo.color.textNeutral}}},themeStyles:ks};oi(Bs),oi(Is),oi(Es);var Ns=(null==(Ko=Jo)?void 0:Ko.componentConfig).Key,Fs=void 0===Ns?{styles:{}}:Ns,Ls=(Fs.defaultTone,m(Fs,f)),zs={themeKeys:{keySpacing:"keySpacing",textAlign:"textAlign",borderRadius:"borderRadius",color:"backgroundColor",justifyContent:"justifyContent",baseWidth:"baseWidth",sizes:"sizes",contentColor:"contentColor"},base:{keySpacing:Jo.spacer.md,height:9*Jo.spacer.md,paddingX:Jo.spacer.md,contentColor:Jo.color.fillNeutral,sizes:{sm:1,md:2,lg:3,xl:4,xxl:5},padding:[Jo.spacer.md],baseWidth:7*Jo.spacer.md,color:Jo.color.interactiveNeutral,display:"flex",justifyContent:"center",alignItems:"center",borderRadius:Jo.radius.sm},modes:{focus:{color:Jo.color.interactiveNeutralFocus,contentColor:Jo.color.fillInverse},disabled:{color:Jo.color.fillNeutralDisabled,contentColor:Jo.color.fillNeutralDisabled}},tones:{inverse:{color:Jo.color.interactiveInverse,focus:{color:Jo.color.interactiveInverseFocus,contentColor:Jo.color.fillNeutral}},brand:{focus:{contentColor:Jo.color.fillNeutral}}},themeStyles:Ls},Ms={themeKeys:{color:"textColor"},base:A({textAlign:"left",color:Jo.color.textNeutral},Jo.typography.headline2),modes:{focus:{color:Jo.color.textInverse},disabled:{color:Jo.color.textNeutralDisabled}},tones:{inverse:{focus:{color:Jo.color.textNeutral}}},themeStyles:Ls};oi(zs),oi(Ms);var Ps=(null==($o=Jo)?void 0:$o.componentConfig).Input,Ds=void 0===Ps?{styles:{}}:Ps,Os=(Ds.defaultTone,m(Ds,p)),Us={themeKeys:{justifyContent:"justifyContent"},base:{display:"flex",justifyContent:"flexStart",flexDirection:"column",width:100,height:100,actualTitle:""},themeStyles:Os},Ws={themeKeys:{borderRadius:"borderRadius",color:"backgroundColor"},base:{width:function(e,t=1){var r=e.layout.screenW,n=e.layout.columnCount,o=e.layout.marginX,i=e.layout.gutterX;if(!(t<1||t>n))return(r-2*o-(t-1)*i)/t;console.error(`Column expects a number between 1 & ${n}. Received ${t}`)}(Jo,4),height:100,display:"flex",flexDirection:"column",padding:[Jo.spacer.xxxl,Jo.spacer.xl],color:Jo.color.interactiveNeutral,contentColor:Jo.color.fillInverse,borderRadius:Jo.radius.sm,marginX:Jo.spacer.xxxl},modes:{focus:{color:Jo.color.interactiveNeutralFocus},disabled:{color:Jo.color.fillNeutralDisabled}},tones:{inverse:{color:Jo.color.interactiveInverse},brand:{color:Jo.color.interactiveBrand,focus:{color:Jo.color.fillNeutral}}},themeStyles:Os},Ys={themeKeys:{color:"textColor"},base:A({textAlign:"left",color:Jo.color.textNeutral},Jo.typography.button1),themeStyles:Os};oi(Us),oi(Ws),oi(Ys);var Hs=(null==(Xo=Jo)?void 0:Xo.componentConfig).Tile,js=void 0===Hs?{styles:{}}:Hs,Qs=(js.defaultTone,m(js,v)),Ks=(null==(Go=Jo)?void 0:Go.componentConfig).Surface,$s=void 0===Ks?{styles:{}}:Ks,Xs=($s.defaultSurfaceTone,m($s,g)),Gs={themeKeys:{alpha:"alpha",paddingYProgress:"paddingYProgress"},base:{width:400,height:240,padding:[40,10],paddingYProgress:Jo.spacer.xl,paddingYBetweenContent:Jo.spacer.md,borderRadius:Jo.radius.md,alpha:Jo.alpha.primary},modes:{disabled:{alpha:Jo.alpha.inactive}},themeStyles:A(A({},Xs),Qs)},Vs={themeKeys:{},base:{display:"flex",flexDirection:"column",justifyContent:"flexStart",mountY:1},themeStyles:Qs},Zs={themeKeys:{},base:{display:"flex",flexDirection:"column",justifyContent:"flexStart"},themeStyles:Qs},qs={themeKeys:{},base:{width:5*Jo.spacer.lg,height:Jo.spacer.xxl+Jo.spacer.md},themeStyles:Qs};oi(Gs),oi(Vs),oi(Zs),oi(qs);var Js={color:255,height:150,width:330,x:1910,y:10,mountX:1,alpha:.8,zIndex:100},ea={x:10,fontSize:22,textColor:Sn("#f6f6f6")},ta={fontSize:22,textColor:Sn("#f6f6f6")},ra=x(Gt(0),2),na=ra[0],oa=ra[1],ia=x(Gt(0),2),sa=ia[0],aa=ia[1],la=x(Gt(99),2),da=la[0],ua=la[1],ha=x(Gt(0),2),ca=ha[0],fa=ha[1],pa=x(Gt(0),2),va=pa[0],ga=pa[1],ma=x(Gt(0),2),xa=ma[0],ya=ma[1],ba=x(Gt(0),2),wa=ba[0],Sa=ba[1],Aa=0,Ca=0;function Ta(e){e.renderer.on("fpsUpdate",((e,t)=>{var r,n,o,i,s="number"==typeof t?t:t.fps;s>5&&((e=>{e&&(oa(e),ua((t=>Math.min(e,t))),fa((t=>Math.max(e,t))),Ca+=e,Aa++,aa(Math.round(Ca/Aa)))})(s),r=e.root.stage,n=0,o=0,i=0,r.txManager.textureIdCache.forEach(((e,t,r)=>{"loaded"===e.state&&n++,"loading"===e.state&&o++,"failed"===e.state&&i++})),ga(n),ya(o),Sa(i))}))}var _a=e=>vn(dn,bn(e,{style:Js,get children(){return[vn(dn,{get children(){return[vn(ln,{style:ea,children:"FPS:"}),vn(ln,{style:ta,x:90,get children(){return na()}})]}}),vn(dn,{x:160,get children(){return[vn(ln,{style:ea,children:"AVG:"}),vn(ln,{style:ta,x:100,get children(){return sa()}})]}}),vn(dn,{x:0,y:20,get children(){return[vn(ln,{style:ea,children:"MIN:"}),vn(ln,{style:ta,x:90,get children(){return da()}})]}}),vn(dn,{x:160,y:20,get children(){return[vn(ln,{style:ea,children:"MAX:"}),vn(ln,{style:ta,x:100,get children(){return ca()}})]}}),vn(dn,{x:0,y:50,get children(){return[vn(ln,{style:ea,children:"Loaded Textures Cnt:"}),vn(ln,{style:ea,x:270,get children(){return va()}})]}}),vn(dn,{x:0,y:80,get children(){return[vn(ln,{style:ea,children:"Loading Textures Cnt:"}),vn(ln,{style:ea,x:270,get children(){return xa()}})]}}),vn(dn,{x:0,y:110,get children(){return[vn(ln,{style:ea,children:"Failed Textures Cnt:"}),vn(ln,{style:ea,x:270,get children(){return wa()}})]}})]}})),Ra={Column:{flexDirection:"column",display:"flex",width:320,height:600,y:360,gap:20,zIndex:101,transition:{x:{duration:250,easing:"ease-in-out"}},x:8,focus:{x:Jo.layout.marginX}},Gradient:{zIndex:99,color:Sn("#000000"),src:"./assets/sidenav.png",alpha:0,width:1200,height:1080,focus:{alpha:1},transition:{alpha:!0}},NavButton:{zIndex:102,height:70,width:100,borderRadius:8,focus:{color:Sn("#424242")},active:{width:328,height:70}}},ka="/solid-demo-app/",Ba=[{name:"experiment",width:81,height:100,x:0,y:0},{name:"trending",width:100,height:56,x:81,y:0},{name:"tv",width:100,height:68,x:181,y:0},{name:"movie",width:94,height:100,x:282,y:0}];function Ia(e){var t,r,n,o=(t=ka+"assets/icons_white.png",r=Ba,n=Dr.createTexture("ImageTexture",{src:t}),r.reduce(((e,t)=>{var r=t.x,o=t.y,i=t.width,s=t.height;return e[t.name]=Dr.createTexture("SubTexture",{texture:n,x:r,y:o,width:i,height:s}),e}),{}));return vn(dn,bn(e,{get texture(){return o[e.name]},get width(){return o[e.name].props.width},get height(){return o[e.name].props.height},get x(){return(100-(o[e.name].props.width||0))/2},get y(){return(100-(o[e.name].props.height||0))/2}}))}function Ea(e){return vn(dn,bn(e,{forwardStates:!0,get style(){return Ra.NavButton},get children(){return[vn(dn,{y:-16,get children(){return vn(Ia,{scale:.5,get name(){return e.icon}})}}),vn(ln,{style:{fontSize:38,x:116,y:18,height:50,alpha:0,active:{alpha:1}},get children(){return e.children}})]}}))}function Na(e){var t,r=Yn();function n(t){var n,o,i,s;if((n=()=>t,i=Hn(),s=Jt((()=>Pn(n()).map((e=>Ln(e,void 0,o))))),Jt((()=>{var e,t=T(s());try{for(t.s();!(e=t.n()).done;){var r=(0,e.value)(i.pathname);if(r)return r}}catch(n){t.e(n)}finally{t.f()}})))())return e.focusPage();r(t)}return[vn(dn,{flexItem:!1,x:40,y:30,zIndex:105,get alpha(){return e.showWidgets?1:0},get children(){return[vn(ln,{x:80,fontSize:28,color:4143380036,children:"Built With:"}),vn(dn,{y:22,src:"./assets/solidWord.png",width:280,height:52})]}}),vn(Ki,bn(e,{onFocus:function(){t.states.add("focus"),this.children.forEach((e=>e.states.add("active"))),this.children.selected.setFocus()},onBlur:function(){t.states.remove("focus"),this.selected=0,this.children.forEach((e=>e.states.remove("active")))},get style(){return Ra.Column},scroll:"none",get children(){return[vn(Ea,{onEnter:()=>n("/browse/all"),icon:"trending",children:"Trending"}),vn(Ea,{icon:"movie",onEnter:()=>n("/browse/movie"),children:"Movies"}),vn(Ea,{icon:"tv",onEnter:()=>n("/browse/tv"),children:"TV"}),vn(Ea,{icon:"experiment",onEnter:()=>n("/examples"),children:"Examples"})]}})),vn(dn,{ref(e){"function"==typeof t?t(e):t=e},get style(){return Ra.Gradient}})]}var Fa=e=>{mo({Announcer:["a"],Menu:["m"],Escape:["Escape",27],Backspace:["Backspace",8],Left:["ArrowLeft",37],Right:["ArrowRight",39],Up:["ArrowUp",38],Down:["ArrowDown",40],Enter:["Enter",13]});var t=(Eo.setupTimers(),qt(nr(vo,Eo.onFocusChange,{defer:!0})),Eo);t.enabled=!1;var r,n,o=Yn();function i(){return!r.states.has("focus")&&(n=Gr(),r.setFocus())}Ta({renderer:Dr});var s=x(Gt(!0),2),a=s[0],l=s[1],d=Hn(),u=["/browse","/entity"];return qt((()=>{var e=d.pathname,t=u.some((t=>e.startsWith(t)));"/"===e&&(t=!0),l(t)})),vn(dn,{ref(e){var t=window.APP;"function"==typeof t?t(e):window.APP=e},onAnnouncer:()=>t.enabled=!t.enabled,onLast:()=>history.back(),onMenu:()=>o("/"),style:{width:1920,height:1080},onBackspace:i,onLeft:i,onRight:()=>r.states.has("focus")&&n.setFocus(),get children(){return[vn(ei,{}),vn(_a,{mountX:1,x:1910,y:10,get alpha(){return a()?1:0}}),pn((()=>e.children)),vn(Na,{ref(e){"function"==typeof r?r(e):r=e},focusPage:()=>n.setFocus(),get showWidgets(){return a()}})]}})},La={Page:{width:1920,height:1080},headlineText:{width:1200,height:240,x:360,y:455,contain:"both",fontSize:66,textAlign:"center"},headlineSubText:{width:960,height:170,x:530,y:655,contain:"both",fontSize:48,textAlign:"center"},itemsContainer:{width:Jo.layout.screenW,height:600,y:560,x:0,zIndex:2},Thumbnail:{borderRadius:16,width:185,height:278,scale:1,zIndex:2,transition:{scale:{duration:250,easing:"ease-in-out"}},border:{width:0,color:0},focus:{scale:1.1,border:{color:4294967142,width:8}}},FocusRing:{borderRadius:16,width:194,height:286,y:-5,x:-5,zIndex:-1},FPS:{color:255,height:42,width:140,x:20,y:20,zIndex:100},FPSLabel:{x:10,y:0,fontSize:36,textColor:Sn("#ffffff")},FPSValue:{x:90,y:0,fontSize:36,textColor:Sn("#ffffff")},showHeadline:{x:70,y:20},headlineBlur:{width:1920,height:150,x:0,y:0,zIndex:14,alpha:.9,color:Sn("#000000")},RowTitle:{height:60,width:300,marginBottom:-40,fontSize:36,color:Sn("#f0f0f0"),zIndex:2},Row:{display:"flex",justifyContent:"spaceBetween",height:300},Column:{display:"flex",flexDirection:"column",justifyContent:"flexStart",gap:64,width:Jo.layout.screenW-2*Jo.layout.marginX,x:Jo.layout.marginX+Jo.layout.gutterX,y:48,transition:{y:{duration:250,easing:"ease-in-out"}},zIndex:2},Rect:{width:250,height:100,y:10,x:300,color:Sn("#0000ff")},peopleBio:A(A({},Jo.typography.body1),{},{fontFamily:"Ubuntu",fontWeight:"normal",contain:"both",width:780,height:340})},za={width:120,height:40,color:Sn("#000000"),borderRadius:8,border:{width:2,color:Sn("#3333ff")},scale:1,focus:{scale:1.1,border:{width:5,color:Sn("#333333")}},transition:{scale:!0,color:!0}},Ma={container:za,topBar:{color:Sn("#00A699"),height:8,y:2,x:-4,width:za.width+8},text:{fontSize:12,y:12,contain:"width",textAlign:"center",color:Sn("#F6F6F9"),height:za.height,width:za.width}},Pa=386,Da=136,Oa=(Sn("#715cab"),Sn("#5a39a2"),Sn("#291d43"),{fontSize:32,contain:"width",textAlign:"center",mountY:-.35,color:Sn("#FFFFFF"),height:Da,width:Pa,focus:{fontSize:40},disabled:{color:Sn("#909090")}});function Ua(e){return vn(dn,bn(e,{get style(){return La.Thumbnail}}))}function Wa(e){var t=function(e,...t){if(Lt in e){var r=new Set(t.length>1?t.flat():t[0]),n=t.map((t=>new Proxy({get:r=>t.includes(r)?e[r]:void 0,has:r=>t.includes(r)&&r in e,keys:()=>t.filter((t=>t in e))},Er)));return n.push(new Proxy({get:t=>r.has(t)?void 0:e[t],has:t=>!r.has(t)&&t in e,keys:()=>Object.keys(e).filter((e=>!r.has(e)))},Er)),n}var o,i={},s=t.map((()=>({}))),a=T(Object.getOwnPropertyNames(e));try{for(a.s();!(o=a.n()).done;){var l,d=o.value,u=Object.getOwnPropertyDescriptor(e,d),h=!u.get&&!u.set&&u.enumerable&&u.writable&&u.configurable,c=!1,f=0,p=T(t);try{for(p.s();!(l=p.n()).done;)l.value.includes(d)&&(c=!0,h?s[f][d]=u.value:Object.defineProperty(s[f],d,u)),++f}catch(v){p.e(v)}finally{p.f()}c||(h?i[d]=u.value:Object.defineProperty(i,d,u))}}catch(v){a.e(v)}finally{a.f()}return[...s,i]}(e,["items"]),r=x(t,2),n=r[0],o=r[1];return vn(Ts,bn(o,{get style(){return La.Row},get children(){return vn(Mr,{get each(){return n.items},children:e=>vn(Ua,e)})}}))}var Ya,Ha,ja="https://api.themoviedb.org/3",Qa="w185",Ka={headers:{"Content-Type":"application/json",Authorization:"Bearer eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIyZDE4YjEwMTA0YjdiZTlkNjFiMWYwYjVlMGEwNzM2OCIsInN1YiI6IjYwZTVjMTdlNGNhNjc2MDA3NTA4Njc3MSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.D_nqH9kd-bhhWzeVsTDPYhHnsUaNAuyAa6YATmKHqsA"}};function $a(e,t=Qa){return Ha+t+e}function Xa(e,t={}){return fetch(ja+e,A(A({},Ka),t)).then((e=>e.json()))}function Ga(){return Xa("/configuration").then((e=>{var t;return Ya=e,Ha=null===(t=e.images)||void 0===t?void 0:t.secure_base_url,e}))}var Va={get:function(e,t={}){return Ya?Xa(e,t):Ga().then((()=>Xa(e,t)))},loadConfig:Ga};function Za(e=[]){return e.map((e=>{return{src:$a(e.poster_path||e.profile_path),tileSrc:$a(e.backdrop_path||e.profile_path,"w300"),backdrop:$a(e.backdrop_path,"w1280"),href:`/entity/${e.media_type||"people"}/${e.id}`,shortTitle:(t=e.title||e.name,r=30,t.length>r?t.substring(0,r-3)+"...":t),title:e.title||e.name,data:e,entityInfo:{type:e.media_type||"people",id:e.id},heroContent:{title:e.title||e.name,description:e.overview}};var t,r}))}var qa=new Map,Ja=new Map;function el(e){var t=x(Gt([]),2),r=t[0],n=t[1],o=x(Gt(1),2),i=o[0],s=o[1],a=x(Gt(!1),2),l=a[0],d=a[1],u=x(er(i,e),1)[0];return Vt((()=>{var e=u();e&&mr((()=>{0===e.length&&d(!0),n((t=>[...t,...e]))}),!1)})),{pages:r,page:i,setPage:s,setPages:n,end:l,setEnd:d}}var tl={display:"flex",flexDirection:"column",x:50,y:100,width:900,height:220,gap:16},rl=A(A({},Jo.typography.display2),{},{fontFamily:"Ubuntu",fontWeight:700,maxLines:1,width:900,contain:"width"}),nl=e=>vn(ln,bn(e,{style:rl})),ol=A(A({},Jo.typography.body1),{},{fontFamily:"Ubuntu",fontWeight:400,lineHeight:32,width:900,maxLines:3,contain:"width"}),il=e=>vn(ln,bn(e,{style:ol,get children(){return e.children}}));A(A({},Jo.typography.body2),{},{fontFamily:"Ubuntu",fontWeight:400});var sl=e=>vn(dn,bn(e,{style:tl,get children(){return[vn(nl,{get children(){return e.title}}),vn(il,{get children(){return e.description}})]}}));function al(e){return e.split("-")[0]}function ll({type:e,id:t}){return Va.get(`/${e}/${t}/recommendations`).then((({results:t})=>t.length?Za(t.slice(0,7)):Va.get(`/trending/${e}/week?page=1`).then((({results:e})=>Za(e.slice(0,7))))))}function dl({type:e,id:t}){return Va.get(`/${e}/${t}/credits`).then((({cast:e})=>Za(e.slice(0,7))))}function ul({type:e,id:t}){var r="movie"===e?{rtCrit:86,rtFan:92}:{};return Va.get(`/${e}/${t}`).then((t=>{return A({backgroundImage:$a(t.backdrop_path,"w1280"),heroContent:{title:t.title||t.name,description:t.overview,badges:["HD","CC"],voteAverage:t.vote_average,voteCount:t.vote_count,metaText:"movie"===e?(i=t.runtime,s=i%60,Math.floor(i/60)+"h "+(s<10?"0":"")+s+"min "+(n=t.release_date,o=n.split("-"),o[1]+"/"+o[2]+"/"+o[0])):`${al(t.first_air_date)} - ${al(t.last_air_date)}`,reviews:r}},t);var n,o,i,s}))}var hl=()=>{var e=jn(),t=x(Gt(0),2),r=t[0],n=t[1],o=x(Gt(),2),i=o[0];o[1];er(i,ul);var s=x(Gt({}),2),a=s[0],l=s[1],d=Yn(),u=tr((()=>0)),h=Jt((()=>{return el((t=e.filter||"all",e=>{var r=`/trending/${t}/week?page=${e}`;if(qa.has(r))return qa.get(r);var n=Va.get(r).then((e=>{var r=e.results.filter((e=>!e.adult)),n=function(e,t=7){for(var r=[],n=0,o=e.length;nqo(e)),400),f=To((e=>l(e)),200);function p(){var e;null===(e=this.children.selected)||void 0===e||e.setFocus(),n(-1*(this.y||0)+24);var t=h().pages().length;(0===t||this.parent.selected&&this.parent.selected>=t-2)&&h().setPage((e=>e+1))}function v(){var e=this.children.selected;return _(e&&e.href),d(e.href),!0}return qt(nr(Gr,(e=>{e.backdrop&&c(e.backdrop),e.heroContent&&f(e.heroContent)}),{defer:!0})),vn(Pr,{get when(){return h().pages().length},get children(){return[vn(sl,bn({y:360,x:162},a)),vn(dn,{clipping:!0,get style(){return La.itemsContainer},get children(){return vn(Ki,{plinko:!0,announce:"All Trending - Week",get y(){return r()},get style(){return La.Column},get children(){return vn(Mr,{get each(){return h().pages()},children:(e,t)=>vn(Wa,{get autofocus(){return u(t())},items:e,width:1620,onFocus:p,onEnter:v})})}})}})]}})},cl=()=>{var e=Yn(),t=tr((()=>0));function r(){var t=this.children.selected;_(t&&t.id),e("/"+t.id)}var n=[{title:"Flex Row",id:"flex",description:"Flex Row Implementation"},{title:"Flex Column",id:"flexcolumn",description:"Flex Column Implementation"},{title:"Flex Row Vertical Align",id:"flexsize",description:"Flex Row Vertical Align Implementation"},{title:"Flex Column Vertical Align",id:"flexcolumnsize",description:"Flex Column Vertical Align Implementation"},{title:"Buttons",id:"buttons",description:"Demo a few buttons"},{title:"Text",id:"text",description:"Text layout with flexbox"},{title:"Create Elements",id:"create",description:"Testing Show + children + inserting text"},{title:"Viewport",id:"viewport",description:"Events going in and out of viewport"}];function o(e){var t=x(Gt(4294967295),2),r=t[0],n=t[1];return vn(dn,bn(e,{onFocus:()=>n(255),onBlur:()=>n(4294967295),style:{width:370,height:320,borderRadius:6,scale:1,color:405488895,transition:{color:!0,scale:!0},focus:{scale:1.1,color:4294967295}},get children(){return vn(dn,{x:30,get children(){return[vn(ln,{y:30,fontSize:84,get color(){return r()},get children(){return e.index}}),vn(ln,{y:140,fontSize:42,width:340,height:42,contain:"both",get color(){return r()},get children(){return e.title}}),vn(ln,{y:200,fontSize:28,width:330,contain:"width",get color(){return r()},get children(){return e.description}})]}})}}))}var i=x(Gt(140),2),s=i[0],a=i[1];function l(e){a(-400*e.selected+140)}return vn(dn,{colorTop:1147903743,colorBottom:743406847,get children(){return[vn(dn,{x:120,get children(){return[vn(dn,{src:"./assets/solidjs.png",width:101,height:90,y:40}),vn(ln,{fontSize:90,x:110,y:40,children:"Examples"}),vn(dn,{y:140,height:1,width:1800,color:3906468351})]}}),vn(Ts,{onSelectedChanged:l,onEnter:r,transition:{x:{delay:20,duration:300}},get x(){return s()},y:300,width:4400,get style(){return La.Row},justifyContent:"flexStart",gap:40,get children(){return vn(Mr,{each:n,children:(e,r)=>vn(o,bn({get autofocus(){return t(r())},get index(){return r()}},e))})}})]}})},fl=()=>{var e={width:900,height:500,y:350,x:150,gap:25,display:"flex",flexDirection:"column",justifyContent:"flexStart",color:Sn("00000000")},t={width:900,height:36,gap:6,display:"flex",flexDirection:"row",justifyContent:"flexStart",color:Sn("00000000")},r={fontSize:42},n={width:e.width,fontSize:26,contain:"width"},o={fontSize:26};return or((()=>{qo("#000000")})),vn(dn,{autofocus:!0,style:e,get children(){return[vn(ln,{style:r,children:"Title of the Page"}),vn(ln,{style:n,children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel tempor tellus. Sed eu leo purus. Vestibulum sollicitudin eget tellus a varius. Phasellus est turpis, volutpat sed blandit sit amet, rutrum sit amet mauris. In dignissim elit orci, a sollicitudin ipsum faucibus et. Quisque vel quam rutrum, faucibus augue sed, scelerisque nunc."}),vn(dn,{style:t,get children(){return[vn(ln,{style:o,children:"Subline Text"}),vn(dn,{width:28,height:28,src:"./assets/rt-popcorn.png"}),vn(ln,{style:o,children:"More Text"})]}})]}})},pl=()=>{var e,t,r={width:900,height:500,y:50,x:150,gap:25,display:"flex",flexDirection:"column",justifyContent:"flexStart",color:Sn("00000000")},n={width:900,height:36,gap:6,display:"flex",flexDirection:"row",justifyContent:"flexStart",color:Sn("00000000")},o={fontSize:42},i={fontSize:26};or((()=>{qo("#000000"),e.animate({x:100},{duration:2e3}).start()}));var s=x(Gt(),2),a=s[0],l=s[1],d=x(Gt(),2),u=d[0];d[1];setTimeout((()=>{var e;l("- Inserted -"),null===(e=t.getChildById("child1"))||void 0===e||e.animate({x:600},{duration:2e3}).start()}),2e3);var h={width:400,height:300,color:Sn("#0000ff")},c={color:Sn("#f54242"),focus:{color:Sn("#4287f5")}};function f(e){var t=hr((()=>e.children));return vn(dn,bn(e,{get style(){return[c,e.style,[h]]},get children(){return[vn(dn,{id:"child1",width:100,height:100,get color(){return Sn("#ff0000")},y:25,get children(){return[pn((()=>t())),vn(dn,{id:"subChild",x:150,width:100,height:100,get color(){return Sn("#00ff00")}}),vn(ln,{get children(){return e.title}})]}}),vn(dn,{width:100,height:100,get color(){return Sn("#ffff00")},y:175,get children(){return t()}})]}}))}var p={borderLeft:{width:8,color:95598118},borderTop:{width:8,color:631422246},borderRight:{width:8,color:95598118},borderBottom:{width:8,color:3316790822}},v={color:Sn("#cccccc"),focus:{color:Sn("#000000")}},g={color:Sn("#ffffff"),focus:{color:Sn("#f6f6cc")}};return vn(dn,{style:r,get children(){return[vn(ln,{style:o,children:"Title of the Page"}),vn(dn,{style:n,get children(){return[vn(ln,{get children(){return u()}}),vn(ln,{style:i,get children(){return["Sub ",pn((()=>a()))," Text"]}}),vn(Pr,{get when(){return a()},get children(){return vn(dn,{width:28,height:28,src:"./assets/rt-popcorn.png"})}}),vn(ln,{style:i,children:"More Text"})]}}),vn(f,{autofocus:!0,ref(e){"function"==typeof t?t(e):t=e},style:[g,v],get children(){return vn(ln,{children:"Child Test"})}}),vn(dn,{ref(t){"function"==typeof e?e(t):e=t},style:p,width:100,height:100,get color(){return Sn("#00ff00")},x:900,y:400,get alpha(){return e.states.has("focus")?1:.2}})]}})},vl=()=>{var e,t,r=x(Gt([]),2),n=r[0],o=r[1],i={width:100,height:100,x:-400,y:-400,rotation:0,borderRadius:50,color:Sn("#4287f5"),transition:{x:{duration:1250,easing:"linear"},y:{duration:1250,easing:"linear"},rotation:{duration:1400,easing:"ease-in-out"}}},s={fontSize:32,x:960,y:540,mount:.5,lineheight:52},a=(e,t)=>Math.floor(Math.random()*(t-e+1)+e);function l(e,t){o((t=>[...t,e].slice(-4))),console.log(e)}return or((()=>{qo("#000000"),e.x=910,e.y=490,t=setInterval((()=>{e.rotation=a(-90,90),e.x=a(-300,2220),e.y=a(-300,1380)}),2500)})),ir((()=>{clearInterval(t)})),vn(dn,{get children(){return[vn(ln,{style:s,get children(){return n().join("\n")}}),vn(dn,{autofocus:!0,style:i,ref(t){"function"==typeof e?e(t):e=t},onEvents:[["inBounds",e=>l("inBounds")],["outOfBounds",e=>l("outOfBounds")],["inViewport",e=>l("inViewport")],["outOfViewport",e=>l("outOfViewport")]]})]}})},gl=()=>{function e(e,t){this.states.toggle("disabled")}var t={display:"flex",justifyContent:"flexStart",width:1500,height:300,color:Sn("00000000"),gap:26,y:400};function r(e){return vn(dn,bn(e,{forwardStates:!0,get style(){return Ma.container},get children(){return vn(ln,{get style(){return Ma.text},get children(){return e.children}})}}))}var n=e=>{return t=gn("node"),wn(xo,t,(()=>[10,15])),xn(t,bn(e,{get style(){return{color:Sn("#000000be"),borderRadius:8,border:{width:2,color:Sn("#ffffff")}}}}),!0),mn(t,vn(ln,{style:{fontSize:20},get children(){return e.children}})),t;var t};return[vn(Ts,{x:100,y:200,gap:5,style:t,get children(){return[vn(n,{children:"HD"}),vn(n,{children:"PG13"}),vn(n,{children:"NC17"}),vn(ln,{fontSize:30,children:"I like bananas"}),vn(n,{children:"DOLBY"})]}}),vn(Ts,{x:100,gap:40,style:t,get children(){return[vn(r,{autofocus:!0,onEnter:e,children:"TV Shows"}),vn(r,{states:{active:!0,disabled:!1},children:"Movies"}),vn(r,{states:"active",children:"Sports"}),vn(r,{states:"disabled",children:"News"})]}})]},ml=()=>{var e={display:"flex",justifyContent:"flexStart",width:1600,height:110,color:Sn("#4dabf5")},t={fontSize:44,marginTop:25,marginBottom:-20,skipFocus:!0};function r(e){return vn(dn,bn(e,{style:{width:200,height:100,y:5,color:392801023}}))}var n=x(Gt(50),2),o=n[0],i=n[1];function s(){var e;null===(e=this.children.selected)||void 0===e||e.setFocus(),i(150+-1*(this.y||0))}or((()=>{qo("#333333")}));var a=50;return vn(Ki,{x:160,get y(){return o()},gap:30,height:850,get width(){return e.width},get style(){return La.Column},get children(){return[vn(ln,{style:t,children:"Flex Start"}),vn(Ts,{gap:a,style:e,onFocus:s,get children(){return[vn(r,{autofocus:!0}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(ln,{style:t,children:"Flex Start - Margin Left"}),vn(Ts,{gap:a,style:e,onFocus:s,get children(){return[vn(r,{marginLeft:100}),vn(r,{}),vn(r,{marginLeft:100}),vn(r,{}),vn(r,{})]}}),vn(ln,{style:t,children:"Flex End"}),vn(Ts,{gap:a,justifyContent:"flexEnd",style:e,onFocus:s,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(ln,{style:t,children:"Flex End - Margin Right"}),vn(Ts,{gap:a,justifyContent:"flexEnd",style:e,onFocus:s,get children(){return[vn(r,{}),vn(r,{marginRight:100}),vn(r,{}),vn(r,{}),vn(r,{marginRight:100})]}}),vn(ln,{style:t,children:"Center - No Margin Support"}),vn(Ts,{gap:a,justifyContent:"center",style:e,onFocus:s,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(ln,{style:t,children:"Space Between - No Margin Support"}),vn(Ts,{gap:a,justifyContent:"spaceBetween",style:e,onFocus:s,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(ln,{style:t,children:"Space Evenly - No Margin Support"}),vn(Ts,{gap:a,justifyContent:"spaceEvenly",style:e,onFocus:s,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}})]}})},xl=()=>{var e={display:"flex",justifyContent:"flexStart",width:1600,height:110,color:Sn("#4dabf5")},t={fontSize:44,marginTop:25,marginBottom:-20,skipFocus:!0};function r(e){return vn(dn,bn(e,{style:{width:200,height:100,y:5,color:392801023}}))}function n(){return Math.floor(91*Math.random())+10}var o=x(Gt(50),2),i=o[0],s=o[1];function a(){var e;null===(e=this.children.selected)||void 0===e||e.setFocus(),s(150+-1*(this.y||0))}or((()=>{qo("#333333")}));var l=50;return vn(Ki,{x:160,get y(){return i()},gap:30,height:850,get width(){return e.width},get style(){return La.Column},get children(){return[vn(ln,{style:t,children:"Flex Start - AlignItems: center"}),vn(Ts,{alignItems:"center",gap:l,style:e,onFocus:a,get children(){return[vn(r,{autofocus:!0,get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}})]}}),vn(ln,{style:t,children:"Flex Start - Margin Left - AlignItems: flexStart"}),vn(Ts,{gap:l,alignItems:"flexStart",style:e,onFocus:a,get children(){return[vn(r,{marginLeft:100,get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{marginLeft:100,get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}})]}}),vn(ln,{style:t,children:"Flex End - AlignItems: flexEnd"}),vn(Ts,{gap:l,justifyContent:"flexEnd",alignItems:"flexEnd",style:e,onFocus:a,get children(){return[vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}})]}}),vn(ln,{style:t,children:"Flex End - Margin Right"}),vn(Ts,{gap:l,justifyContent:"flexEnd",style:e,onFocus:a,get children(){return[vn(r,{get height(){return n()}}),vn(r,{marginRight:100,get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{marginRight:100,get height(){return n()}})]}}),vn(ln,{style:t,children:"Center - No Margin Support"}),vn(Ts,{gap:l,justifyContent:"center",style:e,onFocus:a,get children(){return[vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}})]}}),vn(ln,{style:t,children:"Space Between - No Margin Support"}),vn(Ts,{gap:l,justifyContent:"spaceBetween",style:e,onFocus:a,get children(){return[vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}})]}}),vn(ln,{style:t,children:"Space Evenly - No Margin Support"}),vn(Ts,{gap:l,justifyContent:"spaceEvenly",style:e,onFocus:a,get children(){return[vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}}),vn(r,{get height(){return n()}})]}})]}})},yl=()=>{var e={display:"flex",justifyContent:"spaceEvenly",width:1920,y:100,height:880,color:Sn("00000000")},t={display:"flex",flexDirection:"column",justifyContent:"flexStart",color:Sn("#4dabf5"),height:850,width:80};function r(e){var t={width:Math.floor(61*Math.random())+10,height:80,x:5,color:Sn("#1769aa")};return vn(dn,bn(e,{style:t}))}var n=x(Gt(50),2),o=(n[0],n[1]);function i(){var e;null===(e=this.children.selected)||void 0===e||e.setFocus(),o(150+-1*(this.y||0))}or((()=>{qo("#333333")}));var s=50;return[vn(ln,{style:{fontSize:44,y:20,x:150},children:"Start, MarginTop, End, MarginBottom, Center, Between, Evenly"}),vn(Ts,{gap:s,style:e,onFocus:i,get children(){return[vn(Ki,{gap:30,style:t,alignItems:"center",get children(){return[vn(r,{autofocus:!0}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(Ki,{gap:s,style:t,onFocus:i,alignItems:"flexStart",get children(){return[vn(r,{marginTop:100}),vn(r,{}),vn(r,{marginTop:100}),vn(r,{}),vn(r,{})]}}),vn(Ki,{gap:s,alignItems:"flexEnd",justifyContent:"flexEnd",style:t,onFocus:i,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(Ki,{gap:s,justifyContent:"flexEnd",style:t,onFocus:i,get children(){return[vn(r,{}),vn(r,{marginBottom:100}),vn(r,{}),vn(r,{}),vn(r,{marginBottom:100})]}}),vn(Ki,{gap:s,justifyContent:"center",style:t,onFocus:i,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(Ki,{gap:s,justifyContent:"spaceBetween",style:t,onFocus:i,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(Ki,{gap:s,justifyContent:"spaceEvenly",style:t,onFocus:i,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}})]}})]},bl=()=>{var e={display:"flex",justifyContent:"spaceEvenly",width:1920,y:100,height:880,color:Sn("00000000")},t={display:"flex",flexDirection:"column",justifyContent:"flexStart",color:Sn("#4dabf5"),height:850,width:60};function r(e){var t={width:50,height:80,x:5,color:Sn("#1769aa")};return vn(dn,bn(e,{style:t}))}var n=x(Gt(50),2),o=(n[0],n[1]);function i(){var e;null===(e=this.children.selected)||void 0===e||e.setFocus(),o(150+-1*(this.y||0))}or((()=>{qo("#333333")}));var s=50;return[vn(ln,{style:{fontSize:44,y:20,x:150},children:"Start, MarginTop, End, MarginBottom, Center, Between, Evenly"}),vn(Ts,{gap:s,style:e,onFocus:i,get children(){return[vn(Ki,{gap:30,style:t,get children(){return[vn(r,{autofocus:!0}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(Ki,{gap:s,style:t,onFocus:i,get children(){return[vn(r,{marginTop:100}),vn(r,{}),vn(r,{marginTop:100}),vn(r,{}),vn(r,{})]}}),vn(Ki,{gap:s,justifyContent:"flexEnd",style:t,onFocus:i,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(Ki,{gap:s,justifyContent:"flexEnd",style:t,onFocus:i,get children(){return[vn(r,{}),vn(r,{marginBottom:100}),vn(r,{}),vn(r,{}),vn(r,{marginBottom:100})]}}),vn(Ki,{gap:s,justifyContent:"center",style:t,onFocus:i,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(Ki,{gap:s,justifyContent:"spaceBetween",style:t,onFocus:i,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}}),vn(Ki,{gap:s,justifyContent:"spaceEvenly",style:t,onFocus:i,get children(){return[vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{}),vn(r,{})]}})]}})]},wl=()=>{function e(e,t){this.states.toggle("disabled")}var t={display:"flex",justifyContent:"flexStart",width:1500,height:300,color:Sn("00000000"),gap:26,y:400,x:100},r={width:386,height:136,color:"0x715cabff",focus:{color:"0x5a39a2ff"},disabled:{color:"0x291d43ff"}},n=["RoundedRectangle",{radius:65}];function o(e){return vn(dn,bn(e,{forwardStates:!0,style:r,shader:n,get children(){return vn(ln,{style:Oa,get children(){return e.children}})}}))}return vn(Ts,{style:t,get children(){return[vn(o,{autofocus:!0,onEnter:e,children:"Focused"}),vn(o,{states:{active:!0,disabled:!1},children:"Normal"}),vn(o,{states:"disabled",children:"Disabled"})]}})},Sl="https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd";function Al(){return(Al=w(y().mark((function e(){var t,r;return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=document.getElementById("video"),r=new shaka.Player,e.next=4,r.attach(t);case 4:return window.player=r,r.addEventListener("error",Cl),e.prev=6,e.next=9,r.load(Sl);case 9:console.log("The video has now been loaded!"),e.next=15;break;case 12:e.prev=12,e.t0=e.catch(6),Tl(e.t0);case 15:case"end":return e.stop()}}),e,null,[[6,12]])})))).apply(this,arguments)}function Cl(e){Tl(e.detail)}function Tl(e){console.error("Error code",e.code,"object",e)}document.addEventListener("DOMContentLoaded",(function(){shaka.polyfill.installAll(),shaka.Player.isBrowserSupported()?function(){Al.apply(this,arguments)}():console.error("Browser not supported!")}));var _l=()=>{var e=jn(),t=Yn(),r=x(er((()=>A({},e)),ul),1)[0],n=x(er((()=>A({},e)),dl),1)[0],o=x(er((()=>A({},e)),ll),1)[0],i=x(Gt(0),2),s=i[0],a=i[1];qt(nr(r,(e=>{qo(e.backgroundImage)}),{defer:!0}));var l,d,u,h=640,c={color:Sn("#000000"),alpha:0,width:1900,height:890,x:-160,y:h,borderRadius:30};function f(){var e;null===(e=this.children.selected)||void 0===e||e.setFocus(),l.y=h,d.y=h,d.alpha=0}function p(){var e;null===(e=this.children.selected)||void 0===e||e.setFocus(),l.y=200,d.y=160,d.alpha=.9}function v(){var e=this.children.selected;_(e&&e.href),t(e.href)}function g(){var e;(e=document.getElementById("video")).hidden=!0,e.pause(),document.getElementsByTagName("canvas")[0].focus(),u.setFocus(),a(0)}function m(){var e=function(){var e=document.getElementById("video");return e.hidden=!1,setTimeout((()=>e.play()),50),e.focus(),e}();Vr(e),a(.9)}return vn(Pr,{get when(){return r()},keyed:!0,get children(){return[vn(dn,{x:170,onUp:()=>u.setFocus(),onEscape:g,get children(){return[vn(sl,bn({y:260},(()=>r().heroContent))),vn(Ts,{ref(e){"function"==typeof u?u(e):u=e},y:500,scroll:"none",height:90,width:640,gap:40,onDown:()=>l.setFocus(),onEnter:m,get children(){return[vn(Ii,{width:300,autofocus:!0,children:"Play"}),vn(Ii,{width:300,children:"Resume"})]}}),vn(Ki,{ref(e){"function"==typeof l?l(e):l=e},x:0,y:h,get style(){return La.Column},zIndex:5,get children(){return vn(Pr,{get when(){return pn((()=>!!o()))()&&n()},get children(){return[vn(ln,{skipFocus:!0,get style(){return La.RowTitle},children:"Recommendations"}),vn(Wa,{onFocus:f,onEnter:v,get items(){return o()},width:1620}),vn(ln,{skipFocus:!0,get style(){return La.RowTitle},children:"Cast and Crew"}),vn(Wa,{onFocus:p,onEnter:v,get items(){return n()},width:1620})]}})}}),vn(dn,{ref(e){"function"==typeof d?d(e):d=e},style:c,transition:{alpha:!0,y:!0}})]}}),vn(dn,{get alpha(){return s()},get color(){return Sn("#000000")},zIndex:200,transition:{alpha:!0}})]}})};function Rl({id:e}){return Va.get(`/person/${e}/combined_credits`).then((({cast:e})=>Za(e.slice(0,7))))}function kl({id:e}){return Va.get(`/person/${e}`).then((e=>A({backgroundImage:$a(e.profile_path,"original"),heroContent:{title:e.title||e.name,description:e.biography}},e)))}var Bl=()=>{var e=jn(),t=Yn(),r=x(er((()=>A({},e)),kl),1)[0],n=x(er((()=>A({},e)),Rl),1)[0],o={color:Sn("#000000"),alpha:.8,width:800,height:440,x:130,y:180,borderRadius:30};function i(){var e=this.children.selected;_(e&&e.href),t(e.href)}return or((()=>{qo("#333333")})),vn(Pr,{get when(){return r()},keyed:!0,get children(){return[vn(dn,{get src(){return r().backgroundImage},width:400,autosize:!0,y:0,x:1800,mountX:1}),vn(dn,{x:150,y:200,width:800,gap:24,get style(){return La.Column},zIndex:3,get children(){return[vn(ln,{contain:"width",fontFamily:"Ubuntu",get style(){return Jo.typography.display2},get children(){return r().name}}),vn(ln,{contain:"both",get style(){return La.peopleBio},get children(){return r().biography}})]}}),vn(dn,{style:o}),vn(Ki,{y:670,x:140,get style(){return La.Column},scroll:"none",get children(){return vn(Pr,{get when(){return n()},get children(){return[vn(ln,{skipFocus:!0,get style(){return La.RowTitle},children:"Credits"}),vn(Wa,{autofocus:!0,onEnter:i,get items(){return n()}})]}})}})]}})},Il=()=>{return e=gn("node"),yn(e,"style",{width:1920,height:1080,color:868483072}),e;var e},El=new URL("AppCoreExtensions-legacy-KeSumw-d.js",S.meta.url).href;Yr.debug=!1,Yr.animationsEnabled=!0,Yr.fontSettings.fontFamily="Ubuntu",Yr.fontSettings.color=Sn("#f6f6f6"),Yr.fontSettings.fontSize=32,Yr.rendererOptions={coreExtensionModule:El,fpsUpdateInterval:200,enableInspector:!0},fn((()=>vn(so,{root:e=>vn(Fa,e),get children(){return[vn(to,{path:"",component:hl}),vn(to,{path:"examples",component:cl}),vn(to,{path:"browse/:filter",component:hl}),vn(to,{path:"text",component:fl}),vn(to,{path:"buttons",component:gl}),vn(to,{path:"flex",component:ml}),vn(to,{path:"create",component:pl}),vn(to,{path:"viewport",component:vl}),vn(to,{path:"flexsize",component:xl}),vn(to,{path:"flexcolumnsize",component:yl}),vn(to,{path:"flexcolumn",component:bl}),vn(to,{path:"buttonsmaterial",component:wl}),vn(to,{path:"entity/people/:id",component:Bl}),vn(to,{path:"entity/:type/:id",component:_l}),vn(to,{path:"*all",component:Il})]}})))}}}))}(); -//# sourceMappingURL=index-legacy-BO0hRFKN.js.map diff --git a/assets/index-legacy-BO0hRFKN.js.map b/assets/index-legacy-BO0hRFKN.js.map deleted file mode 100644 index 504d1da..0000000 --- a/assets/index-legacy-BO0hRFKN.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-legacy-BO0hRFKN.js","sources":["../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js","../../../../../renderer/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js","../../../../../renderer/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js","../../../../../renderer/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js","../../../../../renderer/dist/src/main-api/Inspector.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js","../../../../../renderer/dist/src/core/text-rendering/renderers/TextRenderer.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js","../../../../../renderer/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js","../../../../../renderer/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DefaultShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DynamicShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/SdfShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js","../../../../../renderer/dist/src/core/CoreShaderManager.js","../../../../../renderer/dist/src/core/lib/ContextSpy.js","../../../../../renderer/dist/src/core/lib/textureCompression.js","../../../../../renderer/dist/src/core/textures/ImageTexture.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js","../../../../../renderer/dist/src/core/text-rendering/TrFontManager.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js","../../../../../renderer/dist/src/render-drivers/utils.js","../../../../../renderer/dist/src/main-api/RendererMain.js","../../../../../renderer/dist/src/core/animations/CoreAnimation.js","../../../../../renderer/dist/src/core/animations/CoreAnimationController.js","../../../../../renderer/dist/src/core/lib/Matrix3d.js","../../../../../renderer/dist/src/core/CoreNode.js","../../../../../renderer/dist/src/core/lib/RenderCoords.js","../../../../../renderer/dist/src/render-drivers/main/MainOnlyNode.js","../../../../../renderer/dist/src/core/animations/AnimationManager.js","../../../../../renderer/dist/src/core/lib/ImageWorker.js","../../../../../renderer/dist/src/core/textures/NoiseTexture.js","../../../../../renderer/dist/src/core/CoreTextureManager.js","../../../../../renderer/dist/src/core/TextureMemoryManager.js","../../../../../renderer/dist/src/core/Stage.js","../../../../../renderer/dist/src/core/platform.js","../../../../../renderer/dist/src/core/CoreTextNode.js","../../../../../renderer/dist/src/render-drivers/main/MainOnlyTextNode.js","../../../../../renderer/dist/src/render-drivers/main/MainCoreDriver.js","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/dist/solid.js","../../../../../solid/src/core/lightningInit.ts","../../../../../solid/src/core/node/children.ts","../../../../../solid/src/config.ts","../../../../../solid/src/core/utils.ts","../../../../../solid/src/core/node/states.ts","../../../../../solid/src/core/activeElement.ts","../../../../../solid/src/core/node/index.ts","../../../../../solid/src/core/flex.ts","../../../../../solid/src/components/Text.tsx","../../../../../solid/src/components/View.tsx","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/universal/dist/universal.js","../../../../../solid/src/core/solidUniversal.ts","../../../../../solid/src/core/render.ts","../../../../../solid/src/utils.ts","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/web/dist/web.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/lifecycle.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/utils.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routing.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/components.jsx","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/createRouter.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/data/action.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/data/events.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/HashRouter.js","../../../../node_modules/.pnpm/@solid-primitives+utils@6.2.3_solid-js@1.8.16/node_modules/@solid-primitives/utils/dist/chunk/R5675YMU.js","../../../../node_modules/.pnpm/@solid-primitives+rootless@1.4.5_solid-js@1.8.16/node_modules/@solid-primitives/rootless/dist/index.js","../../../../node_modules/.pnpm/@solid-primitives+keyboard@1.2.8_solid-js@1.8.16/node_modules/@solid-primitives/keyboard/dist/index.js","../../../../node_modules/.pnpm/@solid-primitives+event-listener@2.3.3_solid-js@1.8.16/node_modules/@solid-primitives/event-listener/dist/index.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/utils.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/useFocusManager.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/speech.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/withPadding.js","../../../../node_modules/.pnpm/@solid-primitives+scheduled@1.4.3_solid-js@1.8.16/node_modules/@solid-primitives/scheduled/dist/index.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/announcer.js","../../src/state.ts","../../../../node_modules/.pnpm/@lightningjs+solid-ui@0.12.1_@babel+core@7.24.4_@lightningjs+renderer@0.8.2_@lightningjs+soli_l6qk66ywnsrdb5zvon2uxgrjiy/node_modules/@lightningjs/solid-ui/dist/index.js","../../../../node_modules/.pnpm/@lightningjs+l3-ui-theme-base@0.3.1/node_modules/@lightningjs/l3-ui-theme-base/theme.js","../../src/components/Background.tsx","../../src/components/NavDrawer/NavDrawer.styles.ts","../../src/components/Icon.tsx","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/createSpriteMap.js","../../src/components/NavDrawer/NavDrawer.tsx","../../src/pages/App.tsx","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/index.js","../../src/styles.ts","../../src/components/index.tsx","../../src/api/key.ts","../../src/api/index.ts","../../src/api/formatters/ItemFormatter.ts","../../src/api/providers/browse.ts","../../src/components/pagination.ts","../../src/components/ContentBlock.tsx","../../src/api/providers/entity.js","../../src/pages/Browse.tsx","../../src/pages/Portal.tsx","../../src/pages/Text.tsx","../../src/pages/Create.tsx","../../src/pages/Viewport.tsx","../../src/pages/Buttons.tsx","../../src/pages/Flex.tsx","../../src/pages/FlexSize.tsx","../../src/pages/FlexColumnSize.tsx","../../src/pages/FlexColumn.tsx","../../src/pages/ButtonsMaterial.tsx","../../src/video.js","../../src/pages/Entity.tsx","../../src/api/providers/people.js","../../src/pages/People.tsx","../../src/pages/NotFound.tsx","../../AppCoreExtensions.js?importChunkUrl","../../src/index.tsx"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Reversible Generator Wrapper Class\n/**\n * Generator function that yields each Unicode code point in the given string.\n */\nexport function* getUnicodeCodepoints(text, start = 0) {\n let i = start;\n while (i < text.length) {\n const codePoint = text.codePointAt(i);\n if (codePoint === undefined) {\n throw new Error('Invalid Unicode code point');\n }\n yield codePoint;\n i += codePoint <= 0xffff ? 1 : 2;\n }\n}\n//# sourceMappingURL=getUnicodeCodepoints.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Texture Usage Tracker for Usage Based Texture Garbage Collection\n */\nexport class TextureUsageTracker {\n releaseCallback;\n constructor(releaseCallback) {\n this.releaseCallback = releaseCallback;\n }\n}\n//# sourceMappingURL=TextureUsageTracker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { TextureUsageTracker } from './TextureUsageTracker.js';\n/**\n * Usage-based Texture Garbage Collection Registry\n */\nexport class ManualCountTextureUsageTracker extends TextureUsageTracker {\n textureMap = new Map();\n zeroReferenceTextureSet = new Set();\n options;\n constructor(releaseCallback, options) {\n super(releaseCallback);\n this.options = {\n textureCleanupIntervalMs: options.textureCleanupIntervalMs ?? 10000,\n textureCleanupAgeThreadholdMs: options.textureCleanupAgeThreadholdMs ?? 60000,\n };\n // Periodically check for textures that are no longer referenced by any\n // Nodes and notify RendererMain to release them.\n setInterval(() => {\n const now = Date.now();\n const thresholdMs = this.options.textureCleanupAgeThreadholdMs;\n for (const textureRefInfo of this.zeroReferenceTextureSet) {\n if (now - textureRefInfo.lastUpdate > thresholdMs) {\n this.releaseCallback(textureRefInfo.id);\n this.textureMap.delete(textureRefInfo.id);\n this.zeroReferenceTextureSet.delete(textureRefInfo);\n }\n }\n }, this.options.textureCleanupIntervalMs);\n }\n registerTexture(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n if (!this.textureMap.has(textureId)) {\n const textureRefInfo = {\n id: textureId,\n nodeRefCount: 0,\n lastUpdate: Date.now(),\n };\n this.textureMap.set(textureId, textureRefInfo);\n this.zeroReferenceTextureSet.add(textureRefInfo);\n }\n }\n incrementTextureRefCount(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n let textureRefInfo = this.textureMap.get(textureId);\n if (!textureRefInfo) {\n // Texture has not been registered yet, so register it now.\n // This may happen if the TextureRef was cleaned up from the registry\n // but was still alive in memory and eventually re-used.\n this.registerTexture(texture);\n textureRefInfo = this.textureMap.get(textureId);\n }\n assertTruthy(textureRefInfo, 'Texture must have been registered');\n if (texture.txType === 'SubTexture') {\n // If this is a SubTexture, then increment the reference count of the\n // parent texture as well.\n this.incrementTextureRefCount(texture.props.texture);\n }\n textureRefInfo.nodeRefCount++;\n textureRefInfo.lastUpdate = Date.now();\n if (this.zeroReferenceTextureSet.has(textureRefInfo)) {\n this.zeroReferenceTextureSet.delete(textureRefInfo);\n }\n }\n decrementTextureRefCount(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n const textureRefInfo = this.textureMap.get(textureId);\n assertTruthy(textureRefInfo, 'Texture must have been registered');\n textureRefInfo.nodeRefCount--;\n textureRefInfo.lastUpdate = Date.now();\n if (textureRefInfo.nodeRefCount === 0) {\n this.zeroReferenceTextureSet.add(textureRefInfo);\n }\n if (texture.txType === 'SubTexture') {\n // If this is a SubTexture, then decrement the reference count of the\n // parent texture as well.\n this.decrementTextureRefCount(texture.props.texture);\n }\n }\n}\n//# sourceMappingURL=ManualCountTextureUsageTracker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { TextureUsageTracker } from './TextureUsageTracker.js';\nexport class FinalizationRegistryTextureUsageTracker extends TextureUsageTracker {\n registry;\n constructor(releaseCallback) {\n super(releaseCallback);\n this.registry = new FinalizationRegistry(releaseCallback);\n }\n registerTexture(texture) {\n assertTruthy(texture.options?.id, 'Texture must have an ID to be registered');\n this.registry.register(texture, texture.options?.id);\n }\n incrementTextureRefCount() {\n // No-op for FinalizationRegistry\n }\n decrementTextureRefCount() {\n // No-op for FinalizationRegistry\n }\n}\n//# sourceMappingURL=FinalizationRegistryTextureUsageTracker.js.map","import {} from './RendererMain.js';\nimport { isProductionEnvironment } from '../utils.js';\nconst stylePropertyMap = {\n alpha: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'opacity', value: `${v}` };\n },\n x: (x) => {\n return { prop: 'left', value: `${x}px` };\n },\n y: (y) => {\n return { prop: 'top', value: `${y}px` };\n },\n width: (w) => {\n if (w === 0) {\n return null;\n }\n return { prop: 'width', value: `${w}px` };\n },\n height: (h) => {\n if (h === 0) {\n return null;\n }\n return { prop: 'height', value: `${h}px` };\n },\n zIndex: () => 'zIndex',\n fontFamily: () => 'font-family',\n fontSize: () => 'font-size',\n fontStyle: () => 'font-style',\n fontWeight: () => 'font-weight',\n fontStretch: () => 'font-stretch',\n lineHeight: () => 'line-height',\n letterSpacing: () => 'letter-spacing',\n textAlign: () => 'text-align',\n overflowSuffix: () => 'overflow-suffix',\n maxLines: () => 'max-lines',\n contain: () => 'contain',\n verticalAlign: () => 'vertical-align',\n clipping: (v) => {\n if (v === false) {\n return null;\n }\n return { prop: 'overflow', value: v ? 'hidden' : 'visible' };\n },\n rotation: (v) => {\n if (v === 0) {\n return null;\n }\n return { prop: 'transform', value: `rotate(${v}rad)` };\n },\n scale: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scale(${v})` };\n },\n scaleX: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scaleX(${v})` };\n },\n scaleY: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scaleY(${v})` };\n },\n color: (v) => {\n if (v === 0) {\n return null;\n }\n return { prop: 'color', value: convertColorToRgba(v) };\n },\n};\nconst convertColorToRgba = (color) => {\n const a = (color & 0xff) / 255;\n const b = (color >> 8) & 0xff;\n const g = (color >> 16) & 0xff;\n const r = (color >> 24) & 0xff;\n return `rgba(${r},${g},${b},${a})`;\n};\nconst domPropertyMap = {\n id: 'id',\n};\nconst gradientColorPropertyMap = [\n 'colorTop',\n 'colorBottom',\n 'colorLeft',\n 'colorRight',\n 'colorTl',\n 'colorTr',\n 'colorBl',\n 'colorBr',\n];\nexport class Inspector {\n root = null;\n canvas = null;\n height = 1080;\n width = 1920;\n scaleX = 1;\n scaleY = 1;\n constructor(canvas, settings) {\n if (isProductionEnvironment())\n return;\n if (!settings) {\n throw new Error('settings is required');\n }\n // calc dimensions based on the devicePixelRatio\n this.height = Math.ceil(settings.appHeight ?? 1080 / (settings.deviceLogicalPixelRatio ?? 1));\n this.width = Math.ceil(settings.appWidth ?? 1900 / (settings.deviceLogicalPixelRatio ?? 1));\n this.scaleX = settings.deviceLogicalPixelRatio ?? 1;\n this.scaleY = settings.deviceLogicalPixelRatio ?? 1;\n this.canvas = canvas;\n this.root = document.createElement('div');\n this.setRootPosition();\n document.body.appendChild(this.root);\n //listen for changes on canvas\n const mutationObserver = new MutationObserver(this.setRootPosition.bind(this));\n mutationObserver.observe(canvas, {\n attributes: true,\n childList: false,\n subtree: false,\n });\n // Create a ResizeObserver to watch for changes in the element's size\n const resizeObserver = new ResizeObserver(this.setRootPosition.bind(this));\n resizeObserver.observe(canvas);\n //listen for changes on window\n window.addEventListener('resize', this.setRootPosition.bind(this));\n console.warn('Inspector is enabled, this will impact performance');\n }\n setRootPosition() {\n if (this.root === null || this.canvas === null) {\n return;\n }\n // get the world position of the canvas object, so we can match the inspector to it\n const rect = this.canvas.getBoundingClientRect();\n const top = document.documentElement.scrollTop + rect.top;\n const left = document.documentElement.scrollLeft + rect.left;\n this.root.id = 'root';\n this.root.style.left = `${left}px`;\n this.root.style.top = `${top}px`;\n this.root.style.width = `${this.width}px`;\n this.root.style.height = `${this.height}px`;\n this.root.style.position = 'absolute';\n this.root.style.transformOrigin = '0 0 0';\n this.root.style.transform = `scale(${this.scaleX}, ${this.scaleY})`;\n this.root.style.overflow = 'hidden';\n this.root.style.zIndex = '65534';\n }\n createDiv(node, properties) {\n const div = document.createElement('div');\n div.style.position = 'absolute';\n div.id = node.id.toString();\n // set initial properties\n for (const key in properties) {\n this.updateNodeProperty(div, \n // really typescript? really?\n key, properties[key]);\n }\n return div;\n }\n createNode(driver, properties) {\n const node = driver.createNode(properties);\n const div = this.createDiv(node, properties);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n div.node = node;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n node.div = div;\n return this.createProxy(node, div);\n }\n createTextNode(driver, properties) {\n const node = driver.createTextNode(properties);\n const div = this.createDiv(node, properties);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n div.node = node;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n node.div = div;\n return this.createProxy(node, div);\n }\n createProxy(node, div) {\n return new Proxy(node, {\n set: (target, property, value) => {\n this.updateNodeProperty(div, property, value);\n return Reflect.set(target, property, value);\n },\n get: (target, property, receiver) => {\n if (property === 'destroy') {\n this.destroyNode(target);\n }\n if (property === 'animate') {\n return (props, settings) => {\n const anim = target.animate(props, settings);\n // Trap the animate start function so we can update the inspector accordingly\n return new Proxy(anim, {\n get: (target, property, receiver) => {\n if (property === 'start') {\n this.animateNode(div, node, props, settings);\n }\n return Reflect.get(target, property, receiver);\n },\n });\n };\n }\n return Reflect.get(target, property, receiver);\n },\n });\n }\n destroyNode(node) {\n const div = document.getElementById(node.id.toString());\n div?.remove();\n }\n updateNodeProperty(div, property, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value) {\n if (this.root === null || value === undefined || value === null) {\n return;\n }\n /**\n * Special case for parent property\n */\n if (property === 'parent') {\n const parentId = value.id;\n // only way to detect if the parent is the root node\n // if you are reading this and have a better way, please let me know\n if (parentId === 1) {\n this.root.appendChild(div);\n return;\n }\n const parent = document.getElementById(parentId.toString());\n parent?.appendChild(div);\n return;\n }\n // special case for text\n if (property === 'text') {\n div.innerHTML = String(value);\n // hide text because we can't render SDF fonts\n // it would look weird and obstruct the WebGL rendering\n div.style.visibility = 'hidden';\n return;\n }\n // special case for images\n // we're not setting any CSS properties to avoid images getting loaded twice\n // as the renderer will handle the loading of the image. Setting it to `data-src`\n if (property === 'src' && value) {\n div.setAttribute(`data-src`, String(value));\n return;\n }\n // special case for color gradients (normal colors are handled by the stylePropertyMap)\n // FIXME the renderer seems to return the same number for all colors\n // if (gradientColorPropertyMap.includes(property as string)) {\n // const color = convertColorToRgba(value as number);\n // div.setAttribute(`data-${property}`, color);\n // return;\n // }\n // CSS mappable attribute\n if (stylePropertyMap[property]) {\n const mappedStyleResponse = stylePropertyMap[property]?.(value);\n if (mappedStyleResponse === null) {\n return;\n }\n if (typeof mappedStyleResponse === 'string') {\n div.style.setProperty(mappedStyleResponse, String(value));\n return;\n }\n if (typeof mappedStyleResponse === 'object') {\n div.style.setProperty(mappedStyleResponse.prop, mappedStyleResponse.value);\n }\n return;\n }\n // DOM properties\n if (domPropertyMap[property]) {\n div.setAttribute(String(stylePropertyMap[property]), String(value));\n return;\n }\n // custom data properties\n if (property === 'data') {\n for (const key in value) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n div.setAttribute(`data-${key}`, String(value[key]));\n }\n return;\n }\n }\n // simple animation handler\n animateNode(div, node, props, settings) {\n const { duration = 1000, delay = 0,\n // easing = 'linear',\n // repeat = 0,\n // loop = false,\n // stopMethod = false,\n } = settings;\n const { x, y, width, height, alpha = 1, rotation = 0, scale = 1, color, } = props;\n // ignoring loops and repeats for now, as that might be a bit too much for the inspector\n function animate() {\n setTimeout(() => {\n div.style.top = `${y}px`;\n div.style.left = `${x}px`;\n div.style.width = `${width}px`;\n div.style.height = `${height}px`;\n div.style.opacity = `${alpha}`;\n div.style.rotate = `${rotation}rad`;\n div.style.scale = `${scale}`;\n div.style.color = convertColorToRgba(color);\n }, duration);\n }\n setTimeout(animate, delay);\n }\n}\n//# sourceMappingURL=Inspector.js.map","export class ShaderEffect {\n priority = 1;\n name = '';\n ref;\n target;\n passParameters = '';\n declaredUniforms = '';\n uniformInfo = {};\n static uniforms = {};\n static methods;\n static onShaderMask;\n static onColorize;\n static onEffectMask;\n static getEffectKey(props) {\n return '';\n }\n static getMethodParameters(uniforms, props) {\n const res = [];\n for (const u in uniforms) {\n const uni = uniforms[u];\n let define = '';\n if (uni.size) {\n define = `[${uni.size(props)}]`;\n }\n res.push(`${uni.type} ${u}${define}`);\n }\n return res.join(',');\n }\n constructor(options) {\n const { ref, target, props = {} } = options;\n this.ref = ref;\n this.target = target;\n const uniformInfo = {};\n const passParameters = [];\n let declaredUniforms = '';\n const uniforms = this.constructor.uniforms || {};\n for (const u in uniforms) {\n const unif = uniforms[u];\n const uniType = unif.type;\n //make unique uniform name\n const uniformName = `${ref}_${u}`;\n let define = '';\n if (unif.size) {\n define = `[${unif.size(props)}]`;\n }\n passParameters.push(uniformName);\n declaredUniforms += `uniform ${uniType} ${uniformName}${define};`;\n uniformInfo[u] = { name: uniformName, uniform: uniforms[u].method };\n }\n this.passParameters = passParameters.join(',');\n this.declaredUniforms = declaredUniforms;\n this.uniformInfo = uniformInfo;\n }\n static resolveDefaults(props) {\n return {};\n }\n static makeEffectKey(props) {\n return false;\n }\n}\n//# sourceMappingURL=ShaderEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst trPropSetterDefaults = {\n x: (state, value) => {\n state.props.x = value;\n },\n y: (state, value) => {\n state.props.y = value;\n },\n width: (state, value) => {\n state.props.width = value;\n },\n height: (state, value) => {\n state.props.height = value;\n },\n color: (state, value) => {\n state.props.color = value;\n },\n zIndex: (state, value) => {\n state.props.zIndex = value;\n },\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n },\n text: (state, value) => {\n state.props.text = value;\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n },\n contain: (state, value) => {\n state.props.contain = value;\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n },\n scrollable: (state, value) => {\n state.props.scrollable = value;\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n },\n debug: (state, value) => {\n state.props.debug = value;\n },\n};\nexport class TextRenderer {\n stage;\n set;\n constructor(stage) {\n this.stage = stage;\n const propSetters = {\n ...trPropSetterDefaults,\n ...this.getPropertySetters(),\n };\n // For each prop setter add a wrapper method that checks if the prop is\n // different before calling the setter\n this.set = Object.freeze(Object.fromEntries(Object.entries(propSetters).map(([key, setter]) => {\n return [\n key,\n (state, value) => {\n if (state.props[key] !== value) {\n setter(state, value);\n // Assume any prop change will require a render\n // This is required because otherwise a paused RAF will result\n // in renders when text props are changed.\n this.stage.requestRender();\n }\n },\n ];\n })));\n }\n setStatus(state, status, error) {\n // Don't emit the same status twice\n if (state.status === status) {\n return;\n }\n state.status = status;\n state.emitter.emit(status, error);\n }\n /**\n * Allows the CoreTextNode to communicate changes to the isRenderable state of\n * the itself.\n *\n * @param state\n * @param renderable\n */\n setIsRenderable(state, renderable) {\n state.isRenderable = renderable;\n }\n /**\n * Destroy/Clean up the state object\n *\n * @remarks\n * Opposite of createState(). Frees any event listeners / resources held by\n * the state that may not reliably get garbage collected.\n *\n * @param state\n */\n destroyState(state) {\n const stateEvents = ['loading', 'loaded', 'failed'];\n // Remove the old event listeners from previous state obj there was one\n stateEvents.forEach((eventName) => {\n state.emitter.off(eventName);\n });\n }\n /**\n * Schedule a state update via queueMicrotask\n *\n * @remarks\n * This method is used to schedule a state update via queueMicrotask. This\n * method should be called whenever a state update is needed, and it will\n * ensure that the state is only updated once per microtask.\n * @param state\n * @returns\n */\n scheduleUpdateState(state) {\n if (state.updateScheduled) {\n return;\n }\n state.updateScheduled = true;\n queueMicrotask(() => {\n state.updateScheduled = false;\n this.updateState(state);\n });\n }\n}\n//# sourceMappingURL=TextRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TrFontFace } from './TrFontFace.js';\nexport class WebTrFontFace extends TrFontFace {\n fontFace;\n fontUrl;\n constructor(fontFamily, descriptors, fontUrl) {\n super(fontFamily, descriptors);\n // Filter out parentheses from fontUrl\n const fontUrlWithoutParentheses = fontUrl.replace(/\\(|\\)/g, '');\n // Defaults for descriptors resolved in the super constructor\n const determinedDescriptors = this.descriptors;\n // Convert TrFontFaceDescriptors to CSS FontFaceDescriptors\n const cssDescriptors = {\n style: determinedDescriptors.style,\n weight: typeof determinedDescriptors.weight === 'number'\n ? `${determinedDescriptors.weight}`\n : determinedDescriptors.weight,\n stretch: determinedDescriptors.stretch,\n unicodeRange: determinedDescriptors.unicodeRange,\n variant: determinedDescriptors.variant,\n featureSettings: determinedDescriptors.featureSettings,\n display: determinedDescriptors.display,\n };\n const fontFace = new FontFace(fontFamily, `url(${fontUrlWithoutParentheses})`, cssDescriptors);\n fontFace\n .load()\n .then(() => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.loaded = true;\n this.emit('loaded');\n })\n .catch(console.error);\n this.fontFace = fontFace;\n this.fontUrl = fontUrl;\n }\n}\n//# sourceMappingURL=WebTrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { getRgbaString } from '../../lib/utils.js';\nconst MAX_TEXTURE_DIMENSION = 2048;\n/**\n * Calculate height for the canvas\n *\n * @param textBaseline\n * @param fontSize\n * @param lineHeight\n * @param numLines\n * @param offsetY\n * @returns\n */\nfunction calcHeight(textBaseline, fontSize, lineHeight, numLines, offsetY) {\n const baselineOffset = textBaseline !== 'bottom' ? 0.5 * fontSize : 0;\n return (lineHeight * (numLines - 1) +\n baselineOffset +\n Math.max(lineHeight, fontSize) +\n (offsetY || 0));\n}\nexport class LightningTextTextureRenderer {\n _canvas;\n _context;\n _settings;\n renderInfo;\n constructor(canvas, context) {\n this._canvas = canvas;\n this._context = context;\n this._settings = this.mergeDefaults({});\n }\n set settings(v) {\n this._settings = this.mergeDefaults(v);\n }\n get settings() {\n return this._settings;\n }\n getPrecision() {\n return this._settings.precision;\n }\n setFontProperties() {\n this._context.font = this._getFontSetting();\n this._context.textBaseline = this._settings.textBaseline;\n }\n _getFontSetting() {\n const ff = [this._settings.fontFace];\n const ffs = [];\n for (let i = 0, n = ff.length; i < n; i++) {\n if (ff[i] === 'serif' || ff[i] === 'sans-serif') {\n ffs.push(ff[i]);\n }\n else {\n ffs.push(`\"${ff[i]}\"`);\n }\n }\n return `${this._settings.fontStyle} ${this._settings.fontSize * this.getPrecision()}px ${ffs.join(',')}`;\n }\n _load() {\n if (true && document.fonts) {\n const fontSetting = this._getFontSetting();\n try {\n if (!document.fonts.check(fontSetting, this._settings.text)) {\n // Use a promise that waits for loading.\n return document.fonts\n .load(fontSetting, this._settings.text)\n .catch((err) => {\n // Just load the fallback font.\n console.warn('[Lightning] Font load error', err, fontSetting);\n })\n .then(() => {\n if (!document.fonts.check(fontSetting, this._settings.text)) {\n console.warn('[Lightning] Font not found', fontSetting);\n }\n });\n }\n }\n catch (e) {\n console.warn(\"[Lightning] Can't check font loading for \" + fontSetting);\n }\n }\n }\n calculateRenderInfo() {\n const renderInfo = {};\n const precision = this.getPrecision();\n const paddingLeft = this._settings.paddingLeft * precision;\n const paddingRight = this._settings.paddingRight * precision;\n const fontSize = this._settings.fontSize * precision;\n let offsetY = this._settings.offsetY === null\n ? null\n : this._settings.offsetY * precision;\n let lineHeight = (this._settings.lineHeight || fontSize) * precision;\n const w = this._settings.w * precision;\n const h = this._settings.h * precision;\n let wordWrapWidth = this._settings.wordWrapWidth * precision;\n const cutSx = this._settings.cutSx * precision;\n const cutEx = this._settings.cutEx * precision;\n const cutSy = this._settings.cutSy * precision;\n const cutEy = this._settings.cutEy * precision;\n const letterSpacing = (this._settings.letterSpacing || 0) * precision;\n const textIndent = this._settings.textIndent * precision;\n // Set font properties.\n this.setFontProperties();\n // Total width.\n let width = w || 2048 / this.getPrecision();\n // Inner width.\n let innerWidth = width - paddingLeft;\n if (innerWidth < 10) {\n width += 10 - innerWidth;\n innerWidth = 10;\n }\n if (!wordWrapWidth) {\n wordWrapWidth = innerWidth;\n }\n // Text overflow\n if (this._settings.textOverflow && !this._settings.wordWrap) {\n let suffix;\n switch (this._settings.textOverflow) {\n case 'clip':\n suffix = '';\n break;\n case 'ellipsis':\n suffix = this._settings.overflowSuffix;\n break;\n default:\n suffix = this._settings.textOverflow;\n }\n this._settings.text = this.wrapWord(this._settings.text, wordWrapWidth - textIndent, suffix);\n }\n // word wrap\n // preserve original text\n let linesInfo;\n if (this._settings.wordWrap) {\n linesInfo = this.wrapText(this._settings.text, wordWrapWidth, letterSpacing, textIndent);\n }\n else {\n linesInfo = { l: this._settings.text.split(/(?:\\r\\n|\\r|\\n)/), n: [] };\n const n = linesInfo.l.length;\n for (let i = 0; i < n - 1; i++) {\n linesInfo.n.push(i);\n }\n }\n let lines = linesInfo.l;\n if (this._settings.maxLines && lines.length > this._settings.maxLines) {\n const usedLines = lines.slice(0, this._settings.maxLines);\n let otherLines = null;\n if (this._settings.overflowSuffix) {\n // Wrap again with max lines suffix enabled.\n const w = this._settings.overflowSuffix\n ? this.measureText(this._settings.overflowSuffix)\n : 0;\n const al = this.wrapText(usedLines[usedLines.length - 1], wordWrapWidth - w, letterSpacing, textIndent);\n usedLines[usedLines.length - 1] = `${al.l[0]}${this._settings.overflowSuffix}`;\n otherLines = [al.l.length > 1 ? al.l[1] : ''];\n }\n else {\n otherLines = [''];\n }\n // Re-assemble the remaining text.\n let i;\n const n = lines.length;\n let j = 0;\n const m = linesInfo.n.length;\n for (i = this._settings.maxLines; i < n; i++) {\n otherLines[j] += `${otherLines[j] ? ' ' : ''}${lines[i]}`;\n if (i + 1 < m && linesInfo.n[i + 1]) {\n j++;\n }\n }\n renderInfo.remainingText = otherLines.join('\\n');\n renderInfo.moreTextLines = true;\n lines = usedLines;\n }\n else {\n renderInfo.moreTextLines = false;\n renderInfo.remainingText = '';\n }\n // calculate text width\n let maxLineWidth = 0;\n const lineWidths = [];\n for (let i = 0; i < lines.length; i++) {\n const lineWidth = this.measureText(lines[i], letterSpacing) + (i === 0 ? textIndent : 0);\n lineWidths.push(lineWidth);\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n renderInfo.lineWidths = lineWidths;\n if (!w) {\n // Auto-set width to max text length.\n width = maxLineWidth + paddingLeft + paddingRight;\n innerWidth = maxLineWidth;\n }\n // calculate text height\n lineHeight = lineHeight || fontSize;\n let height;\n if (h) {\n height = h;\n }\n else {\n height = calcHeight(this._settings.textBaseline, fontSize, lineHeight, lines.length, offsetY);\n }\n if (offsetY === null) {\n offsetY = fontSize;\n }\n renderInfo.w = width;\n renderInfo.h = height;\n renderInfo.lines = lines;\n renderInfo.precision = precision;\n if (!width) {\n // To prevent canvas errors.\n width = 1;\n }\n if (!height) {\n // To prevent canvas errors.\n height = 1;\n }\n if (cutSx || cutEx) {\n width = Math.min(width, cutEx - cutSx);\n }\n if (cutSy || cutEy) {\n height = Math.min(height, cutEy - cutSy);\n }\n renderInfo.width = width;\n renderInfo.innerWidth = innerWidth;\n renderInfo.height = height;\n renderInfo.fontSize = fontSize;\n renderInfo.cutSx = cutSx;\n renderInfo.cutSy = cutSy;\n renderInfo.cutEx = cutEx;\n renderInfo.cutEy = cutEy;\n renderInfo.lineHeight = lineHeight;\n renderInfo.lineWidths = lineWidths;\n renderInfo.offsetY = offsetY;\n renderInfo.paddingLeft = paddingLeft;\n renderInfo.paddingRight = paddingRight;\n renderInfo.letterSpacing = letterSpacing;\n renderInfo.textIndent = textIndent;\n return renderInfo;\n }\n draw(renderInfo, linesOverride) {\n const precision = this.getPrecision();\n // Allow lines to be overriden for partial rendering.\n const lines = linesOverride?.lines || renderInfo.lines;\n const lineWidths = linesOverride?.lineWidths || renderInfo.lineWidths;\n const height = linesOverride\n ? calcHeight(this._settings.textBaseline, renderInfo.fontSize, renderInfo.lineHeight, linesOverride.lines.length, this._settings.offsetY === null\n ? null\n : this._settings.offsetY * precision)\n : renderInfo.height;\n // Add extra margin to prevent issue with clipped text when scaling.\n this._canvas.width = Math.min(Math.ceil(renderInfo.width + this._settings.textRenderIssueMargin), MAX_TEXTURE_DIMENSION);\n this._canvas.height = Math.min(Math.ceil(height), MAX_TEXTURE_DIMENSION);\n // Canvas context has been reset.\n this.setFontProperties();\n if (renderInfo.fontSize >= 128) {\n // WpeWebKit bug: must force compositing because cairo-traps-compositor will not work with text first.\n this._context.globalAlpha = 0.01;\n this._context.fillRect(0, 0, 0.01, 0.01);\n this._context.globalAlpha = 1.0;\n }\n if (renderInfo.cutSx || renderInfo.cutSy) {\n this._context.translate(-renderInfo.cutSx, -renderInfo.cutSy);\n }\n let linePositionX;\n let linePositionY;\n const drawLines = [];\n // Draw lines line by line.\n for (let i = 0, n = lines.length; i < n; i++) {\n linePositionX = i === 0 ? renderInfo.textIndent : 0;\n // By default, text is aligned to top\n linePositionY = i * renderInfo.lineHeight + renderInfo.offsetY;\n if (this._settings.verticalAlign == 'middle') {\n linePositionY += (renderInfo.lineHeight - renderInfo.fontSize) / 2;\n }\n else if (this._settings.verticalAlign == 'bottom') {\n linePositionY += renderInfo.lineHeight - renderInfo.fontSize;\n }\n if (this._settings.textAlign === 'right') {\n linePositionX += renderInfo.innerWidth - lineWidths[i];\n }\n else if (this._settings.textAlign === 'center') {\n linePositionX += (renderInfo.innerWidth - lineWidths[i]) / 2;\n }\n linePositionX += renderInfo.paddingLeft;\n drawLines.push({\n text: lines[i],\n x: linePositionX,\n y: linePositionY,\n w: lineWidths[i],\n });\n }\n // Highlight.\n if (this._settings.highlight) {\n const color = this._settings.highlightColor;\n const hlHeight = this._settings.highlightHeight * precision || renderInfo.fontSize * 1.5;\n const offset = this._settings.highlightOffset * precision;\n const hlPaddingLeft = this._settings.highlightPaddingLeft !== null\n ? this._settings.highlightPaddingLeft * precision\n : renderInfo.paddingLeft;\n const hlPaddingRight = this._settings.highlightPaddingRight !== null\n ? this._settings.highlightPaddingRight * precision\n : renderInfo.paddingRight;\n this._context.fillStyle = getRgbaString(color);\n for (let i = 0; i < drawLines.length; i++) {\n const drawLine = drawLines[i];\n this._context.fillRect(drawLine.x - hlPaddingLeft, drawLine.y - renderInfo.offsetY + offset, drawLine.w + hlPaddingRight + hlPaddingLeft, hlHeight);\n }\n }\n // Text shadow.\n let prevShadowSettings = null;\n if (this._settings.shadow) {\n prevShadowSettings = [\n this._context.shadowColor,\n this._context.shadowOffsetX,\n this._context.shadowOffsetY,\n this._context.shadowBlur,\n ];\n this._context.shadowColor = getRgbaString(this._settings.shadowColor);\n this._context.shadowOffsetX = this._settings.shadowOffsetX * precision;\n this._context.shadowOffsetY = this._settings.shadowOffsetY * precision;\n this._context.shadowBlur = this._settings.shadowBlur * precision;\n }\n this._context.fillStyle = getRgbaString(this._settings.textColor);\n for (let i = 0, n = drawLines.length; i < n; i++) {\n const drawLine = drawLines[i];\n if (renderInfo.letterSpacing === 0) {\n this._context.fillText(drawLine.text, drawLine.x, drawLine.y);\n }\n else {\n const textSplit = drawLine.text.split('');\n let x = drawLine.x;\n for (let i = 0, j = textSplit.length; i < j; i++) {\n this._context.fillText(textSplit[i], x, drawLine.y);\n x += this.measureText(textSplit[i], renderInfo.letterSpacing);\n }\n }\n }\n if (prevShadowSettings) {\n this._context.shadowColor = prevShadowSettings[0];\n this._context.shadowOffsetX = prevShadowSettings[1];\n this._context.shadowOffsetY = prevShadowSettings[2];\n this._context.shadowBlur = prevShadowSettings[3];\n }\n if (renderInfo.cutSx || renderInfo.cutSy) {\n this._context.translate(renderInfo.cutSx, renderInfo.cutSy);\n }\n this.renderInfo = renderInfo;\n }\n wrapWord(word, wordWrapWidth, suffix) {\n const suffixWidth = this._context.measureText(suffix).width;\n const wordLen = word.length;\n const wordWidth = this._context.measureText(word).width;\n /* If word fits wrapWidth, do nothing */\n if (wordWidth <= wordWrapWidth) {\n return word;\n }\n /* Make initial guess for text cuttoff */\n let cutoffIndex = Math.floor((wordWrapWidth * wordLen) / wordWidth);\n let truncWordWidth = this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n /* In case guess was overestimated, shrink it letter by letter. */\n if (truncWordWidth > wordWrapWidth) {\n while (cutoffIndex > 0) {\n truncWordWidth =\n this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n if (truncWordWidth > wordWrapWidth) {\n cutoffIndex -= 1;\n }\n else {\n break;\n }\n }\n /* In case guess was underestimated, extend it letter by letter. */\n }\n else {\n while (cutoffIndex < wordLen) {\n truncWordWidth =\n this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n if (truncWordWidth < wordWrapWidth) {\n cutoffIndex += 1;\n }\n else {\n // Finally, when bound is crossed, retract last letter.\n cutoffIndex -= 1;\n break;\n }\n }\n }\n /* If wrapWidth is too short to even contain suffix alone, return empty string */\n return (word.substring(0, cutoffIndex) +\n (wordWrapWidth >= suffixWidth ? suffix : ''));\n }\n /**\n * Applies newlines to a string to have it optimally fit into the horizontal\n * bounds set by the Text object's wordWrapWidth property.\n */\n wrapText(text, wordWrapWidth, letterSpacing, indent = 0) {\n // Greedy wrapping algorithm that will wrap words as the line grows longer.\n // than its horizontal bounds.\n const lines = text.split(/\\r?\\n/g);\n let allLines = [];\n const realNewlines = [];\n for (let i = 0; i < lines.length; i++) {\n const resultLines = [];\n let result = '';\n let spaceLeft = wordWrapWidth - indent;\n const words = lines[i].split(' ');\n for (let j = 0; j < words.length; j++) {\n const wordWidth = this.measureText(words[j], letterSpacing);\n const wordWidthWithSpace = wordWidth + this.measureText(' ', letterSpacing);\n if (j === 0 || wordWidthWithSpace > spaceLeft) {\n // Skip printing the newline if it's the first word of the line that is.\n // greater than the word wrap width.\n if (j > 0) {\n resultLines.push(result);\n result = '';\n }\n result += words[j];\n spaceLeft = wordWrapWidth - wordWidth - (j === 0 ? indent : 0);\n }\n else {\n spaceLeft -= wordWidthWithSpace;\n result += ` ${words[j]}`;\n }\n }\n resultLines.push(result);\n result = '';\n allLines = allLines.concat(resultLines);\n if (i < lines.length - 1) {\n realNewlines.push(allLines.length);\n }\n }\n return { l: allLines, n: realNewlines };\n }\n measureText(word, space = 0) {\n if (!space) {\n return this._context.measureText(word).width;\n }\n return word.split('').reduce((acc, char) => {\n return acc + this._context.measureText(char).width + space;\n }, 0);\n }\n mergeDefaults(settings) {\n return {\n text: '',\n w: 0,\n h: 0,\n fontStyle: 'normal',\n fontSize: 40,\n fontFace: null,\n wordWrap: true,\n wordWrapWidth: 0,\n wordBreak: false,\n textOverflow: '',\n lineHeight: null,\n textBaseline: 'alphabetic',\n textAlign: 'left',\n verticalAlign: 'top',\n offsetY: null,\n maxLines: 0,\n overflowSuffix: '...',\n textColor: [1.0, 1.0, 1.0, 1.0],\n paddingLeft: 0,\n paddingRight: 0,\n shadow: false,\n shadowColor: [0.0, 0.0, 0.0, 1.0],\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowBlur: 5,\n highlight: false,\n highlightHeight: 0,\n highlightColor: [0.0, 0.0, 0.0, 1.0],\n highlightOffset: 0,\n highlightPaddingLeft: 0,\n highlightPaddingRight: 0,\n letterSpacing: 0,\n textIndent: 0,\n cutSx: 0,\n cutEx: 0,\n cutSy: 0,\n cutEy: 0,\n advancedRenderer: false,\n fontBaselineRatio: 0,\n precision: 1,\n textRenderIssueMargin: 0,\n ...settings,\n };\n }\n}\n//# sourceMappingURL=LightningTextTextureRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../../common/EventEmitter.js';\nimport { assertTruthy, mergeColorAlphaPremultiplied } from '../../../utils.js';\nimport { intersectRect, intersectBound, getNormalizedRgbaComponents, getNormalizedAlphaComponent, createBound, } from '../../lib/utils.js';\nimport { WebTrFontFace } from '../font-face-types/WebTrFontFace.js';\nimport { LightningTextTextureRenderer, } from './LightningTextTextureRenderer.js';\nimport { TextRenderer, } from './TextRenderer.js';\nconst resolvedGlobal = typeof self === 'undefined' ? globalThis : self;\n/**\n * Global font set regardless of if run in the main thread or a web worker\n */\nconst globalFontSet = (resolvedGlobal.document?.fonts ||\n resolvedGlobal.fonts);\nfunction getFontCssString(props) {\n const { fontFamily, fontStyle, fontWeight, fontStretch, fontSize } = props;\n return [fontStyle, fontWeight, fontStretch, `${fontSize}px`, fontFamily].join(' ');\n}\n/**\n * Ephemeral bounds object used for intersection calculations\n *\n * @remarks\n * Used to avoid creating a new object every time we need to intersect\n * element bounds.\n */\nconst tmpElementBounds = createBound(0, 0, 0, 0);\nexport class CanvasTextRenderer extends TextRenderer {\n canvas;\n context;\n rendererBounds;\n constructor(stage) {\n super(stage);\n if (typeof OffscreenCanvas !== 'undefined') {\n this.canvas = new OffscreenCanvas(0, 0);\n }\n else {\n this.canvas = document.createElement('canvas');\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n let context = this.canvas.getContext('2d');\n if (!context) {\n // A browser may appear to support OffscreenCanvas but not actually support the Canvas '2d' context\n // Here we try getting the context again after falling back to an HTMLCanvasElement.\n // See: https://github.com/lightning-js/renderer/issues/26#issuecomment-1750438486\n this.canvas = document.createElement('canvas');\n context = this.canvas.getContext('2d');\n }\n assertTruthy(context);\n this.context = context;\n this.rendererBounds = {\n x1: 0,\n y1: 0,\n x2: this.stage.options.appWidth,\n y2: this.stage.options.appHeight,\n };\n }\n //#region Overrides\n getPropertySetters() {\n return {\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n text: (state, value) => {\n state.props.text = value;\n this.invalidateLayoutCache(state);\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n this.invalidateLayoutCache(state);\n },\n color: (state, value) => {\n state.props.color = value;\n this.invalidateLayoutCache(state);\n },\n x: (state, value) => {\n state.props.x = value;\n this.invalidateVisibleWindowCache(state);\n },\n y: (state, value) => {\n state.props.y = value;\n this.invalidateVisibleWindowCache(state);\n },\n contain: (state, value) => {\n state.props.contain = value;\n this.invalidateLayoutCache(state);\n },\n width: (state, value) => {\n state.props.width = value;\n // Only invalidate layout cache if we're containing in the horizontal direction\n if (state.props.contain !== 'none') {\n this.invalidateLayoutCache(state);\n }\n },\n height: (state, value) => {\n state.props.height = value;\n // Only invalidate layout cache if we're containing in the vertical direction\n if (state.props.contain === 'both') {\n this.invalidateLayoutCache(state);\n }\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n this.invalidateLayoutCache(state);\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n this.invalidateLayoutCache(state);\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n this.invalidateLayoutCache(state);\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n this.invalidateLayoutCache(state);\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n this.invalidateLayoutCache(state);\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n this.invalidateLayoutCache(state);\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n this.invalidateLayoutCache(state);\n },\n // debug: (state, value) => {\n // state.props.debug = value;\n // },\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n canRenderFont(props) {\n // The canvas renderer can render any font because it automatically\n // falls back to system fonts. The CanvasTextRenderer should be\n // checked last if other renderers are preferred.\n return true;\n }\n isFontFaceSupported(fontFace) {\n return fontFace instanceof WebTrFontFace;\n }\n addFontFace(fontFace) {\n // Make sure the font face is an Canvas font face (it should have already passed\n // the `isFontFaceSupported` check)\n assertTruthy(fontFace instanceof WebTrFontFace);\n // We simply add the font face to the document\n // @ts-expect-error `add()` method should be available from a FontFaceSet\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n globalFontSet.add(fontFace.fontFace);\n }\n createState(props) {\n return {\n props,\n status: 'initialState',\n updateScheduled: false,\n emitter: new EventEmitter(),\n canvasPages: undefined,\n lightning2TextRenderer: new LightningTextTextureRenderer(this.canvas, this.context),\n renderWindow: undefined,\n visibleWindow: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n valid: false,\n },\n renderInfo: undefined,\n forceFullLayoutCalc: false,\n textW: 0,\n textH: 0,\n fontInfo: undefined,\n fontFaceLoadedHandler: undefined,\n isRenderable: false,\n debugData: {\n updateCount: 0,\n layoutCount: 0,\n drawCount: 0,\n lastLayoutNumCharacters: 0,\n layoutSum: 0,\n drawSum: 0,\n bufferSize: 0,\n },\n };\n }\n updateState(state) {\n // On the first update call we need to set the status to loading\n if (state.status === 'initialState') {\n this.setStatus(state, 'loading');\n }\n // If fontInfo is invalid, we need to establish it\n if (!state.fontInfo) {\n const cssString = getFontCssString(state.props);\n state.fontInfo = {\n cssString: cssString,\n // TODO: For efficiency we would use this here but it's not reliable on WPE -> document.fonts.check(cssString),\n loaded: false,\n };\n // If font is not loaded, set up a handler to update the font info when the font loads\n if (!state.fontInfo.loaded) {\n globalFontSet\n .load(cssString)\n .then(this.onFontLoaded.bind(this, state, cssString))\n .catch(this.onFontLoadError.bind(this, state, cssString));\n return;\n }\n }\n // If we're waiting for a font face to load, don't render anything\n if (!state.fontInfo.loaded) {\n return;\n }\n if (!state.renderInfo) {\n const maxLines = state.props.maxLines;\n const containedMaxLines = state.props.contain === 'both'\n ? Math.floor((state.props.height - state.props.offsetY) /\n state.props.lineHeight)\n : 0;\n const calcMaxLines = containedMaxLines > 0 && maxLines > 0\n ? Math.min(containedMaxLines, maxLines)\n : Math.max(containedMaxLines, maxLines);\n state.lightning2TextRenderer.settings = {\n text: state.props.text,\n textAlign: state.props.textAlign,\n fontFace: state.props.fontFamily,\n fontSize: state.props.fontSize,\n fontStyle: [\n state.props.fontStretch,\n state.props.fontStyle,\n state.props.fontWeight,\n ].join(' '),\n textColor: getNormalizedRgbaComponents(state.props.color),\n offsetY: state.props.fontSize + state.props.offsetY,\n wordWrap: state.props.contain !== 'none',\n wordWrapWidth: state.props.contain === 'none' ? undefined : state.props.width,\n letterSpacing: state.props.letterSpacing,\n lineHeight: state.props.lineHeight,\n maxLines: calcMaxLines,\n textBaseline: state.props.textBaseline,\n verticalAlign: state.props.verticalAlign,\n overflowSuffix: state.props.overflowSuffix,\n };\n // const renderInfoCalculateTime = performance.now();\n state.renderInfo = state.lightning2TextRenderer.calculateRenderInfo();\n // console.log(\n // 'Render info calculated in',\n // performance.now() - renderInfoCalculateTime,\n // 'ms',\n // );\n state.textH = state.renderInfo.lineHeight * state.renderInfo.lines.length;\n state.textW = state.renderInfo.width;\n // Invalidate renderWindow because the renderInfo changed\n state.renderWindow = undefined;\n }\n const { x, y, width, height, scrollY, contain } = state.props;\n const { visibleWindow } = state;\n let { renderWindow, canvasPages } = state;\n if (!visibleWindow.valid) {\n // Figure out whats actually in the bounds of the renderer/canvas (visibleWindow)\n const elementBounds = createBound(x, y, contain !== 'none' ? x + width : Infinity, contain === 'both' ? y + height : Infinity, tmpElementBounds);\n /**\n * Area that is visible on the screen.\n */\n intersectBound(this.rendererBounds, elementBounds, visibleWindow);\n visibleWindow.valid = true;\n }\n const visibleWindowHeight = visibleWindow.y2 - visibleWindow.y1;\n const maxLinesPerCanvasPage = Math.ceil(visibleWindowHeight / state.renderInfo.lineHeight);\n if (visibleWindowHeight === 0) {\n // Nothing to render. Clear any canvasPages and existing renderWindow\n // Return early.\n canvasPages = undefined;\n renderWindow = undefined;\n this.setStatus(state, 'loaded');\n return;\n }\n else if (renderWindow && canvasPages) {\n // Return early if we're still viewing inside the established render window\n // No need to re-render what we've already rendered\n const renderWindowScreenX1 = x + renderWindow.x1;\n const renderWindowScreenY1 = y - scrollY + renderWindow.y1;\n const renderWindowScreenX2 = x + renderWindow.x2;\n const renderWindowScreenY2 = y - scrollY + renderWindow.y2;\n if (renderWindowScreenX1 <= visibleWindow.x1 &&\n renderWindowScreenX2 >= visibleWindow.x2 &&\n renderWindowScreenY1 <= visibleWindow.y1 &&\n renderWindowScreenY2 >= visibleWindow.y2) {\n this.setStatus(state, 'loaded');\n return;\n }\n if (renderWindowScreenY2 < visibleWindow.y2) {\n // We've scrolled up, so we need to render the next page\n renderWindow.y1 += maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n renderWindow.y2 += maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n canvasPages.push(canvasPages.shift());\n canvasPages[2].lineNumStart =\n canvasPages[1].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[2].lineNumEnd =\n canvasPages[2].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[2].valid = false;\n }\n else if (renderWindowScreenY1 > visibleWindow.y1) {\n // We've scrolled down, so we need to render the previous page\n renderWindow.y1 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n renderWindow.y2 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n canvasPages.unshift(canvasPages.pop());\n canvasPages[0].lineNumStart =\n canvasPages[1].lineNumStart - maxLinesPerCanvasPage;\n canvasPages[0].lineNumEnd =\n canvasPages[0].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[0].valid = false;\n }\n }\n else {\n const pageHeight = state.renderInfo.lineHeight * maxLinesPerCanvasPage;\n const page1Block = Math.ceil(scrollY / pageHeight);\n const page1LineStart = page1Block * maxLinesPerCanvasPage;\n const page0LineStart = page1LineStart - maxLinesPerCanvasPage;\n const page2LineStart = page1LineStart + maxLinesPerCanvasPage;\n // We haven't rendered anything yet, so we need to render the first page\n // If canvasPages already exist, let's re-use the textures\n canvasPages = [\n {\n texture: canvasPages?.[0].texture,\n lineNumStart: page0LineStart,\n lineNumEnd: page0LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n {\n texture: canvasPages?.[1].texture,\n lineNumStart: page1LineStart,\n lineNumEnd: page1LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n {\n texture: canvasPages?.[2].texture,\n lineNumStart: page2LineStart,\n lineNumEnd: page2LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n ];\n state.canvasPages = canvasPages;\n const scrollYNearestPage = page1Block * pageHeight;\n renderWindow = {\n x1: 0,\n y1: scrollYNearestPage - pageHeight,\n x2: width,\n y2: scrollYNearestPage + pageHeight * 2,\n };\n }\n state.renderWindow = renderWindow;\n const pageDrawTime = performance.now();\n for (const pageInfo of canvasPages) {\n if (pageInfo.valid)\n continue;\n if (pageInfo.lineNumStart < 0) {\n pageInfo.texture?.setRenderableOwner(state, false);\n pageInfo.texture = this.stage.txManager.loadTexture('ImageTexture', {\n src: '',\n });\n pageInfo.texture.setRenderableOwner(state, state.isRenderable);\n pageInfo.valid = true;\n continue;\n }\n state.lightning2TextRenderer.draw(state.renderInfo, {\n lines: state.renderInfo.lines.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd),\n lineWidths: state.renderInfo.lineWidths.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd),\n });\n if (!(this.canvas.width === 0 || this.canvas.height === 0)) {\n pageInfo.texture?.setRenderableOwner(state, false);\n pageInfo.texture = this.stage.txManager.loadTexture('ImageTexture', {\n src: this.context.getImageData(0, 0, this.canvas.width, this.canvas.height),\n }, {\n preload: true,\n });\n pageInfo.texture.setRenderableOwner(state, state.isRenderable);\n }\n pageInfo.valid = true;\n }\n // console.log('pageDrawTime', performance.now() - pageDrawTime, 'ms');\n // Report final status\n this.setStatus(state, 'loaded');\n }\n renderQuads(state, transform, clippingRect, alpha) {\n const { stage } = this;\n const { canvasPages, textW = 0, textH = 0, renderWindow } = state;\n if (!canvasPages || !renderWindow)\n return;\n const { x, y, scrollY, contain, width, height /*, debug*/ } = state.props;\n const elementRect = {\n x: x,\n y: y,\n width: contain !== 'none' ? width : textW,\n height: contain === 'both' ? height : textH,\n };\n const visibleRect = intersectRect({\n x: 0,\n y: 0,\n width: stage.options.appWidth,\n height: stage.options.appHeight,\n }, elementRect);\n // if (!debug.disableScissor) {\n // renderer.enableScissor(\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n assertTruthy(canvasPages, 'canvasPages is not defined');\n assertTruthy(renderWindow, 'renderWindow is not defined');\n const renderWindowHeight = renderWindow.y2 - renderWindow.y1;\n const pageSize = renderWindowHeight / 3.0;\n const { zIndex, color } = state.props;\n // Color alpha of text is not properly rendered to the Canvas texture, so we\n // need to apply it here.\n const combinedAlpha = alpha * getNormalizedAlphaComponent(color);\n const quadColor = mergeColorAlphaPremultiplied(0xffffffff, combinedAlpha);\n if (canvasPages[0].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[0].texture?.dimensions?.width || 0,\n height: canvasPages[0].texture?.dimensions?.height || 0,\n texture: canvasPages[0].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n if (canvasPages[1].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[1].texture?.dimensions?.width || 0,\n height: canvasPages[1].texture?.dimensions?.height || 0,\n texture: canvasPages[1].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1 + pageSize,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n if (canvasPages[2].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[2].texture?.dimensions?.width || 0,\n height: canvasPages[2].texture?.dimensions?.height || 0,\n texture: canvasPages[2].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1 + pageSize + pageSize,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n // renderer.disableScissor();\n // if (debug.showElementRect) {\n // this.renderer.drawBorder(\n // Colors.Blue,\n // elementRect.x,\n // elementRect.y,\n // elementRect.w,\n // elementRect.h,\n // );\n // }\n // if (debug.showVisibleRect) {\n // this.renderer.drawBorder(\n // Colors.Green,\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // if (debug.showRenderWindow && renderWindow) {\n // this.renderer.drawBorder(\n // Colors.Red,\n // x + renderWindow.x1,\n // y + renderWindow.y1 - scrollY,\n // x + renderWindow.x2 - (x + renderWindow.x1),\n // y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY),\n // );\n // }\n }\n setIsRenderable(state, renderable) {\n super.setIsRenderable(state, renderable);\n // Set state object owner from any canvas page textures\n state.canvasPages?.forEach((pageInfo) => {\n pageInfo.texture?.setRenderableOwner(state, renderable);\n });\n }\n destroyState(state) {\n // Remove state object owner from any canvas page textures\n state.canvasPages?.forEach((pageInfo) => {\n pageInfo.texture?.setRenderableOwner(state, false);\n });\n }\n //#endregion Overrides\n /**\n * Invalidate the visible window stored in the state. This will cause a new\n * visible window to be calculated on the next update.\n *\n * @param state\n */\n invalidateVisibleWindowCache(state) {\n state.visibleWindow.valid = false;\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n /**\n * Invalidate the layout cache stored in the state. This will cause the text\n * to be re-layed out on the next update.\n *\n * @remarks\n * This also invalidates the visible window cache.\n *\n * @param state\n */\n invalidateLayoutCache(state) {\n state.renderInfo = undefined;\n state.visibleWindow.valid = false;\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n onFontLoaded(state, cssString) {\n if (cssString !== state.fontInfo?.cssString || !state.fontInfo) {\n return;\n }\n state.fontInfo.loaded = true;\n this.scheduleUpdateState(state);\n }\n onFontLoadError(state, cssString, error) {\n if (cssString !== state.fontInfo?.cssString || !state.fontInfo) {\n return;\n }\n // Font didn't actually load, but we'll log the error and mark it as loaded\n // because the browser can still render with a fallback font.\n state.fontInfo.loaded = true;\n console.error(`CanvasTextRenderer: Error loading font '${state.fontInfo.cssString}'`, error);\n this.scheduleUpdateState(state);\n }\n}\n//# sourceMappingURL=CanvasTextRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\nexport class DefaultShader extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2fv' },\n ],\n });\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio;\n vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);\n\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);\n gl_Position.y = -sign(screenSpace.y) * gl_Position.y;\n }\n `,\n fragment: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate);\n gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoordinate);\n }\n `,\n };\n}\n//# sourceMappingURL=DefaultShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\n// import type { Texture } from '../textures/Texture';\nexport class DefaultShaderBatched extends WebGlCoreShader {\n supportsIndexedTextures = true;\n constructor(renderer) {\n super({\n renderer,\n attributes: [\n 'a_position',\n 'a_textureCoordinate',\n 'a_color',\n 'a_textureIndex',\n ],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_textures[0]', uniform: 'uniform1iv' },\n ],\n });\n }\n bindTextures(texture) {\n const { renderer, glw } = this;\n if (texture.length > renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS) {\n throw new Error(`DefaultShaderBatched: Cannot bind more than ${renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS} textures`);\n }\n texture.forEach((t, i) => {\n glw.activeTexture(i);\n glw.bindTexture(t.ctxTexture);\n });\n const samplers = Array.from(Array(texture.length).keys());\n this.setUniform('u_textures[0]', samplers);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `,\n fragment: (textureUnits) => `\n #define txUnits ${textureUnits}\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_image;\n uniform sampler2D u_textures[txUnits];\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n vec4 sampleFromTexture(sampler2D textures[${textureUnits}], int idx, vec2 uv) {\n ${Array.from(Array(textureUnits).keys())\n .map((idx) => `\n ${idx !== 0 ? 'else ' : ''}if (idx == ${idx}) {\n return texture2D(textures[${idx}], uv);\n }\n `)\n .join('')}\n return texture2D(textures[0], uv);\n }\n\n void main(){\n gl_FragColor = vec4(v_color) * sampleFromTexture(u_textures, int(v_textureIndex), v_textureCoordinate);\n }\n `,\n };\n}\n//# sourceMappingURL=DefaultShaderBatched.js.map","import { WebGlCoreShader, } from '../WebGlCoreShader.js';\nimport { ShaderEffect } from './effects/ShaderEffect.js';\nimport memize from 'memize';\nconst effectCache = new Map();\nconst getResolvedEffect = (effects, effectContructors) => {\n const key = JSON.stringify(effects);\n if (effectCache.has(key)) {\n return effectCache.get(key);\n }\n const value = (effects ?? []).map((effect) => ({\n type: effect.type,\n props: effectContructors[effect.type].resolveDefaults((effect.props || {})),\n }));\n effectCache.set(key, value);\n return value;\n};\nexport class DynamicShader extends WebGlCoreShader {\n effects = [];\n constructor(renderer, props, effectContructors) {\n const shader = DynamicShader.createShader(props, effectContructors);\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2fv' },\n { name: 'u_dimensions', uniform: 'uniform2fv' },\n { name: 'u_alpha', uniform: 'uniform1f' },\n ...shader.uniforms,\n ],\n shaderSources: {\n vertex: shader.vertex,\n fragment: shader.fragment,\n },\n });\n this.effects = shader.effects;\n this.calculateProps = memize(this.calculateProps.bind(this));\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n calculateProps(effects) {\n const regEffects = this.renderer.shManager.getRegisteredEffects();\n const results = [];\n effects?.forEach((eff, index) => {\n const effect = this.effects[index];\n const fxClass = regEffects[effect.name];\n const props = eff.props ?? {};\n const uniInfo = effect.uniformInfo;\n Object.keys(props).forEach((p) => {\n const fxProp = fxClass.uniforms[p];\n const propInfo = uniInfo[p];\n let value = fxProp.validator\n ? fxProp.validator(props[p], props)\n : props[p];\n if (Array.isArray(value)) {\n value = new Float32Array(value);\n }\n results.push({ name: propInfo.name, value });\n });\n });\n return results;\n }\n bindProps(props) {\n const results = this.calculateProps(props.effects);\n results.forEach((r) => {\n this.setUniform(r.name, r.value);\n });\n }\n canBatchShaderProps(propsA, propsB) {\n if (propsA.$dimensions.width !== propsB.$dimensions.width ||\n propsA.$dimensions.height !== propsB.$dimensions.height ||\n propsA.effects.length !== propsB.effects.length) {\n return false;\n }\n const propsEffectsLen = propsA.effects.length;\n let i = 0;\n for (; i < propsEffectsLen; i++) {\n const effectA = propsA.effects[i];\n const effectB = propsB.effects[i];\n if (effectA.type !== effectB.type) {\n return false;\n }\n for (const key in effectA.props) {\n if ((effectB.props && !effectB.props[key]) ||\n effectA.props[key] !== effectB.props[key]) {\n return false;\n }\n }\n }\n return true;\n }\n static createShader(props, effectContructors) {\n //counts duplicate effects\n const effectNameCount = {};\n const methods = {};\n let declareUniforms = '';\n const uniforms = [];\n const uFx = [];\n const effects = props.effects.map((effect) => {\n const baseClass = effectContructors[effect.type];\n const key = baseClass.getEffectKey(effect.props || {});\n effectNameCount[key] = effectNameCount[key] ? ++effectNameCount[key] : 1;\n const nr = effectNameCount[key];\n if (nr === 1) {\n uFx.push({ key, type: effect.type, props: effect.props });\n }\n //initialize new effect class;\n const fxClass = new baseClass({\n ref: `${key}${nr === 1 ? '' : nr}`,\n target: key,\n props: effect.props,\n });\n declareUniforms += fxClass.declaredUniforms;\n uniforms.push(...Object.values(fxClass.uniformInfo));\n return fxClass;\n });\n //build source\n let effectMethods = '';\n uFx?.forEach((fx) => {\n const fxClass = effectContructors[fx.type];\n const fxProps = fxClass.resolveDefaults((fx.props ?? {}));\n const remap = [];\n for (const m in fxClass.methods) {\n let cm = m;\n const fxMethod = fxClass.methods[m];\n if (methods[m] && methods[m] !== fxMethod) {\n cm = DynamicShader.resolveMethodDuplicate(m, fxMethod, methods);\n }\n methods[cm] = fxMethod.replace('function', cm);\n remap.push({ m, cm });\n }\n let onShaderMask = fxClass.onShaderMask instanceof Function\n ? fxClass.onShaderMask(fxProps)\n : fxClass.onShaderMask;\n let onColorize = fxClass.onColorize instanceof Function\n ? fxClass.onColorize(fxProps)\n : fxClass.onColorize;\n let onEffectMask = fxClass.onEffectMask instanceof Function\n ? fxClass.onEffectMask(fxProps)\n : fxClass.onEffectMask;\n remap.forEach((r) => {\n const { m, cm } = r;\n const reg = new RegExp(`\\\\$${m}`, 'g');\n if (onShaderMask) {\n onShaderMask = onShaderMask.replace(reg, cm);\n }\n if (onColorize) {\n onColorize = onColorize.replace(reg, cm);\n }\n if (onEffectMask) {\n onEffectMask = onEffectMask.replace(reg, cm);\n }\n });\n const methodParameters = fxClass.getMethodParameters(fxClass.uniforms, fxProps);\n const pm = methodParameters.length > 0 ? `, ${methodParameters}` : '';\n if (onShaderMask) {\n effectMethods += `\n float fx_${fx.key}_onShaderMask(float shaderMask ${pm}) {\n ${onShaderMask}\n }\n `;\n }\n if (onColorize) {\n effectMethods += `\n vec4 fx_${fx.key}_onColorize(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {\n ${onColorize}\n }\n `;\n }\n if (onEffectMask) {\n effectMethods += `\n vec4 fx_${fx.key}_onEffectMask(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {\n ${onEffectMask}\n }\n `;\n }\n });\n let sharedMethods = '';\n for (const m in methods) {\n sharedMethods += methods[m];\n }\n //fill main functions\n let currentMask = `mix(shaderColor, maskColor, clamp(-(lng_DefaultMask), 0.0, 1.0))`;\n let drawEffects = `\n\n `;\n for (let i = 0; i < effects.length; i++) {\n const current = effects[i];\n const pm = current.passParameters.length > 0 ? `, ${current.passParameters}` : '';\n const currentClass = effectContructors[current.name];\n if (currentClass.onShaderMask) {\n drawEffects += `\n shaderMask = fx_${current.target}_onShaderMask(shaderMask ${pm});\n `;\n }\n if (currentClass.onColorize) {\n drawEffects += `\n maskColor = fx_${current.target}_onColorize(shaderMask, maskColor, shaderColor${pm});\n `;\n }\n if (currentClass.onEffectMask) {\n currentMask = `fx_${current.target}_onEffectMask(shaderMask, maskColor, shaderColor${pm})`;\n }\n const next = effects[i + 1];\n if (next === undefined ||\n effectContructors[next.name].onEffectMask) {\n drawEffects += `\n shaderColor = ${currentMask};\n `;\n }\n }\n return {\n effects,\n uniforms,\n fragment: DynamicShader.fragment(declareUniforms, sharedMethods, effectMethods, drawEffects),\n vertex: DynamicShader.vertex(),\n };\n }\n static resolveMethodDuplicate(key, effectMethod, methodCollection, increment = 0) {\n const m = key + (increment > 0 ? increment : '');\n if (methodCollection[m] && methodCollection[m] !== effectMethod) {\n return this.resolveMethodDuplicate(key, effectMethod, methodCollection, ++increment);\n }\n return m;\n }\n static resolveDefaults(props, effectContructors) {\n return {\n effects: getResolvedEffect(props.effects, effectContructors),\n $dimensions: {\n width: 0,\n height: 0,\n },\n $alpha: 0,\n };\n }\n static makeCacheKey(props, effectContructors) {\n let fx = '';\n props.effects?.forEach((effect) => {\n const baseClass = effectContructors[effect.type];\n const key = baseClass.getEffectKey(effect.props || {});\n fx += `,${key}`;\n });\n return `DynamicShader${fx}`;\n }\n static z$__type__Props;\n static vertex = () => `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `;\n static fragment = (uniforms, methods, effectMethods, drawEffects) => `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n #define PI 3.14159265359\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_alpha;\n uniform float u_radius;\n uniform sampler2D u_texture;\n uniform float u_pixelRatio;\n\n ${uniforms}\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n ${methods}\n\n ${effectMethods}\n\n void main() {\n vec2 p = v_textureCoordinate.xy * u_dimensions - u_dimensions * 0.5;\n vec2 d = abs(p) - (u_dimensions) * 0.5;\n float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n\n vec4 shaderColor = vec4(0.0);\n float shaderMask = lng_DefaultMask;\n\n vec4 maskColor = texture2D(u_texture, v_textureCoordinate) * v_color;\n\n shaderColor = mix(shaderColor, maskColor, clamp(-(lng_DefaultMask + 0.5), 0.0, 1.0));\n\n ${drawEffects}\n\n gl_FragColor = shaderColor * u_alpha;\n }\n `;\n}\n//# sourceMappingURL=DynamicShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader, } from '../WebGlCoreShader.js';\n/**\n * Similar to the {@link DefaultShader} but cuts out 4 rounded rectangle corners\n * as defined by the specified corner {@link RoundedRectangleProps.radius}\n */\nexport class RoundedRectangle extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2f' },\n { name: 'u_dimensions', uniform: 'uniform2fv' },\n { name: 'u_radius', uniform: 'uniform1f' },\n ],\n });\n }\n static z$__type__Props;\n static resolveDefaults(props) {\n return {\n radius: props.radius || 10,\n $dimensions: {\n width: 0,\n height: 0,\n },\n };\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n bindProps(props) {\n this.setUniform('u_radius', props.radius);\n }\n canBatchShaderProps(propsA, propsB) {\n return (propsA.radius === propsB.radius &&\n propsA.$dimensions.width === propsB.$dimensions.width &&\n propsA.$dimensions.height === propsB.$dimensions.height);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `,\n fragment: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_radius;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n float boxDist(vec2 p, vec2 size, float radius){\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n\n float fillMask(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color;\n vec2 halfDimensions = u_dimensions * 0.5;\n\n float d = boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);\n gl_FragColor = mix(vec4(0.0), color, fillMask(d));\n }\n `,\n };\n}\n//# sourceMappingURL=RoundedRectangle.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../lib/utils.js';\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\nconst IDENTITY_MATRIX_3x3 = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n/**\n * SdfShader supports multi-channel and single-channel signed distance field textures.\n *\n * @remarks\n * This Shader is used by the {@link SdfTextRenderer}. Do not use thie Shader\n * directly. Instead create a Text Node and assign a SDF font family to it.\n *\n * @internalRemarks\n * The only thing this shader does to support multi-channel SDFs is to\n * add a median function to the fragment shader. If this one function call\n * ends up being a performance bottleneck we can always look at ways to\n * remove it.\n */\nexport class SdfShader extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_transform', uniform: 'uniformMatrix3fv' },\n { name: 'u_scrollY', uniform: 'uniform1f' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2f' },\n { name: 'u_color', uniform: 'uniform4fv' },\n { name: 'u_size', uniform: 'uniform1f' },\n { name: 'u_distanceRange', uniform: 'uniform1f' },\n { name: 'u_debug', uniform: 'uniform1i' },\n ],\n });\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n bindProps(props) {\n const resolvedProps = SdfShader.resolveDefaults(props);\n for (const key in resolvedProps) {\n if (key === 'transform') {\n this.setUniform('u_transform', false, resolvedProps[key]);\n }\n else if (key === 'scrollY') {\n this.setUniform('u_scrollY', resolvedProps[key]);\n }\n else if (key === 'color') {\n const components = getNormalizedRgbaComponents(resolvedProps.color);\n this.setUniform('u_color', components);\n }\n else if (key === 'size') {\n this.setUniform('u_size', resolvedProps[key]);\n }\n else if (key === 'distanceRange') {\n this.setUniform('u_distanceRange', resolvedProps[key]);\n }\n else if (key === 'debug') {\n this.setUniform('u_debug', resolvedProps[key] ? 1.0 : 0.0);\n }\n }\n }\n static resolveDefaults(props = {}) {\n return {\n transform: props.transform ?? IDENTITY_MATRIX_3x3,\n scrollY: props.scrollY ?? 0,\n color: props.color ?? 0xffffffff,\n size: props.size ?? 16,\n distanceRange: props.distanceRange ?? 1.0,\n debug: props.debug ?? false,\n };\n }\n static shaderSources = {\n vertex: `\n // an attribute is an input (in) to a vertex shader.\n // It will receive data from a buffer\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n\n uniform vec2 u_resolution;\n uniform mat3 u_transform;\n uniform float u_scrollY;\n uniform float u_pixelRatio;\n uniform float u_size;\n\n varying vec2 v_texcoord;\n\n void main() {\n vec2 scrolledPosition = a_position * u_size - vec2(0, u_scrollY);\n vec2 transformedPosition = (u_transform * vec3(scrolledPosition, 1)).xy;\n\n // Calculate screen space with pixel ratio\n vec2 screenSpace = (transformedPosition * u_pixelRatio / u_resolution * 2.0 - 1.0) * vec2(1, -1);\n\n gl_Position = vec4(screenSpace, 0.0, 1.0);\n v_texcoord = a_textureCoordinate;\n\n }\n `,\n fragment: `\n precision highp float;\n\n uniform vec4 u_color;\n uniform sampler2D u_texture;\n uniform float u_distanceRange;\n uniform float u_pixelRatio;\n uniform int u_debug;\n\n varying vec2 v_texcoord;\n\n float median(float r, float g, float b) {\n return max(min(r, g), min(max(r, g), b));\n }\n\n void main() {\n vec3 sample = texture2D(u_texture, v_texcoord).rgb;\n if (u_debug == 1) {\n gl_FragColor = vec4(sample.r, sample.g, sample.b, 1.0);\n return;\n }\n float scaledDistRange = u_distanceRange * u_pixelRatio;\n float sigDist = scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);\n float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_color.a;\n\n // Build the final color.\n // IMPORTANT: We must premultiply the color by the alpha value before returning it.\n gl_FragColor = vec4(u_color.r * opacity, u_color.g * opacity, u_color.b * opacity, opacity);\n }\n `,\n };\n}\n//# sourceMappingURL=SdfShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Masks the current maskcolor with rounded corners similar to {@link RoundedRectangle}\n */\nexport class RadiusEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radius';\n static getEffectKey() {\n return `radius`;\n }\n static uniforms = {\n radius: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n boxDist: `\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n `,\n };\n static resolveDefaults(props) {\n return {\n radius: props.radius ?? 10,\n };\n }\n static onShaderMask = `\n vec2 halfDimensions = u_dimensions * 0.5;\n float r = radius[0] * step(v_textureCoordinate.x, 0.5) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[1] * step(0.5, v_textureCoordinate.x) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[2] * step(0.5, v_textureCoordinate.x) * step(0.5, v_textureCoordinate.y);\n r = r + radius[3] * step(v_textureCoordinate.x, 0.5) * step(0.5, v_textureCoordinate.y);\n return $boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions, r);\n `;\n static onEffectMask = `\n return mix(vec4(0.0), maskColor, $fillMask(shaderMask));\n `;\n}\n//# sourceMappingURL=RadiusEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderEffect renders a border along all edges of an element\n */\nexport class BorderEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'border';\n static getEffectKey() {\n return `border`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static onEffectMask = `\n float mask = clamp(shaderMask + width, 0.0, 1.0) - clamp(shaderMask, 0.0, 1.0);\n return mix(shaderColor, mix(shaderColor, maskColor, maskColor.a), mask);\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Linear Gradient effect over a effect mask\n */\nexport class LinearGradientEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'linearGradient';\n static getEffectKey(props) {\n return `linearGradient${props.colors.length}`;\n }\n static resolveDefaults(props) {\n const colors = props.colors ?? [0xff000000, 0xffffffff];\n let stops = props.stops || [];\n if (stops.length === 0 || stops.length !== colors.length) {\n const colorsL = colors.length;\n let i = 0;\n const tmp = stops;\n for (; i < colorsL; i++) {\n if (stops[i]) {\n tmp[i] = stops[i];\n if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {\n tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;\n }\n }\n else {\n tmp[i] = i * (1 / (colors.length - 1));\n }\n }\n stops = tmp;\n }\n return {\n colors,\n stops,\n angle: props.angle ?? 0,\n };\n }\n static uniforms = {\n angle: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n colors: {\n value: 0xffffffff,\n validator: (rgbas) => {\n const cols = rgbas.map((rgbas) => getNormalizedRgbaComponents(rgbas));\n return cols.reduce((acc, val) => acc.concat(val), []);\n },\n size: (props) => props.colors.length,\n method: 'uniform4fv',\n type: 'vec4',\n },\n stops: {\n value: [],\n size: (props) => props.colors.length,\n method: 'uniform1fv',\n type: 'float',\n },\n };\n static methods = {\n fromLinear: `\n vec4 function(vec4 linearRGB) {\n vec4 higher = vec4(1.055)*pow(linearRGB, vec4(1.0/2.4)) - vec4(0.055);\n vec4 lower = linearRGB * vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n `,\n toLinear: `\n vec4 function(vec4 sRGB) {\n vec4 higher = pow((sRGB + vec4(0.055))/vec4(1.055), vec4(2.4));\n vec4 lower = sRGB/vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n `,\n calcPoint: `\n vec2 function(float d, float angle) {\n return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);\n }\n `,\n };\n static ColorLoop = (amount) => {\n let loop = '';\n for (let i = 2; i < amount; i++) {\n loop += `colorOut = mix(colorOut, colors[${i}], clamp((dist - stops[${i - 1}]) / (stops[${i}] - stops[${i - 1}]), 0.0, 1.0));`;\n }\n return loop;\n };\n static onColorize = (props) => {\n const colors = props.colors.length || 1;\n return `\n float a = angle - (PI / 180.0 * 90.0);\n float lineDist = abs(u_dimensions.x * cos(a)) + abs(u_dimensions.y * sin(a));\n vec2 f = $calcPoint(lineDist * 0.5, a);\n vec2 t = $calcPoint(lineDist * 0.5, a + PI);\n vec2 gradVec = t - f;\n float dist = dot(v_textureCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = $fromLinear(mix($toLinear(colors[0]), $toLinear(colors[1]), stopCalc));\n ${this.ColorLoop(colors)}\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n `;\n };\n}\n//# sourceMappingURL=LinearGradientEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Grayscale effect grayscales the color values of the current mask color\n */\nexport class GrayscaleEffect extends ShaderEffect {\n name = 'grayscale';\n static getEffectKey() {\n return `grayscale`;\n }\n static resolveDefaults(props) {\n return {\n amount: props.amount ?? 1,\n };\n }\n static uniforms = {\n amount: {\n value: 1,\n method: 'uniform1f',\n type: 'float',\n },\n };\n static onColorize = `\n float grayness = 0.2 * maskColor.r + 0.6 * maskColor.g + 0.2 * maskColor.b;\n return vec4(amount * vec3(grayness) + (1.0 - amount) * maskColor.rgb, maskColor.a);\n `;\n}\n//# sourceMappingURL=GrayscaleEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the right side of an element\n */\nexport class BorderRightEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderRight';\n static getEffectKey() {\n return `borderRight`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderRightEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the top side of an element\n */\nexport class BorderTopEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderTop';\n static getEffectKey() {\n return `borderTop`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(0.0, width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderTopEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the bottom side of an element\n */\nexport class BorderBottomEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderBottom';\n static getEffectKey() {\n return `borderBottom`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(0.0, u_dimensions.y - width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderBottomEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the left of an element\n */\nexport class BorderLeftEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderLeft';\n static getEffectKey() {\n return `borderLeft`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderLeftEffect.js.map","import { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Renders a Glitch effect using the incoming texture\n */\nexport class GlitchEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'glitch';\n static getEffectKey(props) {\n return `glitch`;\n }\n static resolveDefaults(props) {\n return {\n amplitude: props.amplitude ?? 0.2,\n narrowness: props.narrowness ?? 4.0,\n blockiness: props.blockiness ?? 2.0,\n minimizer: props.minimizer ?? 8.0,\n time: props.time ?? Date.now(),\n };\n }\n static uniforms = {\n amplitude: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n narrowness: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n blockiness: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n minimizer: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n time: {\n value: 0,\n method: 'uniform1f',\n validator: (value) => {\n return (Date.now() - value) % 1000;\n },\n type: 'float',\n },\n };\n static methods = {\n rand: `\n float function(vec2 p, float time) {\n float t = floor(time * 20.) / 10.;\n return fract(sin(dot(p, vec2(t * 12.9898, t * 78.233))) * 43758.5453);\n }\n `,\n noise: `\n float function(vec2 uv, float blockiness, float time) {\n vec2 lv = fract(uv);\n vec2 id = floor(uv);\n\n float n1 = rand(id, time);\n float n2 = rand(id+vec2(1,0), time);\n float n3 = rand(id+vec2(0,1), time);\n float n4 = rand(id+vec2(1,1), time);\n vec2 u = smoothstep(0.0, 1.0 + blockiness, lv);\n return mix(mix(n1, n2, u.x), mix(n3, n4, u.x), u.y);\n }\n `,\n fbm: `\n float function(vec2 uv, int count, float blockiness, float complexity, float time) {\n float val = 0.0;\n float amp = 0.5;\n const int MAX_ITERATIONS = 10;\n\n for(int i = 0; i < MAX_ITERATIONS; i++) {\n if(i >= count) {break;}\n val += amp * noise(uv, blockiness, time);\n amp *= 0.5;\n uv *= complexity;\n }\n return val;\n }\n `,\n };\n static onColorize = `\n vec2 uv = v_textureCoordinate.xy;\n float aspect = u_dimensions.x / u_dimensions.y;\n vec2 a = vec2(uv.x * aspect , uv.y);\n vec2 uv2 = vec2(a.x / u_dimensions.x, exp(a.y));\n\n float shift = amplitude * pow($fbm(uv2, 4, blockiness, narrowness, time), minimizer);\n float colR = texture2D(u_texture, vec2(uv.x + shift, uv.y)).r * (1. - shift);\n float colG = texture2D(u_texture, vec2(uv.x - shift, uv.y)).g * (1. - shift);\n float colB = texture2D(u_texture, vec2(uv.x - shift, uv.y)).b * (1. - shift);\n\n vec3 f = vec3(colR, colG, colB);\n return vec4(f, texture2D(u_texture, vec2(uv.x - shift, uv.y)).a);\n `;\n}\n//# sourceMappingURL=GlitchEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\nexport class FadeOutEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'fadeOut';\n static getEffectKey() {\n return `fadeOut`;\n }\n static uniforms = {\n fade: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static resolveDefaults(props) {\n return {\n fade: props.fade ?? 10,\n };\n }\n static onColorize = `\n vec2 point = v_textureCoordinate.xy * u_dimensions.xy;\n vec2 pos1;\n vec2 pos2;\n vec2 d;\n float c;\n vec4 result = maskColor;\n\n\n if(fade[0] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x, point.y + fade[0]);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[1] > 0.0) {\n pos1 = vec2(point.x - u_dimensions.x - fade[1], v_textureCoordinate.y);\n pos2 = vec2(point.x - u_dimensions.x, v_textureCoordinate.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[2] > 0.0) {\n pos1 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y - fade[2]);\n pos2 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[3] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x + fade[3], point.y);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n return result;\n `;\n}\n//# sourceMappingURL=FadeOutEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\nexport class RadialGradientEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radialGradient';\n static getEffectKey(props) {\n return `radialGradient${props.colors.length}`;\n }\n static resolveDefaults(props) {\n const colors = props.colors ?? [0xff000000, 0xffffffff];\n let stops = props.stops || [];\n if (stops.length === 0 || stops.length !== colors.length) {\n const colorsL = colors.length;\n let i = 0;\n const tmp = stops;\n for (; i < colorsL; i++) {\n if (stops[i]) {\n tmp[i] = stops[i];\n if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {\n tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;\n }\n }\n else {\n tmp[i] = i * (1 / (colors.length - 1));\n }\n }\n stops = tmp;\n }\n return {\n colors,\n stops,\n width: props.width ?? 0,\n height: props.height ?? props.width ?? 0,\n pivot: props.pivot ?? [0.5, 0.5],\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n height: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n pivot: {\n value: [0.5, 0.5],\n method: 'uniform2fv',\n type: 'vec2',\n },\n colors: {\n value: 0xffffffff,\n validator: (rgbas) => {\n const cols = rgbas.map((rgbas) => getNormalizedRgbaComponents(rgbas));\n return cols.reduce((acc, val) => acc.concat(val), []);\n },\n size: (props) => props.colors.length,\n method: 'uniform4fv',\n type: 'vec4',\n },\n stops: {\n value: [],\n size: (props) => props.colors.length,\n method: 'uniform1fv',\n type: 'float',\n },\n };\n static ColorLoop = (amount) => {\n let loop = '';\n for (let i = 2; i < amount; i++) {\n loop += `colorOut = mix(colorOut, colors[${i}], clamp((dist - stops[${i - 1}]) / (stops[${i}] - stops[${i - 1}]), 0.0, 1.0));`;\n }\n return loop;\n };\n static onColorize = (props) => {\n const colors = props.colors.length || 1;\n return `\n vec2 point = v_textureCoordinate.xy * u_dimensions;\n vec2 projection = vec2(pivot.x * u_dimensions.x, pivot.y * u_dimensions.y);\n\n float dist = length((point - projection) / vec2(width, height));\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = mix(colors[0], colors[1], stopCalc);\n ${this.ColorLoop(colors)}\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n `;\n };\n}\n//# sourceMappingURL=RadialGradientEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The RadialProgressEffect renders a border along all edges of an element\n */\nexport class RadialProgressEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radialProgress';\n static getEffectKey() {\n return `radialProgress`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n progress: props.progress ?? 0.5,\n offset: props.offset ?? 0,\n range: props.range ?? Math.PI * 2,\n rounded: props.rounded ?? false,\n radius: props.radius ?? 1,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n progress: {\n value: 0.5,\n method: 'uniform1f',\n type: 'float',\n },\n offset: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n range: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n rounded: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n validator: (value) => {\n return value ? 1 : 0;\n },\n },\n radius: {\n value: 1,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n rotateUV: `\n vec2 function(vec2 uv, float d) {\n float s = sin(d);\n float c = cos(d);\n mat2 rotMatrix = mat2(c, -s, s, c);\n return uv * rotMatrix;\n }\n `,\n drawDot: `\n float function(vec2 uv, vec2 p, float r) {\n uv += p;\n float circle = length(uv) - r;\n return clamp(-circle, 0.0, 1.0);\n }\n `,\n };\n static onEffectMask = `\n float outerRadius = radius * u_dimensions.y * 0.5;\n\n float endAngle = range * progress - 0.0005;\n\n vec2 uv = v_textureCoordinate.xy * u_dimensions.xy - u_dimensions * 0.5;\n\n uv = $rotateUV(uv, -(offset));\n float linewidth = width * u_pixelRatio;\n float circle = length(uv) - (outerRadius - linewidth) ;\n circle = abs(circle) - linewidth;\n circle = clamp(-circle, 0.0, 1.0);\n\n float angle = (atan(uv.x, -uv.y) / 3.14159265359 * 0.5);\n float p = endAngle / (PI * 2.);\n\n circle *= step(fract(angle), fract(p));\n\n circle = rounded < 1. ? circle : max(circle, $drawDot(uv, vec2(0, outerRadius - linewidth), linewidth));\n circle = rounded < 1. ? circle : max(circle, $drawDot($rotateUV(uv, -(endAngle)), vec2(0, outerRadius - linewidth), linewidth));\n\n return mix(shaderColor, maskColor, circle);\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=RadialProgressEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Masks the current maskcolor a holepunch effect with rounded corners similar to {@link RoundedRectangle}\n */\nexport class HolePunchEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'holePunch';\n static getEffectKey() {\n return `holePunch`;\n }\n static uniforms = {\n x: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n y: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n height: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n radius: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static resolveDefaults(props) {\n return {\n x: props.x || 0,\n y: props.y || 0,\n width: props.width || 50,\n height: props.height || 50,\n radius: props.radius ?? 0,\n };\n }\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n boxDist: `\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n `,\n };\n static onShaderMask = `\n vec2 halfDimensions = u_dimensions * 0.5;\n vec2 size = vec2(width, height) * 0.5;\n vec2 basePos = v_textureCoordinate.xy * u_dimensions.xy - vec2(x, y);\n vec2 pos = basePos - size;\n float r = radius[0] * step(pos.x, 0.5) * step(pos.y, 0.5);\n r = r + radius[1] * step(0.5, pos.x) * step(pos.y, 0.5);\n r = r + radius[2] * step(0.5, pos.x) * step(0.5, pos.y);\n r = r + radius[3] * step(pos.x, 0.5) * step(0.5, pos.y);\n return $boxDist(pos, size, r);\n `;\n static onEffectMask = `\n return mix(maskColor, vec4(0.0), $fillMask(shaderMask));\n `;\n}\n//# sourceMappingURL=HolePunchEffect.js.map","import { DefaultShader } from './renderers/webgl/shaders/DefaultShader.js';\nimport { DefaultShaderBatched } from './renderers/webgl/shaders/DefaultShaderBatched.js';\nimport { DynamicShader, } from './renderers/webgl/shaders/DynamicShader.js';\nimport { RoundedRectangle } from './renderers/webgl/shaders/RoundedRectangle.js';\nimport { SdfShader } from './renderers/webgl/shaders/SdfShader.js';\nimport { RadiusEffect } from './renderers/webgl/shaders/effects/RadiusEffect.js';\nimport { BorderEffect } from './renderers/webgl/shaders/effects/BorderEffect.js';\nimport { LinearGradientEffect, } from './renderers/webgl/shaders/effects/LinearGradientEffect.js';\nimport { GrayscaleEffect, } from './renderers/webgl/shaders/effects/GrayscaleEffect.js';\nimport { BorderRightEffect } from './renderers/webgl/shaders/effects/BorderRightEffect.js';\nimport { BorderTopEffect } from './renderers/webgl/shaders/effects/BorderTopEffect.js';\nimport { BorderBottomEffect } from './renderers/webgl/shaders/effects/BorderBottomEffect.js';\nimport { BorderLeftEffect } from './renderers/webgl/shaders/effects/BorderLeftEffect.js';\nimport { GlitchEffect, } from './renderers/webgl/shaders/effects/GlitchEffect.js';\nimport { FadeOutEffect, } from './renderers/webgl/shaders/effects/FadeOutEffect.js';\nimport { RadialGradientEffect, } from './renderers/webgl/shaders/effects/RadialGradientEffect.js';\nimport { RadialProgressEffect, } from './renderers/webgl/shaders/effects/RadialProgressEffect.js';\nimport { HolePunchEffect } from './renderers/webgl/shaders/effects/HolePunchEffect.js';\nexport class CoreShaderManager {\n shCache = new Map();\n shConstructors = {};\n attachedShader = null;\n effectConstructors = {};\n renderer;\n constructor() {\n this.registerShaderType('DefaultShader', DefaultShader);\n this.registerShaderType('DefaultShaderBatched', DefaultShaderBatched);\n this.registerShaderType('RoundedRectangle', RoundedRectangle);\n this.registerShaderType('DynamicShader', DynamicShader);\n this.registerShaderType('SdfShader', SdfShader);\n this.registerEffectType('border', BorderEffect);\n this.registerEffectType('borderBottom', BorderBottomEffect);\n this.registerEffectType('borderLeft', BorderLeftEffect);\n this.registerEffectType('borderRight', BorderRightEffect);\n this.registerEffectType('borderTop', BorderTopEffect);\n this.registerEffectType('fadeOut', FadeOutEffect);\n this.registerEffectType('linearGradient', LinearGradientEffect);\n this.registerEffectType('radialGradient', RadialGradientEffect);\n this.registerEffectType('grayscale', GrayscaleEffect);\n this.registerEffectType('glitch', GlitchEffect);\n this.registerEffectType('radius', RadiusEffect);\n this.registerEffectType('radialProgress', RadialProgressEffect);\n this.registerEffectType('holePunch', HolePunchEffect);\n }\n registerShaderType(shType, shClass) {\n this.shConstructors[shType] = shClass;\n }\n registerEffectType(effectType, effectClass) {\n this.effectConstructors[effectType] = effectClass;\n }\n getRegisteredEffects() {\n return this.effectConstructors;\n }\n getRegisteredShaders() {\n return this.shConstructors;\n }\n loadShader(shType, props) {\n if (!this.renderer) {\n throw new Error(`Renderer is not been defined`);\n }\n const ShaderClass = this.shConstructors[shType];\n if (!ShaderClass) {\n throw new Error(`Shader type \"${shType}\" is not registered`);\n }\n if (shType === 'DynamicShader') {\n return this.loadDynamicShader(props);\n }\n const resolvedProps = ShaderClass.resolveDefaults(props);\n const cacheKey = ShaderClass.makeCacheKey(resolvedProps) || ShaderClass.name;\n if (cacheKey && this.shCache.has(cacheKey)) {\n return {\n shader: this.shCache.get(cacheKey),\n props: resolvedProps,\n };\n }\n // @ts-expect-error ShaderClass WILL accept a Renderer\n const shader = new ShaderClass(this.renderer, props);\n if (cacheKey) {\n this.shCache.set(cacheKey, shader);\n }\n return {\n shader,\n props: resolvedProps,\n };\n }\n loadDynamicShader(props) {\n if (!this.renderer) {\n throw new Error(`Renderer is not been defined`);\n }\n const resolvedProps = DynamicShader.resolveDefaults(props, this.effectConstructors);\n const cacheKey = DynamicShader.makeCacheKey(resolvedProps, this.effectConstructors);\n if (cacheKey && this.shCache.has(cacheKey)) {\n return {\n shader: this.shCache.get(cacheKey),\n props: resolvedProps,\n };\n }\n const shader = new DynamicShader(this.renderer, props, this.effectConstructors);\n if (cacheKey) {\n this.shCache.set(cacheKey, shader);\n }\n return {\n shader: shader,\n props: resolvedProps,\n };\n }\n useShader(shader) {\n if (this.attachedShader === shader) {\n return;\n }\n if (this.attachedShader) {\n this.attachedShader.detach();\n }\n shader.attach();\n this.attachedShader = shader;\n }\n}\n//# sourceMappingURL=CoreShaderManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class that keeps track of the invocations of Context methods when\n * the `enableContextSpy` renderer option is enabled.\n */\nexport class ContextSpy {\n data = {};\n reset() {\n this.data = {};\n }\n increment(name) {\n if (!this.data[name]) {\n this.data[name] = 0;\n }\n this.data[name]++;\n }\n getData() {\n return { ...this.data };\n }\n}\n//# sourceMappingURL=ContextSpy.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {} from '../textures/Texture.js';\n/**\n * Tests if the given location is a compressed texture container\n * @param url\n * @remarks\n * This function is used to determine if the given image url is a compressed\n * and only supports the following extensions: .ktx and .pvr\n * @returns\n */\nexport function isCompressedTextureContainer(url) {\n return /\\.(ktx|pvr)$/.test(url);\n}\n/**\n * Loads a compressed texture container\n * @param url\n * @returns\n */\nexport const loadCompressedTexture = async (url) => {\n const response = await fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n if (url.indexOf('.ktx') !== -1) {\n return loadKTXData(arrayBuffer);\n }\n return loadPVRData(arrayBuffer);\n};\n/**\n * Loads a KTX texture container and returns the texture data\n * @param buffer\n * @returns\n */\nconst loadKTXData = async (buffer) => {\n const view = new DataView(buffer);\n const littleEndian = view.getUint32(12) === 16909060 ? true : false;\n const mipmaps = [];\n const data = {\n glInternalFormat: view.getUint32(28, littleEndian),\n pixelWidth: view.getUint32(36, littleEndian),\n pixelHeight: view.getUint32(40, littleEndian),\n numberOfMipmapLevels: view.getUint32(56, littleEndian),\n bytesOfKeyValueData: view.getUint32(60, littleEndian),\n };\n let offset = 64;\n // Key Value Pairs of data start at byte offset 64\n // But the only known kvp is the API version, so skipping parsing.\n offset += data.bytesOfKeyValueData;\n for (let i = 0; i < data.numberOfMipmapLevels; i++) {\n const imageSize = view.getUint32(offset);\n offset += 4;\n mipmaps.push(view.buffer.slice(offset, imageSize));\n offset += imageSize;\n }\n return {\n data: {\n glInternalFormat: data.glInternalFormat,\n mipmaps,\n width: data.pixelWidth || 0,\n height: data.pixelHeight || 0,\n type: 'ktx',\n },\n premultiplyAlpha: false,\n };\n};\n/**\n * Loads a PVR texture container and returns the texture data\n * @param buffer\n * @returns\n */\nconst loadPVRData = async (buffer) => {\n // pvr header length in 32 bits\n const pvrHeaderLength = 13;\n // for now only we only support: COMPRESSED_RGB_ETC1_WEBGL\n const pvrFormatEtc1 = 0x8d64;\n const pvrWidth = 7;\n const pvrHeight = 6;\n const pvrMipmapCount = 11;\n const pvrMetadata = 12;\n const arrayBuffer = buffer;\n const header = new Int32Array(arrayBuffer, 0, pvrHeaderLength);\n // @ts-expect-error Object possibly undefined\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n const dataOffset = header[pvrMetadata] + 52;\n const pvrtcData = new Uint8Array(arrayBuffer, dataOffset);\n const mipmaps = [];\n const data = {\n pixelWidth: header[pvrWidth],\n pixelHeight: header[pvrHeight],\n numberOfMipmapLevels: header[pvrMipmapCount] || 0,\n };\n let offset = 0;\n let width = data.pixelWidth || 0;\n let height = data.pixelHeight || 0;\n for (let i = 0; i < data.numberOfMipmapLevels; i++) {\n const level = ((width + 3) >> 2) * ((height + 3) >> 2) * 8;\n const view = new Uint8Array(arrayBuffer, pvrtcData.byteOffset + offset, level);\n mipmaps.push(view);\n offset += level;\n width = width >> 1;\n height = height >> 1;\n }\n return {\n data: {\n glInternalFormat: pvrFormatEtc1,\n mipmaps: mipmaps,\n width: data.pixelWidth || 0,\n height: data.pixelHeight || 0,\n type: 'pvr',\n },\n premultiplyAlpha: false,\n };\n};\n//# sourceMappingURL=textureCompression.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\nimport { isCompressedTextureContainer, loadCompressedTexture, } from '../lib/textureCompression.js';\n/**\n * Texture consisting of an image loaded from a URL\n *\n * @remarks\n * The ImageTexture's {@link ImageTextureProps.src} prop defines the image URL\n * to be downloaded.\n *\n * By default, the texture's alpha values will be premultiplied into its color\n * values which is generally the desired setting before they are sent to the\n * texture's associated {@link Shader}. However, in special cases you may want\n * the Shader to receive straight (non-premultiplied) values. In that case you\n * can disable the default behavior by setting the\n * {@link ImageTextureProps.premultiplyAlpha} prop to `false`.\n */\nexport class ImageTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = ImageTexture.resolveDefaults(props);\n }\n hasAlphaChannel(mimeType) {\n return mimeType.indexOf('image/png') !== -1;\n }\n async getTextureData() {\n const { src, premultiplyAlpha } = this.props;\n if (!src) {\n return {\n data: null,\n };\n }\n if (src instanceof ImageData) {\n return {\n data: src,\n premultiplyAlpha,\n };\n }\n // Handle compressed textures\n if (isCompressedTextureContainer(src)) {\n return loadCompressedTexture(src);\n }\n if (this.txManager.imageWorkerManager) {\n return await this.txManager.imageWorkerManager.getImage(src, premultiplyAlpha);\n }\n else if (this.txManager.hasCreateImageBitmap) {\n const response = await fetch(src);\n const blob = await response.blob();\n const hasAlphaChannel = premultiplyAlpha ?? this.hasAlphaChannel(blob.type);\n return {\n data: await createImageBitmap(blob, {\n premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',\n colorSpaceConversion: 'none',\n imageOrientation: 'none',\n }),\n premultiplyAlpha: hasAlphaChannel,\n };\n }\n else {\n const img = new Image();\n if (!(src.substr(0, 5) == \"data:\")) {\n // Base64.\n img.crossOrigin = \"Anonymous\";\n }\n img.src = src;\n await new Promise((resolve, reject) => {\n img.onload = () => resolve();\n img.onerror = () => reject(new Error(`Failed to load image`));\n }).catch((e) => {\n console.error(e);\n });\n return {\n data: img,\n premultiplyAlpha: premultiplyAlpha ?? true,\n };\n }\n }\n static makeCacheKey(props) {\n const resolvedProps = ImageTexture.resolveDefaults(props);\n // ImageTextures sourced by ImageData are non-cacheable\n if (resolvedProps.src instanceof ImageData) {\n return false;\n }\n return `ImageTexture,${resolvedProps.src},${resolvedProps.premultiplyAlpha}`;\n }\n static resolveDefaults(props) {\n return {\n src: props.src ?? '',\n premultiplyAlpha: props.premultiplyAlpha ?? true, // null,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=ImageTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Number of floating point numbers that represent a single glyph in the SDF vertex buffer.\n *\n * @remarks\n * The vertex buffer contains:\n * - 6 vertex positions\n * - 6 texture coordinates\n * - = 12 positions/coordinates per glyph\n *\n * Each vertex position and texture coordinate consist of 2 floating point numbers (x/y).\n * So there are 12 * 2 = 24 floating point numbers that make up a single glyph.\n */\nexport const FLOATS_PER_GLYPH = 24;\n//# sourceMappingURL=constants.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A wrapper Generator class that makes a generator peekable.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class PeekableIterator {\n iterator;\n peekBuffer = [];\n _lastIndex;\n constructor(iterator, indexBase = 0) {\n this.iterator = iterator;\n this.iterator = iterator;\n this._lastIndex = indexBase - 1;\n this.peekBuffer = [];\n }\n next() {\n const nextResult = this.peekBuffer.length > 0\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.peekBuffer.pop()\n : this.iterator.next();\n if (nextResult.done) {\n this._lastIndex = -1;\n }\n else {\n this._lastIndex++;\n }\n return nextResult;\n }\n peek() {\n if (this.peekBuffer.length > 0) {\n // We know that the buffer is not empty, so we can safely use the\n // non-null assertion operator\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.peekBuffer[0];\n }\n const result = this.iterator.next();\n this.peekBuffer.push(result);\n return result;\n }\n get lastIndex() {\n return this._lastIndex;\n }\n}\n//# sourceMappingURL=PeekableGenerator.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { PeekableIterator } from './PeekableGenerator.js';\nimport { getUnicodeCodepoints } from './getUnicodeCodepoints.js';\n/**\n * Measures a single-line of text width ignoring any unmapped glyphs including line breaks\n *\n * @param text\n * @param shaperProps\n * @param shaper\n * @returns\n */\nexport function measureText(text, shaperProps, shaper) {\n const glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, 0), 0));\n let width = 0;\n for (const glyph of glyphs) {\n if (glyph.mapped) {\n width += glyph.xAdvance;\n }\n }\n return width;\n}\n//# sourceMappingURL=measureText.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../../../utils.js';\nimport { PeekableIterator } from './PeekableGenerator.js';\nimport { getUnicodeCodepoints } from './getUnicodeCodepoints.js';\nimport { measureText } from './measureText.js';\nexport function layoutText(curLineIndex, startX, startY, text, textAlign, width, height, fontSize, lineHeight, letterSpacing, \n/**\n * Mutated\n */\nvertexBuffer, contain, \n/**\n * Mutated\n */\nlineCache, rwSdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines) {\n assertTruthy(trFontFace, 'Font face must be loaded');\n assertTruthy(trFontFace.loaded, 'Font face must be loaded');\n assertTruthy(trFontFace.data, 'Font face must be loaded');\n assertTruthy(trFontFace.shaper, 'Font face must be loaded');\n // Regardless of fontSize (or other scaling properties), we layout the vertices of each glyph\n // using the fixed coordinate space determined by font size used to produce the atlas.\n // Scaling for display is handled by shader uniforms inexpensively.\n // So we have:\n // - vertex space: the space in which the vertices of each glyph are laid out\n // - screen space: the screen pixel space\n // Input properties such as x, y, w, fontSize, letterSpacing, etc. are all expressed in screen space.\n // We convert these to the vertex space by dividing them the `fontSizeRatio` factor.\n /**\n * See above\n */\n const fontSizeRatio = fontSize / trFontFace.data.info.size;\n /**\n * `lineHeight` in vertex coordinates\n */\n const vertexLineHeight = lineHeight / fontSizeRatio;\n /**\n * `w` in vertex coordinates\n */\n const vertexW = width / fontSizeRatio;\n /**\n * `letterSpacing` in vertex coordinates\n */\n const vertexLSpacing = letterSpacing / fontSizeRatio;\n const startingLineCacheEntry = lineCache[curLineIndex];\n const startingCodepointIndex = startingLineCacheEntry?.codepointIndex || 0;\n const startingMaxX = startingLineCacheEntry?.maxX || 0;\n const startingMaxY = startingLineCacheEntry?.maxY || 0;\n let maxX = startingMaxX;\n let maxY = startingMaxY;\n let curX = startX;\n let curY = startY;\n let bufferOffset = 0;\n /**\n * Buffer offset to last word boundry. This is -1 when we aren't in a word boundry.\n */\n const lastWord = {\n codepointIndex: -1,\n bufferOffset: -1,\n xStart: -1,\n };\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const shaper = trFontFace.shaper;\n const shaperProps = {\n letterSpacing: vertexLSpacing,\n };\n // Get glyphs\n let glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, startingCodepointIndex), startingCodepointIndex));\n let glyphResult;\n let curLineBufferStart = -1;\n const bufferLineInfos = [];\n const vertexTruncateHeight = height / fontSizeRatio;\n const overflowSuffVertexWidth = measureText(overflowSuffix, shaperProps, shaper);\n // Line-by-line layout\n let moreLines = true;\n while (moreLines) {\n const nextLineWillFit = (maxLines === 0 || curLineIndex + 1 < maxLines) &&\n (contain !== 'both' ||\n scrollable ||\n curY + vertexLineHeight + trFontFace.maxCharHeight <=\n vertexTruncateHeight);\n const lineVertexW = nextLineWillFit\n ? vertexW\n : vertexW - overflowSuffVertexWidth;\n /**\n * Vertex X position to the beginning of the last word boundary. This becomes -1 when we start traversing a word.\n */\n let xStartLastWordBoundary = 0;\n const lineIsBelowWindowTop = curY + vertexLineHeight >= rwSdf.y1;\n const lineIsAboveWindowBottom = curY <= rwSdf.y2;\n const lineIsWithinWindow = lineIsBelowWindowTop && lineIsAboveWindowBottom;\n // Layout glyphs in this line\n // Any break statements in this while loop will trigger a line break\n while ((glyphResult = glyphs.next()) && !glyphResult.done) {\n const glyph = glyphResult.value;\n if (curLineIndex === lineCache.length) {\n lineCache.push({\n codepointIndex: glyph.cluster,\n maxY,\n maxX,\n });\n }\n else if (curLineIndex > lineCache.length) {\n throw new Error('Unexpected lineCache length');\n }\n // If we encounter a word boundary (white space or newline) we invalidate\n // the lastWord and set the xStartLastWordBoundary if we haven't already.\n if (glyph.codepoint === 32 || glyph.codepoint === 10) {\n if (lastWord.codepointIndex !== -1) {\n lastWord.codepointIndex = -1;\n xStartLastWordBoundary = curX;\n }\n }\n else if (lastWord.codepointIndex === -1) {\n lastWord.codepointIndex = glyph.cluster;\n lastWord.bufferOffset = bufferOffset;\n lastWord.xStart = xStartLastWordBoundary;\n }\n if (glyph.mapped) {\n // Mapped glyph\n const charEndX = curX + glyph.xOffset + glyph.width;\n // Word wrap check\n if (\n // We are containing the text\n contain !== 'none' &&\n // The current glyph reaches outside the contained width\n charEndX >= lineVertexW &&\n // There is a last word that we can break to the next line\n lastWord.codepointIndex !== -1 &&\n // Prevents infinite loop when a single word is longer than the width\n lastWord.xStart > 0) {\n // The current word is about to go off the edge of the container width\n // Reinitialize the iterator starting at the last word\n // and proceeding to the next line\n if (nextLineWillFit) {\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, lastWord.codepointIndex), lastWord.codepointIndex));\n bufferOffset = lastWord.bufferOffset;\n break;\n }\n else {\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0));\n curX = lastWord.xStart;\n bufferOffset = lastWord.bufferOffset;\n // HACK: For the rest of the line when inserting the overflow suffix,\n // set contain = 'none' to prevent an infinite loop.\n contain = 'none';\n }\n }\n else {\n // This glyph fits, so we can add it to the buffer\n const quadX = curX + glyph.xOffset;\n const quadY = curY + glyph.yOffset;\n // Only add to buffer for rendering if the line is within the render window\n if (lineIsWithinWindow) {\n if (curLineBufferStart === -1) {\n curLineBufferStart = bufferOffset;\n }\n const atlasEntry = trFontFace.getAtlasEntry(glyph.glyphId);\n // Add texture coordinates\n const u = atlasEntry.x / trFontFace.data.common.scaleW;\n const v = atlasEntry.y / trFontFace.data.common.scaleH;\n const uvWidth = atlasEntry.width / trFontFace.data.common.scaleW;\n const uvHeight = atlasEntry.height / trFontFace.data.common.scaleH;\n // TODO: (Performance) We can optimize this by using ELEMENT_ARRAY_BUFFER\n // eliminating the need to duplicate vertices\n // Top-left\n vertexBuffer[bufferOffset++] = quadX;\n vertexBuffer[bufferOffset++] = quadY;\n vertexBuffer[bufferOffset++] = u;\n vertexBuffer[bufferOffset++] = v;\n // Top-right\n vertexBuffer[bufferOffset++] = quadX + glyph.width;\n vertexBuffer[bufferOffset++] = quadY;\n vertexBuffer[bufferOffset++] = u + uvWidth;\n vertexBuffer[bufferOffset++] = v;\n // Bottom-left\n vertexBuffer[bufferOffset++] = quadX;\n vertexBuffer[bufferOffset++] = quadY + glyph.height;\n vertexBuffer[bufferOffset++] = u;\n vertexBuffer[bufferOffset++] = v + uvHeight;\n // Bottom-right\n vertexBuffer[bufferOffset++] = quadX + glyph.width;\n vertexBuffer[bufferOffset++] = quadY + glyph.height;\n vertexBuffer[bufferOffset++] = u + uvWidth;\n vertexBuffer[bufferOffset++] = v + uvHeight;\n }\n maxY = Math.max(maxY, quadY + glyph.height);\n maxX = Math.max(maxX, quadX + glyph.width);\n curX += glyph.xAdvance;\n }\n }\n else {\n // Unmapped character\n // Handle newlines\n if (glyph.codepoint === 10) {\n if (nextLineWillFit) {\n // The whole line fit, so we can break to the next line\n break;\n }\n else {\n // The whole line won't fit, so we need to add the overflow suffix\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0));\n // HACK: For the rest of the line when inserting the overflow suffix,\n // set contain = 'none' to prevent an infinite loop.\n contain = 'none';\n }\n }\n }\n }\n // Prepare for the next line...\n if (curLineBufferStart !== -1) {\n bufferLineInfos.push({\n bufferStart: curLineBufferStart,\n bufferEnd: bufferOffset,\n });\n curLineBufferStart = -1;\n }\n curX = 0;\n curY += vertexLineHeight;\n curLineIndex++;\n lastWord.codepointIndex = -1;\n xStartLastWordBoundary = 0;\n // Figure out if there are any more lines to render...\n if (!forceFullLayoutCalc && contain === 'both' && curY > rwSdf.y2) {\n // Stop layout calculation early (for performance purposes) if:\n // - We're not forcing a full layout calculation (for width/height calculation)\n // - ...and we're containing the text vertically+horizontally (contain === 'both')\n // - ...and we have a render window\n // - ...and the next line is below the bottom of the render window\n moreLines = false;\n }\n else if (glyphResult && glyphResult.done) {\n // If we've reached the end of the text, we know we're done\n moreLines = false;\n }\n else if (!nextLineWillFit) {\n // If we're contained vertically+horizontally (contain === 'both')\n // but not scrollable and the next line won't fit, we're done.\n moreLines = false;\n }\n }\n // Use textAlign to determine if we need to adjust the x position of the text\n // in the buffer line by line\n if (textAlign === 'center') {\n const vertexTextW = contain === 'none' ? maxX : vertexW;\n for (let i = 0; i < bufferLineInfos.length; i++) {\n const line = bufferLineInfos[i];\n // - 4 = the x position of a rightmost vertex\n const lineWidth = \n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n vertexBuffer[line.bufferEnd - 4] - vertexBuffer[line.bufferStart];\n const xOffset = (vertexTextW - lineWidth) / 2;\n for (let j = line.bufferStart; j < line.bufferEnd; j += 4) {\n vertexBuffer[j] += xOffset;\n }\n }\n }\n else if (textAlign === 'right') {\n const vertexTextW = contain === 'none' ? maxX : vertexW;\n for (let i = 0; i < bufferLineInfos.length; i++) {\n const line = bufferLineInfos[i];\n const lineWidth = line.bufferEnd === line.bufferStart\n ? 0\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n vertexBuffer[line.bufferEnd - 4] - vertexBuffer[line.bufferStart];\n const xOffset = vertexTextW - lineWidth;\n for (let j = line.bufferStart; j < line.bufferEnd; j += 4) {\n vertexBuffer[j] += xOffset;\n }\n }\n }\n assertTruthy(glyphResult);\n return {\n bufferNumFloats: bufferOffset,\n bufferNumQuads: bufferOffset / 16,\n layoutNumCharacters: glyphResult.done\n ? text.length - startingCodepointIndex\n : glyphResult.value.cluster - startingCodepointIndex + 1,\n fullyProcessed: !!glyphResult.done,\n maxX,\n maxY,\n };\n}\n//# sourceMappingURL=layoutText.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { isBoundPositive } from '../../../../lib/utils.js';\nimport { roundDownToMultiple, roundUpToMultiple } from './util.js';\n/**\n * Create a render window from the given parameters.\n *\n * @remarks\n * The render window is a rectangle that defines the area of the text that\n * should be rendered. It is used to skip rendering parts of the text that\n * are outside of the render window. The render window is relative to the\n * text's top left corner of the overrall text.\n *\n * @param x The x coordinate of the text element's top left corner relative to the screen.\n * @param y The y coordinate of the text element's top left corner relative to the screen.\n * @param scrollY The amount of pixels to scroll the text vertically.\n * @param lineHeight The number of extra lines to render above and below the visible window.\n * @param visibleWindow The visible window of the text element relative to the screen\n * @returns\n */\nexport function setRenderWindow(outRenderWindow, x, y, scrollY, lineHeight, bufferMargin, visibleWindow, fontSizeRatio) {\n const { screen, sdf } = outRenderWindow;\n if (!isBoundPositive(visibleWindow)) {\n screen.x1 = 0;\n screen.y1 = 0;\n screen.x2 = 0;\n screen.y2 = 0;\n sdf.x1 = 0;\n sdf.y1 = 0;\n sdf.x2 = 0;\n sdf.y2 = 0;\n outRenderWindow.numLines = 0;\n outRenderWindow.firstLineIdx = 0;\n }\n else {\n const x1 = visibleWindow.x1 - x;\n const x2 = x1 + (visibleWindow.x2 - visibleWindow.x1);\n const y1Base = visibleWindow.y1 - y + scrollY;\n const y1 = roundDownToMultiple(y1Base - bufferMargin, lineHeight || 1);\n const y2 = roundUpToMultiple(y1Base + (visibleWindow.y2 - visibleWindow.y1) + bufferMargin, lineHeight || 1);\n screen.x1 = x1;\n screen.y1 = y1;\n screen.x2 = x2;\n screen.y2 = y2;\n sdf.x1 = x1 / fontSizeRatio;\n sdf.y1 = y1 / fontSizeRatio;\n sdf.x2 = x2 / fontSizeRatio;\n sdf.y2 = y2 / fontSizeRatio;\n outRenderWindow.numLines = Math.ceil((y2 - y1) / lineHeight);\n outRenderWindow.firstLineIdx = lineHeight ? Math.floor(y1 / lineHeight) : 0;\n }\n outRenderWindow.valid = true;\n}\n//# sourceMappingURL=setRenderWindow.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Round up to the nearest multiple of the given number.\n *\n * @param value\n * @param multiple\n * @returns\n */\nexport function roundUpToMultiple(value, multiple) {\n return Math.ceil(value / multiple) * multiple;\n}\n/**\n * Round down to the nearest multiple of the given number.\n *\n * @param value\n * @param multiple\n * @returns\n */\nexport function roundDownToMultiple(value, multiple) {\n return Math.floor(value / multiple) * multiple;\n}\n//# sourceMappingURL=util.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport memize from 'memize';\nconst weightConversions = {\n normal: 400,\n bold: 700,\n bolder: 900,\n lighter: 100,\n};\nconst fontWeightToNumber = (weight) => {\n if (typeof weight === 'number') {\n return weight;\n }\n return weightConversions[weight] || 400;\n};\nfunction rawResolveFontToUse(familyMapsByPriority, family, weightIn, style, stretch) {\n let weight = fontWeightToNumber(weightIn);\n for (const fontFamiles of familyMapsByPriority) {\n const fontFaces = fontFamiles[family];\n if (!fontFaces) {\n continue;\n }\n if (fontFaces.size === 1) {\n // No Exact match found, find nearest weight match\n console.warn(`TrFontManager: Only one font face found for family: '${family}' - will be used for all weights and styles`);\n return fontFaces.values().next().value;\n }\n const weightMap = new Map();\n for (const fontFace of fontFaces) {\n const fontFamilyWeight = fontWeightToNumber(fontFace.descriptors.weight);\n if (fontFamilyWeight === weight &&\n fontFace.descriptors.style === style &&\n fontFace.descriptors.stretch === stretch) {\n return fontFace;\n }\n weightMap.set(fontFamilyWeight, fontFace);\n }\n // No Exact match found, find nearest weight match\n const msg = `TrFontManager: No exact match: '${family} Weight: ${weight} Style: ${style} Stretch: ${stretch}'`;\n console.error(msg);\n // Follow the CSS font-weight algorithm to find the nearest weight match\n // https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/#font-matching-algorithm\n if (weight === 400 && weightMap.has(500)) {\n return weightMap.get(500);\n }\n if (weight === 500 && weightMap.has(400)) {\n return weightMap.get(400);\n }\n if (weight < 400) {\n while (weight > 0) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight -= 100;\n }\n // reset back for the next loop\n weight = 600;\n }\n while (weight < 1000) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight += 100;\n }\n // finally check lower again\n weight = 500;\n while (weight > 0) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight -= 100;\n }\n }\n return;\n}\nconst resolveFontToUse = memize(rawResolveFontToUse);\nexport class TrFontManager {\n textRenderers;\n constructor(textRenderers) {\n this.textRenderers = textRenderers;\n // Intentionally left blank\n }\n addFontFace(font) {\n // All the font face to all of the text renderers that support it\n for (const trId in this.textRenderers) {\n const tr = this.textRenderers[trId];\n if (tr && tr.isFontFaceSupported(font)) {\n tr.addFontFace(font);\n }\n }\n }\n /**\n * Utility method to resolve a single font face from a list of prioritized family maps based on\n * a set of font properties.\n *\n * @remarks\n * These are to be used by a text renderer to resolve a font face if needed.\n *\n * @param familyMapsByPriority\n * @param props\n * @returns\n */\n static resolveFontFace(familyMapsByPriority, props) {\n const { fontFamily, fontWeight, fontStyle, fontStretch } = props;\n return resolveFontToUse(familyMapsByPriority, fontFamily, fontWeight, fontStyle, fontStretch);\n }\n}\n//# sourceMappingURL=TrFontManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createBound, intersectRect, copyRect, boundsOverlap, convertBoundToRect, } from '../../../lib/utils.js';\nimport { TextRenderer, } from '../TextRenderer.js';\nimport { SdfTrFontFace } from '../../font-face-types/SdfTrFontFace/SdfTrFontFace.js';\nimport { FLOATS_PER_GLYPH } from './internal/constants.js';\nimport { getStartConditions } from './internal/getStartConditions.js';\nimport { layoutText } from './internal/layoutText.js';\nimport { setRenderWindow, } from './internal/setRenderWindow.js';\nimport { TrFontManager } from '../../TrFontManager.js';\nimport { assertTruthy, mergeColorAlpha } from '../../../../utils.js';\nimport { WebGlCoreRenderOp } from '../../../renderers/webgl/WebGlCoreRenderOp.js';\nimport { BufferCollection } from '../../../renderers/webgl/internal/BufferCollection.js';\nimport { EventEmitter } from '../../../../common/EventEmitter.js';\n/**\n * Ephemeral rect object used for calculations\n */\nconst tmpRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n};\n/**\n * Singleton class for rendering text using signed distance fields.\n *\n * @remarks\n * SdfTextRenderer supports both single-channel and multi-channel signed distance fields.\n */\nexport class SdfTextRenderer extends TextRenderer {\n /**\n * Map of font family names to a set of font faces.\n */\n ssdfFontFamilies = {};\n msdfFontFamilies = {};\n fontFamilyArray = [\n this.ssdfFontFamilies,\n this.msdfFontFamilies,\n ];\n sdfShader;\n rendererBounds;\n constructor(stage) {\n super(stage);\n this.sdfShader = this.stage.shManager.loadShader('SdfShader').shader;\n this.rendererBounds = {\n x1: 0,\n y1: 0,\n x2: this.stage.options.appWidth,\n y2: this.stage.options.appHeight,\n };\n }\n //#region Overrides\n getPropertySetters() {\n return {\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n this.invalidateLayoutCache(state);\n },\n text: (state, value) => {\n state.props.text = value;\n this.invalidateLayoutCache(state);\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n this.invalidateLayoutCache(state);\n },\n color: (state, value) => {\n state.props.color = value;\n },\n x: (state, value) => {\n state.props.x = value;\n if (state.elementBounds.valid) {\n this.setElementBoundsX(state);\n // Only schedule an update if the text is not already rendered\n // (renderWindow is invalid) and the element possibly overlaps the screen\n // This is to avoid unnecessary updates when we know text is off-screen\n if (!state.renderWindow.valid &&\n boundsOverlap(state.elementBounds, this.rendererBounds)) {\n this.scheduleUpdateState(state);\n }\n }\n },\n y: (state, value) => {\n state.props.y = value;\n if (state.elementBounds.valid) {\n this.setElementBoundsY(state);\n // See x() for explanation\n if (!state.renderWindow.valid &&\n boundsOverlap(state.elementBounds, this.rendererBounds)) {\n this.scheduleUpdateState(state);\n }\n }\n },\n contain: (state, value) => {\n state.props.contain = value;\n this.invalidateLayoutCache(state);\n },\n width: (state, value) => {\n state.props.width = value;\n // Only invalidate layout cache if we're containing in the horizontal direction\n if (state.props.contain !== 'none') {\n this.invalidateLayoutCache(state);\n }\n },\n height: (state, value) => {\n state.props.height = value;\n // Only invalidate layout cache if we're containing in the vertical direction\n if (state.props.contain === 'both') {\n this.invalidateLayoutCache(state);\n }\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n this.invalidateLayoutCache(state);\n },\n scrollable: (state, value) => {\n state.props.scrollable = value;\n this.invalidateLayoutCache(state);\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n // Scrolling doesn't need to invalidate any caches, but it does need to\n // schedule an update\n this.scheduleUpdateState(state);\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n this.invalidateLayoutCache(state);\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n this.invalidateLayoutCache(state);\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n this.invalidateLayoutCache(state);\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n this.invalidateLayoutCache(state);\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n this.invalidateLayoutCache(state);\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n this.invalidateLayoutCache(state);\n },\n debug: (state, value) => {\n state.props.debug = value;\n },\n };\n }\n canRenderFont(props) {\n // TODO: Support matching on font stretch, weight and style (if/when needed)\n // For now we just match on the font family name\n // '$$SDF_FAILURE_TEST$$' is used to test the 'failure' event coming from text\n const { fontFamily } = props;\n return (fontFamily in this.ssdfFontFamilies ||\n fontFamily in this.msdfFontFamilies ||\n fontFamily === '$$SDF_FAILURE_TEST$$');\n }\n isFontFaceSupported(fontFace) {\n return fontFace instanceof SdfTrFontFace;\n }\n addFontFace(fontFace) {\n // Make sure the font face is an SDF font face (it should have already passed\n // the `isFontFaceSupported` check)\n assertTruthy(fontFace instanceof SdfTrFontFace);\n const familyName = fontFace.fontFamily;\n const fontFamiles = fontFace.type === 'ssdf'\n ? this.ssdfFontFamilies\n : fontFace.type === 'msdf'\n ? this.msdfFontFamilies\n : undefined;\n if (!fontFamiles) {\n console.warn(`Invalid font face type: ${fontFace.type}`);\n return;\n }\n let faceSet = fontFamiles[familyName];\n if (!faceSet) {\n faceSet = new Set();\n fontFamiles[familyName] = faceSet;\n }\n faceSet.add(fontFace);\n }\n createState(props) {\n return {\n props,\n status: 'initialState',\n updateScheduled: false,\n emitter: new EventEmitter(),\n lineCache: [],\n forceFullLayoutCalc: false,\n renderWindow: {\n screen: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n },\n sdf: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n },\n firstLineIdx: 0,\n numLines: 0,\n valid: false,\n },\n elementBounds: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n valid: false,\n },\n clippingRect: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n },\n bufferNumFloats: 0,\n bufferNumQuads: 0,\n vertexBuffer: undefined,\n webGlBuffers: null,\n bufferUploaded: false,\n textH: undefined,\n textW: undefined,\n distanceRange: 0,\n trFontFace: undefined,\n isRenderable: false,\n debugData: {\n updateCount: 0,\n layoutCount: 0,\n lastLayoutNumCharacters: 0,\n layoutSum: 0,\n drawSum: 0,\n drawCount: 0,\n bufferSize: 0,\n },\n };\n }\n updateState(state) {\n let { trFontFace } = state;\n const { textH, lineCache, debugData, forceFullLayoutCalc } = state;\n debugData.updateCount++;\n // On the first update call we need to set the status to loading\n if (state.status === 'initialState') {\n this.setStatus(state, 'loading');\n }\n // Resolve font face if we haven't yet\n if (!trFontFace) {\n trFontFace = this.resolveFontFace(state.props);\n state.trFontFace = trFontFace;\n if (!trFontFace) {\n const msg = `SdfTextRenderer: Could not resolve font face for family: '${state.props.fontFamily}'`;\n console.error(msg);\n this.setStatus(state, 'failed', new Error(msg));\n return;\n }\n trFontFace.texture.setRenderableOwner(state, state.isRenderable);\n }\n // If the font hasn't been loaded yet, stop here.\n // Listen for the 'loaded' event and forward fontLoaded event\n if (!trFontFace.loaded) {\n trFontFace.once('loaded', () => {\n this.scheduleUpdateState(state);\n });\n return;\n }\n // If the font is loaded then so should the data\n assertTruthy(trFontFace.data, 'Font face data should be loaded');\n const { text, fontSize, x, y, contain, width, height, lineHeight, verticalAlign, scrollable, overflowSuffix, maxLines, } = state.props;\n // scrollY only has an effect when contain === 'both' and scrollable === true\n const scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0;\n const { renderWindow } = state;\n /**\n * The font size of the SDF font face (the basis for SDF space units)\n */\n const sdfFontSize = trFontFace.data.info.size;\n /**\n * Divide screen space units by this to get the SDF space units\n * Mulitple SDF space units by this to get screen space units\n */\n const fontSizeRatio = fontSize / sdfFontSize;\n // Needed in renderWindow calculation\n const sdfLineHeight = lineHeight / fontSizeRatio;\n state.distanceRange =\n fontSizeRatio * trFontFace.data.distanceField.distanceRange;\n // Allocate buffers if needed\n const neededLength = text.length * FLOATS_PER_GLYPH;\n let vertexBuffer = state.vertexBuffer;\n if (!vertexBuffer || vertexBuffer.length < neededLength) {\n vertexBuffer = new Float32Array(neededLength * 2);\n }\n const elementBounds = state.elementBounds;\n if (!elementBounds.valid) {\n this.setElementBoundsX(state);\n this.setElementBoundsY(state);\n elementBounds.valid = true;\n }\n // Return early if we're still viewing inside the established render window\n // No need to re-render what we've already rendered\n // (Only if there's an established renderWindow and we're not suppressing early exit)\n if (!forceFullLayoutCalc && renderWindow.valid) {\n const rwScreen = renderWindow.screen;\n if (x + rwScreen.x1 <= elementBounds.x1 &&\n x + rwScreen.x2 >= elementBounds.x2 &&\n y - scrollY + rwScreen.y1 <= elementBounds.y1 &&\n y - scrollY + rwScreen.y2 >= elementBounds.y2) {\n this.setStatus(state, 'loaded');\n return;\n }\n // Otherwise invalidate the renderWindow so it can be redone\n renderWindow.valid = false;\n this.setStatus(state, 'loading');\n }\n const { offsetY, textAlign } = state.props;\n // Create a new renderWindow if needed\n if (!renderWindow.valid) {\n const isPossiblyOnScreen = boundsOverlap(elementBounds, this.rendererBounds);\n if (!isPossiblyOnScreen) {\n // If the element is not possibly on screen, we can skip the layout and rendering completely\n return;\n }\n setRenderWindow(renderWindow, x, y, scrollY, lineHeight, contain === 'both' ? elementBounds.y2 - elementBounds.y1 : 0, elementBounds, fontSizeRatio);\n // console.log('newRenderWindow', renderWindow);\n }\n const start = getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH);\n if (!start) {\n // Nothing to render, return early, but still mark as loaded (since the text is just scrolled\n // out of view)\n this.setStatus(state, 'loaded');\n return;\n }\n const { letterSpacing } = state.props;\n const out2 = layoutText(start.lineIndex, start.sdfX, start.sdfY, text, textAlign, width, height, fontSize, lineHeight, letterSpacing, vertexBuffer, contain, lineCache, renderWindow.sdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines);\n state.bufferUploaded = false;\n state.bufferNumFloats = out2.bufferNumFloats;\n state.bufferNumQuads = out2.bufferNumQuads;\n state.vertexBuffer = vertexBuffer;\n state.renderWindow = renderWindow;\n debugData.lastLayoutNumCharacters = out2.layoutNumCharacters;\n debugData.bufferSize = vertexBuffer.byteLength;\n // If we didn't exit early, we know we have completely computed w/h\n if (out2.fullyProcessed) {\n state.textW = out2.maxX * fontSizeRatio;\n state.textH = out2.maxY * fontSizeRatio;\n }\n // if (state.props.debug.printLayoutTime) {\n // debugData.layoutSum += performance.now() - updateStartTime;\n // debugData.layoutCount++;\n // }\n this.setStatus(state, 'loaded');\n }\n renderQuads(state, transform, clippingRect, alpha, parentHasRenderTexture, framebufferDimensions) {\n if (!state.vertexBuffer) {\n // Nothing to draw\n return;\n }\n const { renderer } = this.stage;\n const { fontSize, color, contain, scrollable, zIndex, debug } = state.props;\n // scrollY only has an effect when contain === 'both' and scrollable === true\n const scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0;\n const { textW = 0, textH = 0, distanceRange, vertexBuffer, bufferUploaded, trFontFace, elementBounds, } = state;\n let { webGlBuffers } = state;\n if (!webGlBuffers) {\n const glw = renderer.glw;\n const stride = 4 * Float32Array.BYTES_PER_ELEMENT;\n const webGlBuffer = glw.createBuffer();\n assertTruthy(webGlBuffer);\n state.webGlBuffers = new BufferCollection([\n {\n buffer: webGlBuffer,\n attributes: {\n a_position: {\n name: 'a_position',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 0, // start at the beginning of the buffer\n },\n a_textureCoordinate: {\n name: 'a_textureCoordinate',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 2 * Float32Array.BYTES_PER_ELEMENT,\n },\n },\n },\n ]);\n state.bufferUploaded = false;\n assertTruthy(state.webGlBuffers);\n webGlBuffers = state.webGlBuffers;\n }\n if (!bufferUploaded) {\n const glw = renderer.glw;\n const buffer = webGlBuffers?.getBuffer('a_textureCoordinate') ?? null;\n glw.arrayBufferData(buffer, vertexBuffer, glw.STATIC_DRAW);\n state.bufferUploaded = true;\n }\n assertTruthy(trFontFace);\n if (scrollable && contain === 'both') {\n assertTruthy(elementBounds.valid);\n const elementRect = convertBoundToRect(elementBounds, tmpRect);\n if (clippingRect.valid) {\n state.clippingRect.valid = true;\n clippingRect = intersectRect(clippingRect, elementRect, state.clippingRect);\n }\n else {\n state.clippingRect.valid = true;\n clippingRect = copyRect(elementRect, state.clippingRect);\n }\n }\n const renderOp = new WebGlCoreRenderOp(renderer.glw, renderer.options, webGlBuffers, this.sdfShader, {\n transform: transform.data,\n // IMPORTANT: The SDF Shader expects the color NOT to be premultiplied\n // for the best blending results. Which is why we use `mergeColorAlpha`\n // instead of `mergeColorAlphaPremultiplied` here.\n color: mergeColorAlpha(color, alpha),\n size: fontSize / (trFontFace.data?.info.size || 0),\n scrollY,\n distanceRange,\n debug: debug.sdfShaderDebug,\n }, alpha, clippingRect, { height: textH, width: textW }, 0, zIndex, false, parentHasRenderTexture, framebufferDimensions);\n const texture = state.trFontFace?.texture;\n assertTruthy(texture);\n const ctxTexture = this.stage.txManager.getCtxTexture(texture);\n renderOp.addTexture(ctxTexture);\n renderOp.length = state.bufferNumFloats;\n renderOp.numQuads = state.bufferNumQuads;\n renderer.addRenderOp(renderOp);\n // if (!debug.disableScissor) {\n // renderer.enableScissor(\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // Draw the arrays\n // gl.drawArrays(\n // gl.TRIANGLES, // Primitive type\n // 0,\n // bufferNumVertices, // Number of verticies\n // );\n // renderer.disableScissor();\n // if (debug.showElementRect) {\n // this.renderer.drawBorder(\n // Colors.Blue,\n // elementRect.x,\n // elementRect.y,\n // elementRect.w,\n // elementRect.h,\n // );\n // }\n // if (debug.showVisibleRect) {\n // this.renderer.drawBorder(\n // Colors.Green,\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // if (debug.showRenderWindow && renderWindow) {\n // this.renderer.drawBorder(\n // Colors.Red,\n // x + renderWindow.x1,\n // y + renderWindow.y1 - scrollY,\n // x + renderWindow.x2 - (x + renderWindow.x1),\n // y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY),\n // );\n // }\n // if (debug.printLayoutTime) {\n // debugData.drawSum += performance.now() - drawStartTime;\n // debugData.drawCount++;\n // }\n }\n setIsRenderable(state, renderable) {\n super.setIsRenderable(state, renderable);\n state.trFontFace?.texture.setRenderableOwner(state, renderable);\n }\n destroyState(state) {\n super.destroyState(state);\n // If there's a Font Face assigned we must free the owner relation to its texture\n state.trFontFace?.texture.setRenderableOwner(state, false);\n }\n //#endregion Overrides\n resolveFontFace(props) {\n return TrFontManager.resolveFontFace(this.fontFamilyArray, props);\n }\n /**\n * Release the loaded SDF font face\n *\n * @param state\n */\n releaseFontFace(state) {\n if (state.trFontFace) {\n state.trFontFace.texture.setRenderableOwner(state, false);\n state.trFontFace = undefined;\n }\n }\n /**\n * Invalidate the layout cache stored in the state. This will cause the text\n * to be re-layed out on the next update.\n *\n * @remarks\n * This also invalidates the visible window cache.\n *\n * @param state\n */\n invalidateLayoutCache(state) {\n state.renderWindow.valid = false;\n state.elementBounds.valid = false;\n state.textH = undefined;\n state.textW = undefined;\n state.lineCache = [];\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n setElementBoundsX(state) {\n const { x, contain, width } = state.props;\n const { elementBounds } = state;\n elementBounds.x1 = x;\n elementBounds.x2 = contain !== 'none' ? x + width : Infinity;\n }\n setElementBoundsY(state) {\n const { y, contain, height } = state.props;\n const { elementBounds } = state;\n elementBounds.y1 = y;\n elementBounds.y2 = contain === 'both' ? y + height : Infinity;\n }\n}\n//# sourceMappingURL=SdfTextRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Gets the start conditions for the layout loop.\n *\n * @remarks\n * Returns `undefined` if the layout loop should not be run.\n *\n * @param fontSize\n * @param fontSizeRatio\n * @param sdfLineHeight\n * @param renderWindow\n * @param lineCache\n * @param textH\n * @returns\n */\nexport function getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH) {\n // State variables\n const startLineIndex = Math.min(Math.max(renderWindow.firstLineIdx, 0), lineCache.length);\n // TODO: (fontSize / 6.4286 / fontSizeRatio) Adding this to the startY helps the text line up better with Canvas rendered text\n const sdfStartX = 0;\n let sdfVerticalAlignYOffset = 0;\n if (verticalAlign === 'middle') {\n sdfVerticalAlignYOffset = (sdfLineHeight - sdfFontSize) / 2;\n }\n else if (verticalAlign === 'bottom') {\n sdfVerticalAlignYOffset = sdfLineHeight - sdfFontSize;\n }\n const sdfOffsetY = offsetY / fontSizeRatio;\n const sdfStartY = sdfOffsetY + startLineIndex * sdfLineHeight + sdfVerticalAlignYOffset; // TODO: Figure out what determines the initial y offset of text.\n // Don't attempt to render anything if we know we're starting past the established end of the text\n if (textH && sdfStartY >= textH / fontSizeRatio) {\n return;\n }\n return {\n sdfX: sdfStartX,\n sdfY: sdfStartY,\n lineIndex: startLineIndex,\n };\n}\n//# sourceMappingURL=getStartConditions.js.map","import { CoreExtension } from '../../exports/core-api.js';\n/**\n * Type guard that checks if a Class extends CoreExtension.\n *\n * @param Class\n * @returns\n */\nexport function classExtendsCoreExtension(Class) {\n return Class.prototype instanceof CoreExtension;\n}\nexport async function loadCoreExtension(coreExtensionModule, stage) {\n let module;\n try {\n console.log('Loading core extension', coreExtensionModule);\n module = (await import(coreExtensionModule /* @vite-ignore */));\n }\n catch (e) {\n console.error(`The core extension module at '${coreExtensionModule}' could not be loaded.`);\n console.error(e);\n return;\n }\n if (!module.default) {\n console.error(`The core extension module at '${coreExtensionModule}' does not have a default export.`);\n return;\n }\n const ExtensionClass = module.default;\n if (classExtendsCoreExtension(ExtensionClass)) {\n const coreExtension = new ExtensionClass();\n try {\n await coreExtension.run(stage);\n }\n catch (e) {\n console.error(`The core extension at '${coreExtensionModule}' threw an error.`);\n console.error(e);\n }\n }\n else {\n console.error(`The core extension at '${coreExtensionModule}' does not extend CoreExtension.`);\n }\n}\nexport function santizeCustomDataMap(d) {\n const validTypes = { boolean: true, string: true, number: true };\n const keys = Object.keys(d);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!key) {\n continue;\n }\n const value = d[key];\n const valueType = typeof value;\n // Typescript doesn't understand the above const valueType ¯\\_(ツ)_/¯\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore-next-line\n if (valueType === 'string' && value.length > 2048) {\n console.warn(`Custom Data value for ${key} is too long, it will be truncated to 2048 characters`);\n // same here, see above comment, this can only be a string at this point\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore-next-line\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n d[key] = value.substring(0, 2048);\n }\n if (!validTypes[valueType]) {\n console.warn(`Custom Data value for ${key} is not a boolean, string, or number, it will be ignored`);\n delete d[key];\n }\n }\n return d;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ManualCountTextureUsageTracker, } from './texture-usage-trackers/ManualCountTextureUsageTracker.js';\nimport { FinalizationRegistryTextureUsageTracker } from './texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { Inspector } from './Inspector.js';\nimport { santizeCustomDataMap } from '../render-drivers/utils.js';\nimport { isProductionEnvironment } from '../utils.js';\n/**\n * The Renderer Main API\n *\n * @remarks\n * This is the primary class used to configure and operate the Renderer.\n *\n * It is used to create and destroy Nodes, as well as Texture and Shader\n * references.\n *\n * Example:\n * ```ts\n * import { RendererMain, MainCoreDriver } from '@lightningjs/renderer';\n *\n * // Initialize the Renderer\n * const renderer = new RendererMain(\n * {\n * appWidth: 1920,\n * appHeight: 1080\n * },\n * 'app',\n * new MainCoreDriver(),\n * );\n * ```\n */\nexport class RendererMain extends EventEmitter {\n root = null;\n driver;\n canvas;\n settings;\n inspector = null;\n nodes = new Map();\n nextTextureId = 1;\n /**\n * Texture Usage Tracker for Usage Based Texture Garbage Collection\n *\n * @remarks\n * For internal use only. DO NOT ACCESS.\n */\n textureTracker;\n /**\n * Constructs a new Renderer instance\n *\n * @param settings Renderer settings\n * @param target Element ID or HTMLElement to insert the canvas into\n * @param driver Core Driver to use\n */\n constructor(settings, target, driver) {\n super();\n const resolvedSettings = {\n appWidth: settings.appWidth || 1920,\n appHeight: settings.appHeight || 1080,\n txMemByteThreshold: settings.txMemByteThreshold || 124e6,\n boundsMargin: settings.boundsMargin || 0,\n deviceLogicalPixelRatio: settings.deviceLogicalPixelRatio || 1,\n devicePhysicalPixelRatio: settings.devicePhysicalPixelRatio || window.devicePixelRatio,\n clearColor: settings.clearColor ?? 0x00000000,\n coreExtensionModule: settings.coreExtensionModule || null,\n experimental_FinalizationRegistryTextureUsageTracker: settings.experimental_FinalizationRegistryTextureUsageTracker ?? false,\n textureCleanupOptions: settings.textureCleanupOptions || {},\n fpsUpdateInterval: settings.fpsUpdateInterval || 0,\n numImageWorkers: settings.numImageWorkers !== undefined ? settings.numImageWorkers : 2,\n enableContextSpy: settings.enableContextSpy ?? false,\n enableInspector: settings.enableInspector ?? false,\n };\n this.settings = resolvedSettings;\n const { appWidth, appHeight, deviceLogicalPixelRatio, devicePhysicalPixelRatio, enableInspector, } = resolvedSettings;\n const releaseCallback = (textureId) => {\n this.driver.releaseTexture(textureId);\n };\n const useFinalizationRegistryTracker = resolvedSettings.experimental_FinalizationRegistryTextureUsageTracker &&\n typeof FinalizationRegistry === 'function';\n this.textureTracker = useFinalizationRegistryTracker\n ? new FinalizationRegistryTextureUsageTracker(releaseCallback)\n : new ManualCountTextureUsageTracker(releaseCallback, this.settings.textureCleanupOptions);\n const deviceLogicalWidth = appWidth * deviceLogicalPixelRatio;\n const deviceLogicalHeight = appHeight * deviceLogicalPixelRatio;\n this.driver = driver;\n const canvas = document.createElement('canvas');\n this.canvas = canvas;\n canvas.width = deviceLogicalWidth * devicePhysicalPixelRatio;\n canvas.height = deviceLogicalHeight * devicePhysicalPixelRatio;\n canvas.style.width = `${deviceLogicalWidth}px`;\n canvas.style.height = `${deviceLogicalHeight}px`;\n let targetEl;\n if (typeof target === 'string') {\n targetEl = document.getElementById(target);\n }\n else {\n targetEl = target;\n }\n if (!targetEl) {\n throw new Error('Could not find target element');\n }\n // Hook up the driver's callbacks\n driver.onCreateNode = (node) => {\n this.nodes.set(node.id, node);\n };\n driver.onBeforeDestroyNode = (node) => {\n this.nodes.delete(node.id);\n };\n driver.onFpsUpdate = (fpsData) => {\n this.emit('fpsUpdate', fpsData);\n };\n driver.onFrameTick = (frameTickData) => {\n this.emit('frameTick', frameTickData);\n };\n driver.onIdle = () => {\n this.emit('idle');\n };\n targetEl.appendChild(canvas);\n if (enableInspector && !isProductionEnvironment()) {\n this.inspector = new Inspector(canvas, resolvedSettings);\n }\n }\n /**\n * Initialize the renderer\n *\n * @remarks\n * This method must be called and resolved asyncronously before any other\n * methods are called.\n */\n async init() {\n await this.driver.init(this, this.settings, this.canvas);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.root = this.driver.getRootNode();\n }\n /**\n * Create a new scene graph node\n *\n * @remarks\n * A node is the main graphical building block of the Renderer scene graph. It\n * can be a container for other nodes, or it can be a leaf node that renders a\n * solid color, gradient, image, or specific texture, using a specific shader.\n *\n * To create a text node, see {@link createTextNode}.\n *\n * See {@link INode} for more details.\n *\n * @param props\n * @returns\n */\n createNode(props) {\n if (this.inspector) {\n return this.inspector.createNode(this.driver, this.resolveNodeDefaults(props));\n }\n return this.driver.createNode(this.resolveNodeDefaults(props));\n }\n /**\n * Create a new scene graph text node\n *\n * @remarks\n * A text node is the second graphical building block of the Renderer scene\n * graph. It renders text using a specific text renderer that is automatically\n * chosen based on the font requested and what type of fonts are installed\n * into an app via a CoreExtension.\n *\n * See {@link ITextNode} for more details.\n *\n * @param props\n * @returns\n */\n createTextNode(props) {\n const fontSize = props.fontSize ?? 16;\n const data = {\n ...this.resolveNodeDefaults(props),\n text: props.text ?? '',\n textRendererOverride: props.textRendererOverride ?? null,\n fontSize,\n fontFamily: props.fontFamily ?? 'sans-serif',\n fontStyle: props.fontStyle ?? 'normal',\n fontWeight: props.fontWeight ?? 'normal',\n fontStretch: props.fontStretch ?? 'normal',\n textAlign: props.textAlign ?? 'left',\n contain: props.contain ?? 'none',\n scrollable: props.scrollable ?? false,\n scrollY: props.scrollY ?? 0,\n offsetY: props.offsetY ?? 0,\n letterSpacing: props.letterSpacing ?? 0,\n lineHeight: props.lineHeight ?? fontSize,\n maxLines: props.maxLines ?? 0,\n textBaseline: props.textBaseline ?? 'alphabetic',\n verticalAlign: props.verticalAlign ?? 'top',\n overflowSuffix: props.overflowSuffix ?? '...',\n debug: props.debug ?? {},\n };\n if (this.inspector) {\n return this.inspector.createTextNode(this.driver, data);\n }\n return this.driver.createTextNode(data);\n }\n /**\n * Resolves the default property values for a Node\n *\n * @remarks\n * This method is used internally by the RendererMain to resolve the default\n * property values for a Node. It is exposed publicly so that it can be used\n * by Core Driver implementations.\n *\n * @param props\n * @returns\n */\n resolveNodeDefaults(props) {\n const color = props.color ?? 0xffffffff;\n const colorTl = props.colorTl ?? props.colorTop ?? props.colorLeft ?? color;\n const colorTr = props.colorTr ?? props.colorTop ?? props.colorRight ?? color;\n const colorBl = props.colorBl ?? props.colorBottom ?? props.colorLeft ?? color;\n const colorBr = props.colorBr ?? props.colorBottom ?? props.colorRight ?? color;\n const data = santizeCustomDataMap(props.data ?? {});\n const parentHasRenderTexture = props.parent?.rtt ?? props.parent?.parentHasRenderTexture ?? false;\n return {\n x: props.x ?? 0,\n y: props.y ?? 0,\n width: props.width ?? 0,\n height: props.height ?? 0,\n alpha: props.alpha ?? 1,\n autosize: props.autosize ?? false,\n clipping: props.clipping ?? false,\n color,\n colorTop: props.colorTop ?? color,\n colorBottom: props.colorBottom ?? color,\n colorLeft: props.colorLeft ?? color,\n colorRight: props.colorRight ?? color,\n colorBl,\n colorBr,\n colorTl,\n colorTr,\n zIndex: props.zIndex ?? 0,\n zIndexLocked: props.zIndexLocked ?? 0,\n parent: props.parent ?? null,\n texture: props.texture ?? null,\n shader: props.shader ?? null,\n // Since setting the `src` will trigger a texture load, we need to set it after\n // we set the texture. Otherwise, problems happen.\n src: props.src ?? '',\n scale: props.scale ?? null,\n scaleX: props.scaleX ?? props.scale ?? 1,\n scaleY: props.scaleY ?? props.scale ?? 1,\n mount: props.mount ?? 0,\n mountX: props.mountX ?? props.mount ?? 0,\n mountY: props.mountY ?? props.mount ?? 0,\n pivot: props.pivot ?? 0.5,\n pivotX: props.pivotX ?? props.pivot ?? 0.5,\n pivotY: props.pivotY ?? props.pivot ?? 0.5,\n rotation: props.rotation ?? 0,\n rtt: props.rtt ?? false,\n parentHasRenderTexture,\n data: data,\n };\n }\n /**\n * Destroy a node\n *\n * @remarks\n * This method destroys a node but does not destroy its children.\n *\n * @param node\n * @returns\n */\n destroyNode(node) {\n if (this.inspector) {\n this.inspector.destroyNode(node);\n }\n return this.driver.destroyNode(node);\n }\n /**\n * Create a new texture reference\n *\n * @remarks\n * This method creates a new reference to a texture. The texture is not\n * loaded until it is used on a node.\n *\n * It can be assigned to a node's `texture` property, or it can be used\n * when creating a SubTexture.\n *\n * @param textureType\n * @param props\n * @param options\n * @returns\n */\n createTexture(textureType, props, options) {\n const id = this.nextTextureId++;\n const desc = {\n descType: 'texture',\n txType: textureType,\n props,\n options: {\n ...options,\n // This ID is used to identify the texture in the CoreTextureManager's\n // ID Texture Map cache.\n id,\n },\n };\n this.textureTracker.registerTexture(desc);\n return desc;\n }\n /**\n * Create a new shader reference\n *\n * @remarks\n * This method creates a new reference to a shader. The shader is not\n * loaded until it is used on a Node.\n *\n * It can be assigned to a Node's `shader` property.\n *\n * @param shaderType\n * @param props\n * @returns\n */\n createShader(shaderType, props) {\n return {\n descType: 'shader',\n shType: shaderType,\n props: props,\n };\n }\n /**\n * Get a Node by its ID\n *\n * @param id\n * @returns\n */\n getNodeById(id) {\n return this.nodes.get(id) || null;\n }\n toggleFreeze() {\n throw new Error('Not implemented');\n }\n advanceFrame() {\n throw new Error('Not implemented');\n }\n /**\n * Re-render the current frame without advancing any running animations.\n *\n * @remarks\n * Any state changes will be reflected in the re-rendered frame. Useful for\n * debugging.\n *\n * May not do anything if the render loop is running on a separate worker.\n */\n rerender() {\n throw new Error('Not implemented');\n }\n}\n//# sourceMappingURL=RendererMain.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getTimingFunction } from '../utils.js';\nimport { mergeColorProgress } from '../../utils.js';\nimport { EventEmitter } from '../../common/EventEmitter.js';\nexport class CoreAnimation extends EventEmitter {\n node;\n props;\n settings;\n propStartValues = {};\n restoreValues = {};\n progress = 0;\n delayFor = 0;\n timingFunction;\n propsList; //fixme - aint got not time for this\n constructor(node, props, settings) {\n super();\n this.node = node;\n this.props = props;\n this.settings = settings;\n this.propStartValues = {};\n this.propsList = Object.keys(props);\n this.propsList.forEach((propName) => {\n this.propStartValues[propName] = node[propName];\n });\n this.timingFunction = (t) => t;\n if (settings.easing && typeof settings.easing === 'string') {\n this.timingFunction = getTimingFunction(settings.easing);\n }\n this.delayFor = settings.delay || 0;\n }\n reset() {\n this.progress = 0;\n this.delayFor = this.settings.delay || 0;\n this.update(0);\n }\n restore() {\n this.reset();\n Object.keys(this.props).forEach((propName) => {\n this.node[propName] = this.propStartValues[propName];\n });\n }\n reverse() {\n this.progress = 0;\n Object.keys(this.props).forEach((propName) => {\n // set the start value to the current value\n const startValue = this.props[propName];\n const endValue = this.propStartValues[propName];\n // swap the start and end values\n this.props[propName] = endValue;\n this.propStartValues[propName] = startValue;\n });\n // restore stop method if we are not looping\n if (!this.settings.loop) {\n this.settings.stopMethod = false;\n }\n }\n applyEasing(p, s, e) {\n return (this.timingFunction(p) || p) * (e - s) + s;\n }\n update(dt) {\n const { duration, loop, easing, stopMethod } = this.settings;\n if (!duration) {\n this.emit('finished', {});\n return;\n }\n if (this.delayFor > 0) {\n this.delayFor -= dt;\n return;\n }\n if (this.delayFor <= 0 && this.progress === 0) {\n this.emit('start', {});\n }\n this.progress += dt / duration;\n if (this.progress > 1) {\n this.progress = loop ? 0 : 1;\n if (stopMethod) {\n // If there's a stop method emit finished so the stop method can be applied.\n // TODO: We should probably reevaluate how stopMethod is implemented as currently\n // stop method 'reset' does not work when looping.\n this.emit('finished', {});\n return;\n }\n }\n for (let i = 0; i < this.propsList.length; i++) {\n const propName = this.propsList[i];\n const propValue = this.props[propName];\n const startValue = this.propStartValues[propName];\n const endValue = propValue;\n if (propName.indexOf('color') !== -1) {\n // check if we have to change the color to begin with\n if (startValue === endValue) {\n this.node[propName] = startValue;\n continue;\n }\n if (easing) {\n const easingProgressValue = this.timingFunction(this.progress) || this.progress;\n const easingColorValue = mergeColorProgress(startValue, endValue, easingProgressValue);\n this.node[propName] = easingColorValue;\n continue;\n }\n this.node[propName] = mergeColorProgress(startValue, endValue, this.progress);\n continue;\n }\n if (easing) {\n this.node[propName] = this.applyEasing(this.progress, startValue, endValue);\n continue;\n }\n this.node[propName] =\n startValue + (endValue - startValue) * this.progress;\n }\n if (this.progress === 1) {\n this.emit('finished', {});\n }\n }\n}\n//# sourceMappingURL=CoreAnimation.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nexport class CoreAnimationController {\n manager;\n animation;\n startedPromise = null;\n /**\n * If this is null, then the animation hasn't started yet.\n */\n startedResolve = null;\n stoppedPromise = null;\n /**\n * If this is null, then the animation is in a finished / stopped state.\n */\n stoppedResolve = null;\n constructor(manager, animation) {\n this.manager = manager;\n this.animation = animation;\n this.state = 'stopped';\n }\n state;\n start() {\n this.makeStartedPromise();\n this.animation.once('start', this.started.bind(this));\n this.makeStoppedPromise();\n this.animation.once('finished', this.finished.bind(this));\n // prevent registering the same animation twice\n if (!this.manager.activeAnimations.has(this.animation)) {\n this.manager.registerAnimation(this.animation);\n }\n this.state = 'running';\n return this;\n }\n stop() {\n this.manager.unregisterAnimation(this.animation);\n if (this.stoppedResolve !== null) {\n this.stoppedResolve();\n this.stoppedResolve = null;\n }\n this.animation.reset();\n this.state = 'stopped';\n return this;\n }\n pause() {\n this.manager.unregisterAnimation(this.animation);\n this.state = 'paused';\n return this;\n }\n restore() {\n this.stoppedResolve = null;\n this.animation.restore();\n return this;\n }\n waitUntilStarted() {\n this.makeStartedPromise();\n const promise = this.startedPromise;\n assertTruthy(promise);\n return promise;\n }\n waitUntilStopped() {\n this.makeStoppedPromise();\n const promise = this.stoppedPromise;\n assertTruthy(promise);\n return promise;\n }\n makeStartedPromise() {\n if (this.startedResolve === null) {\n this.startedPromise = new Promise((resolve) => {\n this.startedResolve = resolve;\n });\n }\n }\n makeStoppedPromise() {\n if (this.stoppedResolve === null) {\n this.stoppedPromise = new Promise((resolve) => {\n this.stoppedResolve = resolve;\n });\n }\n }\n started() {\n assertTruthy(this.startedResolve);\n // resolve promise (and pass current this to continue to the chain)\n this.startedResolve(this);\n this.startedResolve = null;\n }\n finished() {\n assertTruthy(this.stoppedResolve);\n // If the animation is looping, then we need to restart it.\n const { loop, stopMethod } = this.animation.settings;\n if (stopMethod === 'reverse') {\n this.animation.reverse();\n this.start();\n return;\n }\n // resolve promise\n this.stoppedResolve();\n this.stoppedResolve = null;\n if (loop) {\n return;\n }\n // unregister animation\n this.manager.unregisterAnimation(this.animation);\n }\n}\n//# sourceMappingURL=CoreAnimationController.js.map","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n// Matrix3d is a 3x3 matrix in column-major order because that's how WebGL likes it.\n// The matrix is stored in a Float32Array in the following order:\n// | 0 3 6 |\n// | 1 4 7 |\n// | 2 5 8 |\n// The following constants are used to index into the array in a row-major way.\nconst m0 = 0;\nconst m1 = 3;\nconst m2 = 6;\nconst m3 = 1;\nconst m4 = 4;\nconst m5 = 7;\nconst m6 = 2;\nconst m7 = 5;\nconst m8 = 8;\n/**\n * A 3x3 matrix representing a 2D transformation.\n *\n * @remarks\n * The matrix is stored in column-major order in the `data` property which can\n * be passed directly to a WebGL shader uniform.\n *\n * The matrix is stored in a Float32Array in the following index order:\n * | 0 3 6 |\n * | 1 4 7 |\n * | 2 5 8 |\n *\n * Only the first two rows are really used for the transformation. The last row is\n * generally always `[0, 0, 1]` if you only use the 2D transformation methods\n * provided by this class.\n *\n * For convenience, entries in the first two rows can be accessed by the following\n * getter properties:\n * | ta tb tx |\n * | tc td ty |\n * | 0 0 1 |\n */\nexport class Matrix3d {\n data;\n /**\n * Creates a new 3x3 matrix.\n *\n * @param entries Row-major 3x3 matrix\n */\n constructor(entries) {\n if (entries) {\n // Transpose the input matrix so that it's in column-major order.\n this.data = new Float32Array(9);\n this.data[m0] = entries[0];\n this.data[m1] = entries[3];\n this.data[m2] = entries[6];\n this.data[m3] = entries[1];\n this.data[m4] = entries[4];\n this.data[m5] = entries[7];\n this.data[m6] = entries[2];\n this.data[m7] = entries[5];\n this.data[m8] = entries[8];\n }\n else {\n this.data = new Float32Array(9);\n }\n }\n /**\n * Returns a temporary matrix that can be used for calculations.\n *\n * @remarks\n * This is useful for avoiding allocations in tight loops.\n *\n * The matrix is not guaranteed to be the same between calls.\n *\n * @returns\n */\n static get temp() {\n return tempMatrix;\n }\n static multiply(a, b, out) {\n const e0 = a.data[m0] * b.data[m0] +\n a.data[m1] * b.data[m3] +\n a.data[m2] * b.data[m6];\n const e1 = a.data[m0] * b.data[m1] +\n a.data[m1] * b.data[m4] +\n a.data[m2] * b.data[m7];\n const e2 = a.data[m0] * b.data[m2] +\n a.data[m1] * b.data[m5] +\n a.data[m2] * b.data[m8];\n const e3 = a.data[m3] * b.data[m0] +\n a.data[m4] * b.data[m3] +\n a.data[m5] * b.data[m6];\n const e4 = a.data[m3] * b.data[m1] +\n a.data[m4] * b.data[m4] +\n a.data[m5] * b.data[m7];\n const e5 = a.data[m3] * b.data[m2] +\n a.data[m4] * b.data[m5] +\n a.data[m5] * b.data[m8];\n const e6 = a.data[m6] * b.data[m0] +\n a.data[m7] * b.data[m3] +\n a.data[m8] * b.data[m6];\n const e7 = a.data[m6] * b.data[m1] +\n a.data[m7] * b.data[m4] +\n a.data[m8] * b.data[m7];\n const e8 = a.data[m6] * b.data[m2] +\n a.data[m7] * b.data[m5] +\n a.data[m8] * b.data[m8];\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = e0;\n out.data[m1] = e1;\n out.data[m2] = e2;\n out.data[m3] = e3;\n out.data[m4] = e4;\n out.data[m5] = e5;\n out.data[m6] = e6;\n out.data[m7] = e7;\n out.data[m8] = e8;\n return out;\n }\n static identity(out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = 1;\n out.data[m1] = 0;\n out.data[m2] = 0;\n out.data[m3] = 0;\n out.data[m4] = 1;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static translate(x, y, out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = 1;\n out.data[m1] = 0;\n out.data[m2] = x;\n out.data[m3] = 0;\n out.data[m4] = 1;\n out.data[m5] = y;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static scale(sx, sy, out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = sx;\n out.data[m1] = 0;\n out.data[m2] = 0;\n out.data[m3] = 0;\n out.data[m4] = sy;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static rotate(angle, out) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = cos;\n out.data[m1] = -sin;\n out.data[m2] = 0;\n out.data[m3] = sin;\n out.data[m4] = cos;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static copy(src, dst, transpose) {\n if (!dst) {\n dst = new Matrix3d();\n }\n dst.data[0] = src.data[0];\n dst.data[1] = src.data[1];\n dst.data[2] = src.data[2];\n dst.data[3] = src.data[3];\n dst.data[4] = src.data[4];\n dst.data[5] = src.data[5];\n dst.data[6] = src.data[6];\n dst.data[7] = src.data[7];\n dst.data[8] = src.data[8];\n return dst;\n }\n translate(x, y) {\n this.data[m2] = this.data[m0] * x + this.data[m1] * y + this.data[m2];\n this.data[m5] = this.data[m3] * x + this.data[m4] * y + this.data[m5];\n return this;\n }\n scale(sx, sy) {\n this.data[m0] = this.data[m0] * sx;\n this.data[m1] = this.data[m1] * sy;\n this.data[m3] = this.data[m3] * sx;\n this.data[m4] = this.data[m4] * sy;\n return this;\n }\n rotate(angle) {\n if (angle === 0 || !((angle % Math.PI) * 2)) {\n return this;\n }\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const e0 = this.data[m0] * cos + this.data[m1] * sin;\n const e1 = this.data[m1] * cos - this.data[m0] * sin;\n const e3 = this.data[m3] * cos + this.data[m4] * sin;\n const e4 = this.data[m4] * cos - this.data[m3] * sin;\n this.data[m0] = e0;\n this.data[m1] = e1;\n this.data[m3] = e3;\n this.data[m4] = e4;\n return this;\n }\n multiply(other) {\n return Matrix3d.multiply(this, other, this);\n }\n get tx() {\n return this.data[m2];\n }\n get ty() {\n return this.data[m5];\n }\n get ta() {\n return this.data[m0];\n }\n get tb() {\n return this.data[m1];\n }\n get tc() {\n return this.data[m3];\n }\n get td() {\n return this.data[m4];\n }\n transformPoint(x, y) {\n return [\n this.data[m0] * x + this.data[m1] * y + this.data[m2],\n this.data[m3] * x + this.data[m4] * y + this.data[m3],\n ];\n }\n}\nconst tempMatrix = new Matrix3d();\n//# sourceMappingURL=Matrix3d.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, mergeColorAlphaPremultiplied, getImageAspectRatio, } from '../utils.js';\nimport { RenderTexture } from './textures/RenderTexture.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { copyRect, intersectRect, createBound, boundInsideBound, } from './lib/utils.js';\nimport { Matrix3d } from './lib/Matrix3d.js';\nimport { RenderCoords } from './lib/RenderCoords.js';\nexport var CoreNodeRenderState;\n(function (CoreNodeRenderState) {\n CoreNodeRenderState[CoreNodeRenderState[\"Init\"] = 0] = \"Init\";\n CoreNodeRenderState[CoreNodeRenderState[\"OutOfBounds\"] = 2] = \"OutOfBounds\";\n CoreNodeRenderState[CoreNodeRenderState[\"InBounds\"] = 4] = \"InBounds\";\n CoreNodeRenderState[CoreNodeRenderState[\"InViewport\"] = 8] = \"InViewport\";\n})(CoreNodeRenderState || (CoreNodeRenderState = {}));\nconst CoreNodeRenderStateMap = new Map();\nCoreNodeRenderStateMap.set(CoreNodeRenderState.Init, 'init');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.OutOfBounds, 'outOfBounds');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.InBounds, 'inBounds');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.InViewport, 'inViewport');\nexport var UpdateType;\n(function (UpdateType) {\n /**\n * Child updates\n */\n UpdateType[UpdateType[\"Children\"] = 1] = \"Children\";\n /**\n * Scale/Rotate transform update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `scaleRotateTransform`\n */\n UpdateType[UpdateType[\"ScaleRotate\"] = 2] = \"ScaleRotate\";\n /**\n * Translate transform update (x/y/width/height/pivot/mount)\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `localTransform`\n */\n UpdateType[UpdateType[\"Local\"] = 4] = \"Local\";\n /**\n * Global Transform update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `globalTransform`\n * - `renderCoords`\n * - `renderBound`\n */\n UpdateType[UpdateType[\"Global\"] = 8] = \"Global\";\n /**\n * Clipping rect update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `clippingRect`\n */\n UpdateType[UpdateType[\"Clipping\"] = 16] = \"Clipping\";\n /**\n * Calculated ZIndex update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `calcZIndex`\n */\n UpdateType[UpdateType[\"CalculatedZIndex\"] = 32] = \"CalculatedZIndex\";\n /**\n * Z-Index Sorted Children update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `children` (sorts children by their `calcZIndex`)\n */\n UpdateType[UpdateType[\"ZIndexSortedChildren\"] = 64] = \"ZIndexSortedChildren\";\n /**\n * Premultiplied Colors update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `premultipliedColorTl`\n * - `premultipliedColorTr`\n * - `premultipliedColorBl`\n * - `premultipliedColorBr`\n */\n UpdateType[UpdateType[\"PremultipliedColors\"] = 128] = \"PremultipliedColors\";\n /**\n * World Alpha update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `worldAlpha` = `parent.worldAlpha` * `alpha`\n */\n UpdateType[UpdateType[\"WorldAlpha\"] = 256] = \"WorldAlpha\";\n /**\n * Render State update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `renderState`\n */\n UpdateType[UpdateType[\"RenderState\"] = 512] = \"RenderState\";\n /**\n * Is Renderable update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `isRenderable`\n */\n UpdateType[UpdateType[\"IsRenderable\"] = 1024] = \"IsRenderable\";\n /**\n * None\n */\n UpdateType[UpdateType[\"None\"] = 0] = \"None\";\n /**\n * All\n */\n UpdateType[UpdateType[\"All\"] = 2047] = \"All\";\n})(UpdateType || (UpdateType = {}));\nexport class CoreNode extends EventEmitter {\n stage;\n children = [];\n props;\n updateType = UpdateType.All;\n globalTransform;\n scaleRotateTransform;\n localTransform;\n renderCoords;\n renderBound;\n strictBound;\n preloadBound;\n clippingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n };\n isRenderable = false;\n renderState = CoreNodeRenderState.Init;\n worldAlpha = 1;\n premultipliedColorTl = 0;\n premultipliedColorTr = 0;\n premultipliedColorBl = 0;\n premultipliedColorBr = 0;\n calcZIndex = 0;\n hasRTTupdates = false;\n constructor(stage, props) {\n super();\n this.stage = stage;\n this.props = {\n ...props,\n parent: null,\n // Assign a default value to parentHasRenderTexture\n parentHasRenderTexture: false,\n };\n // Allow for parent to be processed appropriately\n this.parent = props.parent;\n // Allow for Render Texture to be processed appropriately\n this.rtt = props.rtt;\n this.updateScaleRotateTransform();\n }\n //#region Textures\n loadTexture(textureType, props, options = null) {\n // First unload any existing texture\n if (this.props.texture) {\n this.unloadTexture();\n }\n const { txManager } = this.stage;\n const texture = txManager.loadTexture(textureType, props, options);\n this.props.texture = texture;\n this.props.textureOptions = options;\n this.setUpdateType(UpdateType.IsRenderable);\n // If texture is already loaded / failed, trigger loaded event manually\n // so that users get a consistent event experience.\n // We do this in a microtask to allow listeners to be attached in the same\n // synchronous task after calling loadTexture()\n queueMicrotask(() => {\n if (texture.state === 'loaded') {\n this.onTextureLoaded(texture, texture.dimensions);\n }\n else if (texture.state === 'failed') {\n this.onTextureFailed(texture, texture.error);\n }\n else if (texture.state === 'freed') {\n this.onTextureFreed(texture);\n }\n texture.on('loaded', this.onTextureLoaded);\n texture.on('failed', this.onTextureFailed);\n texture.on('freed', this.onTextureFreed);\n });\n }\n unloadTexture() {\n if (this.props.texture) {\n const { texture } = this.props;\n texture.off('loaded', this.onTextureLoaded);\n texture.off('failed', this.onTextureFailed);\n texture.off('freed', this.onTextureFreed);\n texture.setRenderableOwner(this, false);\n }\n this.props.texture = null;\n this.props.textureOptions = null;\n this.setUpdateType(UpdateType.IsRenderable);\n }\n autosizeNode(dimensions) {\n if (this.autosize) {\n this.width = dimensions.width;\n this.height = dimensions.height;\n }\n }\n onTextureLoaded = (target, dimensions) => {\n this.autosizeNode(dimensions);\n // If parent has a render texture, flag that we need to update\n // @todo: Reserve type for RTT updates\n if (this.parentHasRenderTexture) {\n this.setRTTUpdates(1);\n }\n this.emit('loaded', {\n type: 'texture',\n dimensions,\n });\n queueMicrotask(() => {\n // Texture was loaded. In case the RAF loop has already stopped, we request\n // a render to ensure the texture is rendered.\n this.stage.requestRender();\n });\n };\n onTextureFailed = (target, error) => {\n this.emit('failed', {\n type: 'texture',\n error,\n });\n };\n onTextureFreed = (target) => {\n this.emit('freed', {\n type: 'texture',\n });\n };\n //#endregion Textures\n loadShader(shaderType, props) {\n const shManager = this.stage.renderer.getShaderManager();\n assertTruthy(shManager);\n const { shader, props: p } = shManager.loadShader(shaderType, props);\n this.props.shader = shader;\n this.props.shaderProps = p;\n this.setUpdateType(UpdateType.IsRenderable);\n }\n /**\n * Change types types is used to determine the scope of the changes being applied\n *\n * @remarks\n * See {@link UpdateType} for more information on each type\n *\n * @param type\n */\n setUpdateType(type) {\n this.updateType |= type;\n // If we're updating this node at all, we need to inform the parent\n // (and all ancestors) that their children need updating as well\n const parent = this.props.parent;\n if (parent && !(parent.updateType & UpdateType.Children)) {\n parent.setUpdateType(UpdateType.Children);\n }\n // If node is part of RTT texture\n // Flag that we need to update\n if (this.parentHasRenderTexture) {\n this.setRTTUpdates(type);\n }\n }\n sortChildren() {\n this.children.sort((a, b) => a.calcZIndex - b.calcZIndex);\n }\n updateScaleRotateTransform() {\n this.scaleRotateTransform = Matrix3d.rotate(this.props.rotation, this.scaleRotateTransform).scale(this.props.scaleX, this.props.scaleY);\n }\n updateLocalTransform() {\n assertTruthy(this.scaleRotateTransform);\n const pivotTranslateX = this.props.pivotX * this.props.width;\n const pivotTranslateY = this.props.pivotY * this.props.height;\n const mountTranslateX = this.props.mountX * this.props.width;\n const mountTranslateY = this.props.mountY * this.props.height;\n this.localTransform = Matrix3d.translate(pivotTranslateX - mountTranslateX + this.props.x, pivotTranslateY - mountTranslateY + this.props.y, this.localTransform)\n .multiply(this.scaleRotateTransform)\n .translate(-pivotTranslateX, -pivotTranslateY);\n this.setUpdateType(UpdateType.Global);\n }\n /**\n * @todo: test for correct calculation flag\n * @param delta\n */\n update(delta, parentClippingRect) {\n if (this.updateType & UpdateType.ScaleRotate) {\n this.updateScaleRotateTransform();\n this.setUpdateType(UpdateType.Local);\n }\n if (this.updateType & UpdateType.Local) {\n this.updateLocalTransform();\n this.setUpdateType(UpdateType.Global);\n }\n const parent = this.props.parent;\n let childUpdateType = UpdateType.None;\n if (this.updateType & UpdateType.Global) {\n assertTruthy(this.localTransform);\n this.globalTransform = Matrix3d.copy(parent?.globalTransform || this.localTransform, this.globalTransform);\n if (this.parentHasRenderTexture && this.props.parent?.rtt) {\n this.globalTransform = Matrix3d.identity();\n }\n if (parent) {\n this.globalTransform.multiply(this.localTransform);\n }\n this.calculateRenderCoords();\n this.updateBoundingRect();\n this.setUpdateType(UpdateType.Clipping | UpdateType.RenderState | UpdateType.Children);\n childUpdateType |= UpdateType.Global;\n }\n if (this.updateType & UpdateType.Clipping) {\n this.calculateClippingRect(parentClippingRect);\n this.setUpdateType(UpdateType.Children);\n childUpdateType |= UpdateType.Clipping;\n }\n if (this.updateType & UpdateType.WorldAlpha) {\n if (parent) {\n this.worldAlpha = parent.worldAlpha * this.props.alpha;\n }\n else {\n this.worldAlpha = this.props.alpha;\n }\n this.setUpdateType(UpdateType.Children |\n UpdateType.PremultipliedColors |\n UpdateType.IsRenderable);\n childUpdateType |= UpdateType.WorldAlpha;\n }\n if (this.updateType & UpdateType.PremultipliedColors) {\n this.premultipliedColorTl = mergeColorAlphaPremultiplied(this.props.colorTl, this.worldAlpha, true);\n // If all the colors are the same just sent them all to the same value\n if (this.props.colorTl === this.props.colorTr &&\n this.props.colorBl === this.props.colorBr &&\n this.props.colorTl === this.props.colorBl) {\n this.premultipliedColorTr =\n this.premultipliedColorBl =\n this.premultipliedColorBr =\n this.premultipliedColorTl;\n }\n else {\n this.premultipliedColorTr = mergeColorAlphaPremultiplied(this.props.colorTr, this.worldAlpha, true);\n this.premultipliedColorBl = mergeColorAlphaPremultiplied(this.props.colorBl, this.worldAlpha, true);\n this.premultipliedColorBr = mergeColorAlphaPremultiplied(this.props.colorBr, this.worldAlpha, true);\n }\n }\n if (this.updateType & UpdateType.RenderState) {\n this.updateRenderState(parentClippingRect);\n this.setUpdateType(UpdateType.IsRenderable);\n }\n if (this.updateType & UpdateType.IsRenderable) {\n this.updateIsRenderable();\n }\n // No need to update zIndex if there is no parent\n if (parent && this.updateType & UpdateType.CalculatedZIndex) {\n this.calculateZIndex();\n // Tell parent to re-sort children\n parent.setUpdateType(UpdateType.ZIndexSortedChildren);\n }\n if (this.updateType & UpdateType.Children &&\n this.children.length &&\n !this.rtt) {\n this.children.forEach((child) => {\n // Trigger the depenedent update types on the child\n child.setUpdateType(childUpdateType);\n // If child has no updates, skip\n if (child.updateType === 0) {\n return;\n }\n child.update(delta, this.clippingRect);\n });\n }\n // Sorting children MUST happen after children have been updated so\n // that they have the oppotunity to update their calculated zIndex.\n if (this.updateType & UpdateType.ZIndexSortedChildren) {\n // reorder z-index\n this.sortChildren();\n }\n // reset update type\n this.updateType = 0;\n }\n //check if CoreNode is renderable based on props\n checkRenderProps() {\n if (this.props.texture) {\n return true;\n }\n if (!this.props.width || !this.props.height) {\n return false;\n }\n if (this.props.shader) {\n return true;\n }\n if (this.props.clipping) {\n return true;\n }\n if (this.props.color !== 0) {\n return true;\n }\n // Consider removing these checks and just using the color property check above.\n // Maybe add a forceRender prop for nodes that should always render.\n if (this.props.colorTop !== 0) {\n return true;\n }\n if (this.props.colorBottom !== 0) {\n return true;\n }\n if (this.props.colorLeft !== 0) {\n return true;\n }\n if (this.props.colorRight !== 0) {\n return true;\n }\n if (this.props.colorTl !== 0) {\n return true;\n }\n if (this.props.colorTr !== 0) {\n return true;\n }\n if (this.props.colorBl !== 0) {\n return true;\n }\n if (this.props.colorBr !== 0) {\n return true;\n }\n return false;\n }\n checkRenderBounds(parentClippingRect) {\n assertTruthy(this.renderBound);\n const rectW = parentClippingRect.width || this.stage.root.width;\n const rectH = parentClippingRect.height || this.stage.root.height;\n this.strictBound = createBound(parentClippingRect.x, parentClippingRect.y, parentClippingRect.x + rectW, parentClippingRect.y + rectH, this.strictBound);\n const renderM = this.stage.boundsMargin;\n this.preloadBound = createBound(parentClippingRect.x - renderM[3], parentClippingRect.y - renderM[0], parentClippingRect.x + rectW + renderM[1], parentClippingRect.y + rectH + renderM[2], this.preloadBound);\n if (boundInsideBound(this.renderBound, this.strictBound)) {\n return CoreNodeRenderState.InViewport;\n }\n if (boundInsideBound(this.renderBound, this.preloadBound)) {\n return CoreNodeRenderState.InBounds;\n }\n return CoreNodeRenderState.OutOfBounds;\n }\n updateRenderState(parentClippingRect) {\n const renderState = this.checkRenderBounds(parentClippingRect);\n if (renderState !== this.renderState) {\n let previous = this.renderState;\n this.renderState = renderState;\n if (previous === CoreNodeRenderState.InViewport) {\n this.emit('outOfViewport', {\n previous,\n current: renderState,\n });\n }\n if (previous < CoreNodeRenderState.InBounds &&\n renderState === CoreNodeRenderState.InViewport) {\n this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), {\n previous,\n current: renderState,\n });\n previous = CoreNodeRenderState.InBounds;\n }\n else if (previous > CoreNodeRenderState.InBounds &&\n renderState === CoreNodeRenderState.OutOfBounds) {\n this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), {\n previous,\n current: renderState,\n });\n previous = CoreNodeRenderState.InBounds;\n }\n const event = CoreNodeRenderStateMap.get(renderState);\n assertTruthy(event);\n this.emit(event, {\n previous,\n current: renderState,\n });\n }\n }\n setRenderState(state) {\n if (state !== this.renderState) {\n this.renderState = state;\n this.emit(CoreNodeRenderState[state]);\n }\n }\n /**\n * This function updates the `isRenderable` property based on certain conditions.\n *\n * @returns\n */\n updateIsRenderable() {\n let newIsRenderable;\n if (this.worldAlpha === 0 || !this.checkRenderProps()) {\n newIsRenderable = false;\n }\n else {\n newIsRenderable = this.renderState > CoreNodeRenderState.OutOfBounds;\n }\n if (this.isRenderable !== newIsRenderable) {\n this.isRenderable = newIsRenderable;\n this.onChangeIsRenderable(newIsRenderable);\n }\n }\n onChangeIsRenderable(isRenderable) {\n this.props.texture?.setRenderableOwner(this, isRenderable);\n }\n calculateRenderCoords() {\n const { width, height, globalTransform: transform } = this;\n assertTruthy(transform);\n const { tx, ty, ta, tb, tc, td } = transform;\n if (tb === 0 && tc === 0) {\n const minX = tx;\n const maxX = tx + width * ta;\n const minY = ty;\n const maxY = ty + height * td;\n this.renderCoords = RenderCoords.translate(\n //top-left\n minX, minY, \n //top-right\n maxX, minY, \n //bottom-right\n maxX, maxY, \n //bottom-left\n minX, maxY, this.renderCoords);\n }\n else {\n this.renderCoords = RenderCoords.translate(\n //top-left\n tx, ty, \n //top-right\n tx + width * ta, ty + width * tc, \n //bottom-right\n tx + width * ta + height * tb, ty + width * tc + height * td, \n //bottom-left\n tx + height * tb, ty + height * td, this.renderCoords);\n }\n }\n updateBoundingRect() {\n const { renderCoords, globalTransform: transform } = this;\n assertTruthy(transform);\n assertTruthy(renderCoords);\n const { tb, tc } = transform;\n const { x1, y1, x3, y3 } = renderCoords;\n if (tb === 0 || tc === 0) {\n this.renderBound = createBound(x1, y1, x3, y3, this.renderBound);\n }\n else {\n const { x2, x4, y2, y4 } = renderCoords;\n this.renderBound = createBound(Math.min(x1, x2, x3, x4), Math.min(y1, y2, y3, y4), Math.max(x1, x2, x3, x4), Math.max(y1, y2, y3, y4), this.renderBound);\n }\n }\n /**\n * This function calculates the clipping rectangle for a node.\n *\n * The function then checks if the node is rotated. If the node requires clipping and is not rotated, a new clipping rectangle is created based on the node's global transform and dimensions.\n * If a parent clipping rectangle exists, it is intersected with the node's clipping rectangle (if it exists), or replaces the node's clipping rectangle.\n *\n * Finally, the node's parentClippingRect and clippingRect properties are updated.\n */\n calculateClippingRect(parentClippingRect) {\n assertTruthy(this.globalTransform);\n const { clippingRect, props, globalTransform: gt } = this;\n const { clipping } = props;\n const isRotated = gt.tb !== 0 || gt.tc !== 0;\n if (clipping && !isRotated) {\n clippingRect.x = gt.tx;\n clippingRect.y = gt.ty;\n clippingRect.width = this.width * gt.ta;\n clippingRect.height = this.height * gt.td;\n clippingRect.valid = true;\n }\n else {\n clippingRect.valid = false;\n }\n if (parentClippingRect.valid && clippingRect.valid) {\n // Intersect parent clipping rect with node clipping rect\n intersectRect(parentClippingRect, clippingRect, clippingRect);\n }\n else if (parentClippingRect.valid) {\n // Copy parent clipping rect\n copyRect(parentClippingRect, clippingRect);\n clippingRect.valid = true;\n }\n }\n calculateZIndex() {\n const props = this.props;\n const z = props.zIndex || 0;\n const p = props.parent?.zIndex || 0;\n let zIndex = z;\n if (props.parent?.zIndexLocked) {\n zIndex = z < p ? z : p;\n }\n this.calcZIndex = zIndex;\n }\n /**\n * Destroy the node and cleanup all resources\n */\n destroy() {\n this.unloadTexture();\n this.clippingRect.valid = false;\n this.isRenderable = false;\n delete this.renderCoords;\n delete this.renderBound;\n delete this.strictBound;\n delete this.preloadBound;\n delete this.globalTransform;\n delete this.scaleRotateTransform;\n delete this.localTransform;\n this.props.texture = null;\n this.props.shader = null;\n this.removeAllListeners();\n this.parent = null;\n }\n renderQuads(renderer) {\n const { width, height, texture, textureOptions, shader, shaderProps, rtt, parentHasRenderTexture, } = this.props;\n // Prevent quad rendering if parent has a render texture\n // and renderer is not currently rendering to a texture\n if (parentHasRenderTexture) {\n if (!renderer.renderToTextureActive) {\n return;\n }\n // Prevent quad rendering if parent render texture is not the active render texture\n if (this.parentRenderTexture !== renderer.activeRttNode) {\n return;\n }\n }\n const { premultipliedColorTl, premultipliedColorTr, premultipliedColorBl, premultipliedColorBr, } = this;\n const { zIndex, worldAlpha, globalTransform: gt, clippingRect } = this;\n assertTruthy(gt);\n // add to list of renderables to be sorted before rendering\n renderer.addQuad({\n width,\n height,\n colorTl: premultipliedColorTl,\n colorTr: premultipliedColorTr,\n colorBl: premultipliedColorBl,\n colorBr: premultipliedColorBr,\n texture,\n textureOptions,\n zIndex,\n shader,\n shaderProps,\n alpha: worldAlpha,\n clippingRect,\n tx: gt.tx,\n ty: gt.ty,\n ta: gt.ta,\n tb: gt.tb,\n tc: gt.tc,\n td: gt.td,\n rtt,\n parentHasRenderTexture,\n framebufferDimensions: this.framebufferDimensions,\n });\n }\n //#region Properties\n get id() {\n return this.props.id;\n }\n get x() {\n return this.props.x;\n }\n set x(value) {\n if (this.props.x !== value) {\n this.props.x = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get absX() {\n return (this.props.x +\n (this.props.parent?.absX || this.props.parent?.globalTransform?.tx || 0));\n }\n get absY() {\n return this.props.y + (this.props.parent?.absY ?? 0);\n }\n get y() {\n return this.props.y;\n }\n set y(value) {\n if (this.props.y !== value) {\n this.props.y = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get width() {\n return this.props.width;\n }\n set width(value) {\n if (this.props.width !== value) {\n this.props.width = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n if (this.props.height !== value) {\n this.props.height = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get scale() {\n // The CoreNode `scale` property is only used by Animations.\n // Unlike INode, `null` should never be possibility for Animations.\n return this.scaleX;\n }\n set scale(value) {\n // The CoreNode `scale` property is only used by Animations.\n // Unlike INode, `null` should never be possibility for Animations.\n this.scaleX = value;\n this.scaleY = value;\n }\n get scaleX() {\n return this.props.scaleX;\n }\n set scaleX(value) {\n if (this.props.scaleX !== value) {\n this.props.scaleX = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get scaleY() {\n return this.props.scaleY;\n }\n set scaleY(value) {\n if (this.props.scaleY !== value) {\n this.props.scaleY = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get mount() {\n return this.props.mount;\n }\n set mount(value) {\n if (this.props.mountX !== value || this.props.mountY !== value) {\n this.props.mountX = value;\n this.props.mountY = value;\n this.props.mount = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get mountX() {\n return this.props.mountX;\n }\n set mountX(value) {\n if (this.props.mountX !== value) {\n this.props.mountX = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get mountY() {\n return this.props.mountY;\n }\n set mountY(value) {\n if (this.props.mountY !== value) {\n this.props.mountY = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivot() {\n return this.props.pivot;\n }\n set pivot(value) {\n if (this.props.pivotX !== value || this.props.pivotY !== value) {\n this.props.pivotX = value;\n this.props.pivotY = value;\n this.props.pivot = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivotX() {\n return this.props.pivotX;\n }\n set pivotX(value) {\n if (this.props.pivotX !== value) {\n this.props.pivotX = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivotY() {\n return this.props.pivotY;\n }\n set pivotY(value) {\n if (this.props.pivotY !== value) {\n this.props.pivotY = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get rotation() {\n return this.props.rotation;\n }\n set rotation(value) {\n if (this.props.rotation !== value) {\n this.props.rotation = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get alpha() {\n return this.props.alpha;\n }\n set alpha(value) {\n this.props.alpha = value;\n this.setUpdateType(UpdateType.PremultipliedColors | UpdateType.WorldAlpha);\n }\n get autosize() {\n return this.props.autosize;\n }\n set autosize(value) {\n this.props.autosize = value;\n }\n get clipping() {\n return this.props.clipping;\n }\n set clipping(value) {\n this.props.clipping = value;\n this.setUpdateType(UpdateType.Clipping);\n }\n get color() {\n return this.props.color;\n }\n set color(value) {\n if (this.props.colorTl !== value ||\n this.props.colorTr !== value ||\n this.props.colorBl !== value ||\n this.props.colorBr !== value) {\n this.colorTl = value;\n this.colorTr = value;\n this.colorBl = value;\n this.colorBr = value;\n }\n this.props.color = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTop() {\n return this.props.colorTop;\n }\n set colorTop(value) {\n if (this.props.colorTl !== value || this.props.colorTr !== value) {\n this.colorTl = value;\n this.colorTr = value;\n }\n this.props.colorTop = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBottom() {\n return this.props.colorBottom;\n }\n set colorBottom(value) {\n if (this.props.colorBl !== value || this.props.colorBr !== value) {\n this.colorBl = value;\n this.colorBr = value;\n }\n this.props.colorBottom = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorLeft() {\n return this.props.colorLeft;\n }\n set colorLeft(value) {\n if (this.props.colorTl !== value || this.props.colorBl !== value) {\n this.colorTl = value;\n this.colorBl = value;\n }\n this.props.colorLeft = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorRight() {\n return this.props.colorRight;\n }\n set colorRight(value) {\n if (this.props.colorTr !== value || this.props.colorBr !== value) {\n this.colorTr = value;\n this.colorBr = value;\n }\n this.props.colorRight = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTl() {\n return this.props.colorTl;\n }\n set colorTl(value) {\n this.props.colorTl = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTr() {\n return this.props.colorTr;\n }\n set colorTr(value) {\n this.props.colorTr = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBl() {\n return this.props.colorBl;\n }\n set colorBl(value) {\n this.props.colorBl = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBr() {\n return this.props.colorBr;\n }\n set colorBr(value) {\n this.props.colorBr = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n // we're only interested in parent zIndex to test\n // if we should use node zIndex is higher then parent zIndex\n get zIndexLocked() {\n return this.props.zIndexLocked || 0;\n }\n set zIndexLocked(value) {\n this.props.zIndexLocked = value;\n this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);\n this.children.forEach((child) => {\n child.setUpdateType(UpdateType.CalculatedZIndex);\n });\n }\n get zIndex() {\n return this.props.zIndex;\n }\n set zIndex(value) {\n this.props.zIndex = value;\n this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);\n this.children.forEach((child) => {\n child.setUpdateType(UpdateType.CalculatedZIndex);\n });\n }\n get parent() {\n return this.props.parent;\n }\n set parent(newParent) {\n const oldParent = this.props.parent;\n if (oldParent === newParent) {\n return;\n }\n this.props.parent = newParent;\n if (oldParent) {\n const index = oldParent.children.indexOf(this);\n assertTruthy(index !== -1, \"CoreNode.parent: Node not found in old parent's children!\");\n oldParent.children.splice(index, 1);\n oldParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);\n }\n if (newParent) {\n newParent.children.push(this);\n // Since this node has a new parent, to be safe, have it do a full update.\n this.setUpdateType(UpdateType.All);\n // Tell parent that it's children need to be updated and sorted.\n newParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);\n if (newParent.rtt || newParent.parentHasRenderTexture) {\n this.setRTTUpdates(UpdateType.All);\n }\n }\n this.parentHasRenderTexture =\n newParent?.rtt || newParent?.parentHasRenderTexture;\n this.updateScaleRotateTransform();\n }\n get rtt() {\n return this.props.rtt;\n }\n set rtt(value) {\n if (!value) {\n return;\n }\n this.props.rtt = true;\n this.hasRTTupdates = true;\n // Store RTT nodes in a separate list\n this.stage.renderer?.renderToTexture(this);\n }\n set parentHasRenderTexture(value) {\n this.props.parentHasRenderTexture = !!value;\n }\n get parentHasRenderTexture() {\n return this.props.parentHasRenderTexture;\n }\n /**\n * Returns the framebuffer dimensions of the node.\n * If the node has a render texture, the dimensions are the same as the node's dimensions.\n * If the node does not have a render texture, the dimensions are inherited from the parent.\n * If the node parent has a render texture and the node is a render texture, the nodes dimensions are used.\n */\n get framebufferDimensions() {\n if (this.parentHasRenderTexture && !this.rtt) {\n return this.parent?.framebufferDimensions;\n }\n return { width: this.width, height: this.height };\n }\n /**\n * Returns the parent render texture node if it exists.\n */\n get parentRenderTexture() {\n let parent = this.parent;\n while (parent) {\n if (parent.rtt) {\n return parent;\n }\n parent = parent.parent;\n }\n return null;\n }\n get texture() {\n return this.props.texture;\n }\n setRTTUpdates(type) {\n this.hasRTTupdates = true;\n this.parent?.setRTTUpdates(type);\n }\n}\n//# sourceMappingURL=CoreNode.js.map","const rx1 = 0;\nconst rx2 = 2;\nconst rx3 = 4;\nconst rx4 = 6;\nconst ry1 = 1;\nconst ry2 = 3;\nconst ry3 = 5;\nconst ry4 = 7;\nexport class RenderCoords {\n data;\n constructor(entries) {\n this.data = new Float32Array(8);\n if (entries) {\n this.data[rx1] = entries[rx1];\n this.data[rx2] = entries[rx2];\n this.data[rx3] = entries[rx3];\n this.data[rx4] = entries[rx4];\n this.data[ry1] = entries[ry1];\n this.data[ry2] = entries[ry2];\n this.data[ry3] = entries[ry3];\n this.data[ry4] = entries[ry4];\n }\n }\n static translate(x1, y1, x2, y2, x3, y3, x4, y4, out) {\n if (!out) {\n out = new RenderCoords();\n }\n out.data[rx1] = x1;\n out.data[rx2] = x2;\n out.data[rx3] = x3;\n out.data[rx4] = x4;\n out.data[ry1] = y1;\n out.data[ry2] = y2;\n out.data[ry3] = y3;\n out.data[ry4] = y4;\n return out;\n }\n get x1() {\n return this.data[rx1];\n }\n get x2() {\n return this.data[rx2];\n }\n get x3() {\n return this.data[rx3];\n }\n get x4() {\n return this.data[rx4];\n }\n get y1() {\n return this.data[ry1];\n }\n get y2() {\n return this.data[ry2];\n }\n get y3() {\n return this.data[ry3];\n }\n get y4() {\n return this.data[ry4];\n }\n}\n//# sourceMappingURL=RenderCoords.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { CoreAnimation } from '../../core/animations/CoreAnimation.js';\nimport { CoreAnimationController } from '../../core/animations/CoreAnimationController.js';\nimport { CoreNode } from '../../core/CoreNode.js';\nimport { EventEmitter } from '../../common/EventEmitter.js';\nimport { santizeCustomDataMap } from '../utils.js';\nlet nextId = 1;\nexport function getNewId() {\n return nextId++;\n}\nexport class MainOnlyNode extends EventEmitter {\n rendererMain;\n stage;\n id;\n coreNode;\n // Prop stores\n _children = [];\n _src = '';\n _parent = null;\n _texture = null;\n _shader = null;\n _data = {};\n constructor(props, rendererMain, stage, coreNode) {\n super();\n this.rendererMain = rendererMain;\n this.stage = stage;\n this.id = coreNode?.id ?? getNewId();\n this.coreNode =\n coreNode ||\n new CoreNode(this.stage, {\n id: this.id,\n x: props.x,\n y: props.y,\n width: props.width,\n height: props.height,\n alpha: props.alpha,\n autosize: props.autosize,\n clipping: props.clipping,\n color: props.color,\n colorTop: props.colorTop,\n colorBottom: props.colorBottom,\n colorLeft: props.colorLeft,\n colorRight: props.colorRight,\n colorTl: props.colorTl,\n colorTr: props.colorTr,\n colorBl: props.colorBl,\n colorBr: props.colorBr,\n zIndex: props.zIndex,\n zIndexLocked: props.zIndexLocked,\n scaleX: props.scaleX,\n scaleY: props.scaleY,\n mountX: props.mountX,\n mountY: props.mountY,\n mount: props.mount,\n pivot: props.pivot,\n pivotX: props.pivotX,\n pivotY: props.pivotY,\n rotation: props.rotation,\n parent: null,\n shader: null,\n shaderProps: null,\n texture: null,\n textureOptions: null,\n rtt: props.rtt,\n parentHasRenderTexture: props.parentHasRenderTexture,\n });\n // Forward loaded/failed events\n this.coreNode.on('loaded', this.onTextureLoaded);\n this.coreNode.on('failed', this.onTextureFailed);\n this.coreNode.on('freed', this.onTextureFreed);\n this.coreNode.on('outOfBounds', this.onOutOfBounds);\n this.coreNode.on('inBounds', this.onInBounds);\n this.coreNode.on('outOfViewport', this.onOutOfViewport);\n this.coreNode.on('inViewport', this.onInViewport);\n // Assign properties to this object\n this.parent = props.parent;\n this.shader = props.shader;\n this.texture = props.texture;\n this.src = props.src;\n this.rtt = props.rtt;\n this._data = props.data;\n }\n get x() {\n return this.coreNode.x;\n }\n set x(value) {\n this.coreNode.x = value;\n }\n get y() {\n return this.coreNode.y;\n }\n set y(value) {\n this.coreNode.y = value;\n }\n get width() {\n return this.coreNode.width;\n }\n set width(value) {\n this.coreNode.width = value;\n }\n get height() {\n return this.coreNode.height;\n }\n set height(value) {\n this.coreNode.height = value;\n }\n get alpha() {\n return this.coreNode.alpha;\n }\n set alpha(value) {\n this.coreNode.alpha = value;\n }\n get autosize() {\n return this.coreNode.autosize;\n }\n set autosize(value) {\n this.coreNode.autosize = value;\n }\n get clipping() {\n return this.coreNode.clipping;\n }\n set clipping(value) {\n this.coreNode.clipping = value;\n }\n get color() {\n return this.coreNode.color;\n }\n set color(value) {\n this.coreNode.color = value;\n }\n get colorTop() {\n return this.coreNode.colorTop;\n }\n set colorTop(value) {\n this.coreNode.colorTop = value;\n }\n get colorBottom() {\n return this.coreNode.colorBottom;\n }\n set colorBottom(value) {\n this.coreNode.colorBottom = value;\n }\n get colorLeft() {\n return this.coreNode.colorLeft;\n }\n set colorLeft(value) {\n this.coreNode.colorLeft = value;\n }\n get colorRight() {\n return this.coreNode.colorRight;\n }\n set colorRight(value) {\n this.coreNode.colorRight = value;\n }\n get colorTl() {\n return this.coreNode.colorTl;\n }\n set colorTl(value) {\n this.coreNode.colorTl = value;\n }\n get colorTr() {\n return this.coreNode.colorTr;\n }\n set colorTr(value) {\n this.coreNode.colorTr = value;\n }\n get colorBl() {\n return this.coreNode.colorBl;\n }\n set colorBl(value) {\n this.coreNode.colorBl = value;\n }\n get colorBr() {\n return this.coreNode.colorBr;\n }\n set colorBr(value) {\n this.coreNode.colorBr = value;\n }\n get scale() {\n if (this.scaleX !== this.scaleY) {\n return null;\n }\n return this.coreNode.scaleX;\n }\n set scale(value) {\n // We ignore `null` when it's set.\n if (value === null) {\n return;\n }\n this.coreNode.scaleX = value;\n this.coreNode.scaleY = value;\n }\n get scaleX() {\n return this.coreNode.scaleX;\n }\n set scaleX(value) {\n this.coreNode.scaleX = value;\n }\n get scaleY() {\n return this.coreNode.scaleY;\n }\n set scaleY(value) {\n this.coreNode.scaleY = value;\n }\n get mount() {\n return this.coreNode.mount;\n }\n set mount(value) {\n this.coreNode.mount = value;\n }\n get mountX() {\n return this.coreNode.mountX;\n }\n set mountX(value) {\n this.coreNode.mountX = value;\n }\n get mountY() {\n return this.coreNode.mountY;\n }\n set mountY(value) {\n this.coreNode.mountY = value;\n }\n get pivot() {\n return this.coreNode.pivot;\n }\n set pivot(value) {\n this.coreNode.pivot = value;\n }\n get pivotX() {\n return this.coreNode.pivotX;\n }\n set pivotX(value) {\n this.coreNode.pivotX = value;\n }\n get pivotY() {\n return this.coreNode.pivotY;\n }\n set pivotY(value) {\n this.coreNode.pivotY = value;\n }\n get rotation() {\n return this.coreNode.rotation;\n }\n set rotation(value) {\n this.coreNode.rotation = value;\n }\n get parent() {\n return this._parent;\n }\n set parent(newParent) {\n const oldParent = this._parent;\n this._parent = newParent;\n this.coreNode.parent = newParent?.coreNode ?? null;\n if (oldParent) {\n const index = oldParent.children.indexOf(this);\n assertTruthy(index !== -1, \"MainOnlyNode.parent: Node not found in old parent's children!\");\n oldParent.children.splice(index, 1);\n }\n if (newParent) {\n newParent.children.push(this);\n }\n }\n get children() {\n return this._children;\n }\n get zIndex() {\n return this.coreNode.zIndex;\n }\n set zIndex(value) {\n this.coreNode.zIndex = value;\n }\n get zIndexLocked() {\n return this.coreNode.zIndexLocked;\n }\n set zIndexLocked(value) {\n this.coreNode.zIndexLocked = value;\n }\n get src() {\n return this._src;\n }\n set src(imageUrl) {\n if (this._src === imageUrl) {\n return;\n }\n this._src = imageUrl;\n if (!imageUrl) {\n this.texture = null;\n return;\n }\n this.texture = this.rendererMain.createTexture('ImageTexture', {\n src: imageUrl,\n });\n }\n //#region Texture\n get texture() {\n return this._texture;\n }\n set texture(texture) {\n if (this._texture === texture) {\n return;\n }\n if (this._texture) {\n this.rendererMain.textureTracker.decrementTextureRefCount(this._texture);\n }\n if (texture) {\n this.rendererMain.textureTracker.incrementTextureRefCount(texture);\n }\n this._texture = texture;\n if (texture) {\n this.coreNode.loadTexture(texture.txType, texture.props, texture.options);\n }\n else {\n this.coreNode.unloadTexture();\n }\n }\n get rtt() {\n return this.coreNode.rtt;\n }\n set rtt(value) {\n if (value) {\n this.texture = this.rendererMain.createTexture('RenderTexture', {\n width: this.width,\n height: this.height,\n }, { preload: true, flipY: true });\n }\n this.coreNode.rtt = value;\n }\n get parentHasRenderTexture() {\n return this.coreNode.parentHasRenderTexture;\n }\n set parentHasRenderTexture(value) {\n this.coreNode.parentHasRenderTexture = value;\n }\n onTextureLoaded = (target, payload) => {\n this.emit('loaded', payload);\n };\n onTextureFailed = (target, payload) => {\n this.emit('failed', payload);\n };\n onTextureFreed = (target, payload) => {\n this.emit('freed', payload);\n };\n onOutOfBounds = (target, payload) => {\n this.emit('outOfBounds', payload);\n };\n onInBounds = (target, payload) => {\n this.emit('inBounds', payload);\n };\n onOutOfViewport = (target, payload) => {\n this.emit('outOfViewport', payload);\n };\n onInViewport = (target, payload) => {\n this.emit('inViewport', payload);\n };\n //#endregion Texture\n get shader() {\n return this._shader;\n }\n set shader(shader) {\n if (this._shader === shader) {\n return;\n }\n this._shader = shader;\n if (shader) {\n this.coreNode.loadShader(shader.shType, shader.props);\n }\n }\n get data() {\n return this._data;\n }\n set data(d) {\n this._data = santizeCustomDataMap(d);\n }\n destroy() {\n this.emit('beforeDestroy', {});\n //use while loop since setting parent to null removes it from array\n let child = this.children[0];\n while (child) {\n child.destroy();\n child = this.children[0];\n }\n this.coreNode.destroy();\n this.parent = null;\n this.texture = null;\n this.emit('afterDestroy', {});\n this.removeAllListeners();\n }\n flush() {\n // No-op\n }\n animate(props, settings) {\n const animation = new CoreAnimation(this.coreNode, props, settings);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const controller = new CoreAnimationController(this.stage.animationManager, animation);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return controller;\n }\n}\n//# sourceMappingURL=MainOnlyNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreAnimation } from './CoreAnimation.js';\nexport class AnimationManager {\n activeAnimations = new Set();\n registerAnimation(animation) {\n this.activeAnimations.add(animation);\n }\n unregisterAnimation(animation) {\n this.activeAnimations.delete(animation);\n }\n update(dt) {\n this.activeAnimations.forEach((animation) => {\n animation.update(dt);\n });\n }\n}\n//# sourceMappingURL=AnimationManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {} from '../textures/Texture.js';\nexport class ImageWorkerManager {\n imageWorkersEnabled = true;\n messageManager = {};\n workers = [];\n workerIndex = 0;\n constructor(numImageWorkers) {\n this.workers = this.createWorkers(numImageWorkers);\n this.workers.forEach((worker) => {\n worker.onmessage = this.handleMessage.bind(this);\n });\n }\n handleMessage(event) {\n const { src, data, error } = event.data;\n const msg = this.messageManager[src];\n if (msg) {\n const [resolve, reject] = msg;\n delete this.messageManager[src];\n if (error) {\n reject(new Error(error));\n }\n else {\n resolve(data);\n }\n }\n }\n createWorkers(numWorkers = 1) {\n const workerCode = `\n function hasAlphaChannel(mimeType) {\n return (mimeType.indexOf(\"image/png\") !== -1);\n }\n\n function getImage(src, premultiplyAlpha) {\n return new Promise(function(resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', src, true);\n xhr.responseType = 'blob';\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n var blob = xhr.response;\n var hasAlphaChannel = premultiplyAlpha !== undefined ? premultiplyAlpha : hasAlphaChannel(blob.type);\n\n createImageBitmap(blob, {\n premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',\n colorSpaceConversion: 'none',\n imageOrientation: 'none'\n }).then(function(data) {\n resolve({ data: data, premultiplyAlpha: premultiplyAlpha });\n }).catch(function(error) {\n reject(error);\n });\n } else {\n reject(new Error('Failed to load image: ' + xhr.statusText));\n }\n };\n\n xhr.onerror = function() {\n reject(new Error('Network error occurred while trying to fetch the image.'));\n };\n\n xhr.send();\n });\n }\n\n self.onmessage = (event) => {\n var src = event.data.src;\n var premultiplyAlpha = event.data.premultiplyAlpha;\n\n getImage(src, premultiplyAlpha)\n .then(function(data) {\n self.postMessage({ src: src, data: data }, [data.data]);\n })\n .catch(function(error) {\n self.postMessage({ src: src, error: error.message });\n });\n };\n `;\n const blob = new Blob([workerCode.replace('\"use strict\";', '')], {\n type: 'application/javascript',\n });\n const blobURL = (self.URL ? URL : webkitURL).createObjectURL(blob);\n const workers = [];\n for (let i = 0; i < numWorkers; i++) {\n workers.push(new Worker(blobURL));\n }\n return workers;\n }\n getNextWorker() {\n const worker = this.workers[this.workerIndex];\n this.workerIndex = (this.workerIndex + 1) % this.workers.length;\n return worker;\n }\n convertUrlToAbsolute(url) {\n const absoluteUrl = new URL(url, self.location.href);\n return absoluteUrl.href;\n }\n getImage(src, premultiplyAlpha) {\n return new Promise((resolve, reject) => {\n try {\n if (this.workers) {\n const absoluteSrcUrl = this.convertUrlToAbsolute(src);\n this.messageManager[absoluteSrcUrl] = [resolve, reject];\n this.getNextWorker().postMessage({\n src: absoluteSrcUrl,\n premultiplyAlpha,\n });\n }\n }\n catch (error) {\n reject(error);\n }\n });\n }\n}\n//# sourceMappingURL=ImageWorker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\n/**\n * Texture consisting of a random grid of greyscale pixels\n *\n * @remarks\n * The width and height of the NoiseTexture are defined by it's\n * {@link NoiseTextureProps.width} and {@link NoiseTextureProps.height}\n * properties. The {@link NoiseTextureProps.cacheId} prop can be varied in order\n * to bypass cache and get newly randomized texture data.\n */\nexport class NoiseTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = NoiseTexture.resolveDefaults(props);\n }\n async getTextureData() {\n const { width, height } = this.props;\n const size = width * height * 4;\n const pixelData8 = new Uint8ClampedArray(size);\n for (let i = 0; i < size; i += 4) {\n const v = Math.floor(Math.random() * 256);\n pixelData8[i] = v;\n pixelData8[i + 1] = v;\n pixelData8[i + 2] = v;\n pixelData8[i + 3] = 255;\n }\n return {\n data: new ImageData(pixelData8, width, height),\n };\n }\n static makeCacheKey(props) {\n const resolvedProps = NoiseTexture.resolveDefaults(props);\n return `NoiseTexture,${resolvedProps.width},${resolvedProps.height},${resolvedProps.cacheId}`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 128,\n height: props.height ?? 128,\n cacheId: props.cacheId ?? 0,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=NoiseTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../utils.js';\nimport { ImageWorkerManager } from './lib/ImageWorker.js';\nimport { ColorTexture } from './textures/ColorTexture.js';\nimport { ImageTexture } from './textures/ImageTexture.js';\nimport { NoiseTexture } from './textures/NoiseTexture.js';\nimport { SubTexture } from './textures/SubTexture.js';\nimport { RenderTexture } from './textures/RenderTexture.js';\nexport class CoreTextureManager {\n /**\n * Amount of used memory defined in pixels\n */\n usedMemory = 0;\n txConstructors = {};\n textureKeyCache = new Map();\n textureIdCache = new Map();\n ctxTextureCache = new WeakMap();\n textureRefCountMap = new WeakMap();\n imageWorkerManager = null;\n hasCreateImageBitmap = !!self.createImageBitmap;\n hasWorker = !!self.Worker;\n /**\n * Renderer that this texture manager is associated with\n *\n * @remarks\n * This MUST be set before the texture manager is used. Otherwise errors\n * will occur when using the texture manager.\n */\n renderer;\n constructor(numImageWorkers) {\n // Register default known texture types\n if (this.hasCreateImageBitmap && this.hasWorker) {\n this.imageWorkerManager = new ImageWorkerManager(numImageWorkers);\n }\n if (!this.hasCreateImageBitmap) {\n console.warn('[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.');\n }\n this.registerTextureType('ImageTexture', ImageTexture);\n this.registerTextureType('ColorTexture', ColorTexture);\n this.registerTextureType('NoiseTexture', NoiseTexture);\n this.registerTextureType('SubTexture', SubTexture);\n this.registerTextureType('RenderTexture', RenderTexture);\n }\n registerTextureType(textureType, textureClass) {\n this.txConstructors[textureType] = textureClass;\n }\n loadTexture(textureType, props, options = null) {\n const TextureClass = this.txConstructors[textureType];\n if (!TextureClass) {\n throw new Error(`Texture type \"${textureType}\" is not registered`);\n }\n let texture;\n // If an ID is specified, try to get the texture from the ID cache first\n if (options?.id !== undefined && this.textureIdCache.has(options.id)) {\n // console.log('Getting texture by texture desc ID', options.id);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n texture = this.textureIdCache.get(options.id);\n }\n // If the texture is not found in the ID cache, try to get it from the key cache\n if (!texture) {\n const descId = options?.id;\n const cacheKey = options?.cacheKey ?? TextureClass.makeCacheKey(props);\n if (cacheKey && this.textureKeyCache.has(cacheKey)) {\n // console.log('Getting texture by cache key', cacheKey);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n texture = this.textureKeyCache.get(cacheKey);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n texture = new TextureClass(this, props);\n }\n if (descId) {\n this.addTextureIdToCache(descId, cacheKey, texture);\n }\n }\n if (options?.preload) {\n const ctxTx = this.getCtxTexture(texture);\n ctxTx.load();\n }\n return texture;\n }\n /**\n * Add a `Texture` to the texture cache by its texture desc ID and cache key\n *\n * @remarks\n * This is used internally by the `CoreTextureManager` to cache textures\n * when they are created.\n *\n * It handles updating the texture ID cache, texture key cache, and texture\n * reference count map.\n *\n * @param textureDescId\n * @param cacheKey\n * @param texture\n */\n addTextureIdToCache(textureDescId, cacheKey, texture) {\n const { textureIdCache, textureRefCountMap } = this;\n textureIdCache.set(textureDescId, texture);\n if (textureRefCountMap.has(texture)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n textureRefCountMap.get(texture).count++;\n }\n else {\n textureRefCountMap.set(texture, { cacheKey, count: 1 });\n if (cacheKey) {\n this.textureKeyCache.set(cacheKey, texture);\n }\n }\n }\n /**\n * Remove a `Texture` from the texture cache by its texture desc ID\n *\n * @remarks\n * This is called externally by when we know (at least reasonably well) that\n * the `TextureRef` in the Main API space has been is no longer used. This\n * allows us to remove the `Texture` from the Usage Cache so that it can be\n * garbage collected as well.\n *\n * @param textureDescId\n */\n removeTextureIdFromCache(textureDescId) {\n const { textureIdCache, textureRefCountMap } = this;\n const texture = textureIdCache.get(textureDescId);\n if (!texture) {\n // Sometimes a texture is removed from the cache before it ever gets\n // added to the cache. This is fine and not an error.\n return;\n }\n textureIdCache.delete(textureDescId);\n if (textureRefCountMap.has(texture)) {\n const refCountObj = textureRefCountMap.get(texture);\n assertTruthy(refCountObj);\n refCountObj.count--;\n if (refCountObj.count === 0) {\n textureRefCountMap.delete(texture);\n // If the texture is not referenced anywhere else, remove it from the key cache\n // as well.\n // This should allow the `Texture` instance to be garbage collected.\n if (refCountObj.cacheKey) {\n this.textureKeyCache.delete(refCountObj.cacheKey);\n }\n }\n }\n // Free the ctx texture if it exists.\n this.ctxTextureCache.get(texture)?.free();\n }\n /**\n * Get an object containing debug information about the texture manager.\n *\n * @returns\n */\n getDebugInfo() {\n // const textureSet = new Set();\n // for (const texture of this.textureIdCache.values()) {\n // textureSet.add(texture);\n // }\n // for (const texture of this.textureKeyCache.values()) {\n // textureSet.add(texture);\n // }\n // TODO: Output number of bytes used by textures\n return {\n keyCacheSize: this.textureKeyCache.size,\n idCacheSize: this.textureIdCache.size,\n };\n }\n /**\n * Get a CoreContextTexture for the given Texture source.\n *\n * @remarks\n * If the texture source already has an allocated CoreContextTexture, it will be\n * returned from the cache. Otherwise, a new CoreContextTexture will be created\n * and cached.\n *\n * ContextTextures are stored in a WeakMap, so they will be garbage collected\n * when the Texture source is no longer referenced.\n *\n * @param textureSource\n * @returns\n */\n getCtxTexture(textureSource) {\n if (this.ctxTextureCache.has(textureSource)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.ctxTextureCache.get(textureSource);\n }\n const texture = this.renderer.createCtxTexture(textureSource);\n this.ctxTextureCache.set(textureSource, texture);\n return texture;\n }\n}\n//# sourceMappingURL=CoreTextureManager.js.map","export class TextureMemoryManager {\n memUsed = 0;\n textures = new Map();\n threshold;\n /**\n * @param byteThreshold Number of texture bytes to trigger garbage collection\n */\n constructor(byteThreshold) {\n this.threshold = byteThreshold;\n // If the threshold is 0, we disable the memory manager by replacing the\n // setTextureMemUse method with a no-op function.\n if (byteThreshold === 0) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.setTextureMemUse = () => { };\n }\n }\n setTextureMemUse(ctxTexture, byteSize) {\n if (this.textures.has(ctxTexture)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.memUsed -= this.textures.get(ctxTexture);\n }\n if (byteSize === 0) {\n this.textures.delete(ctxTexture);\n return;\n }\n else {\n this.memUsed += byteSize;\n this.textures.set(ctxTexture, byteSize);\n }\n if (this.memUsed > this.threshold) {\n this.gc();\n }\n }\n gc() {\n this.textures.forEach((byteSize, ctxTexture) => {\n if (!ctxTexture.renderable) {\n ctxTexture.free();\n }\n });\n }\n}\n//# sourceMappingURL=TextureMemoryManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { startLoop, getTimeStamp } from './platform.js';\nimport { WebGlCoreRenderer } from './renderers/webgl/WebGlCoreRenderer.js';\nimport { assertTruthy } from '../utils.js';\nimport { AnimationManager } from './animations/AnimationManager.js';\nimport { CoreNode } from './CoreNode.js';\nimport { CoreTextureManager } from './CoreTextureManager.js';\nimport { TrFontManager } from './text-rendering/TrFontManager.js';\nimport { CoreShaderManager } from './CoreShaderManager.js';\nimport { SdfTextRenderer } from './text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js';\nimport { CanvasTextRenderer } from './text-rendering/renderers/CanvasTextRenderer.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { ContextSpy } from './lib/ContextSpy.js';\nimport { TextureMemoryManager } from './TextureMemoryManager.js';\nconst bufferMemory = 2e6;\nconst autoStart = true;\nexport class Stage extends EventEmitter {\n options;\n /// Module Instances\n animationManager;\n txManager;\n txMemManager;\n fontManager;\n textRenderers;\n shManager;\n renderer;\n root;\n boundsMargin;\n /// State\n deltaTime = 0;\n lastFrameTime = 0;\n currentFrameTime = 0;\n fpsNumFrames = 0;\n fpsElapsedTime = 0;\n renderRequested = false;\n /// Debug data\n contextSpy = null;\n /**\n * Stage constructor\n */\n constructor(options) {\n super();\n this.options = options;\n const { canvas, clearColor, rootId, debug, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, txMemByteThreshold, } = options;\n this.txManager = new CoreTextureManager(numImageWorkers);\n this.txMemManager = new TextureMemoryManager(txMemByteThreshold);\n this.shManager = new CoreShaderManager();\n this.animationManager = new AnimationManager();\n this.contextSpy = enableContextSpy ? new ContextSpy() : null;\n let bm = [0, 0, 0, 0];\n if (boundsMargin) {\n bm = Array.isArray(boundsMargin)\n ? boundsMargin\n : [boundsMargin, boundsMargin, boundsMargin, boundsMargin];\n }\n this.boundsMargin = bm;\n if (debug?.monitorTextureCache) {\n setInterval(() => {\n assertTruthy(this.txManager);\n const debugInfo = this.txManager.getDebugInfo();\n console.log('Texture ID Cache Size: ', debugInfo.idCacheSize);\n console.log('Texture Key Cache Size: ', debugInfo.keyCacheSize);\n }, 1000);\n }\n this.renderer = new WebGlCoreRenderer({\n stage: this,\n canvas,\n pixelRatio: options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio,\n clearColor: clearColor ?? 0xff000000,\n bufferMemory,\n txManager: this.txManager,\n txMemManager: this.txMemManager,\n shManager: this.shManager,\n contextSpy: this.contextSpy,\n });\n // Must do this after renderer is created\n this.txManager.renderer = this.renderer;\n this.textRenderers = {\n canvas: new CanvasTextRenderer(this),\n sdf: new SdfTextRenderer(this),\n };\n this.fontManager = new TrFontManager(this.textRenderers);\n // create root node\n const rootNode = new CoreNode(this, {\n id: rootId,\n x: 0,\n y: 0,\n width: appWidth,\n height: appHeight,\n alpha: 1,\n autosize: false,\n clipping: false,\n color: 0x00000000,\n colorTop: 0x00000000,\n colorBottom: 0x00000000,\n colorLeft: 0x00000000,\n colorRight: 0x00000000,\n colorTl: 0x00000000,\n colorTr: 0x00000000,\n colorBl: 0x00000000,\n colorBr: 0x00000000,\n zIndex: 0,\n zIndexLocked: 0,\n scaleX: 1,\n scaleY: 1,\n mountX: 0,\n mountY: 0,\n mount: 0,\n pivot: 0.5,\n pivotX: 0.5,\n pivotY: 0.5,\n rotation: 0,\n parent: null,\n texture: null,\n textureOptions: null,\n shader: null,\n shaderProps: null,\n rtt: false,\n });\n this.root = rootNode;\n // execute platform start loop\n if (autoStart) {\n startLoop(this);\n }\n }\n /**\n * Update animations\n */\n updateAnimations() {\n const { animationManager } = this;\n if (!this.root) {\n return;\n }\n this.lastFrameTime = this.currentFrameTime;\n this.currentFrameTime = getTimeStamp();\n this.deltaTime = !this.lastFrameTime\n ? 100 / 6\n : this.currentFrameTime - this.lastFrameTime;\n this.emit('frameTick', {\n time: this.currentFrameTime,\n delta: this.deltaTime,\n });\n // step animation\n animationManager.update(this.deltaTime);\n }\n /**\n * Check if the scene has updates\n */\n hasSceneUpdates() {\n return !!this.root.updateType || this.renderRequested;\n }\n /**\n * Start a new frame draw\n */\n drawFrame() {\n const { renderer, renderRequested } = this;\n // Update tree if needed\n if (this.root.updateType !== 0) {\n this.root.update(this.deltaTime, this.root.clippingRect);\n }\n // Reset render operations and clear the canvas\n renderer?.reset();\n // If we have RTT nodes draw them first\n // So we can use them as textures in the main scene\n if (renderer.rttNodes.length > 0) {\n renderer.renderRTTNodes();\n }\n // Fill quads buffer\n this.addQuads(this.root);\n // Perform render pass\n renderer?.render();\n this.calculateFps();\n // Reset renderRequested flag if it was set\n if (renderRequested) {\n this.renderRequested = false;\n }\n }\n calculateFps() {\n // If there's an FPS update interval, emit the FPS update event\n // when the specified interval has elapsed.\n const { fpsUpdateInterval } = this.options;\n if (fpsUpdateInterval) {\n this.fpsNumFrames++;\n this.fpsElapsedTime += this.deltaTime;\n if (this.fpsElapsedTime >= fpsUpdateInterval) {\n const fps = Math.round((this.fpsNumFrames * 1000) / this.fpsElapsedTime);\n this.fpsNumFrames = 0;\n this.fpsElapsedTime = 0;\n this.emit('fpsUpdate', {\n fps,\n contextSpyData: this.contextSpy?.getData() ?? null,\n });\n this.contextSpy?.reset();\n }\n }\n }\n addQuads(node) {\n assertTruthy(this.renderer && node.globalTransform);\n if (node.isRenderable) {\n node.renderQuads(this.renderer);\n }\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (!child) {\n continue;\n }\n if (child?.worldAlpha === 0) {\n continue;\n }\n this.addQuads(child);\n }\n }\n /**\n * Request a render pass without forcing an update\n */\n requestRender() {\n this.renderRequested = true;\n }\n /**\n * Given a font name, and possible renderer override, return the best compatible text renderer.\n *\n * @remarks\n * Will always return at least a canvas renderer if no other suitable renderer can be resolved.\n *\n * @param fontFamily\n * @param textRendererOverride\n * @returns\n */\n resolveTextRenderer(trProps, textRendererOverride = null) {\n let rendererId = textRendererOverride;\n let overrideFallback = false;\n // Check if the override is valid (if one is provided)\n if (rendererId) {\n const possibleRenderer = this.textRenderers[rendererId];\n if (!possibleRenderer) {\n console.warn(`Text renderer override '${rendererId}' not found.`);\n rendererId = null;\n overrideFallback = true;\n }\n else if (!possibleRenderer.canRenderFont(trProps)) {\n console.warn(`Cannot use override text renderer '${rendererId}' for font`, trProps);\n rendererId = null;\n overrideFallback = true;\n }\n }\n if (!rendererId) {\n // Iterate through the text renderers and find the first one that can render the font\n for (const [trId, tr] of Object.entries(this.textRenderers)) {\n if (trId === 'canvas') {\n // Canvas is always a fallback\n continue;\n }\n if (tr.canRenderFont(trProps)) {\n rendererId = trId;\n break;\n }\n }\n if (!rendererId) {\n // If no renderer can be found, use the canvas renderer\n rendererId = 'canvas';\n }\n }\n if (overrideFallback) {\n console.warn(`Falling back to text renderer ${String(rendererId)}`);\n }\n // By now we are guaranteed to have a valid rendererId (at least Canvas);\n const resolvedTextRenderer = this.textRenderers[rendererId];\n assertTruthy(resolvedTextRenderer, 'resolvedTextRenderer undefined');\n // Need to explicitly cast to TextRenderer because TS doesn't like\n // the covariant state argument in the setter method map\n return resolvedTextRenderer;\n }\n}\n//# sourceMappingURL=Stage.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Platform render loop initiator\n */\nexport const startLoop = (stage) => {\n let isIdle = false;\n const runLoop = () => {\n stage.updateAnimations();\n if (!stage.hasSceneUpdates()) {\n // We still need to calculate the fps else it looks like the app is frozen\n stage.calculateFps();\n setTimeout(runLoop, 16.666666666666668);\n if (!isIdle) {\n stage.emit('idle');\n isIdle = true;\n }\n return;\n }\n isIdle = false;\n stage.drawFrame();\n requestAnimationFrame(runLoop);\n };\n requestAnimationFrame(runLoop);\n};\n/**\n * Return unix timestamp\n * @return {number}\n */\nexport const getTimeStamp = () => {\n return performance ? performance.now() : Date.now();\n};\n//# sourceMappingURL=platform.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreNode, UpdateType } from './CoreNode.js';\nimport { assertTruthy } from '../utils.js';\nimport { Matrix3d } from './lib/Matrix3d.js';\nexport class CoreTextNode extends CoreNode {\n textRenderer;\n trState;\n _textRendererOverride = null;\n constructor(stage, props) {\n super(stage, props);\n this._textRendererOverride = props.textRendererOverride;\n const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState({\n x: this.absX,\n y: this.absY,\n width: props.width,\n height: props.height,\n textAlign: props.textAlign,\n color: props.color,\n zIndex: props.zIndex,\n contain: props.contain,\n scrollable: props.scrollable,\n scrollY: props.scrollY,\n offsetY: props.offsetY,\n letterSpacing: props.letterSpacing,\n debug: props.debug,\n fontFamily: props.fontFamily,\n fontSize: props.fontSize,\n fontStretch: props.fontStretch,\n fontStyle: props.fontStyle,\n fontWeight: props.fontWeight,\n text: props.text,\n lineHeight: props.lineHeight,\n maxLines: props.maxLines,\n textBaseline: props.textBaseline,\n verticalAlign: props.verticalAlign,\n overflowSuffix: props.overflowSuffix,\n });\n this.textRenderer = resolvedTextRenderer;\n this.trState = textRendererState;\n }\n onTextLoaded = () => {\n const { contain } = this;\n const setWidth = this.trState.props.width;\n const setHeight = this.trState.props.height;\n const calcWidth = this.trState.textW || 0;\n const calcHeight = this.trState.textH || 0;\n if (contain === 'both') {\n this.props.width = setWidth;\n this.props.height = setHeight;\n }\n else if (contain === 'width') {\n this.props.width = setWidth;\n this.props.height = calcHeight;\n }\n else if (contain === 'none') {\n this.props.width = calcWidth;\n this.props.height = calcHeight;\n }\n this.updateLocalTransform();\n // Incase the RAF loop has been stopped already before text was loaded,\n // we request a render so it can be drawn.\n this.stage.requestRender();\n this.emit('loaded', {\n type: 'text',\n dimensions: {\n width: this.trState.textW || 0,\n height: this.trState.textH || 0,\n },\n });\n };\n onTextFailed = (target, error) => {\n this.emit('failed', {\n type: 'text',\n error,\n });\n };\n get width() {\n return this.props.width;\n }\n set width(value) {\n this.props.width = value;\n this.textRenderer.set.width(this.trState, value);\n // If not containing, we must update the local transform to account for the\n // new width\n if (this.contain === 'none') {\n this.setUpdateType(UpdateType.Local);\n }\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n this.props.height = value;\n this.textRenderer.set.height(this.trState, value);\n // If not containing in the horizontal direction, we must update the local\n // transform to account for the new height\n if (this.contain !== 'both') {\n this.setUpdateType(UpdateType.Local);\n }\n }\n get color() {\n return this.trState.props.color;\n }\n set color(value) {\n this.textRenderer.set.color(this.trState, value);\n }\n get text() {\n return this.trState.props.text;\n }\n set text(value) {\n this.textRenderer.set.text(this.trState, value);\n }\n get textRendererOverride() {\n return this._textRendererOverride;\n }\n set textRendererOverride(value) {\n this._textRendererOverride = value;\n this.textRenderer.destroyState(this.trState);\n const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState(this.trState.props);\n this.textRenderer = resolvedTextRenderer;\n this.trState = textRendererState;\n }\n get fontSize() {\n return this.trState.props.fontSize;\n }\n set fontSize(value) {\n this.textRenderer.set.fontSize(this.trState, value);\n }\n get fontFamily() {\n return this.trState.props.fontFamily;\n }\n set fontFamily(value) {\n this.textRenderer.set.fontFamily(this.trState, value);\n }\n get fontStretch() {\n return this.trState.props.fontStretch;\n }\n set fontStretch(value) {\n this.textRenderer.set.fontStretch(this.trState, value);\n }\n get fontStyle() {\n return this.trState.props.fontStyle;\n }\n set fontStyle(value) {\n this.textRenderer.set.fontStyle(this.trState, value);\n }\n get fontWeight() {\n return this.trState.props.fontWeight;\n }\n set fontWeight(value) {\n this.textRenderer.set.fontWeight(this.trState, value);\n }\n get textAlign() {\n return this.trState.props.textAlign;\n }\n set textAlign(value) {\n this.textRenderer.set.textAlign(this.trState, value);\n }\n get contain() {\n return this.trState.props.contain;\n }\n set contain(value) {\n this.textRenderer.set.contain(this.trState, value);\n }\n get scrollable() {\n return this.trState.props.scrollable;\n }\n set scrollable(value) {\n this.textRenderer.set.scrollable(this.trState, value);\n }\n get scrollY() {\n return this.trState.props.scrollY;\n }\n set scrollY(value) {\n this.textRenderer.set.scrollY(this.trState, value);\n }\n get offsetY() {\n return this.trState.props.offsetY;\n }\n set offsetY(value) {\n this.textRenderer.set.offsetY(this.trState, value);\n }\n get letterSpacing() {\n return this.trState.props.letterSpacing;\n }\n set letterSpacing(value) {\n this.textRenderer.set.letterSpacing(this.trState, value);\n }\n get lineHeight() {\n return this.trState.props.lineHeight;\n }\n set lineHeight(value) {\n if (this.textRenderer.set.lineHeight) {\n this.textRenderer.set.lineHeight(this.trState, value);\n }\n }\n get maxLines() {\n return this.trState.props.maxLines;\n }\n set maxLines(value) {\n if (this.textRenderer.set.maxLines) {\n this.textRenderer.set.maxLines(this.trState, value);\n }\n }\n get textBaseline() {\n return this.trState.props.textBaseline;\n }\n set textBaseline(value) {\n if (this.textRenderer.set.textBaseline) {\n this.textRenderer.set.textBaseline(this.trState, value);\n }\n }\n get verticalAlign() {\n return this.trState.props.verticalAlign;\n }\n set verticalAlign(value) {\n if (this.textRenderer.set.verticalAlign) {\n this.textRenderer.set.verticalAlign(this.trState, value);\n }\n }\n get overflowSuffix() {\n return this.trState.props.overflowSuffix;\n }\n set overflowSuffix(value) {\n if (this.textRenderer.set.overflowSuffix) {\n this.textRenderer.set.overflowSuffix(this.trState, value);\n }\n }\n get debug() {\n return this.trState.props.debug;\n }\n set debug(value) {\n this.textRenderer.set.debug(this.trState, value);\n }\n update(delta, parentClippingRect) {\n super.update(delta, parentClippingRect);\n assertTruthy(this.globalTransform);\n // globalTransform is updated in super.update(delta)\n this.textRenderer.set.x(this.trState, this.globalTransform.tx);\n this.textRenderer.set.y(this.trState, this.globalTransform.ty);\n }\n checkRenderProps() {\n if (this.trState.props.text !== '') {\n return true;\n }\n return super.checkRenderProps();\n }\n onChangeIsRenderable(isRenderable) {\n super.onChangeIsRenderable(isRenderable);\n this.textRenderer.setIsRenderable(this.trState, isRenderable);\n }\n renderQuads(renderer) {\n assertTruthy(this.globalTransform);\n // Prevent quad rendering if parent has a render texture\n // and this node is not the render texture\n if (this.parentHasRenderTexture) {\n if (!renderer.renderToTextureActive) {\n return;\n }\n // Prevent quad rendering if parent render texture is not the active render texture\n if (this.parentRenderTexture !== renderer.activeRttNode) {\n return;\n }\n }\n if (this.parentHasRenderTexture && this.props.parent?.rtt) {\n this.globalTransform = Matrix3d.identity();\n this.globalTransform.multiply(this.localTransform ?? Matrix3d.identity());\n }\n assertTruthy(this.globalTransform);\n this.textRenderer.renderQuads(this.trState, this.globalTransform, this.clippingRect, this.worldAlpha, this.parentHasRenderTexture, this.framebufferDimensions);\n }\n /**\n * Destroy the node and cleanup all resources\n */\n destroy() {\n super.destroy();\n this.textRenderer.destroyState(this.trState);\n }\n /**\n * Resolve a text renderer and a new state based on the current text renderer props provided\n * @param props\n * @returns\n */\n resolveTextRendererAndState(props) {\n const resolvedTextRenderer = this.stage.resolveTextRenderer(props, this._textRendererOverride);\n const textRendererState = resolvedTextRenderer.createState(props);\n textRendererState.emitter.on('loaded', this.onTextLoaded);\n textRendererState.emitter.on('failed', this.onTextFailed);\n resolvedTextRenderer.scheduleUpdateState(textRendererState);\n return {\n resolvedTextRenderer,\n textRendererState,\n };\n }\n}\n//# sourceMappingURL=CoreTextNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MainOnlyNode, getNewId } from './MainOnlyNode.js';\nimport { CoreTextNode } from '../../core/CoreTextNode.js';\nexport class MainOnlyTextNode extends MainOnlyNode {\n constructor(props, rendererMain, stage) {\n super(props, rendererMain, stage, new CoreTextNode(stage, {\n id: getNewId(),\n x: props.x,\n y: props.y,\n width: props.width,\n height: props.height,\n alpha: props.alpha,\n autosize: props.autosize,\n clipping: props.clipping,\n color: props.color,\n colorTop: props.colorTop,\n colorBottom: props.colorBottom,\n colorLeft: props.colorLeft,\n colorRight: props.colorRight,\n colorTl: props.colorTl,\n colorTr: props.colorTr,\n colorBl: props.colorBl,\n colorBr: props.colorBr,\n zIndex: props.zIndex,\n zIndexLocked: props.zIndexLocked,\n scaleX: props.scaleX,\n scaleY: props.scaleY,\n mountX: props.mountX,\n mountY: props.mountY,\n mount: props.mount,\n pivot: props.pivot,\n pivotX: props.pivotX,\n pivotY: props.pivotY,\n rotation: props.rotation,\n // Text properties\n text: props.text,\n fontSize: props.fontSize,\n fontFamily: props.fontFamily,\n fontWeight: props.fontWeight,\n fontStretch: props.fontStretch,\n fontStyle: props.fontStyle,\n contain: props.contain,\n scrollable: props.scrollable,\n letterSpacing: props.letterSpacing,\n textAlign: props.textAlign,\n scrollY: props.scrollY,\n offsetY: props.offsetY,\n textRendererOverride: props.textRendererOverride,\n lineHeight: props.lineHeight,\n maxLines: props.maxLines,\n textBaseline: props.textBaseline,\n verticalAlign: props.verticalAlign,\n overflowSuffix: props.overflowSuffix,\n debug: props.debug,\n // These properties will get set appropriately in the base MainOnlyNode class\n parent: null,\n texture: null,\n textureOptions: null,\n shader: null,\n shaderProps: null,\n rtt: false,\n parentHasRenderTexture: false,\n }));\n }\n get text() {\n return this.coreNode.text;\n }\n set text(value) {\n this.coreNode.text = value;\n }\n get textRendererOverride() {\n return this.coreNode.textRendererOverride;\n }\n set textRendererOverride(value) {\n this.coreNode.textRendererOverride = value;\n }\n get fontSize() {\n return this.coreNode.fontSize;\n }\n set fontSize(value) {\n this.coreNode.fontSize = value;\n }\n get fontFamily() {\n return this.coreNode.fontFamily;\n }\n set fontFamily(value) {\n this.coreNode.fontFamily = value;\n }\n get fontWeight() {\n return this.coreNode.fontWeight;\n }\n set fontWeight(value) {\n this.coreNode.fontWeight = value;\n }\n get fontStretch() {\n return this.coreNode.fontStretch;\n }\n set fontStretch(value) {\n this.coreNode.fontStretch = value;\n }\n get fontStyle() {\n return this.coreNode.fontStyle;\n }\n set fontStyle(value) {\n this.coreNode.fontStyle = value;\n }\n get textAlign() {\n return this.coreNode.textAlign;\n }\n set textAlign(value) {\n this.coreNode.textAlign = value;\n }\n get contain() {\n return this.coreNode.contain;\n }\n set contain(value) {\n this.coreNode.contain = value;\n }\n get scrollable() {\n return this.coreNode.scrollable;\n }\n set scrollable(value) {\n this.coreNode.scrollable = value;\n }\n get scrollY() {\n return this.coreNode.scrollY;\n }\n set scrollY(value) {\n this.coreNode.scrollY = value;\n }\n get offsetY() {\n return this.coreNode.offsetY;\n }\n set offsetY(value) {\n this.coreNode.offsetY = value;\n }\n get letterSpacing() {\n return this.coreNode.letterSpacing;\n }\n set letterSpacing(value) {\n this.coreNode.letterSpacing = value;\n }\n get lineHeight() {\n return this.coreNode.lineHeight;\n }\n set lineHeight(value) {\n if (value) {\n this.coreNode.lineHeight = value;\n }\n }\n get maxLines() {\n return this.coreNode.maxLines;\n }\n set maxLines(value) {\n if (value) {\n this.coreNode.maxLines = value;\n }\n }\n get textBaseline() {\n return this.coreNode.textBaseline;\n }\n set textBaseline(value) {\n if (value) {\n this.coreNode.textBaseline = value;\n }\n }\n get verticalAlign() {\n return this.coreNode.verticalAlign;\n }\n set verticalAlign(value) {\n if (value) {\n this.coreNode.verticalAlign = value;\n }\n }\n get overflowSuffix() {\n return this.coreNode.overflowSuffix;\n }\n set overflowSuffix(value) {\n if (value) {\n this.coreNode.overflowSuffix = value;\n }\n }\n get debug() {\n return this.coreNode.debug;\n }\n set debug(value) {\n this.coreNode.debug = value;\n }\n}\n//# sourceMappingURL=MainOnlyTextNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { MainOnlyNode, getNewId } from './MainOnlyNode.js';\nimport { Stage, } from '../../core/Stage.js';\nimport { MainOnlyTextNode } from './MainOnlyTextNode.js';\nimport { loadCoreExtension } from '../utils.js';\nexport class MainCoreDriver {\n root = null;\n stage = null;\n rendererMain = null;\n async init(rendererMain, rendererSettings, canvas) {\n this.stage = new Stage({\n rootId: getNewId(),\n appWidth: rendererSettings.appWidth,\n appHeight: rendererSettings.appHeight,\n txMemByteThreshold: rendererSettings.txMemByteThreshold,\n boundsMargin: rendererSettings.boundsMargin,\n deviceLogicalPixelRatio: rendererSettings.deviceLogicalPixelRatio,\n devicePhysicalPixelRatio: rendererSettings.devicePhysicalPixelRatio,\n clearColor: rendererSettings.clearColor,\n canvas,\n fpsUpdateInterval: rendererSettings.fpsUpdateInterval,\n enableContextSpy: rendererSettings.enableContextSpy,\n numImageWorkers: rendererSettings.numImageWorkers,\n debug: {\n monitorTextureCache: false,\n },\n });\n this.rendererMain = rendererMain;\n assertTruthy(this.stage.root);\n const node = new MainOnlyNode(rendererMain.resolveNodeDefaults({}), this.rendererMain, this.stage, this.stage.root);\n this.root = node;\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n // Load the Core Extension Module if one was specified.\n if (rendererSettings.coreExtensionModule) {\n await loadCoreExtension(rendererSettings.coreExtensionModule, this.stage);\n }\n // Forward fpsUpdate events from the stage to RendererMain\n this.stage.on('fpsUpdate', ((stage, fpsData) => {\n this.onFpsUpdate(fpsData);\n }));\n this.stage.on('frameTick', ((stage, frameTickData) => {\n this.onFrameTick(frameTickData);\n }));\n this.stage.on('idle', () => {\n this.onIdle();\n });\n }\n createNode(props) {\n assertTruthy(this.rendererMain);\n assertTruthy(this.stage);\n const node = new MainOnlyNode(props, this.rendererMain, this.stage);\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n return node;\n }\n createTextNode(props) {\n assertTruthy(this.rendererMain);\n assertTruthy(this.stage);\n const node = new MainOnlyTextNode(props, this.rendererMain, this.stage);\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n return node;\n }\n // TODO: Remove?\n destroyNode(node) {\n node.destroy();\n }\n releaseTexture(id) {\n const { stage } = this;\n assertTruthy(stage);\n stage.txManager.removeTextureIdFromCache(id);\n }\n getRootNode() {\n assertTruthy(this.root);\n return this.root;\n }\n //#region Event Methods\n // The implementations for these event methods are provided by RendererMain\n onCreateNode(node) {\n throw new Error('Method not implemented.');\n }\n onBeforeDestroyNode(node) {\n throw new Error('Method not implemented.');\n }\n onFpsUpdate(fpsData) {\n throw new Error('Method not implemented.');\n }\n onFrameTick(frameTickData) {\n throw new Error('Method not implemented.');\n }\n onIdle() {\n throw new Error('Method not implemented.');\n }\n}\n//# sourceMappingURL=MainCoreDriver.js.map","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = (n + m) >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;\n else if (cmp < 0) n = k - 1;\n else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined\n};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned\n ? UNOWNED\n : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);\n else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(\n () => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n },\n undefined,\n false,\n 0\n ),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if ((arguments.length === 2 && typeof pFetcher === \"object\") || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;\n else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v;\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated)\n queueMicrotask(() =>\n options.onHydrated(key, {\n value: v\n })\n );\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);\n else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p =\n initP !== NO_INIT\n ? initP\n : untrack(() =>\n fetcher(lookup, {\n value: value(),\n refetching\n })\n );\n if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"value\" in p) {\n if (p.status === \"success\") loadEnd(pr, p.value, undefined, lookup);\n else loadEnd(pr, undefined, undefined, lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => (scheduled = false));\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(\n v => loadEnd(p, v, undefined, lookup),\n e => loadEnd(p, undefined, castError(e), lookup)\n );\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));\n else load(false);\n return [\n read,\n {\n refetch: load,\n mutate: setValue\n }\n ];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(\n () => {\n if (!t || !t.fn)\n t = requestCallback(\n () => setDeferred(() => node.value),\n timeout !== undefined\n ? {\n timeout\n }\n : undefined\n );\n return source();\n },\n undefined,\n true\n );\n const [deferred, setDeferred] = createSignal(\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n options\n );\n updateComputation(node);\n setDeferred(() =>\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(\n p => {\n const v = source();\n for (const [key, val] of subs.entries())\n if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);\n else Effects.push(c);\n }\n }\n return v;\n },\n undefined,\n true,\n STALE\n );\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if ((l = subs.get(key))) l.add(listener);\n else subs.set(key, (l = new Set([listener])));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(\n key,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null);\n else if (Owner.cleanups === null) Owner.cleanups = [fn];\n else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t =\n Transition ||\n (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => (t.resolve = res)));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/ createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n return Owner && Owner.context && Owner.context[context.id] !== undefined\n ? Owner.context[context.id]\n : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const { factory: oldFactory, untrack: oldUntrack } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);\n else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current =\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || (!isComp && Transition.sources.has(node))) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;\n else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false);\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(\n node,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n time\n );\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null);\n else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];\n else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];\n else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;\n else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);\n else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);\n else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n } else if (sharedConfig.effects) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n setHydrateContext();\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;\n else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount))\n runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;\n else o.state = PENDING;\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;\n else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, (owner && owner.owner) || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects)\n Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });\n else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(\n () =>\n (res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n })),\n undefined\n );\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null);\n else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler =\n typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => (\"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub()));\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n } else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (\n start = 0, end = Math.min(len, newLen);\n start < end && items[start] === newItems[start];\n start++\n );\n for (\n end = len - 1, newEnd = newLen - 1;\n end >= start && newEnd >= start && items[end] === newItems[newEnd];\n end--, newEnd--\n ) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, (len = newLen));\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return (mapped = mapped.slice(0, len));\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || (!!s && $PROXY in s);\n sources[i] = typeof s === \"function\" ? ((proxy = true), createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy(\n {\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++)\n keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n },\n propTraps\n );\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get\n ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind((sourcesMap[key] = [desc.get.bind(source)]))\n }\n : desc.value !== undefined\n ? desc\n : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));\n else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);\n else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n if ($PROXY in props) {\n const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n const res = keys.map(k => {\n return new Proxy(\n {\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n },\n propTraps\n );\n });\n res.push(\n new Proxy(\n {\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n },\n propTraps\n )\n );\n return res;\n }\n const otherObject = {};\n const objects = keys.map(() => ({}));\n for (const propName of Object.getOwnPropertyNames(props)) {\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc =\n !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n let blocked = false;\n let objectIndex = 0;\n for (const k of keys) {\n if (k.includes(propName)) {\n blocked = true;\n isDefaultDesc\n ? (objects[objectIndex][propName] = desc.value)\n : Object.defineProperty(objects[objectIndex], propName, desc);\n }\n ++objectIndex;\n }\n if (!blocked) {\n isDefaultDesc\n ? (otherObject[propName] = desc.value)\n : Object.defineProperty(otherObject, propName, desc);\n }\n }\n return [...objects, otherObject];\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(\n () =>\n (Comp = comp()) &&\n untrack(() => {\n if (false);\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n })\n );\n };\n wrap.preload = () => p || ((p = fn()).then(mod => (comp = () => mod.default)), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => (keyed ? a === b : !a === !b)\n });\n return createMemo(\n () => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n keyed\n ? c\n : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return props.when;\n }\n )\n )\n : child;\n }\n return props.fallback;\n },\n undefined,\n undefined\n );\n}\nfunction Switch(props) {\n let keyed = false;\n const equals = (a, b) => (keyed ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(\n () => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n },\n undefined,\n {\n equals\n }\n );\n return createMemo(\n () => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n return fn\n ? untrack(() =>\n c(\n keyed\n ? when\n : () => {\n if (untrack(evalConditions)[0] !== index) throw narrowedError(\"Match\");\n return cond.when;\n }\n )\n )\n : c;\n },\n undefined,\n undefined\n );\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load)\n err = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count);\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(\n () => {\n let e;\n if ((e = errored())) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n },\n undefined,\n undefined\n );\n}\n\nconst suspenseListEquals = (a, b) =>\n a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(\n prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n { showContent = true, showFallback = true } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || (next && tail === \"collapsed\") ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n },\n {\n inFallback: false\n }\n );\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.status !== \"success\") p = ref;\n else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(\n () => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n },\n err => {\n error = err;\n set();\n }\n );\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return (flicker = undefined);\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n { showContent = true, showFallback = true } = show ? show() : {};\n if ((!inFallback || (p && p !== \"$$f\")) && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport {\n $DEVCOMP,\n $PROXY,\n $TRACK,\n DEV,\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n batch,\n cancelCallback,\n catchError,\n children,\n createComponent,\n createComputed,\n createContext,\n createDeferred,\n createEffect,\n createMemo,\n createReaction,\n createRenderEffect,\n createResource,\n createRoot,\n createSelector,\n createSignal,\n createUniqueId,\n enableExternalSource,\n enableHydration,\n enableScheduling,\n equalFn,\n from,\n getListener,\n getOwner,\n indexArray,\n lazy,\n mapArray,\n mergeProps,\n observable,\n on,\n onCleanup,\n onError,\n onMount,\n requestCallback,\n resetErrorBoundaries,\n runWithOwner,\n sharedConfig,\n splitProps,\n startTransition,\n untrack,\n useContext,\n useTransition\n};\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n MainCoreDriver,\n RendererMain,\n type RendererMainSettings,\n} from '@lightningjs/renderer';\n\nexport let renderer: RendererMain;\nexport let createShader: RendererMain['createShader'];\n\nexport interface SolidRendererOptions extends RendererMainSettings {\n threadXCoreWorkerUrl?: string;\n rootId: string | HTMLElement;\n}\n\nexport function getRenderer(): RendererMain {\n return renderer;\n}\n\nexport function startLightningRenderer(\n options: Partial = {},\n rootId: string | HTMLElement = 'app',\n): RendererMain {\n const driver = new MainCoreDriver();\n renderer = new RendererMain(options, rootId, driver);\n createShader = renderer.createShader.bind(renderer);\n return renderer;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ElementNode, SolidNode } from './index.js';\n\n/**\n * Children class\n */\nexport default class Children extends Array {\n _parent: ElementNode;\n\n constructor(node: ElementNode) {\n super();\n this._parent = node;\n }\n\n get selected(): ElementNode | undefined {\n // For selected Elements should always be an ElementNode\n return this[this._parent.selected || 0] as ElementNode | undefined;\n }\n\n get firstChild() {\n return this[0];\n }\n\n insert(node: SolidNode, beforeNode: SolidNode) {\n if (beforeNode) {\n const index = this.indexOf(beforeNode);\n this.splice(index, 0, node);\n } else {\n this.push(node);\n }\n\n node.parent = this._parent;\n this._parent._isDirty = true;\n }\n\n remove(node: SolidNode) {\n const nodeIndexToRemove = this.indexOf(node);\n if (nodeIndexToRemove >= 0) {\n this.splice(nodeIndexToRemove, 1);\n }\n }\n}\n","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n AnimationSettings,\n RendererMainSettings,\n} from '@lightningjs/renderer';\nimport type { IntrinsicTextNodeStyleProps } from './intrinsicTypes.js';\n\ninterface Config {\n debug: boolean;\n animationSettings: Partial;\n animationsEnabled: boolean;\n fontSettings: Partial;\n rendererOptions?: Partial;\n}\n\nfunction isDevEnv(): boolean {\n return import.meta.env && import.meta.env.DEV;\n}\nexport const isDev = isDevEnv() || false;\n\nexport const config: Config = {\n debug: false,\n animationsEnabled: true,\n animationSettings: {\n duration: 250,\n easing: 'ease-in-out',\n },\n fontSettings: {\n fontFamily: 'Ubuntu',\n fontSize: 100,\n },\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { config, isDev } from '../config.js';\nimport type { SolidNode, SolidStyles } from './node/index.js';\n\nfunction hasDebug(node: any) {\n return isObject(node) && node.debug;\n}\n\nexport function log(msg: string, node: SolidNode, ...args: any[]) {\n if (isDev) {\n if (config.debug || hasDebug(node) || hasDebug(args[0])) {\n console.log(msg, node, ...args);\n }\n }\n}\n\nexport function isFunc(item: unknown): item is (...args: unknown[]) => unknown {\n return typeof item === 'function';\n}\n\nexport function isObject(\n item: unknown,\n): item is Record {\n return typeof item === 'object';\n}\n\nexport function isArray(item: unknown): item is any[] {\n return Array.isArray(item);\n}\n\nexport function isString(item: unknown): item is string {\n return typeof item === 'string';\n}\n\nexport function isNumber(item: unknown): item is number {\n return typeof item === 'number';\n}\n\nexport function isInteger(item: unknown): item is number {\n return Number.isInteger(item);\n}\n\nexport function keyExists(\n obj: Record,\n keys: (string | number | symbol)[],\n) {\n for (const key of keys) {\n if (key in obj) {\n return true;\n }\n }\n return false;\n}\n\nexport function flattenStyles(\n obj: SolidStyles | undefined | (SolidStyles | undefined)[],\n result: Record = {},\n): SolidStyles {\n if (isArray(obj)) {\n obj.forEach((item) => {\n flattenStyles(item, result);\n });\n } else if (obj) {\n // handle the case where the object is not an array\n for (const key in obj) {\n // be careful of 0 values\n if (result[key as keyof SolidStyles] === undefined) {\n result[key as keyof SolidStyles] = obj[key as keyof SolidStyles];\n }\n }\n }\n\n return result;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isArray, isString } from '../utils.js';\n\nexport type NodeStates =\n | string[]\n | string\n | Record;\n\nexport default class States extends Array {\n private onChange: () => void;\n\n constructor(callback: () => void, initialState: NodeStates = {}) {\n if (isArray(initialState)) {\n super(...initialState);\n } else if (isString(initialState)) {\n super(initialState);\n } else {\n super(\n ...Object.entries(initialState)\n .filter(([_key, value]) => value)\n .map(([key]) => key),\n );\n }\n\n this.onChange = callback;\n return this;\n }\n\n has(state: string) {\n return this.indexOf(state) >= 0;\n }\n\n is(state: string) {\n return this.indexOf(state) >= 0;\n }\n\n add(state: string) {\n this.push(state);\n this.onChange();\n }\n\n toggle(state: string) {\n if (this.has(state)) {\n this.remove(state);\n } else {\n this.add(state);\n }\n }\n\n remove(state: string) {\n const stateIndexToRemove = this.indexOf(state);\n if (stateIndexToRemove >= 0) {\n this.splice(stateIndexToRemove, 1);\n this.onChange();\n }\n }\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createSignal } from 'solid-js';\nimport type { ElementNode } from './node/index.js';\nexport const [activeElement, setActiveElement] = createSignal<\n ElementNode | undefined\n>(undefined);\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { renderer, createShader } from '../lightningInit.js';\nimport {\n type BorderStyleObject,\n type IntrinsicCommonProps,\n type IntrinsicNodeProps,\n type IntrinsicTextProps,\n type NodeStyles,\n type TextStyles,\n} from '../../index.js';\nimport Children from './children.js';\nimport States, { type NodeStates } from './states.js';\nimport calculateFlex from '../flex.js';\nimport {\n log,\n isArray,\n isNumber,\n isFunc,\n keyExists,\n flattenStyles,\n} from '../utils.js';\nimport { config } from '../../config.js';\nimport { setActiveElement } from '../activeElement.js';\nimport type {\n RendererMain,\n INode,\n INodeAnimatableProps,\n INodeWritableProps,\n ShaderRef,\n Dimensions,\n AnimationSettings,\n NodeLoadedPayload,\n} from '@lightningjs/renderer';\nimport { assertTruthy } from '@lightningjs/renderer/utils';\n\nconst { animationSettings: defaultAnimationSettings } = config;\n\nfunction convertEffectsToShader(styleEffects: any) {\n const effects = [];\n\n for (const [type, props] of Object.entries>(\n styleEffects,\n )) {\n effects.push({ type, props });\n }\n return createShader('DynamicShader', { effects: effects as any });\n}\n\nfunction borderAccessor(\n direction: '' | 'Top' | 'Right' | 'Bottom' | 'Left' = '',\n) {\n return {\n set(\n this: ElementNode,\n value: number | { width: number; color: number | string },\n ) {\n // Format: width || { width, color }\n if (isNumber(value)) {\n value = { width: value, color: 0x000000ff };\n }\n this.effects = {\n ...(this.effects || {}),\n ...{ [`border${direction}`]: value },\n };\n this[`_border${direction}`] = value;\n },\n get(this: ElementNode) {\n return this[`_border${direction}`];\n },\n };\n}\n\nconst LightningRendererNumberProps = [\n 'alpha',\n 'color',\n 'colorTop',\n 'colorRight',\n 'colorLeft',\n 'colorBottom',\n 'colorTl',\n 'colorTr',\n 'colorBl',\n 'colorBr',\n 'height',\n 'fontSize',\n 'lineHeight',\n 'mount',\n 'mountX',\n 'mountY',\n 'pivot',\n 'pivotX',\n 'pivotY',\n 'rotation',\n 'scale',\n 'width',\n 'worldX',\n 'worldY',\n 'x',\n 'y',\n 'zIndex',\n 'zIndexLocked',\n];\n\nconst LightningRendererNonAnimatingProps = [\n 'autosize',\n 'clipping',\n 'contain',\n 'fontFamily',\n 'fontStretch',\n 'fontStyle',\n 'fontWeight',\n 'letterSpacing',\n 'maxLines',\n 'offsetY',\n 'overflowSuffix',\n 'rtt',\n 'scrollable',\n 'scrollY',\n 'src',\n 'text',\n 'textAlign',\n 'textBaseline',\n 'textOverflow',\n 'texture',\n 'verticalAlign',\n 'wordWrap',\n];\n\nexport interface TextNode {\n id?: string;\n name: string;\n text: string;\n parent: ElementNode | undefined;\n zIndex?: number;\n states?: States;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n marginLeft?: number;\n marginRight?: number;\n marginTop?: number;\n marginBottom?: number;\n flexItem?: boolean;\n flexOrder?: number;\n _queueDelete?: boolean;\n}\n\nexport type SolidNode = ElementNode | TextNode;\nexport type SolidStyles = NodeStyles | TextStyles;\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport interface ElementNode\n extends Partial>,\n IntrinsicCommonProps {\n [key: string]: unknown;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport class ElementNode extends Object {\n id?: string;\n debug?: boolean;\n name: string;\n lng: INode | undefined;\n renderer?: RendererMain;\n selected?: number;\n autofocus?: boolean;\n flexItem?: boolean;\n flexOrder?: number;\n flexBoundary?: 'contain' | 'fixed'; // default is undefined - contained for flex calculated size\n _queueDelete?: boolean;\n forwardFocus?:\n | number\n | ((this: ElementNode, elm: ElementNode) => boolean | void);\n\n private _undoStyles?: string[];\n private _renderProps?: IntrinsicNodeProps | IntrinsicTextProps;\n private _effects: any;\n private _parent: ElementNode | undefined;\n private _shader?: ShaderRef;\n private _style?: SolidStyles;\n private _states?: States;\n private _events?: Array<\n [string, (target: ElementNode, event?: Event) => void]\n >;\n private _animationSettings?: Partial;\n public _borderRadius?: number;\n public _border?: BorderStyleObject;\n public _borderLeft?: BorderStyleObject;\n public _borderRight?: BorderStyleObject;\n public _borderTop?: BorderStyleObject;\n public _borderBottom?: BorderStyleObject;\n public _autosized?: boolean; // Public but uses _ prefix\n public _isDirty?: boolean; // Public but uses _ prefix\n private _animationQueue: Array<{\n props: Partial;\n animationSettings?: Partial;\n }> = [];\n private _animationQueueSettings: Partial | undefined;\n private _animationRunning: boolean = false;\n children: Children;\n\n constructor(name: string) {\n super();\n this.name = name;\n this._renderProps = {};\n this.children = new Children(this);\n }\n\n get effects() {\n return this._effects;\n }\n\n set effects(v) {\n this._effects = v;\n if (this.lng) {\n this.shader = convertEffectsToShader(v);\n }\n }\n\n get parent() {\n return this._parent;\n }\n\n set parent(p) {\n this._parent = p;\n if (this.lng) {\n this.lng.parent = p?.lng ?? null;\n }\n }\n\n get shader(): ShaderRef | undefined {\n return this._shader;\n }\n\n set shader(v: Parameters | ShaderRef | undefined) {\n if (isArray(v)) {\n this._shader = createShader(...v) as ShaderRef;\n } else {\n this._shader = v;\n }\n this._sendToLightning('shader', this._shader);\n }\n\n _sendToLightningAnimatable(name: string, value: number | string) {\n if (this.lng) {\n if (\n config.animationsEnabled &&\n this.transition &&\n (this.transition === true || this.transition[name])\n ) {\n const animationSettings =\n this.transition === true || this.transition[name] === true\n ? undefined\n : (this.transition[name] as undefined | AnimationSettings);\n\n return this.animate({ [name]: value }, animationSettings).start();\n }\n\n (this.lng[name as keyof INode] as number | string) = value;\n } else {\n this._renderProps![name] = value;\n }\n }\n\n _sendToLightning(name: string, value: unknown) {\n if (this.lng) {\n (this.lng[name as keyof INodeWritableProps] as unknown) = value;\n } else {\n this._renderProps![name] = value;\n }\n }\n\n animate(\n props: Partial,\n animationSettings?: Partial,\n ) {\n assertTruthy(this.lng, 'Node must be rendered before animating');\n return this.lng.animate(props, animationSettings || this.animationSettings);\n }\n\n chain(\n props: Partial,\n animationSettings?: Partial,\n ) {\n if (this._animationRunning) {\n this._animationQueue = [];\n this._animationRunning = false;\n }\n\n if (animationSettings) {\n this._animationQueueSettings = animationSettings;\n } else if (!this._animationQueueSettings) {\n this._animationQueueSettings =\n animationSettings || this.animationSettings;\n }\n animationSettings = animationSettings || this._animationQueueSettings;\n this._animationQueue.push({ props, animationSettings });\n return this;\n }\n\n async start() {\n let animation = this._animationQueue.shift();\n while (animation) {\n this._animationRunning = true;\n await this.animate(animation.props, animation.animationSettings)\n .start()\n .waitUntilStopped();\n animation = this._animationQueue.shift();\n }\n this._animationRunning = false;\n this._animationQueueSettings = undefined;\n }\n\n setFocus() {\n if (this.lng) {\n // can be 0\n if (this.forwardFocus !== undefined) {\n if (isFunc(this.forwardFocus)) {\n if (this.forwardFocus.call(this, this) !== false) {\n return;\n }\n } else {\n const focusedIndex =\n typeof this.forwardFocus === 'number' ? this.forwardFocus : null;\n if (focusedIndex !== null && focusedIndex < this.children.length) {\n const child = this.children[focusedIndex];\n child instanceof ElementNode && child.setFocus();\n return;\n }\n }\n }\n // Delay setting focus so children can render (useful for Row + Column)\n queueMicrotask(() => setActiveElement(this));\n } else {\n this.autofocus = true;\n }\n }\n\n isTextNode() {\n return this.name === 'text';\n }\n\n _resizeOnTextLoad() {\n this.lng!.on('loaded', (_node: INode, loadedPayload: NodeLoadedPayload) => {\n if (loadedPayload.type === 'text') {\n const { dimensions } = loadedPayload;\n this.parent!.updateLayout(this, dimensions);\n }\n });\n }\n\n getText() {\n return this.children.map((c) => c.text).join('');\n }\n\n destroy() {\n if (this._queueDelete) {\n this.lng?.destroy();\n }\n }\n // Must be set before render\n set onEvents(\n events: Array<[string, (target: ElementNode, event?: any) => void]>,\n ) {\n this._events = events;\n }\n\n get onEvents() {\n return this._events || [];\n }\n\n set style(values: SolidStyles | (SolidStyles | undefined)[]) {\n if (isArray(values)) {\n this._style = flattenStyles(values);\n } else {\n this._style = values;\n }\n // Keys set in JSX are more important\n for (const key in this._style) {\n // be careful of 0 values\n if (this[key as keyof SolidStyles] === undefined) {\n this[key as keyof SolidStyles] = this._style[key as keyof SolidStyles];\n }\n }\n }\n\n get style(): SolidStyles {\n return this._style!;\n }\n\n get hasChildren() {\n return this.children.length > 0;\n }\n\n getChildById(id: string) {\n return this.children.find((c) => c.id === id);\n }\n\n searchChildrenById(id: string): SolidNode | undefined {\n // traverse all the childrens children\n for (let i=0; i < this.children.length; i++) {\n const child = this.children[i];\n if (child instanceof ElementNode) {\n if (child.id === id) {\n return child;\n }\n\n const found = child.searchChildrenById(id);\n if (found) {\n return found;\n }\n }\n }\n }\n\n set states(states: NodeStates) {\n this._states = new States(this._stateChanged.bind(this), states);\n if (this.lng) {\n this._stateChanged();\n }\n }\n\n get states(): States {\n this._states = this._states || new States(this._stateChanged.bind(this));\n return this._states;\n }\n\n get animationSettings(): Partial {\n return this._animationSettings || defaultAnimationSettings;\n }\n\n set animationSettings(animationSettings: Partial) {\n this._animationSettings = animationSettings;\n }\n\n updateLayout(child?: ElementNode, dimensions?: Dimensions) {\n if (this.hasChildren) {\n log('Layout: ', this);\n let changedLayout = false;\n if (isFunc(this.onBeforeLayout)) {\n changedLayout = this.onBeforeLayout.call(\n this,\n child,\n dimensions,\n ) as boolean;\n }\n\n if (this.display === 'flex') {\n if (calculateFlex(this) || changedLayout) {\n this.parent?.updateLayout();\n }\n } else if (changedLayout) {\n this.parent?.updateLayout();\n }\n\n isFunc(this.onLayout) && this.onLayout.call(this, child, dimensions);\n }\n }\n\n _stateChanged() {\n log('State Changed: ', this, this.states);\n\n if (this.forwardStates) {\n // apply states to children first\n const states = this.states.slice() as States;\n this.children.forEach((c) => (c.states = states));\n }\n\n const states = this.states;\n\n if (this._undoStyles || (this.style && keyExists(this.style, states))) {\n this._undoStyles = this._undoStyles || [];\n const stylesToUndo: { [key: string]: any } = {};\n\n this._undoStyles.forEach((styleKey) => {\n stylesToUndo[styleKey] = this.style[styleKey];\n });\n\n const newStyles = states.reduce((acc, state) => {\n const styles = this.style[state];\n if (styles) {\n acc = {\n ...acc,\n ...styles,\n };\n }\n return acc;\n }, {});\n\n this._undoStyles = Object.keys(newStyles);\n\n // Apply transition first\n if ((newStyles as any).transition !== undefined) {\n this.transition = (newStyles as any).transition;\n }\n\n // Apply the styles\n Object.assign(this, stylesToUndo, newStyles);\n }\n }\n\n render() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const node = this;\n const parent = this.parent;\n\n if (!parent) {\n console.warn('Parent not set - no node created for: ', this);\n return;\n }\n\n if (!parent.lng) {\n console.warn('Parent not rendered yet: ', this);\n return;\n }\n\n if (this.lng) {\n console.warn('Node already rendered: ', this);\n return;\n }\n\n // Parent is dirty whenever a node is inserted after initial render\n if (parent._isDirty) {\n parent.updateLayout();\n parent._isDirty = false;\n }\n\n if (this.states.length) {\n this._stateChanged();\n }\n\n const props = node._renderProps as IntrinsicNodeProps | IntrinsicTextProps;\n props.x = props.x || 0;\n props.y = props.y || 0;\n\n if (parent.lng) {\n props.parent = parent.lng;\n }\n\n if (node._effects) {\n this.shader = convertEffectsToShader(node._effects);\n }\n\n if (node.isTextNode()) {\n if (config.fontSettings) {\n for (const key in config.fontSettings) {\n if (props[key] === undefined) {\n props[key] = config.fontSettings[key];\n }\n }\n }\n props.text = node.getText();\n\n if (props.contain) {\n if (!props.width) {\n props.width =\n (parent.width || 0) - props.x - (props.marginRight || 0);\n node._autosized = true;\n }\n\n if (props.contain === 'both' && !props.height && !props.maxLines) {\n props.height =\n (parent.height || 0) - props.y - (props.marginBottom || 0);\n node._autosized = true;\n }\n }\n\n log('Rendering: ', this, props);\n node.lng = renderer.createTextNode(props);\n\n if (!props.width || !props.height) {\n node._autosized = true;\n node._resizeOnTextLoad();\n }\n } else {\n // If its not an image or texture apply some defaults\n if (!props.texture) {\n // Set width and height to parent less offset\n if (isNaN(props.width as number)) {\n props.width = (parent.width || 0) - props.x;\n node._autosized = true;\n }\n\n if (isNaN(props.height as number)) {\n props.height = (parent.height || 0) - props.y;\n node._autosized = true;\n }\n\n if (!props.color && !props.src) {\n // Default color to transparent - If you later set a src, you'll need\n // to set color '#ffffffff'\n props.color = 0x00000000;\n }\n }\n\n log('Rendering: ', this, props);\n node.lng = renderer.createNode(props);\n }\n\n if (node.onFail) {\n node.lng.on('failed', node.onFail);\n }\n\n if (node.onLoad) {\n node.lng.on('loaded', node.onLoad);\n }\n\n isFunc(this.onCreate) && this.onCreate.call(this, node);\n\n node.onEvents.forEach(([name, handler]) => {\n node.lng?.on(name, (inode, data) => handler(node, data));\n });\n\n // L3 Inspector adds div to the lng object\n //@ts-expect-error - div is not in the typings\n if (node.lng.div) {\n //@ts-expect-error - div is not in the typings\n node.lng.div.solid = node;\n }\n\n if (node.name !== 'text') {\n node.children.forEach((c) => {\n if ((c as ElementNode).render) {\n (c as ElementNode).render();\n } else if (c.text !== '') {\n // Solid Show uses an empty text node as a placeholder\n console.warn('TextNode outside of : ', c);\n }\n });\n }\n\n node.autofocus && node.setFocus();\n // clean up after first render;\n delete this._renderProps;\n }\n}\n\nfor (const key of LightningRendererNumberProps) {\n Object.defineProperty(ElementNode.prototype, key, {\n get(): number {\n return this.lng ? this.lng[key] : this._renderProps[key];\n },\n set(v: number) {\n this._sendToLightningAnimatable(key, v);\n },\n });\n}\n\nfor (const key of LightningRendererNonAnimatingProps) {\n Object.defineProperty(ElementNode.prototype, key, {\n get() {\n return this.lng ? this.lng[key] : this._renderProps[key];\n },\n set(v) {\n this._sendToLightning(key, v);\n },\n });\n}\n\n// Add Border Helpers\nObject.defineProperties(ElementNode.prototype, {\n borderRadius: {\n set(this: ElementNode, radius) {\n this._borderRadius = radius;\n this.effects = {\n ...(this.effects || {}),\n ...{ radius: { radius } },\n };\n },\n get(this: ElementNode) {\n return this._borderRadius;\n },\n },\n border: borderAccessor(),\n borderLeft: borderAccessor('Left'),\n borderRight: borderAccessor('Right'),\n borderTop: borderAccessor('Top'),\n borderBottom: borderAccessor('Bottom'),\n});\n\nObject.defineProperties(ElementNode.prototype, {\n linearGradient: {\n set(props = {}) {\n this._linearGradient = props;\n this.effects = {\n ...(this.effects || {}),\n ...{ linearGradient: props },\n };\n },\n get() {\n return this._linearGradient;\n },\n },\n});\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { assertTruthy } from '@lightningjs/renderer/utils';\nimport type { ElementNode, SolidNode } from './node/index.js';\n\nexport default function (node: ElementNode): boolean {\n const children = [];\n let hasOrder = false;\n for (let i = 0; i < node.children.length; i++) {\n const c = node.children[i]!;\n // Filter empty text nodes which are place holders for and elements missing dimensions\n if (c.name === 'TextNode') {\n continue;\n }\n\n // Skip layout for non flex items\n if (c.flexItem === false) {\n continue;\n }\n\n // text node hasnt loaded yet - skip layout\n if (c.name === 'text' && c.text !== '' && !(c.width || c.height)) {\n return false;\n }\n\n if (c.flexOrder !== undefined) {\n hasOrder = true;\n }\n\n children.push(c);\n }\n\n if (hasOrder) {\n children.sort((a, b) => (a.flexOrder || 0) - (b.flexOrder || 0));\n }\n\n const numChildren = children.length;\n const direction = node.flexDirection || 'row';\n const isRow = direction === 'row';\n const dimension = isRow ? 'width' : 'height';\n const crossDimension = isRow ? 'height' : 'width';\n const marginOne = isRow ? 'marginLeft' : 'marginTop';\n const marginTwo = isRow ? 'marginRight' : 'marginBottom';\n const prop = isRow ? 'x' : 'y';\n const crossProp = isRow ? 'y' : 'x';\n const containerSize = node[dimension] || 0;\n const containerCrossSize = node[crossDimension] || 0;\n const gap = node.gap || 0;\n const justify = node.justifyContent || 'flexStart';\n const align = node.alignItems;\n let itemSize = 0;\n if (['center', 'spaceBetween', 'spaceEvenly'].includes(justify)) {\n itemSize = children.reduce((prev, c) => prev + (c[dimension] || 0), 0);\n }\n\n // Only align children if container has a cross size\n const crossAlignChild =\n containerCrossSize && align\n ? (c: SolidNode) => {\n if (align === 'flexStart') {\n c[crossProp] = 0;\n } else if (align === 'center') {\n c[crossProp] = (containerCrossSize - (c[crossDimension] || 0)) / 2;\n } else if (align === 'flexEnd') {\n c[crossProp] = containerCrossSize - (c[crossDimension] || 0);\n }\n }\n : (c: SolidNode) => c;\n\n if (justify === 'flexStart') {\n let start = 0;\n children.forEach((c) => {\n c[prop] = start + (c[marginOne] || 0);\n start +=\n (c[dimension] || 0) + gap + (c[marginOne] || 0) + (c[marginTwo] || 0);\n crossAlignChild(c);\n });\n // Update container size\n if (node.flexBoundary !== 'fixed') {\n const calculatedSize = start - gap;\n if (calculatedSize !== node[dimension]) {\n node[dimension] = calculatedSize;\n return true;\n }\n }\n } else if (justify === 'flexEnd') {\n let start = containerSize;\n for (let i = numChildren - 1; i >= 0; i--) {\n const c = children[i];\n assertTruthy(c);\n c[prop] = start - (c[dimension] || 0) - (c[marginTwo] || 0);\n start -=\n (c[dimension] || 0) + gap + (c[marginOne] || 0) + (c[marginTwo] || 0);\n crossAlignChild(c);\n }\n } else if (justify === 'center') {\n let start = (containerSize - (itemSize + gap * (numChildren - 1))) / 2;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + gap;\n crossAlignChild(c);\n });\n } else if (justify === 'spaceBetween') {\n const toPad = (containerSize - itemSize) / (numChildren - 1);\n let start = 0;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + toPad;\n crossAlignChild(c);\n });\n } else if (justify === 'spaceEvenly') {\n const toPad = (containerSize - itemSize) / (numChildren + 1);\n let start = toPad;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + toPad;\n crossAlignChild(c);\n });\n }\n\n // Container was not updated\n return false;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { type Component } from \"solid-js\";\nimport type { IntrinsicTextProps } from \"../intrinsicTypes.js\";\n\nexport const Text: Component = (props) => \n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { type Component } from \"solid-js\";\nimport { type IntrinsicNodeProps } from \"../intrinsicTypes.js\";\n\nexport const View: Component = (props) =>\n ;\n","import {\n createRoot,\n createRenderEffect,\n mergeProps,\n createMemo,\n createComponent,\n untrack\n} from \"solid-js\";\n\nfunction createRenderer$1({\n createElement,\n createTextNode,\n isTextNode,\n replaceText,\n insertNode,\n removeNode,\n setProperty,\n getParentNode,\n getFirstChild,\n getNextSibling\n}) {\n function insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n }\n function insertExpression(parent, value, current, marker, unwrapArray) {\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n if (t === \"string\" || t === \"number\") {\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && isTextNode(node)) {\n replaceText(node, value);\n } else node = createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n replaceText(getFirstChild(parent), (current = value));\n } else {\n cleanChildren(parent, current, marker, createTextNode(value));\n current = value;\n }\n }\n } else if (value == null || t === \"boolean\") {\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n if (normalizeIncomingArray(array, value, unwrapArray)) {\n createRenderEffect(\n () => (current = insertExpression(parent, array, current, marker, true))\n );\n return () => current;\n }\n if (array.length === 0) {\n const replacement = cleanChildren(parent, current, marker);\n if (multi) return (current = replacement);\n } else {\n if (Array.isArray(current)) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else if (current == null || current === \"\") {\n appendNodes(parent, array);\n } else {\n reconcileArrays(parent, (multi && current) || [getFirstChild(parent)], array);\n }\n }\n current = array;\n } else {\n if (Array.isArray(current)) {\n if (multi) return (current = cleanChildren(parent, current, marker, value));\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !getFirstChild(parent)) {\n insertNode(parent, value);\n } else replaceNode(parent, value, getFirstChild(parent));\n current = value;\n }\n return current;\n }\n function normalizeIncomingArray(normalized, array, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n t;\n if (item == null || item === true || item === false);\n else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item) || dynamic;\n } else if ((t = typeof item) === \"string\" || t === \"number\") {\n normalized.push(createTextNode(item));\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic =\n normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else normalized.push(item);\n }\n return dynamic;\n }\n function reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = getNextSibling(a[aEnd - 1]),\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node =\n bEnd < bLength ? (bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart]) : after;\n while (bStart < bEnd) insertNode(parentNode, b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) removeNode(parentNode, a[aStart]);\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = getNextSibling(a[--aEnd]);\n insertNode(parentNode, b[bStart++], getNextSibling(a[aStart++]));\n insertNode(parentNode, b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) insertNode(parentNode, b[bStart++], node);\n } else replaceNode(parentNode, b[bStart++], a[aStart++]);\n } else aStart++;\n } else removeNode(parentNode, a[aStart++]);\n }\n }\n }\n function cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) {\n let removed;\n while ((removed = getFirstChild(parent))) removeNode(parent, removed);\n replacement && insertNode(parent, replacement);\n return \"\";\n }\n const node = replacement || createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = getParentNode(el) === parent;\n if (!inserted && !i)\n isParent ? replaceNode(parent, node, el) : insertNode(parent, node, marker);\n else isParent && removeNode(parent, el);\n } else inserted = true;\n }\n } else insertNode(parent, node, marker);\n return [node];\n }\n function appendNodes(parent, array, marker) {\n for (let i = 0, len = array.length; i < len; i++) insertNode(parent, array[i], marker);\n }\n function replaceNode(parent, newNode, oldNode) {\n insertNode(parent, newNode, oldNode);\n removeNode(parent, oldNode);\n }\n function spreadExpression(node, props, prevProps = {}, skipChildren) {\n props || (props = {});\n if (!skipChildren) {\n createRenderEffect(\n () => (prevProps.children = insertExpression(node, props.children, prevProps.children))\n );\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => {\n for (const prop in props) {\n if (prop === \"children\" || prop === \"ref\") continue;\n const value = props[prop];\n if (value === prevProps[prop]) continue;\n setProperty(node, prop, value, prevProps[prop]);\n prevProps[prop] = value;\n }\n });\n return prevProps;\n }\n return {\n render(code, element) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n insert(element, code());\n });\n return disposer;\n },\n insert,\n spread(node, accessor, skipChildren) {\n if (typeof accessor === \"function\") {\n createRenderEffect(current => spreadExpression(node, accessor(), current, skipChildren));\n } else spreadExpression(node, accessor, undefined, skipChildren);\n },\n createElement,\n createTextNode,\n insertNode,\n setProp(node, name, value, prev) {\n setProperty(node, name, value, prev);\n return value;\n },\n mergeProps,\n effect: createRenderEffect,\n memo: createMemo,\n createComponent,\n use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n }\n };\n}\n\nfunction createRenderer(options) {\n const renderer = createRenderer$1(options);\n renderer.mergeProps = mergeProps;\n return renderer;\n}\n\nexport { createRenderer };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { assertTruthy } from '@lightningjs/renderer/utils';\nimport { log } from './utils.js';\nimport { ElementNode, type SolidNode, type TextNode } from './node/index.js';\nimport type { createRenderer } from 'solid-js/universal';\n\nexport type SolidRendererOptions = Parameters<\n typeof createRenderer\n>[0];\n\nexport default {\n createElement(name: string): ElementNode {\n return new ElementNode(name);\n },\n createTextNode(text: string): TextNode {\n // A text node is just a string - not the node\n return { name: 'TextNode', text, parent: undefined };\n },\n replaceText(node: TextNode, value: string): void {\n log('Replace Text: ', node, value);\n node.text = value;\n const parent = node.parent;\n assertTruthy(parent);\n parent.text = parent.getText();\n },\n setProperty(node: ElementNode, name: string, value: any = true): void {\n node[name] = value;\n },\n insertNode(parent: ElementNode, node: SolidNode, anchor: SolidNode): void {\n log('INSERT: ', parent, node, anchor);\n\n parent.children.insert(node, anchor);\n node._queueDelete = false;\n\n if (node instanceof ElementNode) {\n parent.lng && node.render();\n } else if (parent.isTextNode()) {\n // TextNodes can be placed outside of nodes when is used as placeholder\n parent.text = parent.getText();\n }\n },\n isTextNode(node: ElementNode): boolean {\n return node.isTextNode();\n },\n removeNode(parent: ElementNode, node: SolidNode): void {\n log('REMOVE: ', parent, node);\n parent.children.remove(node);\n node._queueDelete = true;\n\n if (node instanceof ElementNode) {\n // Solid replacesNodes to move them (via insert and remove),\n // so we need to wait for the next microtask to destroy the node\n // in the event it gets a new parent.\n queueMicrotask(() => node.destroy());\n }\n },\n getParentNode(node: SolidNode): ElementNode | undefined {\n return node.parent;\n },\n getFirstChild(node: ElementNode): SolidNode | undefined {\n return node.children[0];\n },\n getNextSibling(node: SolidNode): SolidNode | undefined {\n const children = node.parent!.children || [];\n const index = children.indexOf(node) + 1;\n if (index < children.length) {\n return children[index];\n }\n return undefined;\n },\n} satisfies SolidRendererOptions;\n","/* eslint-disable @typescript-eslint/unbound-method */\n/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createRenderer } from 'solid-js/universal';\nimport { config } from '../config.js';\nimport { startLightningRenderer } from './lightningInit.js';\nimport universalLightning from './solidUniversal.js';\nimport { ElementNode, type SolidNode } from './node/index.js';\nimport { splitProps, createMemo, untrack, type JSX } from 'solid-js';\n\nconst solidRenderer = createRenderer(universalLightning);\n\nexport const render = async function (\n code: () => JSX.Element,\n node?: string | HTMLElement | undefined,\n) {\n const renderer = startLightningRenderer(config.rendererOptions, node);\n await renderer.init();\n const rootNode = new ElementNode('App');\n rootNode.lng = renderer.root!;\n // @ts-expect-error - code is jsx element and not SolidElement yet\n const dispose = solidRenderer.render(code, rootNode);\n return {\n dispose,\n rootNode,\n renderer,\n };\n};\n\nexport const {\n effect,\n memo,\n createComponent,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps,\n use,\n} = solidRenderer;\n\n/**\n * renders an arbitrary custom or native component and passes the other props\n * ```typescript\n * \n * ```\n * @description https://www.solidjs.com/docs/latest/api#dynamic\n */\nexport function Dynamic(\n props: T extends Record ? T : never,\n): SolidNode {\n const [p, others] = splitProps(props, ['component']);\n // eslint-disable-next-line @typescript-eslint/ban-types\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case 'function':\n return untrack(() => component(others));\n\n case 'string':\n // eslint-disable-next-line no-case-declarations\n const el = createElement(component);\n spread(el, others);\n return el;\n\n default:\n break;\n }\n }) as unknown as SolidNode;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isInteger } from './core/utils.js';\n\n/**\n * Converts a color string to a color number value.\n */\nexport function hexColor(color: string | number = ''): number {\n if (isInteger(color)) {\n return color;\n }\n\n if (typeof color === 'string') {\n // Renderer expects RGBA values\n if (color.startsWith('#')) {\n return Number(\n color.replace('#', '0x') + (color.length === 7 ? 'ff' : ''),\n );\n }\n\n if (color.startsWith('0x')) {\n return Number(color);\n }\n return Number('0x' + (color.length === 6 ? color + 'ff' : color));\n }\n\n return 0x00000000;\n}\n\n/**\n * Converts degrees to radians\n */\nexport function deg2rad(deg: number) {\n return (deg * Math.PI) / 180;\n}\n","import {\n createRoot,\n sharedConfig,\n createRenderEffect,\n untrack,\n enableHydration,\n getOwner,\n createEffect,\n runWithOwner,\n createMemo,\n createSignal,\n onCleanup,\n splitProps\n} from \"solid-js\";\nexport {\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n createComponent,\n createRenderEffect as effect,\n getOwner,\n createMemo as memo,\n mergeProps,\n untrack\n} from \"solid-js\";\n\nconst booleans = [\n \"allowfullscreen\",\n \"async\",\n \"autofocus\",\n \"autoplay\",\n \"checked\",\n \"controls\",\n \"default\",\n \"disabled\",\n \"formnovalidate\",\n \"hidden\",\n \"indeterminate\",\n \"inert\",\n \"ismap\",\n \"loop\",\n \"multiple\",\n \"muted\",\n \"nomodule\",\n \"novalidate\",\n \"open\",\n \"playsinline\",\n \"readonly\",\n \"required\",\n \"reversed\",\n \"seamless\",\n \"selected\"\n];\nconst Properties = /*#__PURE__*/ new Set([\n \"className\",\n \"value\",\n \"readOnly\",\n \"formNoValidate\",\n \"isMap\",\n \"noModule\",\n \"playsInline\",\n ...booleans\n]);\nconst ChildProperties = /*#__PURE__*/ new Set([\n \"innerHTML\",\n \"textContent\",\n \"innerText\",\n \"children\"\n]);\nconst Aliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: {\n $: \"formNoValidate\",\n BUTTON: 1,\n INPUT: 1\n },\n ismap: {\n $: \"isMap\",\n IMG: 1\n },\n nomodule: {\n $: \"noModule\",\n SCRIPT: 1\n },\n playsinline: {\n $: \"playsInline\",\n VIDEO: 1\n },\n readonly: {\n $: \"readOnly\",\n INPUT: 1,\n TEXTAREA: 1\n }\n});\nfunction getPropAlias(prop, tagName) {\n const a = PropAliases[prop];\n return typeof a === \"object\" ? (a[tagName] ? a[\"$\"] : undefined) : a;\n}\nconst DelegatedEvents = /*#__PURE__*/ new Set([\n \"beforeinput\",\n \"click\",\n \"dblclick\",\n \"contextmenu\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"keydown\",\n \"keyup\",\n \"mousedown\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"mouseup\",\n \"pointerdown\",\n \"pointermove\",\n \"pointerout\",\n \"pointerover\",\n \"pointerup\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\"\n]);\nconst SVGElements = /*#__PURE__*/ new Set([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animate\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"circle\",\n \"clipPath\",\n \"color-profile\",\n \"cursor\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"font\",\n \"font-face\",\n \"font-face-format\",\n \"font-face-name\",\n \"font-face-src\",\n \"font-face-uri\",\n \"foreignObject\",\n \"g\",\n \"glyph\",\n \"glyphRef\",\n \"hkern\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"missing-glyph\",\n \"mpath\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n \"set\",\n \"stop\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n \"tref\",\n \"tspan\",\n \"use\",\n \"view\",\n \"vkern\"\n]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/ new Set([\n \"html\",\n \"base\",\n \"head\",\n \"link\",\n \"meta\",\n \"style\",\n \"title\",\n \"body\",\n \"address\",\n \"article\",\n \"aside\",\n \"footer\",\n \"header\",\n \"main\",\n \"nav\",\n \"section\",\n \"body\",\n \"blockquote\",\n \"dd\",\n \"div\",\n \"dl\",\n \"dt\",\n \"figcaption\",\n \"figure\",\n \"hr\",\n \"li\",\n \"ol\",\n \"p\",\n \"pre\",\n \"ul\",\n \"a\",\n \"abbr\",\n \"b\",\n \"bdi\",\n \"bdo\",\n \"br\",\n \"cite\",\n \"code\",\n \"data\",\n \"dfn\",\n \"em\",\n \"i\",\n \"kbd\",\n \"mark\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"small\",\n \"span\",\n \"strong\",\n \"sub\",\n \"sup\",\n \"time\",\n \"u\",\n \"var\",\n \"wbr\",\n \"area\",\n \"audio\",\n \"img\",\n \"map\",\n \"track\",\n \"video\",\n \"embed\",\n \"iframe\",\n \"object\",\n \"param\",\n \"picture\",\n \"portal\",\n \"source\",\n \"svg\",\n \"math\",\n \"canvas\",\n \"noscript\",\n \"script\",\n \"del\",\n \"ins\",\n \"caption\",\n \"col\",\n \"colgroup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"tr\",\n \"button\",\n \"datalist\",\n \"fieldset\",\n \"form\",\n \"input\",\n \"label\",\n \"legend\",\n \"meter\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"progress\",\n \"select\",\n \"textarea\",\n \"details\",\n \"dialog\",\n \"menu\",\n \"summary\",\n \"details\",\n \"slot\",\n \"template\",\n \"acronym\",\n \"applet\",\n \"basefont\",\n \"bgsound\",\n \"big\",\n \"blink\",\n \"center\",\n \"content\",\n \"dir\",\n \"font\",\n \"frame\",\n \"frameset\",\n \"hgroup\",\n \"image\",\n \"keygen\",\n \"marquee\",\n \"menuitem\",\n \"nobr\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"rb\",\n \"rtc\",\n \"shadow\",\n \"spacer\",\n \"strike\",\n \"tt\",\n \"xmp\",\n \"a\",\n \"abbr\",\n \"acronym\",\n \"address\",\n \"applet\",\n \"area\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"base\",\n \"basefont\",\n \"bdi\",\n \"bdo\",\n \"bgsound\",\n \"big\",\n \"blink\",\n \"blockquote\",\n \"body\",\n \"br\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"center\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"content\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"dir\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"embed\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"font\",\n \"footer\",\n \"form\",\n \"frame\",\n \"frameset\",\n \"head\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"html\",\n \"i\",\n \"iframe\",\n \"image\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"keygen\",\n \"label\",\n \"legend\",\n \"li\",\n \"link\",\n \"main\",\n \"map\",\n \"mark\",\n \"marquee\",\n \"menu\",\n \"menuitem\",\n \"meta\",\n \"meter\",\n \"nav\",\n \"nobr\",\n \"noembed\",\n \"noframes\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"param\",\n \"picture\",\n \"plaintext\",\n \"portal\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rb\",\n \"rp\",\n \"rt\",\n \"rtc\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"shadow\",\n \"slot\",\n \"small\",\n \"source\",\n \"spacer\",\n \"span\",\n \"strike\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"template\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"track\",\n \"tt\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n \"wbr\",\n \"xmp\",\n \"input\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\"\n]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? (bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart]) : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document\n ? code()\n : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, isCE, isSVG) {\n let node;\n const create = () => {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n return isSVG ? t.content.firstChild.firstChild : t.content.firstChild;\n };\n const fn = isCE\n ? () => untrack(() => document.importNode(node || (node = create()), true))\n : () => (node || (node = create())).cloneNode(true);\n fn.cloneNode = fn;\n return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setProperty(node, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n node[name] = value;\n}\nfunction setAttribute(node, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttribute(name);\n else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttributeNS(namespace, name);\n else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttribute(\"class\");\n else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, (handler[0] = e => handlerFn.call(node, handler[1], e)));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return (nodeStyle.cssText = value);\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(\n () => (prevProps.children = insertExpression(node, props.children, prevProps.children))\n );\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = id => globalThis._$HY.r[id];\n sharedConfig.has = id => id in globalThis._$HY.r;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get((key = getHydrationKey())))) {\n return template();\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"$\") count++;\n else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const { completed, events } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++)\n node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp, propAlias, forceProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if (prop.slice(0, 5) === \"attr:\") {\n setAttribute(node, prop.slice(5), value);\n } else if (\n (forceProp = prop.slice(0, 5) === \"prop:\") ||\n (isChildProp = ChildProperties.has(prop)) ||\n (!isSVG &&\n ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop)))) ||\n (isCE = node.nodeName.includes(\"-\"))\n ) {\n if (forceProp) {\n prop = prop.slice(5);\n isProp = true;\n } else if (!!sharedConfig.context && node.isConnected) return value;\n if (prop === \"class\" || prop === \"className\") className(node, value);\n else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;\n else node[propAlias || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);\n else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = (e.composedPath && e.composedPath()[0]) || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n const hydrating = !!sharedConfig.context && parent.isConnected;\n if (hydrating) {\n !current && (current = [...parent.childNodes]);\n let cleaned = [];\n for (let i = 0; i < current.length; i++) {\n const node = current[i];\n if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();\n else cleaned.push(node);\n }\n current = cleaned;\n }\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = (multi && current[0] && current[0].parentNode) || parent;\n if (t === \"string\" || t === \"number\") {\n if (hydrating) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data !== value && (node.data = value);\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (hydrating) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => (current = insertExpression(parent, array, current, marker, true)));\n return () => current;\n }\n if (hydrating) {\n if (!array.length) return current;\n if (marker === undefined) return [...parent.childNodes];\n let node = array[0];\n let nodes = [node];\n while ((node = node.nextSibling) !== marker) nodes.push(node);\n return (current = nodes);\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value.nodeType) {\n if (hydrating && value.parentNode) return (current = multi ? [value] : value);\n if (Array.isArray(current)) {\n if (multi) return (current = cleanChildren(parent, current, marker, value));\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[normalized.length],\n t;\n if (item == null || item === true || item === false);\n else if ((t = typeof item) === \"object\" && item.nodeType) {\n normalized.push(item);\n } else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic =\n normalizeIncomingArray(\n normalized,\n Array.isArray(item) ? item : [item],\n Array.isArray(prev) ? prev : [prev]\n ) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);\n else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return (parent.textContent = \"\");\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i)\n isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);\n else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key))\n sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nconst voidFn = () => undefined;\nconst RequestContext = Symbol();\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst isDev = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const { useShadow } = props,\n marker = document.createTextNode(\"\"),\n mount = () => props.mount || document.body,\n owner = getOwner();\n let content;\n let hydrating = !!sharedConfig.context;\n createEffect(\n () => {\n if (hydrating) getOwner().user = hydrating = false;\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n const el = mount();\n if (el instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(el, () => (!clean() ? content() : dispose()), null));\n onCleanup(cleanup);\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot =\n useShadow && container.attachShadow\n ? container.attachShadow({\n mode: \"open\"\n })\n : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => el.removeChild(container));\n }\n },\n undefined,\n {\n render: !hydrating\n }\n );\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport {\n Aliases,\n voidFn as Assets,\n ChildProperties,\n DOMElements,\n DelegatedEvents,\n Dynamic,\n Hydration,\n voidFn as HydrationScript,\n NoHydration,\n Portal,\n Properties,\n RequestContext,\n SVGElements,\n SVGNamespace,\n addEventListener,\n assign,\n classList,\n className,\n clearDelegatedEvents,\n delegateEvents,\n dynamicProperty,\n escape,\n voidFn as generateHydrationScript,\n voidFn as getAssets,\n getHydrationKey,\n getNextElement,\n getNextMarker,\n getNextMatch,\n getPropAlias,\n voidFn as getRequestEvent,\n hydrate,\n innerHTML,\n insert,\n isDev,\n isServer,\n render,\n renderToStream,\n renderToString,\n renderToStringAsync,\n resolveSSRNode,\n runHydrationEvents,\n setAttribute,\n setAttributeNS,\n setProperty,\n spread,\n ssr,\n ssrAttribute,\n ssrClassList,\n ssrElement,\n ssrHydrationKey,\n ssrSpread,\n ssrStyle,\n style,\n template,\n use,\n voidFn as useAssets\n};\n","import { isServer } from \"solid-js/web\";\nexport function createBeforeLeave() {\n let listeners = new Set();\n function subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }\n let ignore = false;\n function confirm(to, options) {\n if (ignore)\n return !(ignore = false);\n const e = {\n to,\n options,\n defaultPrevented: false,\n preventDefault: () => (e.defaultPrevented = true)\n };\n for (const l of listeners)\n l.listener({\n ...e,\n from: l.location,\n retry: (force) => {\n force && (ignore = true);\n l.navigate(to, { ...options, resolve: false });\n }\n });\n return !e.defaultPrevented;\n }\n return {\n subscribe,\n confirm\n };\n}\n// The following supports browser initiated blocking (eg back/forward)\nlet depth;\nexport function saveCurrentDepth() {\n if (!window.history.state || window.history.state._depth == null) {\n window.history.replaceState({ ...window.history.state, _depth: window.history.length - 1 }, \"\");\n }\n depth = window.history.state._depth;\n}\nif (!isServer) {\n saveCurrentDepth();\n}\nexport function keepDepth(state) {\n return {\n ...state,\n _depth: window.history.state && window.history.state._depth\n };\n}\nexport function notifyIfNotBlocked(notify, block) {\n let ignore = false;\n return () => {\n const prevDepth = depth;\n saveCurrentDepth();\n const delta = prevDepth == null ? null : depth - prevDepth;\n if (ignore) {\n ignore = false;\n return;\n }\n if (delta && block(delta)) {\n ignore = true;\n window.history.go(-delta);\n }\n else {\n notify();\n }\n };\n}\n","import { createMemo, getOwner, runWithOwner } from \"solid-js\";\nconst hasSchemeRegex = /^(?:[a-z0-9]+:)?\\/\\//i;\nconst trimPathRegex = /^\\/+|(\\/)\\/+$/g;\nexport const mockBase = \"http://sr\";\nexport function normalizePath(path, omitSlash = false) {\n const s = path.replace(trimPathRegex, \"$1\");\n return s ? (omitSlash || /^[?#]/.test(s) ? s : \"/\" + s) : \"\";\n}\nexport function resolvePath(base, path, from) {\n if (hasSchemeRegex.test(path)) {\n return undefined;\n }\n const basePath = normalizePath(base);\n const fromPath = from && normalizePath(from);\n let result = \"\";\n if (!fromPath || path.startsWith(\"/\")) {\n result = basePath;\n }\n else if (fromPath.toLowerCase().indexOf(basePath.toLowerCase()) !== 0) {\n result = basePath + fromPath;\n }\n else {\n result = fromPath;\n }\n return (result || \"/\") + normalizePath(path, !result);\n}\nexport function invariant(value, message) {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nexport function joinPaths(from, to) {\n return normalizePath(from).replace(/\\/*(\\*.*)?$/g, \"\") + normalizePath(to);\n}\nexport function extractSearchParams(url) {\n const params = {};\n url.searchParams.forEach((value, key) => {\n params[key] = value;\n });\n return params;\n}\nexport function createMatcher(path, partial, matchFilters) {\n const [pattern, splat] = path.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n const len = segments.length;\n return (location) => {\n const locSegments = location.split(\"/\").filter(Boolean);\n const lenDiff = locSegments.length - len;\n if (lenDiff < 0 || (lenDiff > 0 && splat === undefined && !partial)) {\n return null;\n }\n const match = {\n path: len ? \"\" : \"/\",\n params: {}\n };\n const matchFilter = (s) => matchFilters === undefined ? undefined : matchFilters[s];\n for (let i = 0; i < len; i++) {\n const segment = segments[i];\n const locSegment = locSegments[i];\n const dynamic = segment[0] === \":\";\n const key = dynamic ? segment.slice(1) : segment;\n if (dynamic && matchSegment(locSegment, matchFilter(key))) {\n match.params[key] = locSegment;\n }\n else if (dynamic || !matchSegment(locSegment, segment)) {\n return null;\n }\n match.path += `/${locSegment}`;\n }\n if (splat) {\n const remainder = lenDiff ? locSegments.slice(-lenDiff).join(\"/\") : \"\";\n if (matchSegment(remainder, matchFilter(splat))) {\n match.params[splat] = remainder;\n }\n else {\n return null;\n }\n }\n return match;\n };\n}\nfunction matchSegment(input, filter) {\n const isEqual = (s) => s.localeCompare(input, undefined, { sensitivity: \"base\" }) === 0;\n if (filter === undefined) {\n return true;\n }\n else if (typeof filter === \"string\") {\n return isEqual(filter);\n }\n else if (typeof filter === \"function\") {\n return filter(input);\n }\n else if (Array.isArray(filter)) {\n return filter.some(isEqual);\n }\n else if (filter instanceof RegExp) {\n return filter.test(input);\n }\n return false;\n}\nexport function scoreRoute(route) {\n const [pattern, splat] = route.pattern.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n return segments.reduce((score, segment) => score + (segment.startsWith(\":\") ? 2 : 3), segments.length - (splat === undefined ? 0 : 1));\n}\nexport function createMemoObject(fn) {\n const map = new Map();\n const owner = getOwner();\n return new Proxy({}, {\n get(_, property) {\n if (!map.has(property)) {\n runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property])));\n }\n return map.get(property)();\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n },\n ownKeys() {\n return Reflect.ownKeys(fn());\n }\n });\n}\nexport function mergeSearchString(search, params) {\n const merged = new URLSearchParams(search);\n Object.entries(params).forEach(([key, value]) => {\n if (value == null || value === \"\") {\n merged.delete(key);\n }\n else {\n merged.set(key, String(value));\n }\n });\n const s = merged.toString();\n return s ? `?${s}` : \"\";\n}\nexport function expandOptionals(pattern) {\n let match = /(\\/?\\:[^\\/]+)\\?/.exec(pattern);\n if (!match)\n return [pattern];\n let prefix = pattern.slice(0, match.index);\n let suffix = pattern.slice(match.index + match[0].length);\n const prefixes = [prefix, (prefix += match[1])];\n // This section handles adjacent optional params. We don't actually want all permuations since\n // that will lead to equivalent routes which have the same number of params. For example\n // `/:a?/:b?/:c`? only has the unique expansion: `/`, `/:a`, `/:a/:b`, `/:a/:b/:c` and we can\n // discard `/:b`, `/:c`, `/:b/:c` by building them up in order and not recursing. This also helps\n // ensure predictability where earlier params have precidence.\n while ((match = /^(\\/\\:[^\\/]+)\\?/.exec(suffix))) {\n prefixes.push((prefix += match[1]));\n suffix = suffix.slice(match[0].length);\n }\n return expandOptionals(suffix).reduce((results, expansion) => [...results, ...prefixes.map(p => p + expansion)], []);\n}\n","import { runWithOwner } from \"solid-js\";\nimport { createComponent, createContext, createMemo, createRenderEffect, createSignal, on, onCleanup, untrack, useContext, startTransition, resetErrorBoundaries } from \"solid-js\";\nimport { isServer, getRequestEvent } from \"solid-js/web\";\nimport { createBeforeLeave } from \"./lifecycle.js\";\nimport { mockBase, createMemoObject, extractSearchParams, invariant, resolvePath, createMatcher, joinPaths, scoreRoute, mergeSearchString, expandOptionals } from \"./utils.js\";\nconst MAX_REDIRECTS = 100;\nexport const RouterContextObj = createContext();\nexport const RouteContextObj = createContext();\nexport const useRouter = () => invariant(useContext(RouterContextObj), \" and 'use' router primitives can be only used inside a Route.\");\nlet TempRoute;\nexport const useRoute = () => TempRoute || useContext(RouteContextObj) || useRouter().base;\nexport const useResolvedPath = (path) => {\n const route = useRoute();\n return createMemo(() => route.resolvePath(path()));\n};\nexport const useHref = (to) => {\n const router = useRouter();\n return createMemo(() => {\n const to_ = to();\n return to_ !== undefined ? router.renderPath(to_) : to_;\n });\n};\nexport const useNavigate = () => useRouter().navigatorFactory();\nexport const useLocation = () => useRouter().location;\nexport const useIsRouting = () => useRouter().isRouting;\nexport const useMatch = (path, matchFilters) => {\n const location = useLocation();\n const matchers = createMemo(() => expandOptionals(path()).map(path => createMatcher(path, undefined, matchFilters)));\n return createMemo(() => {\n for (const matcher of matchers()) {\n const match = matcher(location.pathname);\n if (match)\n return match;\n }\n });\n};\nexport const useParams = () => useRouter().params;\nexport const useSearchParams = () => {\n const location = useLocation();\n const navigate = useNavigate();\n const setSearchParams = (params, options) => {\n const searchString = untrack(() => location.pathname + mergeSearchString(location.search, params) + location.hash);\n navigate(searchString, {\n scroll: false,\n resolve: false,\n ...options\n });\n };\n return [location.query, setSearchParams];\n};\nexport const useBeforeLeave = (listener) => {\n const s = useRouter().beforeLeave.subscribe({\n listener,\n location: useLocation(),\n navigate: useNavigate()\n });\n onCleanup(s);\n};\nexport function createRoutes(routeDef, base = \"\") {\n const { component, load, children, info } = routeDef;\n const isLeaf = !children || (Array.isArray(children) && !children.length);\n const shared = {\n key: routeDef,\n component,\n load,\n info\n };\n return asArray(routeDef.path).reduce((acc, path) => {\n for (const originalPath of expandOptionals(path)) {\n const path = joinPaths(base, originalPath);\n let pattern = isLeaf ? path : path.split(\"/*\", 1)[0];\n pattern = pattern\n .split(\"/\")\n .map((s) => {\n return s.startsWith(\":\") || s.startsWith(\"*\") ? s : encodeURIComponent(s);\n })\n .join(\"/\");\n acc.push({\n ...shared,\n originalPath,\n pattern,\n matcher: createMatcher(pattern, !isLeaf, routeDef.matchFilters)\n });\n }\n return acc;\n }, []);\n}\nexport function createBranch(routes, index = 0) {\n return {\n routes,\n score: scoreRoute(routes[routes.length - 1]) * 10000 - index,\n matcher(location) {\n const matches = [];\n for (let i = routes.length - 1; i >= 0; i--) {\n const route = routes[i];\n const match = route.matcher(location);\n if (!match) {\n return null;\n }\n matches.unshift({\n ...match,\n route\n });\n }\n return matches;\n }\n };\n}\nfunction asArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function createBranches(routeDef, base = \"\", stack = [], branches = []) {\n const routeDefs = asArray(routeDef);\n for (let i = 0, len = routeDefs.length; i < len; i++) {\n const def = routeDefs[i];\n if (def && typeof def === \"object\") {\n if (!def.hasOwnProperty(\"path\"))\n def.path = \"\";\n const routes = createRoutes(def, base);\n for (const route of routes) {\n stack.push(route);\n const isEmptyArray = Array.isArray(def.children) && def.children.length === 0;\n if (def.children && !isEmptyArray) {\n createBranches(def.children, route.pattern, stack, branches);\n }\n else {\n const branch = createBranch([...stack], branches.length);\n branches.push(branch);\n }\n stack.pop();\n }\n }\n }\n // Stack will be empty on final return\n return stack.length ? branches : branches.sort((a, b) => b.score - a.score);\n}\nexport function getRouteMatches(branches, location) {\n for (let i = 0, len = branches.length; i < len; i++) {\n const match = branches[i].matcher(location);\n if (match) {\n return match;\n }\n }\n return [];\n}\nexport function createLocation(path, state) {\n const origin = new URL(mockBase);\n const url = createMemo(prev => {\n const path_ = path();\n try {\n return new URL(path_, origin);\n }\n catch (err) {\n console.error(`Invalid path ${path_}`);\n return prev;\n }\n }, origin, {\n equals: (a, b) => a.href === b.href\n });\n const pathname = createMemo(() => url().pathname);\n const search = createMemo(() => url().search, true);\n const hash = createMemo(() => url().hash);\n const key = () => \"\";\n return {\n get pathname() {\n return pathname();\n },\n get search() {\n return search();\n },\n get hash() {\n return hash();\n },\n get state() {\n return state();\n },\n get key() {\n return key();\n },\n query: createMemoObject(on(search, () => extractSearchParams(url())))\n };\n}\nlet intent;\nexport function getIntent() {\n return intent;\n}\nexport function createRouterContext(integration, branches, getContext, options = {}) {\n const { signal: [source, setSource], utils = {} } = integration;\n const parsePath = utils.parsePath || (p => p);\n const renderPath = utils.renderPath || (p => p);\n const beforeLeave = utils.beforeLeave || createBeforeLeave();\n const basePath = resolvePath(\"\", options.base || \"\");\n if (basePath === undefined) {\n throw new Error(`${basePath} is not a valid base path`);\n }\n else if (basePath && !source().value) {\n setSource({ value: basePath, replace: true, scroll: false });\n }\n const [isRouting, setIsRouting] = createSignal(false);\n const start = async (callback) => {\n setIsRouting(true);\n try {\n await startTransition(callback);\n }\n finally {\n setIsRouting(false);\n }\n };\n const [reference, setReference] = createSignal(source().value);\n const [state, setState] = createSignal(source().state);\n const location = createLocation(reference, state);\n const referrers = [];\n const submissions = createSignal(isServer ? initFromFlash() : []);\n const matches = createMemo(() => getRouteMatches(branches(), location.pathname));\n const params = createMemoObject(() => {\n const m = matches();\n const params = {};\n for (let i = 0; i < m.length; i++) {\n Object.assign(params, m[i].params);\n }\n return params;\n });\n const baseRoute = {\n pattern: basePath,\n path: () => basePath,\n outlet: () => null,\n resolvePath(to) {\n return resolvePath(basePath, to);\n }\n };\n createRenderEffect(() => {\n const { value, state } = source();\n // Untrack this whole block so `start` doesn't cause Solid's Listener to be preserved\n untrack(() => {\n if (value !== reference()) {\n start(() => {\n intent = \"native\";\n setReference(value);\n setState(state);\n resetErrorBoundaries();\n submissions[1]([]);\n }).then(() => {\n intent = undefined;\n });\n }\n });\n });\n return {\n base: baseRoute,\n location,\n params,\n isRouting,\n renderPath,\n parsePath,\n navigatorFactory,\n matches,\n beforeLeave,\n preloadRoute,\n singleFlight: options.singleFlight === undefined ? true : options.singleFlight,\n submissions\n };\n function navigateFromRoute(route, to, options) {\n // Untrack in case someone navigates in an effect - don't want to track `reference` or route paths\n untrack(() => {\n if (typeof to === \"number\") {\n if (!to) {\n // A delta of 0 means stay at the current location, so it is ignored\n }\n else if (utils.go) {\n utils.go(to);\n }\n else {\n console.warn(\"Router integration does not support relative routing\");\n }\n return;\n }\n const { replace, resolve, scroll, state: nextState } = {\n replace: false,\n resolve: true,\n scroll: true,\n ...options\n };\n const resolvedTo = resolve ? route.resolvePath(to) : resolvePath(\"\", to);\n if (resolvedTo === undefined) {\n throw new Error(`Path '${to}' is not a routable path`);\n }\n else if (referrers.length >= MAX_REDIRECTS) {\n throw new Error(\"Too many redirects\");\n }\n const current = reference();\n if (resolvedTo !== current || nextState !== state()) {\n if (isServer) {\n const e = getRequestEvent();\n e && (e.response = { status: 302, headers: new Headers({ Location: resolvedTo }) });\n setSource({ value: resolvedTo, replace, scroll, state: nextState });\n }\n else if (beforeLeave.confirm(resolvedTo, options)) {\n const len = referrers.push({ value: current, replace, scroll, state: state() });\n start(() => {\n intent = \"navigate\";\n setReference(resolvedTo);\n setState(nextState);\n resetErrorBoundaries();\n submissions[1]([]);\n }).then(() => {\n if (referrers.length === len) {\n intent = undefined;\n navigateEnd({\n value: resolvedTo,\n state: nextState\n });\n }\n });\n }\n }\n });\n }\n function navigatorFactory(route) {\n // Workaround for vite issue (https://github.com/vitejs/vite/issues/3803)\n route = route || useContext(RouteContextObj) || baseRoute;\n return (to, options) => navigateFromRoute(route, to, options);\n }\n function navigateEnd(next) {\n const first = referrers[0];\n if (first) {\n if (next.value !== first.value || next.state !== first.state) {\n setSource({\n ...next,\n replace: first.replace,\n scroll: first.scroll\n });\n }\n referrers.length = 0;\n }\n }\n function preloadRoute(url, preloadData) {\n const matches = getRouteMatches(branches(), url.pathname);\n const prevIntent = intent;\n intent = \"preload\";\n for (let match in matches) {\n const { route, params } = matches[match];\n route.component &&\n route.component.preload &&\n route.component.preload();\n const { load } = route;\n preloadData &&\n load &&\n runWithOwner(getContext(), () => load({\n params,\n location: {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n query: extractSearchParams(url),\n state: null,\n key: \"\"\n },\n intent: \"preload\"\n }));\n }\n intent = prevIntent;\n }\n function initFromFlash() {\n const e = getRequestEvent();\n return (e && e.router && e.router.submission\n ? [e.router.submission]\n : []);\n }\n}\nexport function createRouteContext(router, parent, outlet, match) {\n const { base, location, params } = router;\n const { pattern, component, load } = match().route;\n const path = createMemo(() => match().path);\n component &&\n component.preload &&\n component.preload();\n const data = load ? load({ params, location, intent: intent || \"initial\" }) : undefined;\n const route = {\n parent,\n pattern,\n path,\n outlet: () => component\n ? createComponent(component, {\n params,\n location,\n data,\n get children() {\n return outlet();\n }\n })\n : outlet(),\n resolvePath(to) {\n return resolvePath(base.path(), to, path());\n }\n };\n return route;\n}\n","/*@refresh skip*/\nimport { getRequestEvent, isServer } from \"solid-js/web\";\nimport { children, createMemo, createRoot, getOwner, mergeProps, on, Show, untrack } from \"solid-js\";\nimport { createBranches, createRouteContext, createRouterContext, getRouteMatches, RouteContextObj, RouterContextObj } from \"../routing.js\";\nexport const createRouterComponent = (router) => (props) => {\n const { base } = props;\n const routeDefs = children(() => props.children);\n const branches = createMemo(() => createBranches(routeDefs(), props.base || \"\"));\n let context;\n const routerState = createRouterContext(router, branches, () => context, {\n base,\n singleFlight: props.singleFlight\n });\n router.create && router.create(routerState);\n return (\n \n {(context = getOwner()) && null}\n \n \n );\n};\nfunction Root(props) {\n const location = props.routerState.location;\n const params = props.routerState.params;\n const data = createMemo(() => props.load && untrack(() => props.load({ params, location, intent: \"preload\" })));\n return (\n {Root => (\n {props.children}\n )}\n );\n}\nfunction Routes(props) {\n if (isServer) {\n const e = getRequestEvent();\n if (e && e.router && e.router.dataOnly) {\n dataOnly(e, props.routerState, props.branches);\n return;\n }\n e &&\n ((e.router || (e.router = {})).matches ||\n (e.router.matches = props.routerState.matches().map(({ route, path, params }) => ({\n path: route.originalPath,\n pattern: route.pattern,\n match: path,\n params,\n info: route.info\n }))));\n }\n const disposers = [];\n let root;\n const routeStates = createMemo(on(props.routerState.matches, (nextMatches, prevMatches, prev) => {\n let equal = prevMatches && nextMatches.length === prevMatches.length;\n const next = [];\n for (let i = 0, len = nextMatches.length; i < len; i++) {\n const prevMatch = prevMatches && prevMatches[i];\n const nextMatch = nextMatches[i];\n if (prev && prevMatch && nextMatch.route.key === prevMatch.route.key) {\n next[i] = prev[i];\n }\n else {\n equal = false;\n if (disposers[i]) {\n disposers[i]();\n }\n createRoot(dispose => {\n disposers[i] = dispose;\n next[i] = createRouteContext(props.routerState, next[i - 1] || props.routerState.base, createOutlet(() => routeStates()[i + 1]), () => props.routerState.matches()[i]);\n });\n }\n }\n disposers.splice(nextMatches.length).forEach(dispose => dispose());\n if (prev && equal) {\n return prev;\n }\n root = next[0];\n return next;\n }));\n return createOutlet(() => routeStates() && root)();\n}\nconst createOutlet = (child) => {\n return () => (\n {child => {child.outlet()}}\n );\n};\nexport const Route = (props) => {\n const childRoutes = children(() => props.children);\n return mergeProps(props, {\n get children() {\n return childRoutes();\n }\n });\n};\n// for data only mode with single flight mutations\nfunction dataOnly(event, routerState, branches) {\n const url = new URL(event.request.url);\n const prevMatches = getRouteMatches(branches, new URL(event.router.previousUrl || event.request.url).pathname);\n const matches = getRouteMatches(branches, url.pathname);\n for (let match = 0; match < matches.length; match++) {\n if (!prevMatches[match] || matches[match].route !== prevMatches[match].route)\n event.router.dataOnly = true;\n const { route, params } = matches[match];\n route.load &&\n route.load({\n params,\n location: routerState.location,\n intent: \"preload\"\n });\n }\n}\n","import { createSignal, onCleanup } from \"solid-js\";\nimport { createRouterComponent } from \"./components.jsx\";\nfunction intercept([value, setValue], get, set) {\n return [get ? () => get(value()) : value, set ? (v) => setValue(set(v)) : setValue];\n}\nfunction querySelector(selector) {\n if (selector === \"#\") {\n return null;\n }\n // Guard against selector being an invalid CSS selector\n try {\n return document.querySelector(selector);\n }\n catch (e) {\n return null;\n }\n}\nexport function createRouter(config) {\n let ignore = false;\n const wrap = (value) => (typeof value === \"string\" ? { value } : value);\n const signal = intercept(createSignal(wrap(config.get()), { equals: (a, b) => a.value === b.value }), undefined, next => {\n !ignore && config.set(next);\n return next;\n });\n config.init &&\n onCleanup(config.init((value = config.get()) => {\n ignore = true;\n signal[1](wrap(value));\n ignore = false;\n }));\n return createRouterComponent({\n signal,\n create: config.create,\n utils: config.utils\n });\n}\nexport function bindEvent(target, type, handler) {\n target.addEventListener(type, handler);\n return () => target.removeEventListener(type, handler);\n}\nexport function scrollToHash(hash, fallbackTop) {\n const el = querySelector(`#${hash}`);\n if (el) {\n el.scrollIntoView();\n }\n else if (fallbackTop) {\n window.scrollTo(0, 0);\n }\n}\n","import { $TRACK, createMemo, createSignal, onCleanup, getOwner } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { useRouter } from \"../routing.js\";\nimport { mockBase } from \"../utils.js\";\nimport { cacheKeyOp, hashKey, revalidate, cache } from \"./cache.js\";\nexport const actions = /* #__PURE__ */ new Map();\nexport function useSubmissions(fn, filter) {\n const router = useRouter();\n const subs = createMemo(() => router.submissions[0]().filter(s => s.url === fn.toString() && (!filter || filter(s.input))));\n return new Proxy([], {\n get(_, property) {\n if (property === $TRACK)\n return subs();\n if (property === \"pending\")\n return subs().some(sub => !sub.result);\n return subs()[property];\n }\n });\n}\nexport function useSubmission(fn, filter) {\n const submissions = useSubmissions(fn, filter);\n return new Proxy({}, {\n get(_, property) {\n return submissions[submissions.length - 1]?.[property];\n }\n });\n}\nexport function useAction(action) {\n const r = useRouter();\n return (...args) => action.apply({ r }, args);\n}\nexport function action(fn, name) {\n function mutate(...variables) {\n const router = this.r;\n const form = this.f;\n const p = (router.singleFlight && fn.withOptions\n ? fn.withOptions({ headers: { \"X-Single-Flight\": \"true\" } })\n : fn)(...variables);\n const [result, setResult] = createSignal();\n let submission;\n function handler(error) {\n return async (res) => {\n const result = await handleResponse(res, error, router.navigatorFactory());\n if (!result)\n return submission.clear();\n setResult(result);\n if (result.error && !form)\n throw result.error;\n return result.data;\n };\n }\n router.submissions[1](s => [\n ...s,\n (submission = {\n input: variables,\n url,\n get result() {\n return result()?.data;\n },\n get error() {\n return result()?.error;\n },\n get pending() {\n return !result();\n },\n clear() {\n router.submissions[1](v => v.filter(i => i.input !== variables));\n },\n retry() {\n setResult(undefined);\n const p = fn(...variables);\n return p.then(handler(), handler(true));\n }\n })\n ]);\n return p.then(handler(), handler(true));\n }\n const url = fn.url ||\n (name && `https://action/${name}`) ||\n (!isServer ? `https://action/${hashString(fn.toString())}` : \"\");\n return toAction(mutate, url);\n}\nfunction toAction(fn, url) {\n fn.toString = () => {\n if (!url)\n throw new Error(\"Client Actions need explicit names if server rendered\");\n return url;\n };\n fn.with = function (...args) {\n const newFn = function (...passedArgs) {\n return fn.call(this, ...args, ...passedArgs);\n };\n const uri = new URL(url, mockBase);\n uri.searchParams.set(\"args\", hashKey(args));\n return toAction(newFn, (uri.origin === \"https://action\" ? uri.origin : \"\") + uri.pathname + uri.search);\n };\n fn.url = url;\n if (!isServer) {\n actions.set(url, fn);\n getOwner() && onCleanup(() => actions.delete(url));\n }\n return fn;\n}\nconst hashString = (s) => s.split(\"\").reduce((a, b) => ((a << 5) - a + b.charCodeAt(0)) | 0, 0);\nasync function handleResponse(response, error, navigate) {\n let data;\n let keys;\n let invalidateKeys;\n if (response instanceof Response) {\n if (response.headers.has(\"X-Revalidate\"))\n keys = invalidateKeys = response.headers.get(\"X-Revalidate\").split(\",\");\n if (response.customBody) {\n data = await response.customBody();\n if (response.headers.has(\"X-Single-Flight\")) {\n keys || (keys = []);\n invalidateKeys || (invalidateKeys = []);\n Object.keys(data).forEach(key => {\n if (key === \"_$value\")\n return;\n keys.push(key);\n cache.set(key, data[key]);\n });\n data = data._$value;\n }\n }\n if (response.headers.has(\"Location\")) {\n const locationUrl = response.headers.get(\"Location\") || \"/\";\n if (locationUrl.startsWith(\"http\")) {\n window.location.href = locationUrl;\n }\n else {\n navigate(locationUrl);\n }\n }\n }\n else if (error)\n return { error: response };\n else\n data = response;\n // invalidate\n cacheKeyOp(invalidateKeys, entry => (entry[0] = 0));\n // trigger revalidation\n await revalidate(keys, false);\n return data != null ? { data } : undefined;\n}\n","import { delegateEvents } from \"solid-js/web\";\nimport { onCleanup } from \"solid-js\";\nimport { actions } from \"./action.js\";\nimport { mockBase } from \"../utils.js\";\nexport function setupNativeEvents(preload = true, explicitLinks = false, actionBase = \"/_server\") {\n return (router) => {\n const basePath = router.base.path();\n const navigateFromRoute = router.navigatorFactory(router.base);\n let preloadTimeout = {};\n function isSvg(el) {\n return el.namespaceURI === \"http://www.w3.org/2000/svg\";\n }\n function handleAnchor(evt) {\n if (evt.defaultPrevented ||\n evt.button !== 0 ||\n evt.metaKey ||\n evt.altKey ||\n evt.ctrlKey ||\n evt.shiftKey)\n return;\n const a = evt\n .composedPath()\n .find(el => el instanceof Node && el.nodeName.toUpperCase() === \"A\");\n if (!a || (explicitLinks && !a.hasAttribute(\"link\")))\n return;\n const svg = isSvg(a);\n const href = svg ? a.href.baseVal : a.href;\n const target = svg ? a.target.baseVal : a.target;\n if (target || (!href && !a.hasAttribute(\"state\")))\n return;\n const rel = (a.getAttribute(\"rel\") || \"\").split(/\\s+/);\n if (a.hasAttribute(\"download\") || (rel && rel.includes(\"external\")))\n return;\n const url = svg ? new URL(href, document.baseURI) : new URL(href);\n if (url.origin !== window.location.origin ||\n (basePath && url.pathname && !url.pathname.toLowerCase().startsWith(basePath.toLowerCase())))\n return;\n return [a, url];\n }\n function handleAnchorClick(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n const to = router.parsePath(url.pathname + url.search + url.hash);\n const state = a.getAttribute(\"state\");\n evt.preventDefault();\n navigateFromRoute(to, {\n resolve: false,\n replace: a.hasAttribute(\"replace\"),\n scroll: !a.hasAttribute(\"noscroll\"),\n state: state && JSON.parse(state)\n });\n }\n function handleAnchorPreload(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n if (!preloadTimeout[url.pathname])\n router.preloadRoute(url, a.getAttribute(\"preload\") !== \"false\");\n }\n function handleAnchorIn(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n if (preloadTimeout[url.pathname])\n return;\n preloadTimeout[url.pathname] = setTimeout(() => {\n router.preloadRoute(url, a.getAttribute(\"preload\") !== \"false\");\n delete preloadTimeout[url.pathname];\n }, 200);\n }\n function handleAnchorOut(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [, url] = res;\n if (preloadTimeout[url.pathname]) {\n clearTimeout(preloadTimeout[url.pathname]);\n delete preloadTimeout[url.pathname];\n }\n }\n function handleFormSubmit(evt) {\n let actionRef = evt.submitter && evt.submitter.hasAttribute(\"formaction\")\n ? evt.submitter.getAttribute(\"formaction\")\n : evt.target.getAttribute(\"action\");\n if (!actionRef)\n return;\n if (!actionRef.startsWith(\"https://action/\")) {\n // normalize server actions\n const url = new URL(actionRef, mockBase);\n actionRef = router.parsePath(url.pathname + url.search);\n if (!actionRef.startsWith(actionBase))\n return;\n }\n if (evt.target.method.toUpperCase() !== \"POST\")\n throw new Error(\"Only POST forms are supported for Actions\");\n const handler = actions.get(actionRef);\n if (handler) {\n evt.preventDefault();\n const data = new FormData(evt.target);\n if (evt.submitter && evt.submitter.name)\n data.append(evt.submitter.name, evt.submitter.value);\n handler.call({ r: router, f: evt.target }, data);\n }\n }\n // ensure delegated event run first\n delegateEvents([\"click\", \"submit\"]);\n document.addEventListener(\"click\", handleAnchorClick);\n if (preload) {\n document.addEventListener(\"mouseover\", handleAnchorIn);\n document.addEventListener(\"mouseout\", handleAnchorOut);\n document.addEventListener(\"focusin\", handleAnchorPreload);\n document.addEventListener(\"touchstart\", handleAnchorPreload);\n }\n document.addEventListener(\"submit\", handleFormSubmit);\n onCleanup(() => {\n document.removeEventListener(\"click\", handleAnchorClick);\n if (preload) {\n document.removeEventListener(\"mouseover\", handleAnchorIn);\n document.removeEventListener(\"mouseout\", handleAnchorOut);\n document.removeEventListener(\"focusin\", handleAnchorPreload);\n document.removeEventListener(\"touchstart\", handleAnchorPreload);\n }\n document.removeEventListener(\"submit\", handleFormSubmit);\n });\n };\n}\n","import { setupNativeEvents } from \"../data/events.js\";\nimport { createRouter, scrollToHash, bindEvent } from \"./createRouter.js\";\nimport { createBeforeLeave, keepDepth, notifyIfNotBlocked, saveCurrentDepth } from \"../lifecycle.js\";\nexport function hashParser(str) {\n const to = str.replace(/^.*?#/, \"\");\n // Hash-only hrefs like `#foo` from plain anchors will come in as `/#foo` whereas a link to\n // `/foo` will be `/#/foo`. Check if the to starts with a `/` and if not append it as a hash\n // to the current path so we can handle these in-page anchors correctly.\n if (!to.startsWith(\"/\")) {\n const [, path = \"/\"] = window.location.hash.split(\"#\", 2);\n return `${path}#${to}`;\n }\n return to;\n}\nexport function HashRouter(props) {\n const getSource = () => window.location.hash.slice(1);\n const beforeLeave = createBeforeLeave();\n return createRouter({\n get: getSource,\n set({ value, replace, scroll, state }) {\n if (replace) {\n window.history.replaceState(keepDepth(state), \"\", \"#\" + value);\n }\n else {\n window.location.hash = value;\n }\n const hashIndex = value.indexOf(\"#\");\n const hash = hashIndex >= 0 ? value.slice(hashIndex + 1) : \"\";\n scrollToHash(hash, scroll);\n saveCurrentDepth();\n },\n init: notify => bindEvent(window, \"hashchange\", notifyIfNotBlocked(notify, delta => !beforeLeave.confirm(delta && delta < 0 ? delta : getSource()))),\n create: setupNativeEvents(props.preload, props.explicitLinks, props.actionBase),\n utils: {\n go: delta => window.history.go(delta),\n renderPath: path => `#${path}`,\n parsePath: hashParser,\n beforeLeave\n }\n })(props);\n}\n","import { DEV, equalFn, untrack, getOwner, onCleanup, createSignal, sharedConfig, onMount } from 'solid-js';\nimport { isServer } from 'solid-js/web';\nexport { isServer } from 'solid-js/web';\n\n// src/index.ts\nvar isClient = !isServer;\nvar isDev = isClient && !!DEV;\nvar isProd = !isDev;\nvar noop = () => void 0;\nvar trueFn = () => true;\nvar falseFn = () => false;\nvar defaultEquals = equalFn;\nvar EQUALS_FALSE_OPTIONS = { equals: false };\nvar INTERNAL_OPTIONS = { internal: true };\nvar ofClass = (v, c) => v instanceof c || v && v.constructor === c;\nfunction isObject(value) {\n return value !== null && (typeof value === \"object\" || typeof value === \"function\");\n}\nvar isNonNullable = (i) => i != null;\nvar filterNonNullable = (arr) => arr.filter(isNonNullable);\nvar compare = (a, b) => a < b ? -1 : a > b ? 1 : 0;\nvar arrayEquals = (a, b) => a === b || a.length === b.length && a.every((e, i) => e === b[i]);\nfunction chain(callbacks) {\n return (...args) => {\n for (const callback of callbacks)\n callback && callback(...args);\n };\n}\nfunction reverseChain(callbacks) {\n return (...args) => {\n for (let i = callbacks.length - 1; i >= 0; i--) {\n const callback = callbacks[i];\n callback && callback(...args);\n }\n };\n}\nvar clamp = (n, min, max) => Math.min(Math.max(n, min), max);\nvar access = (v) => typeof v === \"function\" && !v.length ? v() : v;\nvar asArray = (value) => Array.isArray(value) ? value : value ? [value] : [];\nvar accessArray = (list) => list.map((v) => access(v));\nvar withAccess = (value, fn) => {\n const _value = access(value);\n typeof _value != null && fn(_value);\n};\nvar asAccessor = (v) => typeof v === \"function\" ? v : () => v;\nfunction accessWith(valueOrFn, ...args) {\n return typeof valueOrFn === \"function\" ? valueOrFn(...args) : valueOrFn;\n}\nfunction defer(deps, fn, initialValue) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let shouldDefer = true;\n return (prevValue) => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++)\n input[i] = deps[i]();\n } else\n input = deps();\n if (shouldDefer) {\n shouldDefer = false;\n prevInput = input;\n return initialValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nvar entries = Object.entries;\nvar keys = Object.keys;\nvar tryOnCleanup = isDev ? (fn) => getOwner() ? onCleanup(fn) : fn : onCleanup;\nvar createCallbackStack = () => {\n let stack = [];\n const clear = () => stack = [];\n return {\n push: (...callbacks) => stack.push(...callbacks),\n execute(arg0, arg1, arg2, arg3) {\n stack.forEach((cb) => cb(arg0, arg1, arg2, arg3));\n clear();\n },\n clear\n };\n};\nfunction createMicrotask(fn) {\n let calls = 0;\n let args;\n onCleanup(() => calls = 0);\n return (...a) => {\n args = a, calls++;\n queueMicrotask(() => --calls === 0 && fn(...args));\n };\n}\nfunction createHydratableSignal(serverValue, update, options) {\n if (isServer) {\n return createSignal(serverValue, options);\n }\n if (sharedConfig.context) {\n const [state, setState] = createSignal(serverValue, options);\n onMount(() => setState(() => update()));\n return [state, setState];\n }\n return createSignal(update(), options);\n}\nvar createHydrateSignal = createHydratableSignal;\nfunction handleDiffArray(current, prev, handleAdded, handleRemoved) {\n const currLength = current.length;\n const prevLength = prev.length;\n let i = 0;\n if (!prevLength) {\n for (; i < currLength; i++)\n handleAdded(current[i]);\n return;\n }\n if (!currLength) {\n for (; i < prevLength; i++)\n handleRemoved(prev[i]);\n return;\n }\n for (; i < prevLength; i++) {\n if (prev[i] !== current[i])\n break;\n }\n let prevEl;\n let currEl;\n prev = prev.slice(i);\n current = current.slice(i);\n for (prevEl of prev) {\n if (!current.includes(prevEl))\n handleRemoved(prevEl);\n }\n for (currEl of current) {\n if (!prev.includes(currEl))\n handleAdded(currEl);\n }\n}\n\nexport { EQUALS_FALSE_OPTIONS, INTERNAL_OPTIONS, access, accessArray, accessWith, arrayEquals, asAccessor, asArray, chain, clamp, compare, createCallbackStack, createHydratableSignal, createHydrateSignal, createMicrotask, defaultEquals, defer, entries, falseFn, filterNonNullable, handleDiffArray, isClient, isDev, isNonNullable, isObject, isProd, keys, noop, ofClass, reverseChain, trueFn, tryOnCleanup, withAccess };\n","import { getOwner, createRoot, runWithOwner, onCleanup, sharedConfig, createSignal, batch } from 'solid-js';\nimport { isServer } from 'solid-js/web';\nimport { asArray, access, trueFn, noop, createMicrotask } from '@solid-primitives/utils';\n\n// src/index.ts\nfunction createSubRoot(fn, ...owners) {\n if (owners.length === 0)\n owners = [getOwner()];\n return createRoot((dispose) => {\n asArray(access(owners)).forEach(\n (owner) => owner && runWithOwner(owner, onCleanup.bind(void 0, dispose))\n );\n return fn(dispose);\n }, owners[0]);\n}\nvar createBranch = createSubRoot;\nvar createCallback = (callback, owner = getOwner()) => owner ? (...args) => runWithOwner(owner, () => callback(...args)) : callback;\nfunction createDisposable(fn, ...owners) {\n return createSubRoot(\n (dispose) => {\n fn(dispose);\n return dispose;\n },\n ...owners\n );\n}\nfunction createSingletonRoot(factory, detachedOwner = getOwner()) {\n let listeners = 0, value, disposeRoot;\n return () => {\n listeners++;\n onCleanup(() => {\n listeners--;\n queueMicrotask(() => {\n if (!listeners && disposeRoot) {\n disposeRoot();\n disposeRoot = value = void 0;\n }\n });\n });\n if (!disposeRoot) {\n createRoot((dispose) => value = factory(disposeRoot = dispose), detachedOwner);\n }\n return value;\n };\n}\nvar createSharedRoot = createSingletonRoot;\nfunction createHydratableSingletonRoot(factory) {\n const owner = getOwner();\n const singleton = createSingletonRoot(factory, owner);\n return () => isServer || sharedConfig.context ? createRoot(factory, owner) : singleton();\n}\nfunction createRootPool(factory, options = {}) {\n if (isServer) {\n const owner2 = getOwner();\n return (args) => createRoot((dispose) => factory(() => args, trueFn, dispose), owner2);\n }\n let length = 0;\n const { limit = 100 } = options, pool = new Array(limit), owner = getOwner(), mapRoot = factory.length > 1 ? (dispose, [args, set]) => {\n const [active, setA] = createSignal(true);\n const root = {\n dispose,\n set,\n setA,\n active,\n v: factory(args, active, () => disposeRoot(root))\n };\n return root;\n } : (dispose, [args, set]) => ({\n dispose,\n set,\n setA: trueFn,\n active: trueFn,\n v: factory(args, trueFn, noop)\n }), limitPool = createMicrotask(() => {\n if (length > limit) {\n for (let i = limit; i < length; i++) {\n pool[i].dispose();\n pool[i] = void 0;\n }\n length = limit;\n }\n }), cleanupRoot = (root) => {\n if (root.dispose !== noop) {\n pool[length++] = root;\n root.setA(false);\n limitPool();\n }\n }, disposeRoot = (root) => {\n root.dispose();\n root.dispose = noop;\n if (root.active())\n root.setA(false);\n else {\n pool[pool.indexOf(root)] = pool[--length];\n pool[length] = void 0;\n }\n };\n onCleanup(() => {\n for (let i = 0; i < length; i++)\n pool[i].dispose();\n length = 0;\n });\n return (arg) => {\n let root;\n if (length) {\n root = pool[--length];\n pool[length] = void 0;\n batch(() => {\n root.set(() => arg);\n root.setA(true);\n });\n } else\n root = createRoot((dispose) => mapRoot(dispose, createSignal(arg)), owner);\n onCleanup(() => cleanupRoot(root));\n return root.v;\n };\n}\n\nexport { createBranch, createCallback, createDisposable, createHydratableSingletonRoot, createRootPool, createSharedRoot, createSingletonRoot, createSubRoot };\n","import { makeEventListener } from '@solid-primitives/event-listener';\nimport { createSingletonRoot } from '@solid-primitives/rootless';\nimport { arrayEquals } from '@solid-primitives/utils';\nimport { createSignal, untrack, createMemo, createEffect, on } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nfunction equalsKeyHoldSequence(sequence, model) {\n for (let i = sequence.length - 1; i >= 0; i--) {\n const _model = model.slice(0, i + 1);\n if (!arrayEquals(sequence[i], _model))\n return false;\n }\n return true;\n}\nvar useKeyDownEvent = /* @__PURE__ */ createSingletonRoot(\n () => {\n if (isServer) {\n return () => null;\n }\n const [event, setEvent] = createSignal(null);\n makeEventListener(window, \"keydown\", (e) => {\n setEvent(e);\n setTimeout(() => setEvent(null));\n });\n return event;\n }\n);\nvar useKeyDownList = /* @__PURE__ */ createSingletonRoot(() => {\n if (isServer) {\n const keys = () => [];\n keys[0] = keys;\n keys[1] = { event: () => null };\n keys[Symbol.iterator] = function* () {\n yield keys[0];\n yield keys[1];\n };\n return keys;\n }\n const [pressedKeys, setPressedKeys] = createSignal([]), reset = () => setPressedKeys([]), event = useKeyDownEvent();\n makeEventListener(window, \"keydown\", (e) => {\n if (e.repeat || typeof e.key !== \"string\")\n return;\n const key = e.key.toUpperCase(), currentKeys = pressedKeys();\n if (currentKeys.includes(key))\n return;\n const keys = [...currentKeys, key];\n if (currentKeys.length === 0 && key !== \"ALT\" && key !== \"CONTROL\" && key !== \"META\" && key !== \"SHIFT\") {\n if (e.shiftKey)\n keys.unshift(\"SHIFT\");\n if (e.altKey)\n keys.unshift(\"ALT\");\n if (e.ctrlKey)\n keys.unshift(\"CONTROL\");\n if (e.metaKey)\n keys.unshift(\"META\");\n }\n setPressedKeys(keys);\n });\n makeEventListener(window, \"keyup\", (e) => {\n if (typeof e.key !== \"string\")\n return;\n const key = e.key.toUpperCase();\n setPressedKeys((prev) => prev.filter((_key) => _key !== key));\n });\n makeEventListener(window, \"blur\", reset);\n makeEventListener(window, \"contextmenu\", (e) => {\n e.defaultPrevented || reset();\n });\n pressedKeys[0] = pressedKeys;\n pressedKeys[1] = { event };\n pressedKeys[Symbol.iterator] = function* () {\n yield pressedKeys[0];\n yield pressedKeys[1];\n };\n return pressedKeys;\n});\nvar useCurrentlyHeldKey = /* @__PURE__ */ createSingletonRoot(\n () => {\n if (isServer) {\n return () => null;\n }\n const keys = useKeyDownList();\n let prevKeys = untrack(keys);\n return createMemo(() => {\n const _keys = keys();\n const prev = prevKeys;\n prevKeys = _keys;\n if (prev.length === 0 && _keys.length === 1)\n return _keys[0];\n return null;\n });\n }\n);\nvar useKeyDownSequence = /* @__PURE__ */ createSingletonRoot(() => {\n if (isServer) {\n return () => [];\n }\n const keys = useKeyDownList();\n return createMemo((prev) => {\n if (keys().length === 0)\n return [];\n return [...prev, keys()];\n }, []);\n});\nfunction createKeyHold(key, options = {}) {\n if (isServer) {\n return () => false;\n }\n key = key.toUpperCase();\n const { preventDefault = true } = options, event = useKeyDownEvent(), heldKey = useCurrentlyHeldKey();\n return createMemo(() => heldKey() === key && (preventDefault && event()?.preventDefault(), true));\n}\nfunction createShortcut(keys, callback, options = {}) {\n if (isServer || !keys.length) {\n return;\n }\n keys = keys.map((key) => key.toUpperCase());\n const { preventDefault = true } = options, event = useKeyDownEvent(), sequence = useKeyDownSequence();\n let reset = false;\n const handleSequenceWithReset = (sequence2) => {\n if (!sequence2.length)\n return reset = false;\n if (reset)\n return;\n const e = event();\n if (sequence2.length < keys.length) {\n if (equalsKeyHoldSequence(sequence2, keys.slice(0, sequence2.length))) {\n preventDefault && e && e.preventDefault();\n } else {\n reset = true;\n }\n } else {\n reset = true;\n if (equalsKeyHoldSequence(sequence2, keys)) {\n preventDefault && e && e.preventDefault();\n callback(e);\n }\n }\n };\n const handleSequenceWithoutReset = (sequence2) => {\n const last = sequence2.at(-1);\n if (!last)\n return;\n const e = event();\n if (preventDefault && last.length < keys.length) {\n if (arrayEquals(last, keys.slice(0, keys.length - 1))) {\n e && e.preventDefault();\n }\n return;\n }\n if (arrayEquals(last, keys)) {\n const prev = sequence2.at(-2);\n if (!prev || arrayEquals(prev, keys.slice(0, keys.length - 1))) {\n preventDefault && e && e.preventDefault();\n callback(e);\n }\n }\n };\n createEffect(\n on(sequence, options.requireReset ? handleSequenceWithReset : handleSequenceWithoutReset)\n );\n}\n\nexport { createKeyHold, createShortcut, useCurrentlyHeldKey, useKeyDownEvent, useKeyDownList, useKeyDownSequence };\n","import { tryOnCleanup, entries, createCallbackStack, asArray, access, keys } from '@solid-primitives/utils';\nimport { createEffect, createRenderEffect, createSignal, onCleanup } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/eventListener.ts\nfunction makeEventListener(target, type, handler, options) {\n target.addEventListener(type, handler, options);\n return tryOnCleanup(target.removeEventListener.bind(target, type, handler, options));\n}\nfunction createEventListener(targets, type, handler, options) {\n if (isServer)\n return;\n const attachListeners = () => {\n asArray(access(targets)).forEach((el) => {\n if (el)\n asArray(access(type)).forEach((type2) => makeEventListener(el, type2, handler, options));\n });\n };\n if (typeof targets === \"function\")\n createEffect(attachListeners);\n else\n createRenderEffect(attachListeners);\n}\nfunction createEventSignal(target, type, options) {\n if (isServer) {\n return () => void 0;\n }\n const [lastEvent, setLastEvent] = createSignal();\n createEventListener(target, type, setLastEvent, options);\n return lastEvent;\n}\nvar eventListener = (target, props) => {\n createEffect(() => {\n const [type, handler, options] = props();\n makeEventListener(target, type, handler, options);\n });\n};\nfunction createEventListenerMap(targets, handlersMap, options) {\n if (isServer) {\n return;\n }\n for (const [eventName, handler] of entries(handlersMap)) {\n if (handler)\n createEventListener(targets, eventName, handler, options);\n }\n}\nvar attachPropListeners = (target, props) => {\n keys(props).forEach((attr) => {\n if (attr.startsWith(\"on\") && typeof props[attr] === \"function\")\n makeEventListener(target, attr.substring(2).toLowerCase(), props[attr]);\n });\n};\nvar WindowEventListener = (props) => {\n if (isServer)\n return null;\n attachPropListeners(window, props);\n};\nvar DocumentEventListener = (props) => {\n if (isServer)\n return null;\n attachPropListeners(document, props);\n};\nfunction makeEventListenerStack(target, options) {\n if (isServer) {\n return [() => () => void 0, () => void 0];\n }\n const { push, execute } = createCallbackStack();\n return [\n (type, handler, overwriteOptions) => {\n const clear = makeEventListener(target, type, handler, overwriteOptions ?? options);\n push(clear);\n return clear;\n },\n onCleanup(execute)\n ];\n}\n\n// src/callbackWrappers.ts\nvar preventDefault = (callback) => (e) => {\n e.preventDefault();\n callback(e);\n};\nvar stopPropagation = (callback) => (e) => {\n e.stopPropagation();\n callback(e);\n};\nvar stopImmediatePropagation = (callback) => (e) => {\n e.stopImmediatePropagation();\n callback(e);\n};\n\nexport { DocumentEventListener, WindowEventListener, createEventListener, createEventListenerMap, createEventSignal, eventListener, makeEventListener, makeEventListenerStack, preventDefault, stopImmediatePropagation, stopPropagation };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nexport function isFunc(item) {\n return typeof item === 'function';\n}\nexport function isObject(item) {\n return typeof item === 'object';\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isArray(item) {\n return Array.isArray(item);\n}\nexport function isString(item) {\n return typeof item === 'string';\n}\nexport function isNumber(item) {\n return typeof item === 'number';\n}\nexport function isInteger(item) {\n return Number.isInteger(item);\n}\nexport function keyExists(obj, keys) {\n for (const key of keys) {\n if (key in obj) {\n return true;\n }\n }\n return false;\n}\n/**\n * Asserts a condition is truthy, otherwise throws an error\n *\n * @remarks\n * Useful at the top of functions to ensure certain conditions, arguments and\n * properties are set/met before continuing. When using this function,\n * TypeScript will narrow away falsy types from the condition.\n *\n * @param condition\n * @param message\n * @returns\n */\nexport function assertTruthy(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n//# sourceMappingURL=utils.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { createEffect, on, createSignal, untrack, } from 'solid-js';\nimport { useKeyDownEvent } from '@solid-primitives/keyboard';\nimport { activeElement, ElementNode } from '@lightningjs/solid';\nimport { isFunc, isArray } from './utils.js';\nconst keyMapEntries = {\n ArrowLeft: 'Left',\n ArrowRight: 'Right',\n ArrowUp: 'Up',\n ArrowDown: 'Down',\n Enter: 'Enter',\n l: 'Last',\n ' ': 'Space',\n Backspace: 'Back',\n Escape: 'Escape',\n};\nconst [focusPath, setFocusPath] = createSignal([]);\nexport { focusPath };\nexport const useFocusManager = (userKeyMap) => {\n const keypressEvent = useKeyDownEvent();\n if (userKeyMap) {\n // Flatten the userKeyMap to a hash\n for (const [key, value] of Object.entries(userKeyMap)) {\n if (isArray(value)) {\n value.forEach((v) => {\n keyMapEntries[v] = key;\n });\n }\n else {\n keyMapEntries[value] = key;\n }\n }\n }\n createEffect(on(activeElement, (currentFocusedElm, prevFocusedElm, prevFocusPath = []) => {\n const newFocusedElms = [];\n let current = currentFocusedElm;\n const fp = [];\n while (current) {\n if (!current.states.has('focus')) {\n current.states.add('focus');\n isFunc(current.onFocus) &&\n current.onFocus.call(current, currentFocusedElm, prevFocusedElm);\n newFocusedElms.push(current);\n }\n fp.push(current);\n current = current.parent;\n }\n prevFocusPath.forEach((elm) => {\n if (!fp.includes(elm)) {\n elm.states.remove('focus');\n isFunc(elm.onBlur) &&\n elm.onBlur.call(elm, currentFocusedElm, prevFocusedElm);\n }\n });\n setFocusPath(fp);\n return fp;\n }, { defer: true }));\n createEffect(() => {\n const e = keypressEvent();\n if (e) {\n // Search keyMap for the value of the pressed key or keyCode if value undefined\n const mappedKeyEvent = keyMapEntries[e.key] || keyMapEntries[e.keyCode];\n untrack(() => {\n const fp = focusPath();\n let finalFocusElm = undefined;\n for (const elm of fp) {\n finalFocusElm = finalFocusElm || elm;\n if (mappedKeyEvent) {\n const onKeyHandler = elm[`on${mappedKeyEvent}`];\n if (isFunc(onKeyHandler)) {\n if (onKeyHandler.call(elm, e, elm, finalFocusElm) === true) {\n break;\n }\n }\n }\n else {\n console.log(`Unhandled key event: ${e.key}`);\n }\n if (isFunc(elm.onKeyPress)) {\n if (elm.onKeyPress.call(elm, e, mappedKeyEvent, elm, finalFocusElm) === true) {\n break;\n }\n }\n }\n return false;\n });\n }\n });\n return focusPath;\n};\n//# sourceMappingURL=useFocusManager.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n/* global SpeechSynthesisErrorEvent */\nfunction flattenStrings(series = []) {\n const flattenedSeries = [];\n let i;\n for (i = 0; i < series.length; i++) {\n const s = series[i];\n if (typeof s === 'string' && !s.includes('PAUSE-')) {\n flattenedSeries.push(series[i]);\n }\n else {\n break;\n }\n }\n // add a \"word boundary\" to ensure the Announcer doesn't automatically try to\n // interpret strings that look like dates but are not actually dates\n // for example, if \"Rising Sun\" and \"1993\" are meant to be two separate lines,\n // when read together, \"Sun 1993\" is interpretted as \"Sunday 1993\"\n return [flattenedSeries.join(',\\b ')].concat(series.slice(i));\n}\nfunction delay(pause) {\n return new Promise((resolve) => {\n setTimeout(resolve, pause);\n });\n}\n/**\n * Speak a string\n *\n * @param phrase Phrase to speak\n * @param utterances An array which the new SpeechSynthesisUtterance instance representing this utterance will be appended\n * @param lang Language to speak in\n * @return {Promise} Promise resolved when the utterance has finished speaking, and rejected if there's an error\n */\nfunction speak(phrase, utterances, lang = 'en-US') {\n const synth = window.speechSynthesis;\n return new Promise((resolve, reject) => {\n const utterance = new SpeechSynthesisUtterance(phrase);\n utterance.lang = lang;\n utterance.onend = () => {\n resolve();\n };\n utterance.onerror = (e) => {\n reject(e);\n };\n utterances.push(utterance);\n synth.speak(utterance);\n });\n}\nfunction speakSeries(series, lang, root = true) {\n const synth = window.speechSynthesis;\n const remainingPhrases = flattenStrings(Array.isArray(series) ? series : [series]);\n const nestedSeriesResults = [];\n /*\n We hold this array of SpeechSynthesisUtterances in order to prevent them from being\n garbage collected prematurely on STB hardware which can cause the 'onend' events of\n utterances to not fire consistently.\n */\n const utterances = [];\n let active = true;\n const seriesChain = (async () => {\n try {\n while (active && remainingPhrases.length) {\n const phrase = await Promise.resolve(remainingPhrases.shift());\n if (!active) {\n // Exit\n // Need to check this after the await in case it was cancelled in between\n break;\n }\n else if (typeof phrase === 'string' && phrase.includes('PAUSE-')) {\n // Pause it\n let pause = Number(phrase.split('PAUSE-')[1]) * 1000;\n if (isNaN(pause)) {\n pause = 0;\n }\n await delay(pause);\n }\n else if (typeof phrase === 'string' && phrase.length) {\n // Speak it\n const totalRetries = 3;\n let retriesLeft = totalRetries;\n while (active && retriesLeft > 0) {\n try {\n await speak(phrase, utterances, lang);\n retriesLeft = 0;\n }\n catch (e) {\n // eslint-disable-next-line no-undef\n if (e instanceof SpeechSynthesisErrorEvent) {\n if (e.error === 'network') {\n retriesLeft--;\n console.warn(`Speech synthesis network error. Retries left: ${retriesLeft}`);\n await delay(500 * (totalRetries - retriesLeft));\n }\n else if (e.error === 'canceled' ||\n e.error === 'interrupted') {\n // Cancel or interrupt error (ignore)\n retriesLeft = 0;\n }\n else {\n throw new Error(`SpeechSynthesisErrorEvent: ${e.error}`);\n }\n }\n else {\n throw e;\n }\n }\n }\n }\n else if (typeof phrase === 'function') {\n const seriesResult = speakSeries(phrase(), lang, false);\n nestedSeriesResults.push(seriesResult);\n await seriesResult.series;\n }\n else if (Array.isArray(phrase)) {\n // Speak it (recursively)\n const seriesResult = speakSeries(phrase, lang, false);\n nestedSeriesResults.push(seriesResult);\n await seriesResult.series;\n }\n }\n }\n finally {\n active = false;\n }\n })();\n return {\n series: seriesChain,\n get active() {\n return active;\n },\n append: (toSpeak) => {\n remainingPhrases.push(toSpeak);\n },\n cancel: () => {\n if (!active) {\n return;\n }\n if (root) {\n synth.cancel();\n }\n nestedSeriesResults.forEach((nestedSeriesResults) => {\n nestedSeriesResults.cancel();\n });\n active = false;\n },\n };\n}\nlet currentSeries;\nexport default function (toSpeak, lang = 'en-US') {\n currentSeries && currentSeries.cancel();\n currentSeries = speakSeries(toSpeak, lang);\n return currentSeries;\n}\n//# sourceMappingURL=speech.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { ElementNode } from '@lightningjs/solid';\n// To use with TS import withPadding and then put withPadding; on the next line to prevent tree shaking\nexport function withPadding(el, padding) {\n const pad = padding();\n let top, left, right, bottom;\n if (Array.isArray(pad)) {\n // top right bottom left\n if (pad.length === 2) {\n top = bottom = pad[0];\n left = right = pad[1];\n }\n else if (pad.length === 3) {\n top = pad[0];\n left = right = pad[1];\n bottom = pad[2];\n }\n else {\n [top, right, bottom, left] = pad;\n }\n }\n else {\n top = right = bottom = left = pad;\n }\n el.onBeforeLayout = (node, size) => {\n if (size) {\n el.width =\n el.children.reduce((acc, c) => {\n return acc + (c.width || 0);\n }, 0) +\n left +\n right;\n const firstChild = el.children[0];\n if (firstChild) {\n // set padding or marginLeft for flex\n firstChild.x = left;\n firstChild.marginLeft = left;\n }\n let maxHeight = 0;\n el.children.forEach((c) => {\n c.y = top;\n c.marginTop = top;\n maxHeight = Math.max(maxHeight, c.height || 0);\n });\n el.height = maxHeight + top + bottom;\n // let flex know we need to re-layout\n return true;\n }\n };\n}\n//# sourceMappingURL=withPadding.js.map","import { getOwner, onCleanup, createSignal, getListener } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nvar debounce = (callback, wait) => {\n if (isServer) {\n return Object.assign(() => void 0, { clear: () => void 0 });\n }\n let timeoutId;\n const clear = () => clearTimeout(timeoutId);\n if (getOwner())\n onCleanup(clear);\n const debounced = (...args) => {\n if (timeoutId !== void 0)\n clear();\n timeoutId = setTimeout(() => callback(...args), wait);\n };\n return Object.assign(debounced, { clear });\n};\nvar throttle = (callback, wait) => {\n if (isServer) {\n return Object.assign(() => void 0, { clear: () => void 0 });\n }\n let isThrottled = false, timeoutId, lastArgs;\n const throttled = (...args) => {\n lastArgs = args;\n if (isThrottled)\n return;\n isThrottled = true;\n timeoutId = setTimeout(() => {\n callback(...lastArgs);\n isThrottled = false;\n }, wait);\n };\n const clear = () => {\n clearTimeout(timeoutId);\n isThrottled = false;\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(throttled, { clear });\n};\nvar scheduleIdle = isServer ? () => Object.assign(() => void 0, { clear: () => void 0 }) : (\n // requestIdleCallback is not supported in Safari\n window.requestIdleCallback ? (callback, maxWait) => {\n let isDeferred = false, id, lastArgs;\n const deferred = (...args) => {\n lastArgs = args;\n if (isDeferred)\n return;\n isDeferred = true;\n id = requestIdleCallback(\n () => {\n callback(...lastArgs);\n isDeferred = false;\n },\n { timeout: maxWait }\n );\n };\n const clear = () => {\n cancelIdleCallback(id);\n isDeferred = false;\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(deferred, { clear });\n } : (\n // fallback to setTimeout (throttle)\n (callback) => throttle(callback)\n )\n);\nfunction leading(schedule, callback, wait) {\n if (isServer) {\n let called = false;\n const scheduled2 = (...args) => {\n if (called)\n return;\n called = true;\n callback(...args);\n };\n return Object.assign(scheduled2, { clear: () => void 0 });\n }\n let isScheduled = false;\n const scheduled = schedule(() => isScheduled = false, wait);\n const func = (...args) => {\n if (!isScheduled)\n callback(...args);\n isScheduled = true;\n scheduled();\n };\n const clear = () => {\n isScheduled = false;\n scheduled.clear();\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(func, { clear });\n}\nfunction leadingAndTrailing(schedule, callback, wait) {\n if (isServer) {\n let called = false;\n const scheduled2 = (...args) => {\n if (called)\n return;\n called = true;\n callback(...args);\n };\n return Object.assign(scheduled2, { clear: () => void 0 });\n }\n let State;\n ((State2) => {\n State2[State2[\"Ready\"] = 0] = \"Ready\";\n State2[State2[\"Leading\"] = 1] = \"Leading\";\n State2[State2[\"Trailing\"] = 2] = \"Trailing\";\n })(State || (State = {}));\n let state = 0 /* Ready */;\n const scheduled = schedule((args) => {\n state === 2 /* Trailing */ && callback(...args);\n state = 0 /* Ready */;\n }, wait);\n const fn = (...args) => {\n if (state !== 2 /* Trailing */) {\n if (state === 0 /* Ready */)\n callback(...args);\n state += 1;\n }\n scheduled(args);\n };\n const clear = () => {\n state = 0 /* Ready */;\n scheduled.clear();\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(fn, { clear });\n}\nfunction createScheduled(schedule) {\n let listeners = 0;\n let isDirty = false;\n const [track, dirty] = createSignal(void 0, { equals: false });\n const call = schedule(() => {\n isDirty = true;\n dirty();\n });\n return () => {\n if (!isDirty)\n call(), track();\n if (isDirty) {\n isDirty = !!listeners;\n return true;\n }\n if (getListener()) {\n listeners++;\n onCleanup(() => listeners--);\n }\n return false;\n };\n}\n\nexport { createScheduled, debounce, leading, leadingAndTrailing, scheduleIdle, throttle };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { untrack } from 'solid-js';\nimport SpeechEngine, {} from './speech.js';\nimport { debounce } from '@solid-primitives/scheduled';\nimport { focusPath } from '../useFocusManager.js';\nlet resetFocusPathTimer;\nlet prevFocusPath = [];\nlet currentlySpeaking;\nlet voiceOutDisabled = false;\nconst fiveMinutes = 300000;\nfunction debounceWithFlush(callback, time) {\n const trigger = debounce(callback, time);\n let scopedValue;\n const debounced = (newValue) => {\n scopedValue = newValue;\n trigger(newValue);\n };\n debounced.flush = () => {\n trigger.clear();\n callback(scopedValue);\n };\n debounced.clear = trigger.clear;\n return debounced;\n}\nfunction getElmName(elm) {\n return elm.id || elm.name;\n}\nfunction onFocusChangeCore(focusPath = []) {\n if (!Announcer.onFocusChange || !Announcer.enabled) {\n return;\n }\n const loaded = focusPath.every((elm) => !elm.loading);\n const focusDiff = focusPath.filter((elm) => !prevFocusPath.includes(elm));\n resetFocusPathTimer();\n if (!loaded && Announcer.onFocusChange) {\n Announcer.onFocusChange([]);\n return;\n }\n prevFocusPath = focusPath.slice(0);\n const toAnnounceText = [];\n const toAnnounce = focusDiff.reduce((acc, elm) => {\n if (elm.announce) {\n acc.push([getElmName(elm), 'Announce', elm.announce]);\n toAnnounceText.push(elm.announce);\n }\n else if (elm.title) {\n acc.push([getElmName(elm), 'Title', elm.title]);\n toAnnounceText.push(elm.title);\n }\n else {\n acc.push([getElmName(elm), 'No Announce', '']);\n }\n return acc;\n }, []);\n focusDiff.reverse().reduce((acc, elm) => {\n if (elm.announceContext) {\n acc.push([getElmName(elm), 'Context', elm.announceContext]);\n toAnnounceText.push(elm.announceContext);\n }\n else {\n acc.push([getElmName(elm), 'No Context', '']);\n }\n return acc;\n }, toAnnounce);\n if (Announcer.debug) {\n console.table(toAnnounce);\n }\n if (toAnnounceText.length) {\n return Announcer.speak(toAnnounceText.reduce((acc, val) => acc.concat(val), []));\n }\n}\nfunction textToSpeech(toSpeak) {\n if (voiceOutDisabled) {\n return;\n }\n return (currentlySpeaking = SpeechEngine(toSpeak));\n}\nexport const Announcer = {\n debug: false,\n enabled: true,\n cancel: function () {\n currentlySpeaking && currentlySpeaking.cancel();\n },\n clearPrevFocus: function (depth = 0) {\n prevFocusPath = prevFocusPath.slice(0, depth);\n resetFocusPathTimer();\n },\n speak: function (text, { append = false, notification = false } = {}) {\n if (Announcer.onFocusChange && Announcer.enabled) {\n Announcer.onFocusChange.flush();\n if (append && currentlySpeaking && currentlySpeaking.active) {\n currentlySpeaking.append(text);\n }\n else {\n Announcer.cancel();\n textToSpeech(text);\n }\n if (notification) {\n voiceOutDisabled = true;\n currentlySpeaking?.series\n .finally(() => {\n voiceOutDisabled = false;\n Announcer.refresh();\n })\n .catch(console.error);\n }\n }\n return currentlySpeaking;\n },\n refresh: function (depth = 0) {\n Announcer.clearPrevFocus(depth);\n Announcer.onFocusChange &&\n Announcer.onFocusChange(untrack(() => focusPath()));\n },\n setupTimers: function ({ focusDebounce = 400, focusChangeTimeout = fiveMinutes, } = {}) {\n Announcer.onFocusChange = debounceWithFlush(onFocusChangeCore, focusDebounce);\n resetFocusPathTimer = debounceWithFlush(() => {\n // Reset focus path for full announce\n prevFocusPath = [];\n }, focusChangeTimeout);\n },\n};\n//# sourceMappingURL=announcer.js.map","import { createSignal } from \"solid-js\";\nexport const [globalBackground, setGlobalBackground] = createSignal(\"\");\n","var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;\nimport { ElementNode, createComponent, View, mergeProps, Text as Text$7, createElement, use, spread, memo, insert, Show, For, hexColor } from \"@lightningjs/solid\";\nimport { createMemo, For as For$1, createSignal } from \"solid-js\";\nimport theme from \"theme\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nfunction objectFromEntries(entries) {\n if (!entries || !entries[Symbol.iterator]) {\n throw new Error(\"objectFromEntries requires a single iterable argument\");\n }\n const obj = {};\n for (const [key2, value] of entries) {\n obj[key2] = value;\n }\n return obj;\n}\nconst defaultModeKeys = [\"focus\", \"disabled\"];\nconst defaultToneKeys = [\"brand\", \"inverse\", \"neutral\"];\nfunction makeComponentStyles({ themeKeys, base, modes, tones, themeStyles: themeStyles2, modeKeys = defaultModeKeys, toneKeys = defaultToneKeys }, debug = false) {\n const makeToneStyles = (tones2, themeComponentStyles, modeStyles) => {\n const toneStyles = toneKeys.map((tone) => {\n const styles2 = {};\n const styleList = new Set(\n [].concat.apply([], [(tones2 == null ? void 0 : tones2[tone]) ?? {}, (themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) ?? {}].map(Object.keys))\n );\n styleList.forEach((styleKey) => {\n var _a2, _b2;\n if (!modeKeys.includes(styleKey)) {\n styles2[styleKey] = ((_a2 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _a2[styleKey]) ?? ((_b2 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _b2[styleKey]);\n }\n });\n modeKeys.forEach((mode) => {\n var _a2, _b2;\n styles2[mode] = {\n ...modeStyles[mode],\n // fallbacks from base.mode\n ...(_a2 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _a2[mode],\n // component configured tone.mode\n ...(_b2 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _b2[mode]\n // theme configure tone.mode\n };\n });\n return [tone, styles2];\n });\n return objectFromEntries(toneStyles);\n };\n const makeModeStyles = (modes2, themeComponentStyles) => {\n const modeStyles = modeKeys.map((mode) => {\n return [mode, { ...modes2 == null ? void 0 : modes2[mode], ...themeComponentStyles == null ? void 0 : themeComponentStyles[mode] }];\n });\n const modeObject = objectFromEntries(modeStyles);\n return modeObject;\n };\n const makeBaseStyles = (base2, themeComponentStyles) => {\n const baseStyles = {\n ...base2,\n ...themeComponentStyles.base\n };\n return baseStyles;\n };\n const mapThemeKeysToSolid = (stylesToMap) => objectFromEntries(\n Object.entries(themeKeys).filter(([_, themeKey]) => stylesToMap[themeKey]).map(([solidKey, themeKey]) => [solidKey, stylesToMap[themeKey]])\n );\n const convertComponentConfig = (themeStyles3) => {\n const convertedThemeStyles = objectFromEntries(\n // iterate through each variant\n Object.entries(themeStyles3).map(([variantName, styles2]) => {\n const convertedStyles = mapThemeKeysToSolid(styles2);\n Object.entries(styles2).filter(([styleName, _]) => modeKeys.includes(styleName)).forEach(([modeName, modeStyles]) => {\n convertedStyles[modeName] = mapThemeKeysToSolid(modeStyles);\n });\n return [variantName, convertedStyles];\n })\n );\n return convertedThemeStyles;\n };\n const generateSolidStylesFromLookupObject = (base2, modes2, tones2) => {\n const themeComponentStyles = convertComponentConfig(themeStyles2);\n debug && console.log(themeComponentStyles);\n const baseStyles = makeBaseStyles(base2, themeComponentStyles);\n debug && console.log(baseStyles);\n const modeStyles = makeModeStyles(modes2, themeComponentStyles);\n debug && console.log(modeStyles);\n const toneStyles = makeToneStyles(tones2, themeComponentStyles, modeStyles);\n debug && console.log(toneStyles);\n return {\n base: {\n ...baseStyles,\n ...modeStyles\n },\n tones: toneStyles\n };\n };\n return generateSolidStylesFromLookupObject(base, modes, tones);\n}\nfunction withScrolling(adjustment = 0) {\n return (componentRef, selectedElement, selected = 0, lastSelected) => {\n if (componentRef.children.length === 0) {\n return;\n }\n const dimension = componentRef.flexDirection === \"row\" ? \"width\" : \"height\";\n const axis = componentRef.flexDirection === \"row\" ? \"x\" : \"y\";\n const gap = componentRef.gap || 0;\n const scroll = componentRef.scroll || \"auto\";\n const [lastItem, containerSize] = updateLastIndex(componentRef);\n let rootPosition = componentRef[axis] ?? 0;\n const selectedPosition = (selectedElement == null ? void 0 : selectedElement[axis]) ?? 0;\n const selectedSize = (selectedElement == null ? void 0 : selectedElement[dimension]) ?? 0;\n const direct = lastSelected === void 0 ? \"none\" : selected > lastSelected ? \"positive\" : \"negative\";\n let next = rootPosition;\n if (scroll === \"auto\") {\n if (componentRef.scrollIndex != void 0 && componentRef.scrollIndex >= 0) {\n if (componentRef.selected >= componentRef.scrollIndex) {\n if (direct === \"positive\") {\n next = rootPosition - selectedSize - gap;\n } else {\n next = rootPosition + selectedSize + gap;\n }\n }\n } else if (Math.abs(rootPosition) + containerSize < lastItem.position + lastItem.size || selectedPosition < Math.abs(rootPosition)) {\n next = -selectedPosition + adjustment;\n }\n } else if (scroll === \"always\" || scroll === \"edge\" && direct === \"negative\" && Math.abs(rootPosition) > selectedPosition) {\n next = -selectedPosition + adjustment;\n } else if (scroll === \"edge\" && direct === \"positive\" && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) {\n next = rootPosition - selectedSize - gap;\n } else if (scroll === \"edge\" && direct === \"none\") {\n let currentChildIndex = 0;\n let currentChild, currentChildSize;\n while (currentChildIndex < componentRef.children.length && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) {\n currentChild = componentRef.children[currentChildIndex++];\n currentChildSize = currentChild[dimension] ?? 0;\n rootPosition -= currentChildSize + gap;\n }\n next = rootPosition;\n }\n if (axis === \"x\" && componentRef.x !== next) {\n componentRef.x = next;\n } else if (axis === \"y\" && componentRef.y !== next) {\n componentRef.y = next;\n }\n };\n}\nfunction updateLastIndex(items) {\n let lastItem, containerSize;\n if (items.flexDirection === \"row\") {\n lastItem = {\n position: items.children[items.children.length - 1].x,\n size: items.children[items.children.length - 1].width\n };\n containerSize = items.width;\n } else {\n lastItem = {\n position: items.children[items.children.length - 1].y,\n size: items.children[items.children.length - 1].height\n };\n containerSize = items.height;\n }\n return [lastItem, containerSize];\n}\nconst useItemLayout = (itemLayout) => {\n if (itemLayout) {\n const width = (theme.layout.screenW - theme.layout.marginX * 2) / itemLayout.upCount - theme.layout.gutterX;\n const height = width / itemLayout.ratioX * itemLayout.ratioY;\n return { width, height };\n }\n return {};\n};\nconst chainFunctions = (...args) => {\n const onlyFunctions = args.filter((func) => typeof func === \"function\");\n if (onlyFunctions.length === 0) {\n return void 0;\n }\n if (onlyFunctions.length === 1) {\n return onlyFunctions[0];\n }\n return function(...innerArgs) {\n let result;\n for (const func of onlyFunctions) {\n result = func.apply(this, innerArgs);\n if (result === true) {\n return result;\n }\n }\n return result;\n };\n};\nfunction assertTruthy(condition, message) {\n return;\n}\nfunction onGridFocus() {\n if (!this || this.selected === void 0 || this.children.length === 0)\n return false;\n let child = this.children[this.selected];\n while (child == null ? void 0 : child.skipFocus) {\n this.selected++;\n child = this.children[this.selected];\n }\n if (!(child instanceof ElementNode))\n return false;\n child.setFocus();\n return true;\n}\nfunction handleNavigation(direction) {\n return function() {\n var _a2, _b2, _c2;\n const numChildren = this.children.length;\n const wrap = this.wrap;\n const lastSelected = this.selected || 0;\n if (numChildren === 0) {\n return false;\n }\n if (direction === \"right\" || direction === \"down\") {\n do {\n this.selected = (this.selected || 0) % numChildren + 1;\n if (this.selected >= numChildren) {\n if (!wrap) {\n this.selected = void 0;\n break;\n }\n this.selected = 0;\n }\n } while ((_a2 = this.children[this.selected]) == null ? void 0 : _a2.skipFocus);\n } else if (direction === \"left\" || direction === \"up\") {\n do {\n this.selected = (this.selected || 0) % numChildren - 1;\n if (this.selected < 0) {\n if (!wrap) {\n this.selected = void 0;\n break;\n }\n this.selected = numChildren - 1;\n }\n } while ((_b2 = this.children[this.selected]) == null ? void 0 : _b2.skipFocus);\n }\n if (this.selected === void 0) {\n this.selected = lastSelected;\n if ((_c2 = this.children[this.selected]) == null ? void 0 : _c2.states.has(\"focus\")) {\n return false;\n }\n }\n const active = this.children[this.selected];\n this.onSelectedChanged && this.onSelectedChanged.call(this, this, active, this.selected, lastSelected);\n if (this.plinko && lastSelected !== void 0) {\n const lastSelectedChild = this.children[lastSelected];\n const num = lastSelectedChild.selected || 0;\n active.selected = num < active.children.length ? num : active.children.length - 1;\n }\n active.setFocus();\n return true;\n };\n}\nfunction scrollToIndex(componentRef, selectedIndex) {\n if (!componentRef || componentRef.selected === void 0 || componentRef.children.length === 0 || componentRef.children.length <= selectedIndex || componentRef.selected === selectedIndex) {\n return false;\n }\n componentRef.selected = selectedIndex;\n if (componentRef.flexDirection === \"row\") {\n componentRef.x = -componentRef.children[selectedIndex].x;\n } else if (componentRef.flexDirection === \"column\") {\n componentRef.y = -componentRef.children[selectedIndex].y;\n }\n}\nfunction getWidthByUpCount$1(theme2, upCount = 1) {\n const screenW = theme2.layout.screenW;\n const columnCount = theme2.layout.columnCount;\n const marginX = theme2.layout.marginX;\n const gutterX = theme2.layout.gutterX;\n if (upCount < 1 || upCount > columnCount) {\n console.error(`Column expects a number between 1 & ${columnCount}. Received ${upCount}`);\n return;\n }\n const columnWidth = screenW - marginX * 2;\n const columnGapTotal = (upCount - 1) * gutterX;\n const totalColumnsWidth = columnWidth - columnGapTotal;\n return totalColumnsWidth / upCount;\n}\nfunction getItemRatioDimensions(ratioX, ratioY, upCount) {\n let w, h;\n if (ratioX && ratioY && upCount) {\n w = Math.round(getWidthByUpCount$1(theme, upCount) ?? 0);\n h = Math.round(w / ratioX * ratioY);\n } else {\n w = 0;\n h = 0;\n }\n return { w, h };\n}\nfunction getDimensions(obj = {}, fallback = {}) {\n const { w, h, ratioX, ratioY, upCount } = obj;\n const fallbackW = fallback.w || 0;\n const fallbackH = fallback.h || 0;\n let dimensions = {};\n if (w && h) {\n dimensions = {\n w,\n h\n };\n } else if (h && ratioX && ratioY) {\n dimensions = {\n w: Math.round(h * ratioX / ratioY),\n h\n };\n } else if (ratioX && ratioY && upCount) {\n dimensions = getItemRatioDimensions(ratioX, ratioY, upCount);\n } else if (h && upCount) {\n dimensions = {\n w: Math.round(getWidthByUpCount(theme, upCount)),\n h\n };\n } else if (h) {\n dimensions = {\n w: fallbackW,\n h\n };\n } else if (w) {\n dimensions = {\n w,\n h: fallbackH\n };\n } else {\n dimensions = {\n w: fallbackW,\n h: fallbackH\n };\n }\n dimensions = {\n ...dimensions,\n ratioX,\n ratioY,\n upCount\n };\n return dimensions;\n}\nconst { Artwork: { defaultTone: defaultTone$f, ...themeStyles$e } = { styles: {} } } = (_a = theme) == null ? void 0 : _a.componentConfig;\nconst container$f = {\n themeKeys: {\n fillColor: \"fillColor\",\n scale: \"imageScale\",\n pivotX: \"imageScalePivotX\",\n pivotY: \"imageScalePivotY\"\n },\n base: {\n fallbackSrc: void 0,\n fillColor: theme.color.overlay,\n gradientColor: theme.color.material,\n pivotX: 0.5,\n pivotY: 0.5,\n scale: void 0\n },\n themeStyles: themeStyles$e\n};\nconst Container$e = makeComponentStyles(container$f);\nconst styles$e = {\n tone: defaultTone$f || \"neutral\",\n Container: Container$e\n};\nconst formatArtwork = (props) => {\n let src = props.src ? props.src : props.fallbackSrc;\n if (src && props.srcCallback && typeof props.srcCallback === \"function\") {\n src = props.srcCallback({\n closestAspectRatio: void 0,\n aspectRatio: void 0,\n src,\n width: props.width,\n height: props.height\n });\n }\n return src;\n};\nconst Artwork = (props) => {\n const formattedArtwork = createMemo(() => formatArtwork(props));\n return createComponent(View, mergeProps(props, {\n get color() {\n var _a2;\n return Boolean(formattedArtwork()) ? void 0 : props.color ?? ((_a2 = styles$e.Container.tones[props.tone ?? styles$e.tone]) == null ? void 0 : _a2.fillColor) ?? styles$e.Container.base.fillColor;\n },\n get style() {\n return [...[props.style].flat(), styles$e.Container.tones[props.tone || styles$e.tone], styles$e.Container.base];\n },\n get src() {\n return formattedArtwork();\n }\n }));\n};\nconst { Badge: { defaultTone: defaultTone$e, ...themeStyles$d } = { styles: {} } } = (_b = theme) == null ? void 0 : _b.componentConfig;\nconst container$e = {\n themeKeys: {\n color: \"backgroundColor\"\n },\n base: {\n color: theme.color.fillInverseSecondary,\n borderRadius: theme.radius.sm,\n // borderRadius must be applied _before_ border to prevent the node from breaking\n border: {\n color: theme.color.strokeInverse,\n width: theme.stroke.sm\n },\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n padding: [\n theme.spacer.md - theme.stroke.sm,\n theme.spacer.xs + theme.stroke.sm,\n theme.spacer.md + theme.stroke.sm,\n theme.spacer.md + theme.stroke.sm\n ]\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutralSecondary,\n borderRadius: theme.radius.sm,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: theme.stroke.sm\n }\n },\n brand: {\n color: theme.color.fillBrand,\n borderRadius: theme.radius.sm,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: theme.stroke.sm\n }\n }\n },\n themeStyles: themeStyles$d\n};\nconst text$7 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.tag1,\n color: theme.color.textNeutral\n },\n tones: {\n inverse: {\n color: theme.color.textInverse\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$d\n};\nconst icon$2 = {\n themeKeys: {\n color: \"iconColor\"\n },\n base: {\n color: theme.color.textNeutral\n },\n tones: {\n inverse: {\n color: theme.color.textInverse\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$d\n};\nconst Container$d = makeComponentStyles(container$e);\nconst Icon$3 = makeComponentStyles(icon$2);\nconst Text$6 = makeComponentStyles(text$7);\nconst styles$d = {\n tone: defaultTone$e || \"neutral\",\n Container: Container$d,\n Icon: Icon$3,\n Text: Text$6\n};\nconst BadgeContainer = (props) => {\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2, _b2;\n return props.padding ?? ((_b2 = (_a2 = styles$d.Container) == null ? void 0 : _a2.tones[props.tone ?? styles$d.tone]) == null ? void 0 : _b2.padding) ?? styles$d.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$d.Container.tones[props.tone || styles$d.tone],\n styles$d.Container.base\n ];\n },\n \"forwardStates\": true\n }), false);\n return _el$;\n })();\n};\nconst Badge = (props) => {\n return createComponent(BadgeContainer, {\n get padding() {\n return props.padding;\n },\n get tone() {\n return props.tone;\n },\n get style() {\n return props.style;\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n return [styles$d.Text.tones[props.tone ?? styles$d.tone], styles$d.Text.base];\n },\n get tone() {\n return props.tone || styles$d.tone;\n },\n get children() {\n return props.title;\n }\n });\n }\n });\n};\nconst { Button: { defaultTone: defaultTone$d, ...themeStyles$c } = { styles: {} } } = (_c = theme) == null ? void 0 : _c.componentConfig;\nconst { Surface: { surfaceDefaultTone, ...surfaceThemeStyles$1 } = { styles: {} } } = (_d = theme) == null ? void 0 : _d.componentConfig;\nconst container$d = {\n themeKeys: {\n textAlign: \"textAlign\",\n borderRadius: \"radius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\"\n },\n base: {\n height: theme.typography.button1.lineHeight + theme.spacer.xl * 2,\n display: \"flex\",\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n color: theme.color.interactiveNeutral,\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm,\n contentColor: theme.color.fillNeutral\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse\n },\n brand: {\n color: theme.color.interactiveBrand,\n focus: {\n color: theme.color.fillNeutral\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst content = {\n themeKeys: {\n color: \"contentColor\"\n },\n base: {\n color: theme.color.textNeutral\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.fillBrand\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst text$6 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.button1\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.fillBrand\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst Container$c = makeComponentStyles(container$d);\nconst Content = makeComponentStyles(content);\nconst Text$5 = makeComponentStyles(text$6);\nconst styles$c = {\n tone: defaultTone$d || surfaceDefaultTone || \"neutral\",\n Container: Container$c,\n Content,\n Text: Text$5\n};\nconst Button = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$c.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$c.tone],\n styles$c.Container.base\n ];\n },\n forwardStates: true,\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n ...[(_a2 = props.style) == null ? void 0 : _a2.Text].flat(),\n //\n styles$c.Text.tones[props.tone ?? styles$c.tone],\n styles$c.Text.base\n ];\n },\n get children() {\n return props.children;\n }\n });\n }\n }));\n};\nconst ButtonContainer = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$c.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$c.tone],\n styles$c.Container.base\n ];\n },\n forwardStates: true\n }));\n};\nconst { Checkbox: { defaultTone: defaultTone$c, ...themeStyles$b } = { styles: {} } } = (_e = theme) == null ? void 0 : _e.componentConfig;\nconst strokeWidth = theme.stroke.sm;\nconst size = theme.spacer.xxl;\nconst container$c = {\n themeKeys: {\n color: \"color\",\n borderRadius: \"borderRadius\",\n border: \"border\",\n justifyContent: \"justifyContent\"\n },\n base: {\n width: size,\n height: size,\n display: \"flex\",\n justifyContent: \"center\",\n color: theme.color.fillNeutral,\n alignItems: \"center\",\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverse,\n width: strokeWidth\n }\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n tones: {\n brand: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutralSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillBrand\n }\n },\n neutral: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillInverseSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutral\n }\n },\n inverse: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutralSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: strokeWidth\n },\n color: theme.color.fillInverse\n }\n }\n },\n modeKeys: [\"focus\", \"disabled\", \"checked\"],\n themeStyles: themeStyles$b\n};\nconst icon$1 = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n width: theme.spacer.lg,\n height: theme.spacer.lg,\n src: theme.asset.check\n },\n tones: {\n neutral: {\n color: theme.color.fillInverse\n },\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillInverse\n }\n },\n themeStyles: themeStyles$b\n};\nconst Container$b = makeComponentStyles(container$c);\nconst Icon$2 = makeComponentStyles(icon$1);\nconst styles$b = {\n tone: defaultTone$c || \"neutral\",\n Container: Container$b,\n Icon: Icon$2\n};\nconst { Icon: { defaultTone: defaultTone$b, ...themeStyles$a } = { styles: {} } } = (_f = theme) == null ? void 0 : _f.componentConfig;\nconst container$b = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n width: 100,\n height: 100,\n color: theme.color.fillInverse\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand\n }\n },\n themeStyles: themeStyles$a\n};\nconst Container$a = makeComponentStyles(container$b);\nconst styles$a = {\n tone: defaultTone$b || \"neutral\",\n Container: Container$a\n};\nconst Icon$1 = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$a.Container.tones) == null ? void 0 : _a2[props.tone || styles$a.tone],\n styles$a.Container.base\n ];\n },\n forwardStates: true\n }));\n};\nconst check = \"/assets/images/check-icon.png\";\nconst Checkbox = (props) => {\n return createComponent(View, mergeProps({\n forwardStates: true\n }, props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$b.Container.tones[props.tone ?? styles$b.tone],\n styles$b.Container.base\n ];\n },\n get states() {\n return {\n checked: props.checked\n };\n },\n get children() {\n return memo(() => !!props.checked)() ? props.children || createComponent(Icon$1, {\n src: check,\n get style() {\n var _a2;\n return [\n ...[(_a2 = props.style) == null ? void 0 : _a2.Icon].flat(),\n //\n styles$b.Icon.tones[props.tone || styles$b.tone],\n styles$b.Icon.base\n ];\n }\n }) : \"\";\n }\n }));\n};\nconst { Column: { defaultTone: defaultTone$a, ...themeStyles$9 } = { styles: {} } } = (_g = theme) == null ? void 0 : _g.componentConfig;\nconst container$a = {\n themeKeys: {\n gap: \"itemSpacing\",\n scrollIndex: \"scrollIndex\",\n itemTransition: \"itemTransition\"\n },\n base: {\n display: \"flex\",\n flexBoundary: \"fixed\",\n flexDirection: \"column\",\n gap: theme.layout.gutterY,\n itemTransition: {\n ...theme.animation.standardEntrance,\n duration: theme.animation.duration.fast\n }\n },\n themeStyles: themeStyles$9\n};\nconst Container$9 = makeComponentStyles(container$a);\nconst styles$9 = {\n tone: defaultTone$a || \"neutral\",\n Container: Container$9\n};\nconst Column = (props) => {\n const onUp = handleNavigation(\"up\");\n const onDown = handleNavigation(\"down\");\n return createComponent(View, mergeProps(props, {\n get onUp() {\n return chainFunctions(props.onUp, onUp);\n },\n get onDown() {\n return chainFunctions(props.onDown, onDown);\n },\n get selected() {\n return props.selected || 0;\n },\n forwardFocus: onGridFocus,\n get onCreate() {\n return chainFunctions((elm) => withScrolling(props.y).call(elm, elm, elm.children[props.selected ?? 0], props.selected ?? 0, void 0), props.onCreate);\n },\n get onSelectedChanged() {\n return chainFunctions(props.onSelectedChanged, props.scroll !== \"none\" ? withScrolling(props.y) : void 0);\n },\n get style() {\n return [...[props.style].flat(), styles$9.Container.tones[props.tone ?? styles$9.tone], styles$9.Container.base];\n }\n }));\n};\nconst { Label: { defaultTone: defaultTone$9, ...themeStyles$8 } = { styles: {} } } = (_h = theme) == null ? void 0 : _h.componentConfig;\nconst container$9 = {\n themeKeys: {\n color: \"backgroundColor\",\n borderRadius: \"radius\"\n },\n base: {\n display: \"flex\",\n justifyContent: \"center\",\n color: theme.color.textNeutral,\n padding: [theme.spacer.md, theme.spacer.lg],\n // TODO themed padding values\n borderRadius: [theme.radius.md, theme.radius.md, theme.radius.md, theme.radius.none],\n height: theme.typography.caption1.lineHeight + theme.spacer.md,\n neutral: {\n backgroundColor: theme.color.fillNeutral\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.orange\n }\n }\n },\n themeStyles: themeStyles$8\n};\nconst text$5 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.caption1,\n color: theme.color.textInverse\n },\n tones: {\n inverse: {\n color: theme.color.textNeutral\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$8\n};\nconst Container$8 = makeComponentStyles(container$9);\nconst Text$4 = makeComponentStyles(text$5);\nconst styles$8 = {\n tone: defaultTone$9 || \"neutral\",\n Container: Container$8,\n Text: Text$4\n};\nconst Label = (props) => {\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2;\n return props.padding ?? ((_a2 = styles$8.Container.tones[props.tone ?? styles$8.tone]) == null ? void 0 : _a2.padding) ?? styles$8.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$8.Container.tones[props.tone || styles$8.tone],\n styles$8.Container.base\n ];\n },\n \"forwardStates\": true\n }), true);\n insert(_el$, createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$8.Text.tones[props.tone || styles$8.tone],\n styles$8.Text.base\n ];\n },\n get children() {\n return props.title;\n }\n }));\n return _el$;\n })();\n};\nconst { Rating: { styles: themeStyles$7, defaultTone: defaultTone$8 } = { styles: {}, defaultTone: \"neutral\" } } = (_i = theme) == null ? void 0 : _i.componentConfig;\nconst container$8 = {\n themeKeys: {\n justifyContent: \"justifyContent\",\n itemSpacing: \"itemSpacing\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n itemSpacing: theme.spacer.sm\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst text$4 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n color: theme.color.textNeutral,\n ...theme.typography.body2\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst icon = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n height: theme.typography.body2.lineHeight,\n width: theme.typography.body2.lineHeight,\n color: theme.color.fillNeutral,\n marginRight: theme.spacer.sm\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst Container$7 = makeComponentStyles(container$8);\nconst Icon = makeComponentStyles(icon);\nconst Text$3 = makeComponentStyles(text$4);\nconst styles$7 = {\n tone: defaultTone$8,\n Container: Container$7,\n Text: Text$3,\n Icon\n};\nconst Rating = (props) => {\n const formatTitle = (title) => {\n if (typeof title !== \"string\" && typeof title !== \"number\" || !String(title).trim().length) {\n return;\n }\n let formatted = title;\n if (!Number.isNaN(title) && Number(title) >= 0 && Number(title) <= 100) {\n formatted += \"%\";\n }\n return formatted;\n };\n const formattedTitle = createMemo(() => formatTitle(props.title));\n return createComponent(View, mergeProps(props, {\n forwardStates: true,\n get style() {\n return [...[props.style].flat(), styles$7.Container.tones[props.tone || styles$7.tone], styles$7.Container.base];\n },\n get children() {\n return [createComponent(Show, {\n get when() {\n return props.src;\n },\n get children() {\n return createComponent(Icon$1, {\n forwardStates: true,\n get src() {\n return props.src;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Icon,\n //\n styles$7.Icon.tones[props.tone || styles$7.tone],\n styles$7.Icon.base\n ];\n }\n });\n }\n }), createComponent(Show, {\n get when() {\n return formattedTitle();\n },\n get children() {\n return createComponent(Text$7, {\n get marginRight() {\n return props.marginRight;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$7.Text.tones[props.tone || styles$7.tone],\n styles$7.Text.base\n ];\n },\n get children() {\n return formattedTitle();\n }\n });\n }\n })];\n }\n }));\n};\nconst { Details: { defaultTone: defaultTone$7, ...themeStyles$6 } = { styles: {} } } = (_j = theme) == null ? void 0 : _j.componentConfig;\nconst container$7 = {\n themeKeys: {\n alignItems: \"alignItems\",\n contentSpacing: \"contentSpacing\",\n badgeContentSpacing: \"badgeContentSpacing\",\n ratingContentSpacing: \"ratingContentSpacing\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n contentSpacing: theme.spacer.lg,\n badgeContentSpacing: theme.spacer.sm,\n ratingContentSpacing: theme.spacer.lg\n },\n themeStyles: themeStyles$6\n};\nconst text$3 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.body2,\n marginRight: theme.spacer.lg,\n color: theme.color.textNeutral\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverse,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutral,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$6\n};\nconst Container$6 = makeComponentStyles(container$7);\nconst Text$2 = makeComponentStyles(text$3);\nconst styles$6 = {\n tone: defaultTone$7 || \"neutral\",\n Container: Container$6,\n Text: Text$2\n};\nconst Details = (props) => {\n return createComponent(View, mergeProps({\n get style() {\n return [...[props.style].flat(), styles$6.Container.tones[props.tone || styles$6.tone], styles$6.Container.base];\n },\n forwardStates: true,\n onBeforeLayout: (node, dimensions) => {\n var _a2;\n if ((dimensions == null ? void 0 : dimensions.height) && node.parent) {\n node.parent.height = dimensions.height;\n (_a2 = node.parent) == null ? void 0 : _a2.updateLayout();\n }\n }\n }, props, {\n get children() {\n return [createComponent(Show, {\n get when() {\n return props.title;\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$6.Text.tones[props.tone || styles$6.tone],\n styles$6.Text.base\n ];\n },\n get children() {\n return props.title;\n }\n });\n }\n }), createComponent(For, {\n get each() {\n return props.badges;\n },\n children: (badge, idx) => createComponent(Badge, mergeProps(badge, {\n get marginRight() {\n var _a2, _b2, _c2, _d2, _e2, _f2, _g2;\n return ((_a2 = props.badges) == null ? void 0 : _a2.length) && idx() === props.badges.length - 1 ? ((_c2 = (_b2 = props.style) == null ? void 0 : _b2.Container) == null ? void 0 : _c2.contentSpacing) ?? ((_d2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _d2.contentSpacing) ?? styles$6.Container.base.contentSpacing : ((_f2 = (_e2 = props.style) == null ? void 0 : _e2.Container) == null ? void 0 : _f2.badgeContentSpacing) ?? ((_g2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _g2.badgeContentSpacing) ?? styles$6.Container.base.badgeContentSpacing;\n }\n }))\n }), createComponent(For, {\n get each() {\n return props.ratings;\n },\n children: (rating, idx) => createComponent(Rating, mergeProps(rating, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$6.Text.tones[props.tone || styles$6.tone],\n styles$6.Text.base\n ];\n },\n forwardStates: true,\n get marginRight() {\n var _a2, _b2, _c2, _d2;\n return ((_a2 = props.ratings) == null ? void 0 : _a2.length) && idx() === props.ratings.length - 1 ? 0 : ((_c2 = (_b2 = props.style) == null ? void 0 : _b2.Container) == null ? void 0 : _c2.ratingContentSpacing) ?? ((_d2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _d2.ratingContentSpacing) ?? styles$6.Container.base.ratingContentSpacing;\n }\n }))\n })];\n }\n }));\n};\nconst { Metadata: { defaultTone: defaultTone$6, ...themeStyles$5 } = { styles: {} } } = (_k = theme) == null ? void 0 : _k.componentConfig;\nconst container$6 = {\n themeKeys: {\n justifyContent: \"justifyContent\",\n alpha: \"alpha\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n alpha: theme.alpha.primary\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n themeStyles: themeStyles$5\n};\nconst titleText = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n maxLines: 1,\n contain: \"width\",\n ...theme.typography.headline3,\n color: theme.color.textNeutral\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverse,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutral,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$5\n};\nconst descriptionText = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n contain: \"width\",\n maxLines: 2,\n ...theme.typography.body2,\n color: theme.color.textNeutralSecondary\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverseSecondary,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutralSecondary,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$5\n};\nconst Container$5 = makeComponentStyles(container$6);\nconst DescriptionText = makeComponentStyles(descriptionText);\nconst TitleText = makeComponentStyles(titleText);\nconst styles$5 = {\n tone: defaultTone$6 || \"neutral\",\n Container: Container$5,\n TitleText,\n DescriptionText\n};\nconst Metadata = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n return [...[props.style].flat(), styles$5.Container.tones[props.tone || styles$5.tone], styles$5.Container.base];\n },\n forwardStates: true,\n get children() {\n return [createComponent(Text$7, {\n get width() {\n return props.width;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.TitleText,\n //\n styles$5.TitleText.tones[props.tone || styles$5.tone],\n styles$5.TitleText.base\n ];\n },\n get children() {\n return props.title;\n }\n }), createComponent(Show, {\n get when() {\n return props.description;\n },\n get children() {\n return createComponent(Text$7, {\n get width() {\n return props.width;\n },\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.DescriptionText, styles$5.DescriptionText.tones[props.tone || styles$5.tone], styles$5.DescriptionText.base];\n },\n get children() {\n return props.description;\n }\n });\n }\n }), createComponent(Details, mergeProps({\n get width() {\n return props.width;\n }\n }, () => props.details, {\n get tone() {\n return props.tone ?? styles$5.tone;\n }\n }))];\n }\n }));\n};\nconst { ProgressBar: { defaultTone: defaultTone$5, ...themeStyles$4 } = { styles: {} } } = (_l = theme) == null ? void 0 : _l.componentConfig;\nconst container$5 = {\n themeKeys: {\n color: \"barColor\",\n borderRadius: \"borderRadius\"\n },\n base: {\n height: theme.spacer.md,\n color: theme.color.fillNeutralTertiary,\n borderRadius: theme.radius.xs\n },\n tones: {\n inverse: {\n color: theme.color.fillInverseTertiary\n }\n },\n themeStyles: themeStyles$4\n};\nconst progress = {\n themeKeys: {\n color: \"progressColor\",\n borderRadius: \"borderRadius\"\n },\n base: {\n borderRadius: theme.radius.xs,\n color: theme.color.fillNeutral\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand\n }\n },\n themeStyles: themeStyles$4\n};\nconst Container$4 = makeComponentStyles(container$5);\nconst ProgressBar$1 = makeComponentStyles(progress);\nconst styles$4 = {\n tone: defaultTone$5 || \"neutral\",\n Container: Container$4,\n ProgressBar: ProgressBar$1\n};\nconst ProgressBar = (props) => {\n return createComponent(View, mergeProps(props, {\n forwardStates: true,\n get style() {\n return [...[props.style].flat(), styles$4.Container.tones[props.tone || styles$4.tone], styles$4.Container.base];\n },\n get children() {\n return createComponent(View, {\n forwardStates: true,\n get animationSettings() {\n return props.animationSettings;\n },\n get width() {\n return props.width * props.progress;\n },\n get color() {\n return props.progressColor;\n },\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.ProgressBar, styles$4.ProgressBar.tones[props.tone || styles$4.tone], styles$4.ProgressBar.base];\n }\n });\n }\n }));\n};\nconst { Row: { defaultTone: defaultTone$4, ...themeStyles$3 } = { styles: {} } } = (_m = theme) == null ? void 0 : _m.componentConfig;\nconst container$4 = {\n themeKeys: {\n gap: \"itemSpacing\",\n scrollIndex: \"scrollIndex\",\n itemTransition: \"itemTransition\"\n },\n base: {\n display: \"flex\",\n flexBoundary: \"fixed\",\n flexDirection: \"row\",\n gap: theme.layout.gutterX,\n itemTransition: {\n ...theme.animation.standardEntrance,\n duration: theme.animation.duration.fast\n }\n },\n themeStyles: themeStyles$3\n};\nconst Container$3 = makeComponentStyles(container$4);\nconst styles$3 = {\n tone: defaultTone$4,\n Container: Container$3\n};\nconst Row = (props) => {\n const onLeft = handleNavigation(\"left\");\n const onRight = handleNavigation(\"right\");\n return createComponent(View, mergeProps(props, {\n get selected() {\n return props.selected || 0;\n },\n get onLeft() {\n return chainFunctions(props.onLeft, onLeft);\n },\n get onRight() {\n return chainFunctions(props.onRight, onRight);\n },\n forwardFocus: onGridFocus,\n get onCreate() {\n return chainFunctions((elm) => withScrolling(props.x).call(elm, elm, elm.children[props.selected ?? 0], props.selected ?? 0, void 0), props.onCreate);\n },\n get onSelectedChanged() {\n return chainFunctions(props.onSelectedChanged, props.scroll !== \"none\" ? withScrolling(props.x) : void 0);\n },\n get tone() {\n return props.tone ?? styles$3.tone;\n },\n get style() {\n return [...[props.style].flat(), styles$3.Container.tones[props.tone || styles$3.tone], styles$3.Container.base];\n },\n get states() {\n return props.tone ?? styles$3.tone;\n }\n }));\n};\nconst { Keyboard: { defaultTone: defaultTone$3, ...themeStyles$2 } = { styles: {} } } = (_n = theme) == null ? void 0 : _n.componentConfig;\nconst container$3 = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n screenW: \"screenW\",\n marginX: \"marginX\"\n },\n base: {\n keySpacing: theme.spacer.md,\n screenW: theme.layout.screenW,\n marginX: theme.layout.marginX,\n height: 100\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst key = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n textAlign: \"textAlign\",\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\",\n baseWidth: \"baseWidth\",\n sizes: \"sizes\",\n contentColor: \"contentColor\"\n // what is this used for\n },\n base: {\n keySpacing: theme.spacer.md,\n height: theme.spacer.md * 9,\n paddingX: theme.spacer.md,\n sizes: {\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n xxl: 5\n },\n contentColor: theme.color.fillNeutral,\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n baseWidth: theme.spacer.md * 7,\n color: theme.color.interactiveNeutral,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled,\n contentColor: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse,\n focus: {\n color: theme.color.interactiveInverseFocus,\n contentColor: theme.color.fillNeutral\n }\n },\n brand: {\n focus: {\n contentColor: theme.color.fillNeutral\n }\n }\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst text$2 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.headline2\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n focus: {\n color: theme.color.textNeutral\n }\n }\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst Container$2 = makeComponentStyles(container$3);\nconst Key$1 = makeComponentStyles(key);\nconst Text$1 = makeComponentStyles(text$2);\nconst styles$2 = {\n tone: defaultTone$3,\n Container: Container$2,\n Key: Key$1,\n // TODO why was this wrapped in {}?\n Text: Text$1\n};\nconst { Key: { defaultTone: defaultTone$2, ...themeStyles$1 } = { styles: {} } } = (_o = theme) == null ? void 0 : _o.componentConfig;\nconst container$2 = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n textAlign: \"textAlign\",\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\",\n baseWidth: \"baseWidth\",\n sizes: \"sizes\",\n contentColor: \"contentColor\"\n },\n base: {\n keySpacing: theme.spacer.md,\n height: theme.spacer.md * 9,\n paddingX: theme.spacer.md,\n contentColor: theme.color.fillNeutral,\n sizes: {\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n xxl: 5\n },\n padding: [theme.spacer.md],\n baseWidth: theme.spacer.md * 7,\n color: theme.color.interactiveNeutral,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled,\n contentColor: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse,\n focus: {\n color: theme.color.interactiveInverseFocus,\n contentColor: theme.color.fillNeutral\n }\n },\n brand: {\n focus: {\n contentColor: theme.color.fillNeutral\n }\n }\n },\n themeStyles: themeStyles$1\n};\nconst text$1 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.headline2\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n focus: {\n color: theme.color.textNeutral\n }\n }\n },\n themeStyles: themeStyles$1\n};\nconst Container$1 = makeComponentStyles(container$2);\nconst Text = makeComponentStyles(text$1);\nconst styles$1 = {\n tone: defaultTone$2 || \"neutral\",\n Container: Container$1,\n Text\n};\nconst Key = (props) => {\n const style1 = (props == null ? void 0 : props.style) ?? styles$1;\n return createComponent(ButtonContainer, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$1.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$1.tone],\n styles$1.Container.base\n ];\n },\n forwardStates: true,\n get width() {\n var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2;\n return (((_d2 = (_c2 = (_b2 = (_a2 = style1.Container) == null ? void 0 : _a2.tones) == null ? void 0 : _b2[props.tone ?? styles$1.tone]) == null ? void 0 : _c2.sizes) == null ? void 0 : _d2[props.size || \"sm\"]) ?? style1.Container.base.sizes[props.size || \"sm\"]) * (((_g2 = (_f2 = (_e2 = style1.Container) == null ? void 0 : _e2.tones) == null ? void 0 : _f2[props.tone ?? styles$1.tone]) == null ? void 0 : _g2.baseWidth) ?? style1.Container.base.baseWidth) + (((_i2 = (_h2 = style1.Container.tones) == null ? void 0 : _h2[props.tone ?? styles$1.tone]) == null ? void 0 : _i2.keySpacing) ?? style1.Container.base.keySpacing) * (((_l2 = (_k2 = (_j2 = style1.Container.tones) == null ? void 0 : _j2[props.tone ?? styles$1.tone]) == null ? void 0 : _k2.sizes) == null ? void 0 : _l2[props.size || \"sm\"]) ?? style1.Container.base.sizes[props.size || \"sm\"] - 1);\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$1.Text.tones[props.tone ?? styles$1.tone],\n styles$1.Text.base\n ];\n },\n get children() {\n return props.title ? props.title : \"\";\n }\n });\n }\n }));\n};\nconst KeyboardSimple = (props) => {\n return createComponent(Column, {\n get autofocus() {\n return props.autofocus;\n },\n scroll: \"none\",\n plinko: true,\n get itemSpacing() {\n var _a2;\n return props.keySpacing ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.keySpacing) ?? styles$2.Container.base.keySpacing;\n },\n get justifyContent() {\n return props.centerKeyboard ? \"center\" : \"flexStart\";\n },\n get width() {\n return props.width;\n },\n get children() {\n return createComponent(For$1, {\n get each() {\n return props.formats;\n },\n children: (row) => createComponent(Row, {\n get width() {\n return props.width;\n },\n get justifyContent() {\n return props.centerKeys ? \"center\" : \"flexStart\";\n },\n get itemSpacing() {\n var _a2;\n return props.keySpacing ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.keySpacing) ?? styles$2.Container.base.keySpacing;\n },\n get height() {\n var _a2;\n return (props == null ? void 0 : props.height) ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.height) ?? styles$2.Container.base.height;\n },\n get wrap() {\n return props.rowWrap;\n },\n get children() {\n return createComponent(For$1, {\n each: row,\n children: (key2) => createComponent(Key, mergeProps({\n get style() {\n var _a2;\n return (_a2 = props.style) == null ? void 0 : _a2.Key;\n }\n }, typeof key2 === \"string\" ? {} : key2, {\n onEnter: () => props.keySignal[1](typeof key2 === \"string\" ? key2 : key2.title ?? \"\"),\n get title() {\n return key2.title || key2.icon ? key2.title : key2;\n }\n }))\n });\n }\n })\n });\n }\n });\n};\nconst Keyboard = (props) => {\n return createComponent(KeyboardSimple, mergeProps(props, {\n get style() {\n return [...[props.style].flat(), styles$2.Container.tones[props.tone ?? styles$2.tone], styles$2.Container.base];\n }\n }));\n};\nconst { Input: { defaultTone: defaultTone$1, ...themeStyles } = { styles: {} } } = (_p = theme) == null ? void 0 : _p.componentConfig;\nconst container$1 = {\n themeKeys: {\n justifyContent: \"justifyContent\"\n },\n base: {\n display: \"flex\",\n justifyContent: \"flexStart\",\n flexDirection: \"column\",\n width: 100,\n height: 100,\n actualTitle: \"\"\n },\n themeStyles\n};\nconst input = {\n themeKeys: {\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\"\n },\n base: {\n width: getWidthByUpCount$1(theme, 4),\n height: 100,\n display: \"flex\",\n flexDirection: \"column\",\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n color: theme.color.interactiveNeutral,\n contentColor: theme.color.fillInverse,\n borderRadius: theme.radius.sm,\n marginX: theme.spacer.xxxl\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus\n },\n disabled: {\n color: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse\n },\n brand: {\n color: theme.color.interactiveBrand,\n focus: {\n color: theme.color.fillNeutral\n }\n }\n },\n themeStyles\n};\nconst text = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.button1\n },\n themeStyles\n};\nmakeComponentStyles(container$1);\nmakeComponentStyles(input);\nmakeComponentStyles(text);\nconst { Tile: { defaultTone, ...tileThemeStyles } = { styles: {} } } = (_q = theme) == null ? void 0 : _q.componentConfig;\nconst { Surface: { defaultSurfaceTone, ...surfaceThemeStyles } = { styles: {} } } = (_r = theme) == null ? void 0 : _r.componentConfig;\nconst container = {\n themeKeys: {\n alpha: \"alpha\",\n paddingYProgress: \"paddingYProgress\"\n },\n base: {\n width: 400,\n height: 240,\n padding: [40, 10],\n // TODO support separate paddingX and paddingY values from theme, possibly formatter\n paddingYProgress: theme.spacer.xl,\n paddingYBetweenContent: theme.spacer.md,\n borderRadius: theme.radius.md,\n alpha: theme.alpha.primary\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n themeStyles: {\n ...surfaceThemeStyles,\n ...tileThemeStyles\n }\n};\nconst insetBottom = {\n themeKeys: {},\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n mountY: 1\n },\n themeStyles: tileThemeStyles\n};\nconst standardBottom = {\n themeKeys: {},\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\"\n },\n themeStyles: tileThemeStyles\n};\nconst logoContainer = {\n themeKeys: {},\n base: {\n width: theme.spacer.lg * 5,\n height: theme.spacer.xxl + theme.spacer.md\n },\n themeStyles: tileThemeStyles\n};\nconst Container = makeComponentStyles(container);\nconst InsetBottom = makeComponentStyles(insetBottom);\nconst StandardBottom = makeComponentStyles(standardBottom);\nconst LogoContainer = makeComponentStyles(logoContainer);\nconst styles = {\n tone: defaultTone || defaultSurfaceTone || \"neutral\",\n Container,\n InsetBottom,\n StandardBottom,\n LogoContainer\n};\nconst Tile = (props) => {\n const [isFocused, setIsFocused] = createSignal(false);\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2;\n return props.padding ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.padding) ?? styles.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n \"onFocus\": () => setIsFocused(true),\n \"onBlur\": () => setIsFocused(false),\n get style() {\n return [...[props.style].flat(), styles.Container.tones[props.tone ?? styles.tone], styles.Container.base];\n }\n }), true);\n insert(_el$, createComponent(Artwork, mergeProps(() => props.artwork, {\n get states() {\n return props.states;\n },\n get style() {\n return props.style;\n },\n get tone() {\n return props.tone ?? styles.tone;\n }\n })), null);\n insert(_el$, createComponent(Show, {\n get when() {\n return props.persistentMetadata || isFocused();\n },\n get children() {\n return [createComponent(View, {\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[1]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[1]) ?? styles.Container.base.padding[1];\n },\n get children() {\n return props.topLeft;\n }\n }), createComponent(View, {\n get x() {\n var _a2, _b2, _c2;\n return ((props == null ? void 0 : props.width) ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[0]) ?? ((_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0]);\n },\n get y() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[1]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[1]) ?? styles.Container.base.padding[1];\n },\n mountX: 1,\n get children() {\n return props.topRight;\n }\n }), createComponent(View, {\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.InsetBottom, styles.InsetBottom.tones[props.tone ?? styles.tone], styles.InsetBottom.base];\n },\n get width() {\n var _a2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - styles.Container.base.padding[0] * 2;\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2, _d2, _e2, _f2;\n return (props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) - (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]) - (((_e2 = props.progressBar) == null ? void 0 : _e2.progress) > 0 ? props.paddingYProgress ?? ((_f2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _f2.paddingYProgress) ?? styles.Container.base.paddingYProgress : 0);\n },\n get children() {\n return props.inset;\n }\n }), createComponent(View, {\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.StandardBottom, styles.StandardBottom.tones[props.tone ?? styles.tone], styles.StandardBottom.base];\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2, _d2;\n return Number(props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) + (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]);\n },\n get width() {\n var _a2, _b2, _c2, _d2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]) * 2;\n },\n get children() {\n return props.bottom;\n }\n })];\n }\n }), null);\n insert(_el$, createComponent(Show, {\n get when() {\n var _a2;\n return ((_a2 = props.progressBar) == null ? void 0 : _a2.progress) ? props.progressBar.progress > 0 : 0;\n },\n get children() {\n return createComponent(ProgressBar, mergeProps(() => props.progressBar, {\n get width() {\n var _a2, _b2, _c2, _d2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[0]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[0]) ?? styles.Container.base.padding[0]) * 2;\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2;\n return (props.height ?? props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) - (props.paddingYProgress ?? ((_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.paddingYProgress) ?? styles.Container.base.paddingYProgress) - (((_c2 = props == null ? void 0 : props.progressBar) == null ? void 0 : _c2.height) || 0);\n }\n }));\n }\n }), null);\n return _el$;\n })();\n};\nconst fpsStyle = {\n color: 255,\n height: 150,\n width: 330,\n x: 1910,\n y: 10,\n mountX: 1,\n alpha: 0.8,\n zIndex: 100\n};\nconst fpsLabel = {\n x: 10,\n fontSize: 22,\n textColor: hexColor(\"#f6f6f6\")\n};\nconst fpsValue = {\n fontSize: 22,\n textColor: hexColor(\"#f6f6f6\")\n};\nconst [fps, setFps] = createSignal(0);\nconst [avgFps, setAvgFps] = createSignal(0);\nconst [minFps, setMinFps] = createSignal(99);\nconst [maxFps, setMaxFps] = createSignal(0);\nconst [isLoadedCount, setIsLoadedCount] = createSignal(0);\nconst [isLoadingCount, setIsLoadingCount] = createSignal(0);\nconst [isFailedCount, setIsFailedCount] = createSignal(0);\nlet count = 0;\nlet totalFps = 0;\nconst resetCounter = () => {\n totalFps = 0;\n count = 0;\n setMinFps(99);\n};\nconst calcFps = (fps2) => {\n if (!fps2)\n return;\n setFps(fps2);\n setMinFps((prev) => Math.min(fps2, prev));\n setMaxFps((prev) => Math.max(fps2, prev));\n totalFps += fps2;\n count++;\n setAvgFps(Math.round(totalFps / count));\n};\nconst calcPerformanceMetrics = (stage) => {\n let isLoadedCount2 = 0;\n let isLoadingCount2 = 0;\n let isFailedCount2 = 0;\n stage.txManager.textureIdCache.forEach((value, key2, map) => {\n if (value.state === \"loaded\") {\n isLoadedCount2++;\n }\n if (value.state === \"loading\") {\n isLoadingCount2++;\n }\n if (value.state === \"failed\") {\n isFailedCount2++;\n }\n });\n setIsLoadedCount(isLoadedCount2);\n setIsLoadingCount(isLoadingCount2);\n setIsFailedCount(isFailedCount2);\n};\nfunction setupFPS(root) {\n root.renderer.on(\"fpsUpdate\", (target, fpsData) => {\n const fps2 = typeof fpsData === \"number\" ? fpsData : fpsData.fps;\n if (fps2 > 5) {\n calcFps(fps2);\n calcPerformanceMetrics(target.root.stage);\n }\n });\n}\nconst FPSCounter = (props) => {\n return createComponent(View, mergeProps(props, {\n style: fpsStyle,\n get children() {\n return [createComponent(View, {\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"FPS:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 90,\n get children() {\n return fps();\n }\n })];\n }\n }), createComponent(View, {\n x: 160,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"AVG:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 100,\n get children() {\n return avgFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 20,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"MIN:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 90,\n get children() {\n return minFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 160,\n y: 20,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"MAX:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 100,\n get children() {\n return maxFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 50,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Loaded Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isLoadedCount();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 80,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Loading Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isLoadingCount();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 110,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Failed Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isFailedCount();\n }\n })];\n }\n })];\n }\n }));\n};\nexport {\n Artwork,\n Badge,\n Button,\n ButtonContainer,\n Checkbox,\n Column,\n FPSCounter,\n Icon$1 as Icon,\n Keyboard,\n Label,\n Metadata,\n ProgressBar,\n Row,\n Tile,\n styles$e as artworkStyles,\n assertTruthy,\n styles$d as badgeStyles,\n styles$c as buttonStyles,\n chainFunctions,\n styles$b as checkboxStyles,\n styles$9 as columnStyles,\n getDimensions,\n getItemRatioDimensions,\n getWidthByUpCount$1 as getWidthByUpCount,\n handleNavigation,\n styles$a as iconStyles,\n styles$2 as keyboardStyles,\n styles$8 as labelStyles,\n makeComponentStyles,\n styles$5 as metadataStyles,\n onGridFocus,\n styles$4 as progressBarStyles,\n resetCounter,\n styles$3 as rowStyles,\n scrollToIndex,\n setupFPS,\n styles as tileStyles,\n useItemLayout,\n withScrolling\n};\n//# sourceMappingURL=index.js.map\n","export default {\n name: 'Base Lightning TV',\n alpha: {\n primary: 1,\n secondary: 0.7,\n tertiary: 0.1,\n inactive: 0.5,\n full: 1,\n none: 0,\n alpha1: 0.1,\n alpha2: 0.3,\n alpha3: 0.5,\n alpha4: 0.7,\n alpha5: 0.9\n },\n animation: {\n duration: {\n none: 0,\n xfast: 0.1,\n fast: 0.25,\n normal: 0.5,\n slow: 0.75,\n xslow: 0.9\n },\n delay: {\n none: 0,\n xfast: 0.01,\n fast: 0.025,\n normal: 0.05,\n slow: 0.075,\n xslow: 0.09\n },\n expressive: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n expressiveEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n expressiveExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standard: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standardEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standardExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utility: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utilityEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utilityExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n }\n },\n asset: {\n arrowLeft:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAi0lEQVRIDWNgGAWjIfD//38JID5Fk5AAGqwKxPeA+D/VLQCaaQLEr0CGgwBVLQCa5wbEn0EGwwDVLAAaGA3Ev2AGw2iqWAA0rBiI/8EMRaYptgBoWDeygehsci1gIlcjWfqArqZdEMFcBLSEdpGMZAntkimSJbTLaEiW0K6oQLKEdoUdzJJRemiHAAD4n+yzPWCs7QAAAABJRU5ErkJggg==',\n arrowRight:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAg0lEQVRIDWNgGAWjIYArBP7//38KiCVwyVMsDjQcBO4BsSrFhmEzAGw8hHgFpEywqaFIDMkCEPMzELtRZCC6ZjQLQNxfQByNro5sPhYLQEL/gLiYbEORNeKwACbcDVPLBGMMOhrmVDSapkFE00imaTKlaUajaVFB28Ju0CXrUQfhDAEAEgHss6NhpLQAAAAASUVORK5CYII=',\n backspaceOutline:\n 'data:image/png;base64,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',\n check:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAOCAYAAAAi2ky3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACtSURBVHgBvdPdDcIgEAfwoy8Nb45QN3AGF2s36Ahu4gpuIDoBfSgfpdoTlCbEWEMh6T8hFzjyg5AAkBHOcQe5UWqspRx435sDpMYj6IYQwwVSEiJ2MKVUBWuzLSLl2HL+uxmNCGFO8yaL7RHxve6qRZoAuS4hxac8735elWVx7jrtMKL1o0Gcat9jhExHSukN/kUIFZ7MpDRtzE1isDRkAUtDvrA8ZI597FUf8gWH9P0b4gko9wAAAABJRU5ErkJggg=='\n },\n color: {\n palette: {\n 'blue-20': '0xbecffeff',\n 'blue-40': '0x93a9fdff',\n 'blue-90': '0x000033ff',\n 'grey-05': '0xf8f7faff',\n 'grey-40': '0x929096ff',\n 'grey-70': '0x48474bff',\n 'grey-90': '0x181819ff'\n },\n white: '0xffffffff',\n black: '0x000000ff',\n grey: '0x929096ff',\n red: '0xe74c3cff',\n orange: '0xdc7633ff',\n yellow: '0xf7dc6fff',\n green: '0x2ecc71ff',\n blue: '0x93a9fdff',\n purple: '0x663399ff',\n material: '0x181819ff',\n materialBrand: '0x000033ff',\n overlay: '0x181819b3',\n textNeutral: '0xf8f7faff',\n textNeutralSecondary: '0xf8f7fab3',\n textNeutralTertiary: '0xf8f7fa1a',\n textNeutralDisabled: '0xf8f7fa80',\n textInverse: '0x181819ff',\n textInverseSecondary: '0x181819b3',\n textInverseTertiary: '0x1818191a',\n textInverseDisabled: '0x18181980',\n textBrand: '0x93a9fdff',\n textBrandSecondary: '0x93a9fdb3',\n textBrandTertiary: '0x93a9fd1a',\n textBrandDisabled: '0x93a9fd80',\n textPositive: '0x2ecc71ff',\n textNegative: '0xe74c3cff',\n textInfo: '0x93a9fdff',\n textCaution: '0xdc7633ff',\n fillTransparent: '0xffffff0',\n fillNeutral: '0xf8f7faff',\n fillNeutralSecondary: '0xf8f7fab3',\n fillNeutralTertiary: '0xf8f7fa1a',\n fillNeutralDisabled: '0xf8f7fa80',\n fillInverse: '0x181819ff',\n fillInverseSecondary: '0x181819b3',\n fillInverseTertiary: '0x1818191a',\n fillInverseDisabled: '0x18181980',\n fillBrand: '0x93a9fdff',\n fillBrandSecondary: '0x93a9fdb3',\n fillBrandTertiary: '0x93a9fd1a',\n fillBrandDisabled: '0x93a9fd80',\n fillPositive: '0x2ecc71ff',\n fillNegative: '0xe74c3cff',\n fillInfo: '0x93a9fdff',\n fillCaution: '0xdc7633ff',\n strokeNeutral: '0xf8f7faff',\n strokeNeutralSecondary: '0xf8f7fab3',\n strokeNeutralTertiary: '0xf8f7fa1a',\n strokeNeutralDisabled: '0xf8f7fa80',\n strokeInverse: '0x181819ff',\n strokeInverseSecondary: '0x181819b3',\n strokeInverseTertiary: '0x1818191a',\n strokeInverseDisabled: '0x18181980',\n strokeBrand: '0x93a9fdff',\n strokeBrandSecondary: '0x93a9fdb3',\n strokeBrandTertiary: '0x93a9fd1a',\n strokeBrandDisabled: '0x93a9fd80',\n strokePositive: '0x2ecc71ff',\n strokeNegative: '0xe74c3cff',\n strokeInfo: '0x93a9fdff',\n strokeCaution: '0xdc7633ff',\n interactiveNeutral: '0xffffff1a',\n interactiveNeutralFocus: '0xffffffff',\n interactiveNeutralFocusSoft: '0xffffff1a',\n interactiveInverse: '0x48474b1a',\n interactiveInverseFocus: '0x48474bff',\n interactiveInverseFocusSoft: '0x48474b1a',\n interactiveBrand: '0xbecffe1a',\n interactiveBrandFocus: '0xbecffeff',\n interactiveBrandFocusSoft: '0xbecffe1a',\n shadowNeutral: '0x000000b3',\n shadowNeutralFocus: '0x000000b3',\n shadowNeutralFocusSoft: '0x000000b3',\n shadowNeutralText: '0x000000ff',\n shadowInverse: '0x000000b3',\n shadowInverseFocus: '0x000000b3',\n shadowInverseFocusSoft: '0x000000b3',\n shadowInverseText: '0x000000ff',\n shadowBrand: '0x000000b3',\n shadowBrandFocus: '0x000000b3',\n shadowBrandFocusSoft: '0x000000b3',\n shadowBrandText: '0x000000ff'\n },\n font: [],\n layout: {\n columnCount: 10,\n focusScale: 1.2,\n gutterX: 20,\n gutterY: 20,\n marginX: 150,\n marginY: 150,\n safe: 50,\n screenW: 1920,\n screenH: 1080\n },\n radius: { none: 0, xs: 2, sm: 4, md: 8, lg: 16, xl: 24 },\n spacer: {\n none: 0,\n xxs: 2,\n xs: 4,\n sm: 8,\n md: 10,\n lg: 20,\n xl: 30,\n xxl: 40,\n xxxl: 50\n },\n stroke: { none: 0, sm: 2, md: 4, lg: 6, xl: 8 },\n typography: {\n display1: {\n fontFamily: 'Arial',\n fontSize: 75,\n lineHeight: 85,\n fontWeight: 500,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n display2: {\n fontFamily: 'Arial',\n fontSize: 50,\n lineHeight: 60,\n fontWeight: 500,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline1: {\n fontFamily: 'Arial',\n fontSize: 35,\n fontWeight: 500,\n lineHeight: 48,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline2: {\n fontFamily: 'Arial',\n fontSize: 30,\n fontWeight: 500,\n lineHeight: 40,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline3: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 500,\n lineHeight: 36,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body1: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 300,\n lineHeight: 40,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body2: {\n fontFamily: 'Arial',\n fontSize: 22,\n fontWeight: 300,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body3: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 300,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n button1: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n button2: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n callout1: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n caption1: {\n fontFamily: 'Arial',\n fontSize: 15,\n fontWeight: 500,\n lineHeight: 24,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n tag1: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 24,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n footnote1: {\n fontFamily: 'Arial',\n fontSize: 22,\n fontWeight: 300,\n lineHeight: 30,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n }\n },\n componentConfig: {\n Keyboard: {\n base: {\n keyProps: {\n delete: {\n title: null,\n icon: 'data:image/png;base64,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'\n }\n }\n }\n }\n }\n};\n","import { type AnimationSettings } from \"@lightningjs/renderer\";\nimport { globalBackground } from \"../state.js\";\nimport {\n type IntrinsicNodeStyleProps,\n View,\n Text,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { createEffect, on } from \"solid-js\";\nimport theme from \"theme\";\n\nexport default function Background() {\n let bg1, bg2, heroMask;\n let active = 0;\n const alpha = 1;\n const animationSettings = {\n duration: 750,\n easing: \"ease-in-out\",\n } satisfies Partial;\n const bgStyles = {\n alpha,\n color: 0xffffffff,\n } satisfies IntrinsicNodeStyleProps;\n\n function changeBackgrounds(img: string) {\n if (img.startsWith(\"#\")) {\n bg1.color = hexColor(img);\n bg1.src = \"\";\n bg1.alpha = 1;\n active = 1;\n bg2.alpha = 0;\n heroMask.alpha = 0;\n return;\n } else {\n bg1.color = 0xffffffff;\n heroMask.alpha = 1;\n }\n\n if (active === 0) {\n bg1.src = img;\n active = 1;\n return;\n }\n\n if (active === 1) {\n bg2.src = img;\n active = 2;\n bg2.alpha = 0;\n bg2.animate({ alpha }, animationSettings).start();\n bg1.animate({ alpha: 0 }, animationSettings).start();\n return;\n }\n\n if (active === 2) {\n bg1.src = img;\n active = 1;\n bg1.alpha = 0;\n bg1.animate({ alpha }, animationSettings).start();\n bg2.animate({ alpha: 0 }, animationSettings).start();\n }\n }\n\n createEffect(\n on(\n globalBackground,\n (img: string) => {\n changeBackgrounds(img);\n },\n { defer: true }\n )\n );\n\n return (\n <>\n \n \n \n \n \n \n );\n}\n","import { IntrinsicNodeStyleProps, hexColor } from \"@lightningjs/solid\";\nimport theme from \"theme\";\n\nexport default {\n Column: {\n flexDirection: \"column\",\n display: \"flex\",\n width: 320,\n height: 600,\n y: 360,\n gap: 20,\n zIndex: 101,\n transition: {\n x: {\n duration: 250,\n easing: \"ease-in-out\",\n },\n },\n x: 8,\n focus: {\n x: theme.layout.marginX,\n },\n } satisfies IntrinsicNodeStyleProps,\n Gradient: {\n zIndex: 99,\n color: hexColor(\"#000000\"),\n src: \"./assets/sidenav.png\",\n alpha: 0,\n width: 1200,\n height: 1080,\n focus: {\n alpha: 1,\n },\n transition: { alpha: true },\n } satisfies IntrinsicNodeStyleProps,\n NavButton: {\n zIndex: 102,\n height: 70,\n width: 100,\n borderRadius: 8,\n focus: {\n color: hexColor(\"#424242\"),\n },\n active: {\n width: 328,\n height: 70,\n },\n } satisfies IntrinsicNodeStyleProps,\n};\n","import { For, IntrinsicNodeProps, View } from \"@lightningjs/solid\";\nimport { createSpriteMap } from \"@lightningjs/solid-primitives\";\n// Icons from https://uxwing.com/\n\nconst basePath = import.meta.env.BASE_URL;\n\nconst icons = [\n { name: \"experiment\", width: 81, height: 100, x: 0, y: 0 },\n { name: \"trending\", width: 100, height: 56, x: 81, y: 0 },\n { name: \"tv\", width: 100, height: 68, x: 181, y: 0 },\n { name: \"movie\", width: 94, height: 100, x: 282, y: 0 },\n];\n\ninterface IconProps extends IntrinsicNodeProps {\n name: string;\n}\n\nfunction Icon(props: IconProps) {\n const sprite = createSpriteMap(basePath + \"assets/icons_white.png\", icons);\n\n return (\n \n );\n}\n\nexport default Icon;\nexport function PreviewIcons() {\n return (\n <>\n \n \n {(icon, i) => }\n \n \n );\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { renderer } from '@lightningjs/solid';\nimport {} from '@lightningjs/renderer';\nexport function createSpriteMap(src, subTextures) {\n const spriteMapTexture = renderer.createTexture('ImageTexture', {\n src,\n });\n return subTextures.reduce((acc, t) => {\n const { x, y, width, height } = t;\n acc[t.name] = renderer.createTexture('SubTexture', {\n texture: spriteMapTexture,\n x,\n y,\n width,\n height,\n });\n return acc;\n }, {});\n}\n//# sourceMappingURL=createSpriteMap.js.map","import { useMatch, useNavigate } from \"@solidjs/router\";\nimport {\n View,\n Text,\n IntrinsicNodeProps,\n ElementNode,\n} from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport styles from \"./NavDrawer.styles\";\nimport Icon from \"../Icon\";\nimport theme from \"theme\";\n\ninterface NavButtonProps extends IntrinsicNodeProps {\n icon: string;\n children: string;\n}\n\nfunction NavButton(props: NavButtonProps) {\n return (\n \n \n \n \n \n {props.children}\n \n \n );\n}\n\nexport default function NavDrawer(props) {\n let backdrop;\n const navigate = useNavigate();\n function onFocus(this: ElementNode) {\n backdrop.states.add(\"focus\");\n this.children.forEach((c) => c.states!.add(\"active\"));\n this.children.selected!.setFocus();\n }\n\n function onBlur(this: ElementNode) {\n backdrop.states.remove(\"focus\");\n this.selected = 0;\n this.children.forEach((c) => c.states!.remove(\"active\"));\n }\n\n function handleNavigate(page: string) {\n const isOnPage = useMatch(() => page);\n if (isOnPage()) {\n return props.focusPage();\n }\n\n navigate(page);\n }\n\n return (\n <>\n \n \n Built With:\n \n \n \n \n handleNavigate(\"/browse/all\")}\n icon=\"trending\"\n >\n Trending\n \n handleNavigate(\"/browse/movie\")}>\n Movies\n \n handleNavigate(\"/browse/tv\")}>\n TV\n \n handleNavigate(\"/examples\")}\n >\n Examples\n \n \n \n \n );\n}\n","import { useLocation, useNavigate } from \"@solidjs/router\";\nimport { View, activeElement, renderer } from \"@lightningjs/solid\";\nimport { useFocusManager, useAnnouncer } from \"@lightningjs/solid-primitives\";\nimport Background from \"../components/Background\";\nimport NavDrawer from \"../components/NavDrawer/NavDrawer\";\nimport { FPSCounter, setupFPS } from \"@lightningjs/solid-ui\";\nimport { createEffect, createSignal } from \"solid-js\";\n\ndeclare module \"@lightningjs/solid-primitives\" {\n // Augment the FocusManager KeyMap interface with our custom keys\n interface KeyMap {\n Announcer: (string | number)[];\n Menu: (string | number)[];\n Escape: (string | number)[];\n Backspace: (string | number)[];\n }\n}\n\ndeclare module \"@lightningjs/solid\" {\n interface ElementNode {\n heroContent?: boolean;\n backdrop?: any;\n entityInfo?: any;\n href?: string;\n }\n}\n\nconst App = (props) => {\n useFocusManager({\n Announcer: [\"a\"],\n Menu: [\"m\"],\n Escape: [\"Escape\", 27],\n Backspace: [\"Backspace\", 8],\n Left: [\"ArrowLeft\", 37],\n Right: [\"ArrowRight\", 39],\n Up: [\"ArrowUp\", 38],\n Down: [\"ArrowDown\", 40],\n Enter: [\"Enter\", 13],\n });\n const announcer = useAnnouncer();\n announcer.enabled = false;\n const navigate = useNavigate();\n\n let navDrawer, lastFocused;\n\n setupFPS({ renderer });\n\n function focusNavDrawer() {\n if (navDrawer.states.has(\"focus\")) {\n return false;\n }\n lastFocused = activeElement();\n return navDrawer.setFocus();\n }\n\n const [showWidgets, setShowWidgets] = createSignal(true);\n const location = useLocation();\n const showOnPaths = [\"/browse\", \"/entity\"];\n createEffect(() => {\n const currentPath = location.pathname;\n let matchesPartial = showOnPaths.some((path) =>\n currentPath.startsWith(path)\n );\n if (currentPath === \"/\") {\n matchesPartial = true;\n }\n setShowWidgets(matchesPartial);\n });\n\n return (\n (announcer.enabled = !announcer.enabled)}\n onLast={() => history.back()}\n onMenu={() => navigate(\"/\")}\n style={{ width: 1920, height: 1080 }}\n onBackspace={focusNavDrawer}\n onLeft={focusNavDrawer}\n onRight={() => navDrawer.states.has(\"focus\") && lastFocused.setFocus()}\n >\n \n \n\n {props.children}\n lastFocused.setFocus()}\n showWidgets={showWidgets()}\n />\n \n );\n};\n\nexport default App;\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { createEffect, on } from 'solid-js';\nimport { Announcer } from './announcer.js';\nimport { focusPath } from '../useFocusManager.js';\nexport const useAnnouncer = () => {\n Announcer.setupTimers();\n createEffect(on(focusPath, Announcer.onFocusChange, { defer: true }));\n return Announcer;\n};\n//# sourceMappingURL=index.js.map","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n hexColor,\n} from \"@lightningjs/solid\";\nimport theme from \"theme\";\n\n// Augment existing intrinsic style prop interfaces to include our own\n// app-specific states\ndeclare module \"@lightningjs/solid\" {\n interface IntrinsicNodeStyleProps {\n // TODO: Refactor states to use a $ prefix\n active?: IntrinsicNodeStyleProps;\n disabled?: IntrinsicNodeStyleProps;\n }\n\n interface IntrinsicTextNodeStyleProps {\n // TODO: Refactor states to use a $ prefix\n active?: IntrinsicTextNodeStyleProps;\n disabled?: IntrinsicTextNodeStyleProps;\n }\n}\n\nexport default {\n Page: {\n width: 1920,\n height: 1080,\n },\n headlineText: {\n width: 1200,\n height: 240,\n x: 360,\n // lineHeight: 170, // TODO: Add back when lineHeight is supported\n y: 455,\n contain: \"both\",\n fontSize: 66,\n textAlign: \"center\",\n } satisfies IntrinsicTextNodeStyleProps,\n headlineSubText: {\n width: 960,\n height: 170,\n // lineHeight: 170, // TODO: Add back when lineHeight is supported\n x: 530,\n y: 655,\n contain: \"both\",\n fontSize: 48,\n textAlign: \"center\",\n } satisfies IntrinsicTextNodeStyleProps,\n itemsContainer: {\n width: theme.layout.screenW,\n height: 600,\n y: 560,\n x: 0,\n zIndex: 2,\n },\n Thumbnail: {\n borderRadius: 16,\n width: 185,\n height: 278,\n scale: 1,\n zIndex: 2,\n transition: { scale: { duration: 250, easing: \"ease-in-out\" } },\n border: { width: 0, color: 0x00000000 },\n focus: { scale: 1.1, border: { color: 0xffffff66, width: 8 } },\n },\n FocusRing: {\n borderRadius: 16,\n width: 194,\n height: 286,\n y: -5,\n x: -5,\n zIndex: -1,\n },\n FPS: {\n color: 0x000000ff,\n height: 42,\n width: 140,\n x: 20,\n y: 20,\n zIndex: 100,\n } as const,\n FPSLabel: {\n x: 10,\n y: 0,\n fontSize: 36,\n textColor: hexColor(\"#ffffff\"),\n },\n FPSValue: {\n x: 90,\n y: 0,\n fontSize: 36,\n textColor: hexColor(\"#ffffff\"),\n },\n showHeadline: { x: 70, y: 20 },\n headlineBlur: {\n width: 1920,\n height: 150,\n x: 0,\n y: 0,\n zIndex: 14,\n alpha: 0.9,\n color: hexColor(\"#000000\"),\n },\n RowTitle: {\n height: 60,\n width: 300,\n marginBottom: -40,\n fontSize: 36,\n color: hexColor(\"#f0f0f0\"),\n zIndex: 2,\n } satisfies IntrinsicTextNodeStyleProps,\n Row: {\n display: \"flex\",\n justifyContent: \"spaceBetween\",\n height: 300,\n },\n Column: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n gap: 64,\n width: theme.layout.screenW - 2 * theme.layout.marginX,\n x: theme.layout.marginX + theme.layout.gutterX,\n y: 48,\n transition: { y: { duration: 250, easing: \"ease-in-out\" } },\n zIndex: 2,\n },\n Rect: {\n width: 250,\n height: 100,\n y: 10,\n x: 300,\n color: hexColor(\"#0000ff\"),\n },\n peopleBio: {\n ...theme.typography.body1,\n fontFamily: \"Ubuntu\",\n fontWeight: \"normal\",\n contain: \"both\",\n width: 780,\n height: 340,\n } satisfies IntrinsicTextNodeStyleProps,\n} as const;\n\nconst Button = {\n width: 120,\n height: 40,\n color: hexColor(\"#000000\"),\n borderRadius: 8,\n border: { width: 2, color: hexColor(\"#3333ff\") },\n scale: 1,\n focus: {\n scale: 1.1,\n border: { width: 5, color: hexColor(\"#333333\") },\n },\n transition: { scale: true, color: true },\n} satisfies IntrinsicNodeStyleProps;\n\nconst TopBar = {\n color: hexColor(\"#00A699\"),\n height: 8,\n y: 2,\n x: -4,\n width: Button.width + 8,\n} satisfies IntrinsicNodeStyleProps;\n\nconst ButtonText = {\n fontSize: 12,\n y: 12,\n // lineHeight: Button.height, // TODO: Add back when lineHeight is supported\n contain: \"width\",\n textAlign: \"center\",\n color: hexColor(\"#F6F6F9\"),\n height: Button.height,\n width: Button.width,\n} satisfies IntrinsicTextNodeStyleProps;\n\nexport const buttonStyles = {\n container: Button,\n topBar: TopBar,\n text: ButtonText,\n} satisfies Record;\n\nexport const MaterialButton = {\n width: 386,\n height: 136,\n color: hexColor(\"#715cab\"),\n focus: {\n color: hexColor(\"#5a39a2\"),\n },\n disabled: {\n color: hexColor(\"#291d43\"),\n },\n} satisfies IntrinsicNodeStyleProps;\n\nexport const MaterialButtonText = {\n fontSize: 32,\n contain: \"width\",\n textAlign: \"center\",\n mountY: -0.35,\n color: hexColor(\"#FFFFFF\"),\n height: MaterialButton.height,\n width: MaterialButton.width,\n // lineHeight: MaterialButton.height, // TODO: Add back when lineHeight is supported\n focus: {\n fontSize: 40,\n },\n disabled: {\n color: hexColor(\"#909090\"),\n },\n} satisfies IntrinsicTextNodeStyleProps;\n","import { IntrinsicNodeProps, View, Text } from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { For, splitProps } from \"solid-js\";\nimport styles, { buttonStyles } from \"../styles\";\nimport { type Tile } from \"../api/formatters/ItemFormatter\";\n\nexport function Thumbnail(props: IntrinsicNodeProps) {\n return ;\n}\n\nexport function FocusRing(props: IntrinsicNodeProps) {\n return ;\n}\n\nexport interface TileRowProps extends IntrinsicNodeProps {\n items: Tile[];\n}\n\nexport function TileRow(props: TileRowProps) {\n const [local, others] = splitProps(props, [\"items\"]);\n\n return (\n \n {(item) => }\n \n );\n}\n\nexport function Button(props) {\n return (\n \n {props.children}\n \n );\n}\n","export default 'eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIyZDE4YjEwMTA0YjdiZTlkNjFiMWYwYjVlMGEwNzM2OCIsInN1YiI6IjYwZTVjMTdlNGNhNjc2MDA3NTA4Njc3MSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.D_nqH9kd-bhhWzeVsTDPYhHnsUaNAuyAa6YATmKHqsA';\n","import API_KEY_V4 from \"./key\";\nconst API_BASE = \"https://api.themoviedb.org/3\";\nlet tmdbConfig;\nlet baseImageUrl;\nconst basePosterSize = \"w185\";\n\nconst defaultFetchParams = {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + API_KEY_V4,\n },\n};\n\nexport function getImageUrl(path: string, posterSize: string = basePosterSize) {\n return baseImageUrl + posterSize + path;\n}\n\nfunction get(path: string, params: RequestInit = {}) {\n if (tmdbConfig) {\n return _get(path, params);\n } else {\n return loadConfig().then(() => _get(path, params));\n }\n}\n\nfunction _get(path: string, params: RequestInit = {}) {\n return fetch(API_BASE + path, {\n ...defaultFetchParams,\n ...params,\n }).then((r) => r.json());\n}\n\nfunction loadConfig() {\n return _get(\"/configuration\").then((data) => {\n tmdbConfig = data;\n baseImageUrl = data.images?.secure_base_url;\n return data;\n });\n}\n\nexport default {\n get,\n loadConfig,\n};\n","import { getImageUrl } from \"../index\";\n\nfunction truncateString(str: string, maxLength: number): string {\n if (str.length > maxLength) {\n return str.substring(0, maxLength - 3) + \"...\";\n }\n return str;\n}\n\nexport function chunkArray(array: string[], size = 7) {\n let result: string[][] = [];\n for (let i = 0, j = array.length; i < j; i += size) {\n result.push(array.slice(i, i + size));\n }\n return result;\n}\n\nexport interface Tile {\n src: string;\n tileSrc: string;\n backdrop: string;\n href: string;\n shortTitle: string;\n title: string;\n data: unknown;\n entityInfo: {\n type: string;\n id: string;\n };\n heroContent: {\n title: string;\n description: string;\n };\n}\n\n// TODO: Remove `any` type\nexport function convertItemsToTiles(items: any[] = []): Tile[] {\n return items.map((item) => ({\n src: getImageUrl(item.poster_path || item.profile_path),\n tileSrc: getImageUrl(item.backdrop_path || item.profile_path, \"w300\"),\n backdrop: getImageUrl(item.backdrop_path, \"w1280\"),\n href: `/entity/${item.media_type || \"people\"}/${item.id}`,\n shortTitle: truncateString(item.title || item.name, 30),\n title: item.title || item.name,\n data: item,\n entityInfo: {\n type: item.media_type || \"people\",\n id: item.id,\n },\n heroContent: {\n title: item.title || item.name,\n description: item.overview,\n },\n }));\n}\n","import api from \"..\";\nimport { convertItemsToTiles, chunkArray } from \"../formatters/ItemFormatter\";\n\nlet cache = new Map();\nconst leftoverTiles = new Map();\n\nexport default function (filter: string) {\n return (pageIndex: number): Promise => {\n const url = `/trending/${filter}/week?page=${pageIndex}`;\n if (cache.has(url)) {\n return cache.get(url);\n }\n\n let result = api.get(url).then((trending) => {\n let results = trending.results.filter((r) => !r.adult);\n let tiles = (\n leftoverTiles.has(filter) ? leftoverTiles.get(filter) : []\n ).concat(convertItemsToTiles(results));\n let chunks = chunkArray(tiles);\n if (chunks[chunks.length - 1].length < 7) {\n leftoverTiles.set(filter, chunks.pop());\n } else {\n leftoverTiles.delete(filter);\n }\n return chunks;\n });\n\n cache.set(url, result);\n return result;\n };\n}\n","import { createSignal, createComputed, batch, createResource } from \"solid-js\";\n\nexport function createInfiniteScroll(fetcher: (page: number) => Promise) {\n const [pages, setPages] = createSignal([]);\n const [page, setPage] = createSignal(1);\n const [end, setEnd] = createSignal(false);\n\n const [contents] = createResource(page, fetcher);\n\n createComputed(() => {\n const content = contents();\n if (!content) return;\n batch(() => {\n if (content.length === 0) setEnd(true);\n setPages((p) => [...p, ...content]);\n });\n });\n\n return {\n pages,\n page,\n setPage,\n setPages,\n end,\n setEnd,\n };\n}\n","import { View, Text } from \"@lightningjs/solid\";\nimport { For, Show } from \"solid-js\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nimport theme from \"theme\";\nwithPadding;\n\nconst blockWidth = 900;\n\nconst ContentBlockStyle = {\n display: \"flex\",\n flexDirection: \"column\",\n x: 50,\n y: 100,\n width: blockWidth,\n height: 220,\n gap: 16,\n};\n\nconst HeadlineStyles = {\n ...theme.typography.display2,\n fontFamily: \"Ubuntu\",\n fontWeight: 700,\n maxLines: 1,\n width: blockWidth,\n contain: \"width\",\n};\nconst Headline = (props) => ;\n\nconst DescriptionStyles = {\n ...theme.typography.body1,\n fontFamily: \"Ubuntu\",\n fontWeight: 400,\n lineHeight: 32,\n width: blockWidth,\n maxLines: 3,\n contain: \"width\",\n};\n\nconst BadgeStyle = {\n fontSize: 16,\n lineHeight: 20,\n};\n\nconst Description = (props) => (\n \n {props.children}\n \n);\n\nconst Badge = (props) => {\n return (\n \n {props.children}\n \n );\n};\n\nconst MetaTextStyle = {\n ...theme.typography.body2,\n fontFamily: \"Ubuntu\",\n fontWeight: 400,\n};\n\nconst Metadata = (props) => (\n \n \n \n \n \n {props.voteCount} reviews\n {props.metaText}\n {(item) => {item}}\n \n);\n\nconst ContentBlock = (props) => (\n \n {props.title}\n {props.description}\n \n);\n\nexport default ContentBlock;\n","import api, { getImageUrl } from \"..\";\nimport { convertItemsToTiles } from \"../formatters/ItemFormatter\";\n\nexport function minutesToHMM(minutes) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return (\n hours + \"h \" + (remainingMinutes < 10 ? \"0\" : \"\") + remainingMinutes + \"min\"\n );\n}\n\nfunction formatDate(dateString) {\n const parts = dateString.split(\"-\");\n return parts[1] + \"/\" + parts[2] + \"/\" + parts[0];\n}\n\nfunction justYear(dateString) {\n const parts = dateString.split(\"-\");\n return parts[0];\n}\n\nexport function getRecommendations({ type, id }) {\n return api.get(`/${type}/${id}/recommendations`).then(({ results }) => {\n if (results.length) {\n return convertItemsToTiles(results.slice(0, 7));\n }\n return api\n .get(`/trending/${type}/week?page=1`)\n .then(({ results }) => convertItemsToTiles(results.slice(0, 7)));\n });\n}\n\nexport function getCredits({ type, id }) {\n return api\n .get(`/${type}/${id}/credits`)\n .then(({ cast }) => convertItemsToTiles(cast.slice(0, 7)));\n}\n\nexport function getInfo({ type, id }) {\n let rt =\n type === \"movie\"\n ? {\n rtCrit: 86,\n rtFan: 92,\n }\n : {};\n\n return api.get(`/${type}/${id}`).then((data) => ({\n backgroundImage: getImageUrl(data.backdrop_path, \"w1280\"),\n heroContent: {\n title: data.title || data.name,\n description: data.overview,\n badges: [\"HD\", \"CC\"],\n voteAverage: data.vote_average,\n voteCount: data.vote_count,\n metaText:\n type === \"movie\"\n ? minutesToHMM(data.runtime) + \" \" + formatDate(data.release_date)\n : `${justYear(data.first_air_date)} - ${justYear(data.last_air_date)}`,\n reviews: rt,\n },\n ...data,\n }));\n}\n","import {\n createEffect,\n createMemo,\n on,\n createSignal,\n Show,\n createResource,\n createSelector,\n For,\n} from \"solid-js\";\nimport { ElementNode, View, activeElement } from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport { useNavigate, useParams } from \"@solidjs/router\";\nimport { TileRow } from \"../components\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\nimport browseProvider from \"../api/providers/browse\";\nimport { createInfiniteScroll } from \"../components/pagination\";\nimport ContentBlock from \"../components/ContentBlock\";\nimport * as entityProvider from \"../api/providers/entity\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\nimport { debounce } from \"@solid-primitives/scheduled\";\n\nconst Browse = () => {\n const params = useParams();\n const [columnY, setcolumnY] = createSignal(0);\n const [entityInfo, setEntityInfo] = createSignal();\n const [entityData] = createResource(entityInfo, entityProvider.getInfo);\n const [heroContent, setHeroContent] = createSignal({});\n const navigate = useNavigate();\n const isFirst = createSelector(() => {\n return 0;\n });\n\n const provider = createMemo(() => {\n return createInfiniteScroll(browseProvider(params.filter || \"all\"));\n });\n\n const delayedBackgrounds = debounce(\n (img: string) => setGlobalBackground(img),\n 400\n );\n const delayedHero = debounce((content: {}) => setHeroContent(content), 200);\n\n createEffect(\n on(\n activeElement,\n (elm) => {\n if (elm.backdrop) {\n delayedBackgrounds(elm.backdrop);\n }\n\n if (elm.heroContent) {\n delayedHero(elm.heroContent);\n }\n },\n { defer: true }\n )\n );\n\n function onRowFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setcolumnY((this.y || 0) * -1 + 24);\n let numPages = provider().pages().length;\n\n if (\n numPages === 0 ||\n (this.parent.selected && this.parent.selected >= numPages - 2)\n ) {\n provider().setPage((p) => p + 1);\n }\n }\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n return true;\n }\n\n return (\n \n \n \n \n \n {(items, i) => (\n \n )}\n \n \n \n \n );\n};\n\nexport default Browse;\n","import { createSignal, createSelector, For } from \"solid-js\";\nimport { ElementNode, View, Text, activeElement } from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { useNavigate } from \"@solidjs/router\";\nimport styles from \"../styles\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\n\nconst Portal = () => {\n const navigate = useNavigate();\n const isFirst = createSelector(() => {\n return 0;\n });\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.id);\n navigate(\"/\" + entity.id);\n }\n\n const demos = [\n {\n title: \"Flex Row\",\n id: \"flex\",\n description: \"Flex Row Implementation\",\n },\n {\n title: \"Flex Column\",\n id: \"flexcolumn\",\n description: \"Flex Column Implementation\",\n },\n {\n title: \"Flex Row Vertical Align\",\n id: \"flexsize\",\n description: \"Flex Row Vertical Align Implementation\",\n },\n {\n title: \"Flex Column Vertical Align\",\n id: \"flexcolumnsize\",\n description: \"Flex Column Vertical Align Implementation\",\n },\n {\n title: \"Buttons\",\n id: \"buttons\",\n description: \"Demo a few buttons\",\n },\n {\n title: \"Text\",\n id: \"text\",\n description: \"Text layout with flexbox\",\n },\n {\n title: \"Create Elements\",\n id: \"create\",\n description: \"Testing Show + children + inserting text\",\n },\n {\n title: \"Viewport\",\n id: \"viewport\",\n description: \"Events going in and out of viewport\",\n },\n ];\n\n function DemoTile(props) {\n const Container = {\n width: 370,\n height: 320,\n borderRadius: 6,\n scale: 1,\n color: 0x182b44ff,\n transition: { color: true, scale: true },\n focus: {\n scale: 1.1,\n color: 0xffffffff,\n },\n };\n const [color, setColor] = createSignal(0xffffffff);\n\n return (\n setColor(0x000000ff)}\n onBlur={() => setColor(0xffffffff)}\n style={Container}\n >\n \n \n {props.index}\n \n \n {props.title}\n \n \n {props.description}\n \n \n \n );\n }\n\n const [rowX, setRowX] = createSignal(140);\n\n function moveRow(row) {\n setRowX(row.selected * -400 + 140);\n }\n\n return (\n \n \n \n \n Examples\n \n \n \n \n \n {(demo, i) => (\n \n )}\n \n \n \n );\n};\n\nexport default Portal;\n","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst TextPage = () => {\n const OverviewContainer = {\n width: 900,\n height: 500,\n y: 350,\n x: 150,\n gap: 25,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const SublineContainer = {\n width: 900,\n height: 36,\n gap: 6,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const Title = {\n fontSize: 42,\n };\n\n const Overview = {\n width: OverviewContainer.width,\n fontSize: 26,\n contain: \"width\",\n } satisfies IntrinsicTextNodeStyleProps;\n\n const Subline = {\n fontSize: 26,\n };\n\n onMount(() => {\n setGlobalBackground(\"#000000\");\n });\n\n return (\n \n Title of the Page\n \n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel\n tempor tellus. Sed eu leo purus. Vestibulum sollicitudin eget tellus a\n varius. Phasellus est turpis, volutpat sed blandit sit amet, rutrum sit\n amet mauris. In dignissim elit orci, a sollicitudin ipsum faucibus et.\n Quisque vel quam rutrum, faucibus augue sed, scelerisque nunc.\n \n \n Subline Text\n \n More Text\n \n \n );\n};\n\nexport default TextPage;\n","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Show, children, createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst CreatePage = () => {\n const OverviewContainer = {\n width: 900,\n height: 500,\n y: 50,\n x: 150,\n gap: 25,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const SublineContainer = {\n width: 900,\n height: 36,\n gap: 6,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const Title = {\n fontSize: 42,\n };\n\n const Subline = {\n fontSize: 26,\n };\n\n let myBox, childRef;\n onMount(() => {\n setGlobalBackground(\"#000000\");\n myBox.animate({ x: 100 }, { duration: 2000 }).start();\n });\n\n const [insertTest, setInsertTest] = createSignal();\n const [emptyTest, setEmptyTest] = createSignal();\n\n setTimeout(() => {\n setInsertTest(\"- Inserted -\");\n childRef\n .getChildById(\"child1\")\n //.searchChildrenById('subChild') - more expensive version of getChildById\n ?.animate({ x: 600 }, { duration: 2000 })\n .start();\n }, 2000);\n\n const styleChild = {\n width: 400,\n height: 300,\n // Solid blue\n color: hexColor(\"#0000ff\"),\n } as const;\n\n const someOtherStyle = {\n // pretty red\n color: hexColor(\"#f54242\"),\n focus: {\n // pretty blue\n color: hexColor(\"#4287f5\"),\n },\n };\n\n function ChildTest(props) {\n // This causes a parent not rendered error since we're rendering it twice in the template\n const resolved = children(() => props.children);\n return (\n \n \n {resolved()}\n \n {props.title}\n \n \n {resolved()}\n \n \n );\n }\n\n const borderStyles = {\n borderLeft: {\n width: 8,\n color: 0x05b2b626,\n },\n borderTop: {\n width: 8,\n color: 0x25a2bd26,\n },\n borderRight: {\n width: 8,\n color: 0x05b2b626,\n },\n borderBottom: {\n width: 8,\n color: 0xc5b23626,\n },\n } as const;\n\n const childTestPassedStyles = {\n // grey color\n color: hexColor(\"#cccccc\"),\n focus: {\n // black\n color: hexColor(\"#000000\"),\n },\n };\n\n const childTestPassedStyles2 = {\n // white color\n color: hexColor(\"#ffffff\"),\n focus: {\n // white something...\n color: hexColor(\"#f6f6cc\"),\n },\n };\n\n function hasFocus(elm) {\n // This doesnt work yet - need to make states reactive\n return elm.states.has(\"focus\");\n }\n\n return (\n \n Title of the Page\n \n {emptyTest()}\n Sub {insertTest()} Text\n \n \n \n More Text\n \n \n Child Test\n \n \n \n );\n};\n\nexport default CreatePage;\n","import { Text, View, hexColor } from \"@lightningjs/solid\";\nimport { onMount, onCleanup, createSignal } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nexport default () => {\n let ball, invervalTimer;\n\n const [ballStatus, setBallStatus] = createSignal([]);\n\n const styleBall = {\n width: 100,\n height: 100,\n x: -400,\n y: -400,\n rotation: 0,\n borderRadius: 50,\n color: hexColor(\"#4287f5\"),\n transition: {\n x: { duration: 1250, easing: \"linear\" },\n y: { duration: 1250, easing: \"linear\" },\n rotation: { duration: 1400, easing: \"ease-in-out\" },\n },\n } as const;\n\n const Title = {\n fontSize: 32,\n x: 960,\n y: 540,\n mount: 0.5,\n lineheight: 52,\n };\n\n const randomIntBetween = (from, to) =>\n Math.floor(Math.random() * (to - from + 1) + from);\n\n onMount(() => {\n setGlobalBackground(\"#000000\");\n\n ball.x = (1920 - 100) / 2;\n ball.y = (1080 - 100) / 2;\n invervalTimer = setInterval(() => {\n ball.rotation = randomIntBetween(-90, 90);\n ball.x = randomIntBetween(-300, 2220);\n ball.y = randomIntBetween(-300, 1380);\n }, 2500);\n });\n\n function logEvent(name, elm) {\n setBallStatus((prev) => {\n return [...prev, name].slice(-4);\n });\n console.log(name);\n }\n\n onCleanup(() => {\n clearInterval(invervalTimer);\n });\n\n return (\n \n {ballStatus().join(\"\\n\")}\n logEvent(\"inBounds\", elm)],\n [\"outOfBounds\", (elm) => logEvent(\"outOfBounds\", elm)],\n [\"inViewport\", (elm) => logEvent(\"inViewport\", elm)],\n [\"outOfViewport\", (elm) => logEvent(\"outOfViewport\", elm)],\n ]}\n />\n \n );\n};\n","import {\n View,\n Text,\n ElementNode,\n IntrinsicNodeProps,\n hexColor,\n IntrinsicNodeStyleProps,\n} from \"@lightningjs/solid\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { buttonStyles } from \"../styles\";\nwithPadding;\n\nconst ButtonsPage = () => {\n function onEnter(this: ElementNode, event, elm) {\n this.states.toggle(\"disabled\");\n }\n\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1500,\n height: 300,\n color: hexColor(\"00000000\"),\n gap: 26,\n y: 400,\n } satisfies IntrinsicNodeStyleProps;\n\n function Button(props) {\n return (\n \n {props.children}\n \n );\n }\n\n const Badge = (props: IntrinsicNodeProps) => {\n return (\n \n \n {props.children as string}\n \n \n );\n };\n return (\n <>\n \n HD\n PG13\n NC17\n I like bananas\n DOLBY\n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default ButtonsPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1600,\n height: 110,\n color: hexColor(\"#4dabf5\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n marginTop: 25,\n marginBottom: -20,\n skipFocus: true,\n };\n\n function Block(props) {\n const styles = {\n width: 200,\n height: 100,\n y: 5,\n color: 0x1769aaff,\n };\n\n return ;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Flex Start\n \n \n \n \n \n \n \n Flex Start - Margin Left\n \n \n \n \n \n \n \n Flex End\n \n \n \n \n \n \n \n\n Flex End - Margin Right\n \n \n \n \n \n \n \n\n Center - No Margin Support\n \n \n \n \n \n \n \n\n Space Between - No Margin Support\n \n \n \n \n \n \n \n\n Space Evenly - No Margin Support\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexSizePage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1600,\n height: 110,\n color: hexColor(\"#4dabf5\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n marginTop: 25,\n marginBottom: -20,\n skipFocus: true,\n };\n\n function Block(props) {\n const styles = {\n width: 200,\n height: 100,\n y: 5,\n color: 0x1769aaff,\n };\n\n return ;\n }\n\n function randSize() {\n // size 21 to 100\n return Math.floor(Math.random() * 91) + 10;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Flex Start - AlignItems: center\n \n \n \n \n \n \n \n \n Flex Start - Margin Left - AlignItems: flexStart\n \n \n \n \n \n \n \n \n Flex End - AlignItems: flexEnd\n \n \n \n \n \n \n \n\n Flex End - Margin Right\n \n \n \n \n \n \n \n\n Center - No Margin Support\n \n \n \n \n \n \n \n\n Space Between - No Margin Support\n \n \n \n \n \n \n \n\n Space Evenly - No Margin Support\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexSizePage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexColumnPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n width: 1920,\n y: 100,\n height: 880,\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const ColumnStyles = {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"#4dabf5\"),\n height: 850,\n width: 80,\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n y: 20,\n x: 150,\n };\n\n function Block(props) {\n const styles = {\n width: randSize(),\n height: 80,\n x: 5,\n color: hexColor(\"#1769aa\"),\n };\n\n return ;\n }\n\n function randSize() {\n // size 10 to 70\n return Math.floor(Math.random() * 61) + 10;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Start, MarginTop, End, MarginBottom, Center, Between, Evenly\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexColumnPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexColumnPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n width: 1920,\n y: 100,\n height: 880,\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const ColumnStyles = {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"#4dabf5\"),\n height: 850,\n width: 60,\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n y: 20,\n x: 150,\n };\n\n function Block(props) {\n const styles = {\n width: 50,\n height: 80,\n x: 5,\n color: hexColor(\"#1769aa\"),\n };\n\n return ;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Start, MarginTop, End, MarginBottom, Center, Between, Evenly\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexColumnPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\n\nimport { MaterialButtonText } from \"../styles\";\n\nconst MaterialButtonsPage = () => {\n function onEnter(this: ElementNode, event, elm) {\n this.states.toggle(\"disabled\");\n }\n\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1500,\n height: 300,\n color: hexColor(\"00000000\"),\n gap: 26,\n y: 400,\n x: 100,\n } satisfies IntrinsicNodeStyleProps;\n\n const MaterialButton = {\n width: 386,\n height: 136,\n color: \"0x715cabff\",\n focus: {\n color: \"0x5a39a2ff\",\n },\n disabled: {\n color: \"0x291d43ff\",\n },\n };\n const RoundedRectangle = [\"RoundedRectangle\", { radius: 65 }];\n function Button(props) {\n return (\n \n {props.children}\n \n );\n }\n\n return (\n \n \n \n \n \n );\n};\n\nexport default MaterialButtonsPage;\n","// Documentation from Shaka player:\n// https://shaka-player-demo.appspot.com/docs/api/tutorial-basic-usage.html\n\nconst manifestUri =\n \"https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd\";\n\nfunction initApp() {\n // Install built-in polyfills to patch browser incompatibilities.\n shaka.polyfill.installAll();\n\n // Check to see if the browser supports the basic APIs Shaka needs.\n if (shaka.Player.isBrowserSupported()) {\n // Everything looks good!\n initPlayer();\n } else {\n // This browser does not have the minimum set of APIs we need.\n console.error(\"Browser not supported!\");\n }\n}\n\nasync function initPlayer() {\n // Create a Player instance.\n const video = document.getElementById(\"video\");\n const player = new shaka.Player();\n await player.attach(video);\n\n // Attach player to the window to make it easy to access in the JS console.\n window.player = player;\n\n // Listen for error events.\n player.addEventListener(\"error\", onErrorEvent);\n\n // Try to load a manifest.\n // This is an asynchronous process.\n try {\n await player.load(manifestUri);\n // This runs if the asynchronous load is successful.\n console.log(\"The video has now been loaded!\");\n } catch (e) {\n // onError is executed if the asynchronous load fails.\n onError(e);\n }\n}\n\nfunction onErrorEvent(event) {\n // Extract the shaka.util.Error object from the event.\n onError(event.detail);\n}\n\nfunction onError(error) {\n // Log the error.\n console.error(\"Error code\", error.code, \"object\", error);\n}\n\nexport function playVideo() {\n const video = document.getElementById(\"video\");\n video.hidden = false;\n // Needs delay from hidden to play in Chrome\n setTimeout(() => video.play(), 50);\n video.focus();\n return video;\n}\n\nexport function closeVideo() {\n const video = document.getElementById(\"video\");\n video.hidden = true;\n video.pause();\n return video;\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", initApp);\n","import {\n ElementNode,\n Text,\n View,\n Show,\n hexColor,\n setActiveElement,\n} from \"@lightningjs/solid\";\nimport { Column, Button, Row } from \"@lightningjs/solid-ui\";\nimport { useParams } from \"@solidjs/router\";\nimport { createEffect, createResource, on, createSignal } from \"solid-js\";\nimport { TileRow } from \"../components\";\nimport { setGlobalBackground } from \"../state\";\nimport ContentBlock from \"../components/ContentBlock\";\nimport { useNavigate } from \"@solidjs/router\";\nimport styles from \"../styles\";\nimport * as provider from \"../api/providers/entity\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\nimport type { Tile } from \"../api/formatters/ItemFormatter\";\nimport { playVideo, closeVideo } from \"../video\";\n\nconst Entity = () => {\n const params = useParams();\n const navigate = useNavigate();\n\n const [data] = createResource(() => ({ ...params }), provider.getInfo);\n const [credits] = createResource(\n () => ({ ...params }),\n provider.getCredits\n );\n const [recommendations] = createResource(\n () => ({ ...params }),\n provider.getRecommendations\n );\n const [backdropAlpha, setBackdropAlpha] = createSignal(0);\n\n createEffect(\n on(\n data,\n (data) => {\n setGlobalBackground(data.backgroundImage);\n },\n { defer: true }\n )\n );\n\n const columnY = 640;\n\n const Backdrop = {\n color: hexColor(\"#000000\"),\n alpha: 0,\n width: 1900,\n height: 890,\n x: -160,\n y: columnY,\n borderRadius: 30,\n };\n\n function onRowFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n columnRef.y = columnY;\n backdropRef.y = columnY;\n backdropRef.alpha = 0;\n }\n\n function onRowFocusAnimate(this: ElementNode) {\n this.children.selected?.setFocus();\n columnRef.y = 200;\n backdropRef.y = 160;\n backdropRef.alpha = 0.9;\n }\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n }\n\n function onEscape() {\n closeVideo();\n // Set focus back to lightning app\n document.getElementsByTagName(\"canvas\")[0].focus();\n entityActions.setFocus();\n setBackdropAlpha(0);\n }\n\n function onEnterTrailer() {\n const video = playVideo();\n setActiveElement(video);\n setBackdropAlpha(0.9);\n }\n\n let columnRef, backdropRef, entityActions;\n\n return (\n \n entityActions.setFocus()} onEscape={onEscape}>\n \n columnRef.setFocus()}\n onEnter={onEnterTrailer}\n >\n \n \n \n\n \n \n \n Recommendations\n \n \n \n Cast and Crew\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Entity;\n","import api, { getImageUrl } from \"..\";\nimport { convertItemsToTiles } from \"../formatters/ItemFormatter\";\n\nexport function minutesToHMM(minutes) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return (\n hours + \"h \" + (remainingMinutes < 10 ? \"0\" : \"\") + remainingMinutes + \"m\"\n );\n}\n\nfunction justYear(dateString) {\n const parts = dateString.split(\"-\");\n return parts[0];\n}\n\nexport function getCredits({ id }) {\n return api\n .get(`/person/${id}/combined_credits`)\n .then(({ cast }) => convertItemsToTiles(cast.slice(0, 7)));\n}\n\nexport function getInfo({ id }) {\n return api.get(`/person/${id}`).then((data) => ({\n backgroundImage: getImageUrl(data.profile_path, \"original\"),\n heroContent: {\n title: data.title || data.name,\n description: data.biography,\n },\n ...data,\n }));\n}\n","import { ElementNode, Text, View, Show, hexColor } from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport { useParams } from \"@solidjs/router\";\nimport { createResource, onMount } from \"solid-js\";\nimport { TileRow } from \"../components\";\nimport { setGlobalBackground } from \"../state\";\nimport { useNavigate } from \"@solidjs/router\";\nimport theme from \"theme\";\nimport styles from \"../styles\";\nimport * as provider from \"../api/providers/people\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\n\nconst People = () => {\n const params = useParams();\n const navigate = useNavigate();\n\n const [data] = createResource(() => ({ ...params }), provider.getInfo);\n const [credits] = createResource(() => ({ ...params }), provider.getCredits);\n\n const Backdrop = {\n color: hexColor(\"#000000\"),\n alpha: 0.8,\n width: 800,\n height: 440,\n x: 130,\n y: 180,\n borderRadius: 30,\n };\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n return (\n \n \n \n \n {data().name}\n \n \n {data().biography}\n \n \n \n \n \n \n Credits\n \n \n \n \n \n );\n};\n\nexport default People;\n","const NotFound = () => {\n return ;\n};\n\nexport default NotFound;\n","export default import.meta.ROLLUP_FILE_URL_DM04K3OB;","import {\n render,\n Config,\n SolidNode,\n SolidRendererOptions,\n hexColor,\n ElementNode,\n} from \"@lightningjs/solid\";\nimport { HashRouter, Route } from \"@solidjs/router\";\nimport App from \"./pages/App\";\nimport Browse from \"./pages/Browse\";\nimport Portal from \"./pages/Portal\";\nimport TextPage from \"./pages/Text\";\nimport CreatePage from \"./pages/Create\";\nimport ViewportPage from \"./pages/Viewport\";\nimport ButtonsPage from \"./pages/Buttons\";\nimport FlexPage from \"./pages/Flex\";\nimport FlexSizePage from \"./pages/FlexSize\";\nimport FlexColumnSizePage from \"./pages/FlexColumnSize\";\nimport FlexColumnPage from \"./pages/FlexColumn\";\nimport ButtonsMaterialPage from \"./pages/ButtonsMaterial\";\nimport Entity from \"./pages/Entity\";\nimport People from \"./pages/People\";\nimport NotFound from \"./pages/NotFound\";\nimport coreExtensionModuleUrl from \"./AppCoreExtensions.js?importChunkUrl\";\n\nconst logFps = true;\nConfig.debug = false;\nConfig.animationsEnabled = true;\nConfig.fontSettings.fontFamily = \"Ubuntu\";\nConfig.fontSettings.color = hexColor(\"#f6f6f6\");\nConfig.fontSettings.fontSize = 32;\nConfig.rendererOptions = {\n coreExtensionModule: coreExtensionModuleUrl,\n fpsUpdateInterval: logFps ? 200 : 0,\n enableInspector: true,\n // deviceLogicalPixelRatio: 1\n};\n\nrender(() => (\n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n));\n"],"names":["getUnicodeCodepoints","TextureUsageTracker","constructor","releaseCallback","_defineProperty","this","ManualCountTextureUsageTracker","options","_options$textureClean","_options$textureClean2","super","Map","Set","textureCleanupIntervalMs","textureCleanupAgeThreadholdMs","setInterval","_step4","now","Date","thresholdMs","_iterator4","_createForOfIteratorHelper","zeroReferenceTextureSet","s","n","done","textureRefInfo","value","lastUpdate","id","textureMap","delete","err","e","f","registerTexture","texture","_texture$options","textureId","assertTruthy","has","nodeRefCount","set","add","incrementTextureRefCount","_texture$options2","get","txType","props","decrementTextureRefCount","_texture$options3","FinalizationRegistryTextureUsageTracker","registry","FinalizationRegistry","_texture$options4","_texture$options5","register","stylePropertyMap","alpha","v","prop","x","y","width","w","height","h","zIndex","fontFamily","fontSize","fontStyle","fontWeight","fontStretch","lineHeight","letterSpacing","textAlign","overflowSuffix","maxLines","contain","verticalAlign","clipping","rotation","scale","scaleX","scaleY","color","convertColorToRgba","domPropertyMap","Inspector","canvas","settings","_settings$appHeight","_settings$deviceLogic","_settings$appWidth","_settings$deviceLogic2","_settings$deviceLogic3","_settings$deviceLogic4","isProductionEnvironment","Error","Math","ceil","appHeight","deviceLogicalPixelRatio","appWidth","root","document","createElement","setRootPosition","body","appendChild","MutationObserver","bind","observe","attributes","childList","subtree","ResizeObserver","window","addEventListener","console","warn","rect","getBoundingClientRect","top","documentElement","scrollTop","left","scrollLeft","style","position","transformOrigin","transform","overflow","createDiv","node","properties","div","key","toString","updateNodeProperty","createNode","driver","createProxy","createTextNode","Proxy","target","property","Reflect","receiver","destroyNode","anim","animate","animateNode","getElementById","remove","innerHTML","String","visibility","setAttribute","_stylePropertyMap$pro","mappedStyleResponse","call","setProperty","parentId","parent","_settings$duration","duration","_settings$delay","delay","_props$alpha","_props$rotation","_props$scale","setTimeout","opacity","rotate","ShaderEffect","getEffectKey","getMethodParameters","uniforms","res","u","uni","define","size","push","type","join","ref","_options$props","uniformInfo","passParameters","declaredUniforms","unif","uniType","uniformName","name","uniform","method","resolveDefaults","makeEffectKey","trPropSetterDefaults","state","text","offsetY","scrollable","scrollY","textBaseline","debug","TextRenderer","stage","propSetters","_objectSpread","getPropertySetters","Object","freeze","fromEntries","entries","map","setter","requestRender","setStatus","status","error","emitter","emit","setIsRenderable","renderable","isRenderable","destroyState","forEach","eventName","off","scheduleUpdateState","updateScheduled","queueMicrotask","updateState","WebTrFontFace","TrFontFace","descriptors","fontUrl","fontUrlWithoutParentheses","replace","determinedDescriptors","cssDescriptors","weight","stretch","unicodeRange","variant","featureSettings","display","fontFace","FontFace","load","then","loaded","catch","calcHeight","numLines","max","LightningTextTextureRenderer","context","_canvas","_context","_settings","mergeDefaults","getPrecision","precision","setFontProperties","font","_getFontSetting","ff","ffs","i","length","_load","fonts","fontSetting","check","calculateRenderInfo","renderInfo","paddingLeft","paddingRight","wordWrapWidth","cutSx","cutEx","cutSy","cutEy","textIndent","linesInfo","innerWidth","textOverflow","wordWrap","suffix","wrapWord","wrapText","l","split","lines","usedLines","slice","otherLines","measureText","al","j","m","remainingText","moreTextLines","maxLineWidth","lineWidths","lineWidth","min","draw","linesOverride","linePositionX","linePositionY","textRenderIssueMargin","globalAlpha","fillRect","translate","drawLines","highlight","highlightColor","hlHeight","highlightHeight","offset","highlightOffset","hlPaddingLeft","highlightPaddingLeft","hlPaddingRight","highlightPaddingRight","fillStyle","getRgbaString","drawLine","prevShadowSettings","shadow","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","textColor","fillText","textSplit","word","suffixWidth","wordLen","wordWidth","cutoffIndex","floor","truncWordWidth","substring","indent","allLines","realNewlines","resultLines","result","spaceLeft","words","wordWidthWithSpace","concat","space","reduce","acc","char","wordBreak","advancedRenderer","fontBaselineRatio","resolvedGlobal","self","globalThis","globalFontSet","_resolvedGlobal$docum","tmpElementBounds","createBound","CanvasTextRenderer","OffscreenCanvas","getContext","rendererBounds","x1","y1","x2","y2","fontInfo","undefined","invalidateLayoutCache","invalidateVisibleWindowCache","canRenderFont","isFontFaceSupported","addFontFace","createState","EventEmitter","canvasPages","lightning2TextRenderer","renderWindow","visibleWindow","valid","forceFullLayoutCalc","textW","textH","fontFaceLoadedHandler","debugData","updateCount","layoutCount","drawCount","lastLayoutNumCharacters","layoutSum","drawSum","bufferSize","cssString","onFontLoaded","onFontLoadError","containedMaxLines","calcMaxLines","getNormalizedRgbaComponents","_state$props","elementBounds","Infinity","intersectBound","visibleWindowHeight","maxLinesPerCanvasPage","renderWindowScreenX1","renderWindowScreenY1","renderWindowScreenX2","renderWindowScreenY2","shift","lineNumStart","lineNumEnd","unshift","pop","_canvasPages","_canvasPages2","_canvasPages3","pageHeight","page1Block","page1LineStart","page0LineStart","page2LineStart","scrollYNearestPage","performance","_step5","_iterator5","pageInfo","_pageInfo$texture","setRenderableOwner","txManager","loadTexture","src","_pageInfo$texture2","getImageData","preload","renderQuads","clippingRect","_state$textW","_state$textH","_state$props2","elementRect","intersectRect","_canvasPages$0$textur","_canvasPages$0$textur2","_canvasPages$1$textur","_canvasPages$1$textur2","_canvasPages$2$textur","_canvasPages$2$textur2","pageSize","_state$props3","combinedAlpha","getNormalizedAlphaComponent","quadColor","mergeColorAlphaPremultiplied","renderer","addQuad","colorBl","colorBr","colorTl","colorTr","dimensions","textureOptions","shader","shaderProps","tx","ty","ta","tb","tc","td","_state$canvasPages","_pageInfo$texture3","_state$canvasPages2","_pageInfo$texture4","_state$fontInfo","_state$fontInfo2","DefaultShader","WebGlCoreShader","bindTextures","textures","glw","activeTexture","bindTexture","ctxTexture","vertex","fragment","DefaultShaderBatched","system","parameters","MAX_VERTEX_TEXTURE_IMAGE_UNITS","t","samplers","Array","from","keys","setUniform","textureUnits","idx","effectCache","getResolvedEffect","effects","effectContructors","JSON","stringify","effect","DynamicShader","createShader","shaderSources","calculateProps","memize","regEffects","shManager","getRegisteredEffects","results","eff","index","_eff$props","fxClass","uniInfo","p","fxProp","propInfo","validator","isArray","Float32Array","bindProps","r","canBatchShaderProps","propsA","propsB","$dimensions","propsEffectsLen","effectA","effectB","effectNameCount","methods","declareUniforms","uFx","baseClass","nr","values","effectMethods","fx","_fx$props","fxProps","remap","cm","fxMethod","resolveMethodDuplicate","onShaderMask","Function","onColorize","onEffectMask","reg","RegExp","methodParameters","pm","sharedMethods","currentMask","drawEffects","current","currentClass","next","effectMethod","methodCollection","increment","$alpha","makeCacheKey","_props$effects","RoundedRectangle","radius","IDENTITY_MATRIX_3x3","SdfShader","resolvedProps","components","_props$transform","_props$scrollY","_props$color","_props$size","_props$distanceRange","_props$debug","distanceRange","RadiusEffect","args","_props$radius","fillMask","boxDist","BorderEffect","_props$width","_props$color2","rgba","LinearGradientEffect","colors","_props$colors","_props$angle","stops","colorsL","tmp","angle","_LinearGradientEffect","rgbas","val","fromLinear","toLinear","calcPoint","amount","loop","ColorLoop","GrayscaleEffect","_props$amount","BorderRightEffect","_props$width2","_props$color3","rectDist","BorderTopEffect","_props$width3","_props$color4","BorderBottomEffect","_props$width4","_props$color5","BorderLeftEffect","_props$width5","_props$color6","GlitchEffect","_props$amplitude","_props$narrowness","_props$blockiness","_props$minimizer","_props$time","amplitude","narrowness","blockiness","minimizer","time","rand","noise","fbm","FadeOutEffect","_props$fade","fade","RadialGradientEffect","_props$colors2","_props$width6","_ref","_props$height","_props$pivot","pivot","_RadialGradientEffect","RadialProgressEffect","_props$width7","_props$progress","_props$offset","_props$range","_props$rounded","_props$radius2","_props$color7","progress","range","PI","rounded","rotateUV","drawDot","HolePunchEffect","_props$radius3","CoreShaderManager","registerShaderType","registerEffectType","shType","shClass","shConstructors","effectType","effectClass","effectConstructors","getRegisteredShaders","loadShader","ShaderClass","loadDynamicShader","cacheKey","shCache","useShader","attachedShader","detach","attach","ContextSpy","reset","data","getData","loadCompressedTexture","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","response","arrayBuffer","wrap","prev","fetch","sent","indexOf","abrupt","loadKTXData","loadPVRData","stop","_x2","apply","arguments","_ref3","_callee2","buffer","view","littleEndian","mipmaps","imageSize","_context2","DataView","getUint32","glInternalFormat","pixelWidth","pixelHeight","numberOfMipmapLevels","bytesOfKeyValueData","premultiplyAlpha","_x3","_ref4","_callee3","pvrHeaderLength","header","dataOffset","pvrtcData","level","_context3","Int32Array","Uint8Array","byteOffset","_x4","ImageTexture","Texture","hasAlphaChannel","mimeType","getTextureData","_this","_callee4","_this$props","blob","img","_callee4$","_context4","ImageData","test","imageWorkerManager","getImage","hasCreateImageBitmap","createImageBitmap","colorSpaceConversion","imageOrientation","t0","t1","Image","substr","crossOrigin","Promise","resolve","reject","onload","onerror","_props$src","_props$premultiplyAlp","PeekableIterator","iterator","indexBase","_lastIndex","peekBuffer","nextResult","peek","lastIndex","start","codePoint","getUnicodeCodepoints$","_context5","codePointAt","_marked","layoutText","curLineIndex","startX","startY","vertexBuffer","lineCache","rwSdf","trFontFace","shaper","glyphResult","fontSizeRatio","info","vertexLineHeight","vertexW","vertexLSpacing","startingLineCacheEntry","startingCodepointIndex","codepointIndex","maxX","maxY","curX","curY","bufferOffset","lastWord","xStart","shaperProps","glyphs","shapeText","curLineBufferStart","bufferLineInfos","vertexTruncateHeight","overflowSuffVertexWidth","_step6","_iterator6","glyph","mapped","xAdvance","moreLines","nextLineWillFit","maxCharHeight","lineVertexW","xStartLastWordBoundary","lineIsBelowWindowTop","lineIsAboveWindowBottom","lineIsWithinWindow","cluster","codepoint","charEndX","xOffset","quadX","quadY","yOffset","atlasEntry","getAtlasEntry","glyphId","common","scaleW","scaleH","uvWidth","uvHeight","bufferStart","bufferEnd","vertexTextW","line","bufferNumFloats","bufferNumQuads","layoutNumCharacters","fullyProcessed","setRenderWindow","outRenderWindow","bufferMargin","multiple","screen","sdf","isBoundPositive","y1Base","roundUpToMultiple","firstLineIdx","weightConversions","normal","bold","bolder","lighter","fontWeightToNumber","resolveFontToUse","familyMapsByPriority","family","weightIn","_step7","_iterator7","fontFaces","_step8","weightMap","_iterator8","fontFamilyWeight","msg","TrFontManager","textRenderers","trId","tr","resolveFontFace","tmpRect","SdfTextRenderer","ssdfFontFamilies","msdfFontFamilies","sdfShader","releaseFontFace","setElementBoundsX","boundsOverlap","setElementBoundsY","SdfTrFontFace","familyName","fontFamiles","faceSet","webGlBuffers","bufferUploaded","_state$props4","sdfFontSize","sdfLineHeight","distanceField","neededLength","rwScreen","_state$props5","startLineIndex","sdfVerticalAlignYOffset","sdfStartY","sdfX","sdfY","lineIndex","getStartConditions","out2","byteLength","once","parentHasRenderTexture","framebufferDimensions","_trFontFace$data","_state$trFontFace","_state$props6","_state$textW2","_state$textH2","stride","BYTES_PER_ELEMENT","webGlBuffer","createBuffer","BufferCollection","a_position","FLOAT","normalized","a_textureCoordinate","_webGlBuffers$getBuff","_webGlBuffers","getBuffer","arrayBufferData","STATIC_DRAW","convertBoundToRect","copyRect","renderOp","WebGlCoreRenderOp","mergeColorAlpha","sdfShaderDebug","getCtxTexture","addTexture","numQuads","addRenderOp","_state$trFontFace2","_state$trFontFace3","fontFamilyArray","_state$props7","_state$props8","loadCoreExtension","_x5","_x6","_loadCoreExtension","_callee12","coreExtensionModule","module$1","ExtensionClass","coreExtension","_callee12$","_context13","log","__vitePreload","module","default","classExtendsCoreExtension","prototype","CoreExtension","run","santizeCustomDataMap","d","validTypes","boolean","string","number","valueType","RendererMain","_settings$clearColor","_settings$experimenta","_settings$enableConte","_settings$enableInspe","resolvedSettings","txMemByteThreshold","boundsMargin","devicePhysicalPixelRatio","devicePixelRatio","clearColor","experimental_FinalizationRegistryTextureUsageTracker","textureCleanupOptions","fpsUpdateInterval","numImageWorkers","enableContextSpy","enableInspector","releaseTexture","useFinalizationRegistryTracker","textureTracker","deviceLogicalWidth","deviceLogicalHeight","targetEl","onCreateNode","nodes","onBeforeDestroyNode","onFpsUpdate","fpsData","onFrameTick","frameTickData","onIdle","inspector","init","_this2","_callee5","_context6","getRootNode","resolveNodeDefaults","_props$fontSize","_props$text","_props$textRendererOv","_props$fontFamily","_props$fontStyle","_props$fontWeight","_props$fontStretch","_props$textAlign","_props$contain","_props$scrollable","_props$scrollY2","_props$offsetY","_props$letterSpacing","_props$lineHeight","_props$maxLines","_props$textBaseline","_props$verticalAlign","_props$overflowSuffix","_props$debug2","textRendererOverride","_props$color8","_ref5","_ref6","_props$colorTl","_ref7","_ref8","_props$colorTr","_ref9","_ref10","_props$colorBl","_ref11","_ref12","_props$colorBr","_props$data","_ref13","_props$parent$rtt","_props$parent","_props$parent2","_props$x","_props$y","_props$width8","_props$height2","_props$alpha2","_props$autosize","_props$clipping","_props$colorTop","_props$colorBottom","_props$colorLeft","_props$colorRight","_props$zIndex","_props$zIndexLocked","_props$parent3","_props$texture","_props$shader","_props$src2","_props$scale2","_ref14","_props$scaleX","_ref15","_props$scaleY","_props$mount","_ref16","_props$mountX","_ref17","_props$mountY","_props$pivot2","_ref18","_props$pivotX","_ref19","_props$pivotY","_props$rotation2","_props$rtt","colorTop","colorLeft","colorRight","colorBottom","rtt","autosize","zIndexLocked","mount","mountX","mountY","pivotX","pivotY","createTexture","textureType","nextTextureId","desc","descType","shaderType","getNodeById","toggleFreeze","advanceFrame","rerender","CoreAnimation","propStartValues","propsList","propName","timingFunction","easing","getTimingFunction","delayFor","update","restore","reverse","startValue","endValue","stopMethod","applyEasing","dt","_this$settings","propValue","easingProgressValue","easingColorValue","mergeColorProgress","CoreAnimationController","manager","animation","makeStartedPromise","started","makeStoppedPromise","finished","activeAnimations","registerAnimation","unregisterAnimation","stoppedResolve","pause","waitUntilStarted","promise","startedPromise","waitUntilStopped","stoppedPromise","startedResolve","_this$animation$setti","Matrix3d","temp","tempMatrix","multiply","a","b","out","e0","e1","e2","e3","e4","e5","e6","e7","e8","identity","sx","sy","cos","sin","copy","dst","transpose","other","transformPoint","CoreNodeRenderState","RenderCoords","x3","y3","x4","y4","UpdateType","CoreNodeRenderStateMap","Init","OutOfBounds","InBounds","InViewport","CoreNode","All","autosizeNode","setRTTUpdates","updateScaleRotateTransform","unloadTexture","setUpdateType","IsRenderable","onTextureLoaded","onTextureFailed","onTextureFreed","on","getShaderManager","_shManager$loadShader","updateType","Children","sortChildren","children","sort","calcZIndex","scaleRotateTransform","updateLocalTransform","pivotTranslateX","pivotTranslateY","mountTranslateX","mountTranslateY","localTransform","Global","delta","parentClippingRect","ScaleRotate","Local","_this$props$parent","childUpdateType","None","globalTransform","calculateRenderCoords","updateBoundingRect","Clipping","RenderState","calculateClippingRect","WorldAlpha","worldAlpha","PremultipliedColors","premultipliedColorTl","premultipliedColorTr","premultipliedColorBl","premultipliedColorBr","updateRenderState","updateIsRenderable","CalculatedZIndex","calculateZIndex","ZIndexSortedChildren","child","checkRenderProps","checkRenderBounds","renderBound","rectW","rectH","strictBound","renderM","preloadBound","boundInsideBound","renderState","previous","event","setRenderState","newIsRenderable","onChangeIsRenderable","_this$props$texture","minX","minY","renderCoords","gt","isRotated","_props$parent4","_props$parent5","z","destroy","removeAllListeners","_this$props2","renderToTextureActive","parentRenderTexture","activeRttNode","absX","_this$props$parent2","_this$props$parent3","absY","_this$props$parent$ab","_this$props$parent4","newParent","oldParent","splice","_this$stage$renderer","hasRTTupdates","renderToTexture","_this$parent","_this$parent2","nextId","getNewId","MainOnlyNode","rendererMain","coreNode","_coreNode$id","payload","onOutOfBounds","onInBounds","onOutOfViewport","onInViewport","_data","_parent","_newParent$coreNode","_children","_src","imageUrl","_texture","flipY","_shader","flush","animationManager","AnimationManager","ImageWorkerManager","workers","createWorkers","worker","onmessage","handleMessage","_event$data","messageManager","_msg","_slicedToArray","numWorkers","Blob","blobURL","URL","webkitURL","createObjectURL","Worker","getNextWorker","workerIndex","convertUrlToAbsolute","location","href","absoluteSrcUrl","postMessage","NoiseTexture","_this3","_callee6","_this3$props","pixelData8","_context7","Uint8ClampedArray","random","cacheId","_props$width9","_props$height3","_props$cacheId","CoreTextureManager","WeakMap","hasWorker","registerTextureType","ColorTexture","SubTexture","RenderTexture","textureClass","txConstructors","TextureClass","textureIdCache","_options$cacheKey","descId","textureKeyCache","addTextureIdToCache","textureDescId","textureRefCountMap","count","removeTextureIdFromCache","_this$ctxTextureCache","refCountObj","ctxTextureCache","free","getDebugInfo","keyCacheSize","idCacheSize","textureSource","createCtxTexture","TextureMemoryManager","byteThreshold","threshold","setTextureMemUse","byteSize","memUsed","gc","Stage","rootId","txMemManager","contextSpy","bm","monitorTextureCache","debugInfo","WebGlCoreRenderer","pixelRatio","bufferMemory","fontManager","isIdle","runLoop","rootNode","updateAnimations","hasSceneUpdates","calculateFps","drawFrame","requestAnimationFrame","lastFrameTime","currentFrameTime","deltaTime","renderRequested","rttNodes","renderRTTNodes","addQuads","render","fpsNumFrames","fpsElapsedTime","_this$contextSpy$getD","_this$contextSpy","_this$contextSpy2","fps","round","contextSpyData","resolveTextRenderer","trProps","rendererId","overrideFallback","possibleRenderer","_i8","_Object$entries","_Object$entries$_i","resolvedTextRenderer","CoreTextNode","setWidth","trState","setHeight","calcWidth","_textRendererOverride","_this$resolveTextRend","resolveTextRendererAndState","textRendererState","textRenderer","_this$resolveTextRend2","_this$props$parent5","_this$localTransform","onTextLoaded","onTextFailed","MainOnlyTextNode","MainCoreDriver","rendererSettings","_this4","_callee7","_context8","SuspenseContext","equalFn","$PROXY","Symbol","$TRACK","signalOptions","equals","runEffects","runQueue","STALE","PENDING","UNOWNED","owned","cleanups","owner","NO_INIT","Owner","Transition","Listener","Updates","Effects","ExecCount","createRoot","fn","detachedOwner","listener","unowned","updateFn","untrack","cleanNode","runUpdates","createSignal","observers","observerSlots","comparator","assign","readSignal","writeSignal","createComputed","updateComputation","createComputation","createRenderEffect","createEffect","runUserEffects","c","user","createMemo","createResource","pSource","pFetcher","pOptions","source","fetcher","pr","initP","scheduled","resolved","dynamic","contexts","_ref21","storage","initialValue","setValue","_createSignal2","setError","_createSignal3","_createSignal4","track","trigger","_createSignal6","setState","loadEnd","onHydrated","_step9","_iterator9","decrement","clear","completeLoad","read","refetching","lookup","castError","defineProperties","loading","latest","refetch","mutate","createSelector","subs","_step10","_iterator10","_step10$value","_iterator11","_step11","pure","onCleanup","deps","prevInput","defer","prevValue","input","onMount","getOwner","runWithOwner","o","prevListener","handleError","startTransition","createContext","defaultValue","Provider","createProvider","useContext","memo","resolveChildren","toArray","sources","updates","lookUpstream","sSlot","sourceSlots","isComp","TransitionRunning","running","disposed","tState","markDownstream","nextValue","updatedAt","runComputation","runTop","suspense","inFallback","ancestors","wait","completeUpdates","queue","userLength","ignore","obs","cause","FALLBACK","dispose","createComponent","Comp","trueFn","propTraps","_","deleteProperty","getOwnPropertyDescriptor","configurable","enumerable","ownKeys","resolveSource","resolveSources","mergeProps","proxy","sourcesMap","defined","create","sourceKeys","getOwnPropertyNames","_loop","definedKeys","defineProperty","narrowedError","For","fallback","list","mapFn","items","disposers","len","indexes","newItems","newIndices","newIndicesNext","tempdisposers","tempIndexes","end","newEnd","item","newLen","disposer","mapper","_createSignal8","mapArray","each","Show","keyed","condition","when","startLightningRenderer","selected","firstChild","insert","beforeNode","_isDirty","nodeIndexToRemove","config","animationsEnabled","animationSettings","fontSettings","isFunc","flattenStyles","obj","States","callback","initialState","filter","_key","onChange","is","toggle","stateIndexToRemove","_createSignal10","activeElement","setActiveElement","defaultAnimationSettings","convertEffectsToShader","styleEffects","_i16","_Object$entries2","_Object$entries2$_i","borderAccessor","direction","ElementNode","_renderProps","_effects","lng","_p$lng","_sendToLightning","_sendToLightningAnimatable","transition","chain","_animationRunning","_animationQueue","_animationQueueSettings","_this5","_callee8","_callee8$","_context9","setFocus","forwardFocus","focusedIndex","autofocus","isTextNode","_resizeOnTextLoad","_node","loadedPayload","updateLayout","getText","_this$lng","_queueDelete","onEvents","events","_events","_style","hasChildren","getChildById","find","searchChildrenById","found","states","_states","_stateChanged","_animationSettings","_this$parent3","changedLayout","onBeforeLayout","hasOrder","flexItem","flexOrder","numChildren","isRow","flexDirection","dimension","crossDimension","marginOne","marginTwo","crossProp","containerSize","containerCrossSize","gap","justify","justifyContent","align","alignItems","itemSize","includes","crossAlignChild","flexBoundary","calculatedSize","toPad","calculateFlex","_this$parent4","onLayout","forwardStates","_undoStyles","_iterator14","_step14","keyExists","stylesToUndo","styleKey","newStyles","styles","marginRight","_autosized","marginBottom","isNaN","onFail","onLoad","onCreate","handler","_node$lng","inode","solid","_loop2","_i17","_LightningRendererNum","_loop3","_i18","_LightningRendererNon","borderRadius","_borderRadius","border","borderLeft","borderRight","borderTop","borderBottom","linearGradient","_linearGradient","Text","_el$","_$createElement","View","createRenderer$1","replaceText","insertNode","removeNode","getParentNode","getFirstChild","getNextSibling","accessor","marker","initial","insertExpression","unwrapArray","multi","cleanChildren","array","normalizeIncomingArray","replacement","appendNodes","reconcileArrays","replaceNode","unwrap","parentNode","bLength","aEnd","bEnd","aStart","bStart","after","sequence","removed","inserted","el","isParent","newNode","oldNode","spreadExpression","prevProps","skipChildren","code","element","spread","setProp","use","arg","universalLightning","anchor","solidRenderer","createRenderer","_ref22","_callee9","_context10","rendererOptions","_x7","_x8","hexColor","Number","isInteger","startsWith","$$EVENTS","eventHandler","composedPath","disabled","cancelBubble","_$host","host","depth","createBeforeLeave","listeners","subscribe","confirm","to","_step15","defaultPrevented","preventDefault","_iterator15","_loop4","retry","force","navigate","saveCurrentDepth","history","_depth","replaceState","hasSchemeRegex","trimPathRegex","mockBase","normalizePath","path","omitSlash","resolvePath","base","basePath","fromPath","toLowerCase","extractSearchParams","params","searchParams","createMatcher","partial","matchFilters","_path$split2","pattern","splat","segments","Boolean","locSegments","lenDiff","match","matchFilter","segment","locSegment","matchSegment","remainder","isEqual","localeCompare","sensitivity","some","createMemoObject","expandOptionals","exec","prefix","prefixes","expansion","intent","RouterContextObj","RouteContextObj","useRouter","message","invariant","useNavigate","navigatorFactory","useLocation","useParams","createRoutes","routeDef","component","isLeaf","shared","asArray","_step17","_iterator17","originalPath","encodeURIComponent","matcher","createBranch","routes","score","route","_route$pattern$split2","matches","createBranches","stack","branches","routeDefs","def","hasOwnProperty","_step18","_iterator18","isEmptyArray","branch","getRouteMatches","createRouterContext","integration","_integration$signal","signal","setSource","_integration$utils","utils","parsePath","renderPath","beforeLeave","scroll","_createSignal12","isRouting","setIsRouting","_ref23","_callee10","_context11","finish","_x9","_createSignal14","reference","setReference","_createSignal16","origin","path_","pathname","search","hash","query","createLocation","referrers","submissions","baseRoute","outlet","_source","_replace$resolve$scro","nextState","resolvedTo","first","go","navigateFromRoute","preloadRoute","preloadData","prevIntent","_loop5","_matches$match","singleFlight","createRouterComponent","routerState","router","_$createComponent","Root","rootLoad","_$memo","Routes","routeStates","nextMatches","prevMatches","equal","_loop6","prevMatch","nextMatch","_match$route","createRouteContext","createOutlet","Route","childRoutes","scrollToHash","fallbackTop","selector","querySelector","scrollIntoView","scrollTo","actions","setupNativeEvents","explicitLinks","actionBase","preloadTimeout","handleAnchor","evt","button","metaKey","altKey","ctrlKey","shiftKey","Node","nodeName","toUpperCase","hasAttribute","svg","namespaceURI","baseVal","rel","getAttribute","baseURI","handleAnchorClick","_res","parse","handleAnchorPreload","_res2","handleAnchorIn","_res3","handleAnchorOut","clearTimeout","handleFormSubmit","actionRef","submitter","FormData","append","eventNames","delegateEvents","removeEventListener","hashParser","str","_window$location$hash3","HashRouter","getSource","intercept","createRouter","keepDepth","hashIndex","notify","bindEvent","block","prevDepth","notifyIfNotBlocked","tryOnCleanup","createSingletonRoot","factory","disposeRoot","useKeyDownEvent","_createSignal18","setEvent","makeEventListener","currentSeries","keyMapEntries","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Enter","Backspace","Escape","_createSignal20","focusPath","setFocusPath","useFocusManager","userKeyMap","keypressEvent","_loop7","_Object$entries3$_i","_Object$entries3","_i20","currentFocusedElm","prevFocusedElm","prevFocusPath","fp","onFocus","elm","onBlur","mappedKeyEvent","keyCode","_step19","finalFocusElm","_iterator19","onKeyHandler","onKeyPress","withPadding","padding","right","bottom","pad","_pad","marginLeft","maxHeight","marginTop","speak","phrase","utterances","lang","synth","speechSynthesis","utterance","SpeechSynthesisUtterance","onend","speakSeries","series","remainingPhrases","flattenedSeries","flattenStrings","nestedSeriesResults","active","_callee11","totalRetries","retriesLeft","seriesResult","_seriesResult","_callee11$","_context12","SpeechSynthesisErrorEvent","toSpeak","cancel","SpeechEngine","resetFocusPathTimer","currentlySpeaking","debounce","timeoutId","debounced","voiceOutDisabled","debounceWithFlush","scopedValue","newValue","getElmName","onFocusChangeCore","Announcer","onFocusChange","enabled","every","focusDiff","toAnnounceText","toAnnounce","announce","title","announceContext","table","clearPrevFocus","notification","_currentlySpeaking","textToSpeech","finally","refresh","setupTimers","focusDebounce","focusChangeTimeout","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_createSignal22","globalBackground","setGlobalBackground","theme","primary","secondary","tertiary","inactive","full","none","alpha1","alpha2","alpha3","alpha4","alpha5","xfast","fast","slow","xslow","expressive","expressiveEntrance","expressiveExit","standard","standardEntrance","standardExit","utility","utilityEntrance","utilityExit","asset","arrowLeft","arrowRight","backspaceOutline","palette","white","black","grey","red","orange","yellow","green","blue","purple","material","materialBrand","overlay","textNeutral","textNeutralSecondary","textNeutralTertiary","textNeutralDisabled","textInverse","textInverseSecondary","textInverseTertiary","textInverseDisabled","textBrand","textBrandSecondary","textBrandTertiary","textBrandDisabled","textPositive","textNegative","textInfo","textCaution","fillTransparent","fillNeutral","fillNeutralSecondary","fillNeutralTertiary","fillNeutralDisabled","fillInverse","fillInverseSecondary","fillInverseTertiary","fillInverseDisabled","fillBrand","fillBrandSecondary","fillBrandTertiary","fillBrandDisabled","fillPositive","fillNegative","fillInfo","fillCaution","strokeNeutral","strokeNeutralSecondary","strokeNeutralTertiary","strokeNeutralDisabled","strokeInverse","strokeInverseSecondary","strokeInverseTertiary","strokeInverseDisabled","strokeBrand","strokeBrandSecondary","strokeBrandTertiary","strokeBrandDisabled","strokePositive","strokeNegative","strokeInfo","strokeCaution","interactiveNeutral","interactiveNeutralFocus","interactiveNeutralFocusSoft","interactiveInverse","interactiveInverseFocus","interactiveInverseFocusSoft","interactiveBrand","interactiveBrandFocus","interactiveBrandFocusSoft","shadowNeutral","shadowNeutralFocus","shadowNeutralFocusSoft","shadowNeutralText","shadowInverse","shadowInverseFocus","shadowInverseFocusSoft","shadowInverseText","shadowBrand","shadowBrandFocus","shadowBrandFocusSoft","shadowBrandText","layout","columnCount","focusScale","gutterX","gutterY","marginX","marginY","safe","screenW","screenH","xs","sm","md","lg","xl","spacer","xxs","xxl","xxxl","stroke","typography","display1","display2","headline1","headline2","headline3","body1","body2","body3","button1","button2","callout1","caption1","tag1","footnote1","componentConfig","Keyboard","keyProps","icon","Background","bg1","bg2","heroMask","bgStyles","changeBackgrounds","r$","objectFromEntries","_step20","_iterator20","_step20$value","key2","defaultModeKeys","defaultToneKeys","makeComponentStyles","themeKeys","modes","tones","themeStyles","themeStyles2","modeKeys","toneKeys","mapThemeKeysToSolid","stylesToMap","themeKey","solidKey","generateSolidStylesFromLookupObject","base2","modes2","tones2","themeStyles3","themeComponentStyles","variantName","styles2","convertedStyles","styleName","modeName","modeStyles","baseStyles","makeBaseStyles","makeModeStyles","mode","toneStyles","makeToneStyles","tone","_ref25","_ref26","_a2","_b2","_ref27","withScrolling","adjustment","componentRef","selectedElement","lastSelected","_componentRef$axis","_ref28","_ref29","axis","_updateLastIndex","lastItem","updateLastIndex","_updateLastIndex2","rootPosition","selectedPosition","selectedSize","direct","scrollIndex","abs","currentChildIndex","_currentChild$dimensi","chainFunctions","onlyFunctions","func","innerArgs","_step21","_iterator21","onGridFocus","skipFocus","handleNavigation","_c2","onSelectedChanged","plinko","num","_ref30$Artwork","Artwork","_ref30$Artwork2","themeStyles$e","defaultTone","_objectWithoutProperties","_excluded","fillColor","fallbackSrc","gradientColor","_ref31$Badge","Badge","_ref31$Badge2","themeStyles$d","_excluded2","container$e","inverse","brand","text$7","icon$2","_ref32$Button","Button","_ref32$Button2","defaultTone$d","themeStyles$c","_excluded3","_ref33$Surface","Surface","_ref33$Surface2","surfaceDefaultTone","surfaceThemeStyles$1","_excluded4","container$d","contentColor","focus","content","text$6","styles$c","Container","Content","_props$tone","flat","Text$7","_props$tone2","_ref34$Checkbox","Checkbox","_ref34$Checkbox2","themeStyles$b","_excluded5","strokeWidth","container$c","checked","neutral","icon$1","_ref35$Icon","Icon","_ref35$Icon2","themeStyles$a","_excluded6","_ref36$Column","Column","_ref36$Column2","defaultTone$a","themeStyles$9","_excluded7","styles$9","itemTransition","onUp","onDown","_props$selected","_props$selected2","_props$tone3","_ref37$Label","Label","_ref37$Label2","themeStyles$8","_excluded8","container$9","backgroundColor","text$5","_ref38$Rating","Rating","_ref38$Rating2","themeStyles$7","container$8","itemSpacing","toneModes","text$4","_ref39$Details","Details","_ref39$Details2","themeStyles$6","_excluded9","container$7","contentSpacing","badgeContentSpacing","ratingContentSpacing","text$3","_ref40$Metadata","Metadata","_ref40$Metadata2","themeStyles$5","_excluded10","container$6","titleText","descriptionText","_ref41$ProgressBar","ProgressBar","_ref41$ProgressBar2","themeStyles$4","_excluded11","container$5","_ref42$Row","Row","_ref42$Row2","defaultTone$4","themeStyles$3","_excluded12","styles$3","onLeft","onRight","_props$selected3","_props$selected4","_props$tone4","_props$tone5","_ref43$Keyboard","_ref43$Keyboard2","themeStyles$2","_excluded13","container$3","keySpacing","baseWidth","sizes","paddingX","text$2","_ref44$Key","Key","_ref44$Key2","themeStyles$1","_excluded14","container$2","text$1","_ref45$Input","Input","_ref45$Input2","_excluded15","container$1","actualTitle","theme2","upCount","getWidthByUpCount$1","_ref46$Tile","Tile","_ref46$Tile2","tileThemeStyles","_excluded16","_ref47$Surface","_ref47$Surface2","surfaceThemeStyles","defaultSurfaceTone","_excluded17","container","paddingYProgress","paddingYBetweenContent","insetBottom","standardBottom","logoContainer","fpsStyle","fpsLabel","fpsValue","_createSignal24","setFps","_createSignal26","avgFps","setAvgFps","_createSignal28","minFps","setMinFps","_createSignal30","maxFps","setMaxFps","_createSignal32","isLoadedCount","setIsLoadedCount","_createSignal34","isLoadingCount","setIsLoadingCount","_createSignal36","isFailedCount","setIsFailedCount","totalFps","setupFPS","isLoadedCount2","isLoadingCount2","isFailedCount2","fps2","calcFps","FPSCounter","styles$1","Gradient","NavButton","import","icons","subTextures","spriteMapTexture","sprite","_$mergeProps","NavDrawer","backdrop","handleNavigate","page","isOnPage","matchers","_step16","_iterator16","focusPage","showWidgets","onEnter","App","Menu","Left","Right","Up","Down","announcer","navDrawer","lastFocused","focusNavDrawer","_createSignal38","setShowWidgets","showOnPaths","currentPath","matchesPartial","_ref$","APP","onAnnouncer","onLast","back","onMenu","onBackspace","Page","headlineText","headlineSubText","itemsContainer","Thumbnail","FocusRing","FPS","FPSLabel","FPSValue","showHeadline","headlineBlur","RowTitle","Rect","peopleBio","buttonStyles","topBar","MaterialButton","MaterialButtonText","TileRow","_splitProps","blocked","k","_step12","otherObject","objects","_iterator12","_step13","isDefaultDesc","writable","objectIndex","_iterator13","splitProps","_splitProps2","local","others","tmdbConfig","baseImageUrl","API_BASE","basePosterSize","defaultFetchParams","headers","Authorization","getImageUrl","posterSize","_get","json","loadConfig","_data$images","images","secure_base_url","api","convertItemsToTiles","poster_path","profile_path","tileSrc","backdrop_path","media_type","shortTitle","maxLength","entityInfo","heroContent","description","overview","cache","leftoverTiles","createInfiniteScroll","_createSignal40","pages","setPages","_createSignal42","setPage","_createSignal44","setEnd","contents","ContentBlockStyle","HeadlineStyles","Headline","DescriptionStyles","Description","ContentBlock","justYear","dateString","getRecommendations","getCredits","cast","getInfo","rt","rtCrit","rtFan","backgroundImage","badges","voteAverage","vote_average","voteCount","vote_count","metaText","minutes","runtime","remainingMinutes","minutesToHMM","release_date","parts","first_air_date","last_air_date","reviews","Browse","_createSignal46","columnY","setcolumnY","_createSignal48","entityProvider","_createSignal50","setHeroContent","isFirst","provider","pageIndex","trending","adult","chunks","chunkArray","delayedBackgrounds","delayedHero","onRowFocus","_this$children$select","numPages","entity","Portal","demos","DemoTile","_createSignal52","setColor","_createSignal54","rowX","setRowX","moveRow","row","demo","TextPage","OverviewContainer","SublineContainer","Title","Overview","Subline","CreatePage","myBox","childRef","_createSignal56","insertTest","setInsertTest","_createSignal58","emptyTest","setEmptyTest","_childRef$getChildByI","styleChild","someOtherStyle","ChildTest","borderStyles","childTestPassedStyles","childTestPassedStyles2","hasFocus","ViewportPage","ball","invervalTimer","_createSignal60","ballStatus","setBallStatus","styleBall","lineheight","randomIntBetween","logEvent","clearInterval","ButtonsPage","RowStyles","_$use","FlexPage","rowTitle","Block","_createSignal62","setColumnY","_this$children$select2","FlexSizePage","randSize","_createSignal64","_this$children$select3","FlexColumnPage","ColumnStyles","_createSignal66","_this$children$select4","_createSignal68","_this$children$select5","MaterialButtonsPage","manifestUri","_initPlayer","_callee13","video","player","_callee13$","_context14","shaka","Player","onErrorEvent","onError","detail","polyfill","installAll","isBrowserSupported","initPlayer","Entity","credits","recommendations","_createSignal70","backdropAlpha","setBackdropAlpha","columnRef","backdropRef","entityActions","Backdrop","_this$children$select6","onRowFocusAnimate","_this$children$select7","onEscape","hidden","getElementsByTagName","onEnterTrailer","play","playVideo","biography","People","NotFound","_$setProp","coreExtensionModuleUrl","meta","Config","FlexColumnSizePage","ButtonsMaterialPage"],"mappings":"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","x_google_ignoreList":[59,70,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,94,95,99,102]} \ No newline at end of file diff --git a/assets/index-legacy-BoS85dc4.js b/assets/index-legacy-BoS85dc4.js new file mode 100644 index 0000000..3ea1d95 --- /dev/null +++ b/assets/index-legacy-BoS85dc4.js @@ -0,0 +1,18410 @@ +; +(function () { + var _excluded = ["defaultTone"], + _excluded2 = ["defaultTone"], + _excluded3 = ["defaultTone"], + _excluded4 = ["surfaceDefaultTone"], + _excluded5 = ["defaultTone"], + _excluded6 = ["defaultTone"], + _excluded7 = ["defaultTone"], + _excluded8 = ["defaultTone"], + _excluded9 = ["defaultTone"], + _excluded10 = ["defaultTone"], + _excluded11 = ["defaultTone"], + _excluded12 = ["defaultTone"], + _excluded13 = ["defaultTone"], + _excluded14 = ["defaultTone"], + _excluded15 = ["defaultTone"], + _excluded16 = ["defaultTone"], + _excluded17 = ["defaultSurfaceTone"]; + function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(typeof e + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } + function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } + function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } + function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } + System.register(['./CoreExtension-legacy-BzZDDgL-.js'], function (exports, module) { + 'use strict'; + + var assertTruthy, isProductionEnvironment, TrFontFace, getRgbaString, createBound, EventEmitter, getNormalizedRgbaComponents, intersectBound, intersectRect, getNormalizedAlphaComponent, mergeColorAlphaPremultiplied, WebGlCoreShader, memize, Texture, isBoundPositive, boundsOverlap, SdfTrFontFace, BufferCollection, convertBoundToRect, copyRect, WebGlCoreRenderOp, mergeColorAlpha, CoreExtension, getTimingFunction, mergeColorProgress, boundInsideBound, ColorTexture, SubTexture, RenderTexture, WebGlCoreRenderer; + return { + setters: [module => { + assertTruthy = module.a; + isProductionEnvironment = module.i; + TrFontFace = module.T; + getRgbaString = module.g; + createBound = module.c; + EventEmitter = module.E; + getNormalizedRgbaComponents = module.b; + intersectBound = module.d; + intersectRect = module.e; + getNormalizedAlphaComponent = module.f; + mergeColorAlphaPremultiplied = module.m; + WebGlCoreShader = module.W; + memize = module.h; + Texture = module.j; + isBoundPositive = module.k; + boundsOverlap = module.l; + SdfTrFontFace = module.S; + BufferCollection = module.B; + convertBoundToRect = module.n; + copyRect = module.o; + WebGlCoreRenderOp = module.p; + mergeColorAlpha = module.q; + CoreExtension = module.C; + getTimingFunction = module.r; + mergeColorProgress = module.s; + boundInsideBound = module.t; + ColorTexture = module.u; + SubTexture = module.v; + RenderTexture = module.R; + WebGlCoreRenderer = module.w; + }], + execute: function execute() { + var _resolvedGlobal$docum, _LinearGradientEffect, _RadialGradientEffect; + var _marked = /*#__PURE__*/_regeneratorRuntime().mark(getUnicodeCodepoints); + var __vite_style__ = document.createElement('style'); + __vite_style__.textContent = "html, body, * { padding: 0; margin: 0 }\nvideo { position: absolute; top: 0; left: 0; z-index: 2; outline: none; }\n.center-element {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}"; + document.head.appendChild(__vite_style__); + false && function polyfill() { + var relList = document.createElement('link').relList; + if (relList && relList.supports && relList.supports('modulepreload')) { + return; + } + var _iterator = _createForOfIteratorHelper(document.querySelectorAll('link[rel="modulepreload"]')), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var link = _step.value; + processPreload(link); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + new MutationObserver(mutations => { + var _iterator2 = _createForOfIteratorHelper(mutations), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var mutation = _step2.value; + if (mutation.type !== 'childList') { + continue; + } + var _iterator3 = _createForOfIteratorHelper(mutation.addedNodes), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var node = _step3.value; + if (node.tagName === 'LINK' && node.rel === 'modulepreload') processPreload(node); + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + }).observe(document, { + childList: true, + subtree: true + }); + function getFetchOpts(link) { + var fetchOpts = {}; + if (link.integrity) fetchOpts.integrity = link.integrity; + if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy; + if (link.crossOrigin === 'use-credentials') fetchOpts.credentials = 'include';else if (link.crossOrigin === 'anonymous') fetchOpts.credentials = 'omit';else fetchOpts.credentials = 'same-origin'; + return fetchOpts; + } + function processPreload(link) { + if (link.ep) + // ep marker = processed + return; + link.ep = true; + // prepopulate the load record + var fetchOpts = getFetchOpts(link); + fetch(link.href, fetchOpts); + } + }(); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Texture Usage Tracker for Usage Based Texture Garbage Collection + */ + class TextureUsageTracker { + constructor(releaseCallback) { + _defineProperty(this, "releaseCallback", void 0); + this.releaseCallback = releaseCallback; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Usage-based Texture Garbage Collection Registry + */ + class ManualCountTextureUsageTracker extends TextureUsageTracker { + constructor(releaseCallback, options) { + var _options$textureClean, _options$textureClean2; + super(releaseCallback); + _defineProperty(this, "textureMap", new Map()); + _defineProperty(this, "zeroReferenceTextureSet", new Set()); + _defineProperty(this, "options", void 0); + this.options = { + textureCleanupIntervalMs: (_options$textureClean = options.textureCleanupIntervalMs) !== null && _options$textureClean !== void 0 ? _options$textureClean : 10000, + textureCleanupAgeThreadholdMs: (_options$textureClean2 = options.textureCleanupAgeThreadholdMs) !== null && _options$textureClean2 !== void 0 ? _options$textureClean2 : 60000 + }; + // Periodically check for textures that are no longer referenced by any + // Nodes and notify RendererMain to release them. + setInterval(() => { + var now = Date.now(); + var thresholdMs = this.options.textureCleanupAgeThreadholdMs; + var _iterator4 = _createForOfIteratorHelper(this.zeroReferenceTextureSet), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var textureRefInfo = _step4.value; + if (now - textureRefInfo.lastUpdate > thresholdMs) { + this.releaseCallback(textureRefInfo.id); + this.textureMap.delete(textureRefInfo.id); + this.zeroReferenceTextureSet.delete(textureRefInfo); + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + }, this.options.textureCleanupIntervalMs); + } + registerTexture(texture) { + var _texture$options; + var textureId = (_texture$options = texture.options) === null || _texture$options === void 0 ? void 0 : _texture$options.id; + assertTruthy(textureId, 'Texture must have an id to be registered'); + if (!this.textureMap.has(textureId)) { + var textureRefInfo = { + id: textureId, + nodeRefCount: 0, + lastUpdate: Date.now() + }; + this.textureMap.set(textureId, textureRefInfo); + this.zeroReferenceTextureSet.add(textureRefInfo); + } + } + incrementTextureRefCount(texture) { + var _texture$options2; + var textureId = (_texture$options2 = texture.options) === null || _texture$options2 === void 0 ? void 0 : _texture$options2.id; + assertTruthy(textureId, 'Texture must have an id to be registered'); + var textureRefInfo = this.textureMap.get(textureId); + if (!textureRefInfo) { + // Texture has not been registered yet, so register it now. + // This may happen if the TextureRef was cleaned up from the registry + // but was still alive in memory and eventually re-used. + this.registerTexture(texture); + textureRefInfo = this.textureMap.get(textureId); + } + assertTruthy(textureRefInfo, 'Texture must have been registered'); + if (texture.txType === 'SubTexture') { + // If this is a SubTexture, then increment the reference count of the + // parent texture as well. + this.incrementTextureRefCount(texture.props.texture); + } + textureRefInfo.nodeRefCount++; + textureRefInfo.lastUpdate = Date.now(); + if (this.zeroReferenceTextureSet.has(textureRefInfo)) { + this.zeroReferenceTextureSet.delete(textureRefInfo); + } + } + decrementTextureRefCount(texture) { + var _texture$options3; + var textureId = (_texture$options3 = texture.options) === null || _texture$options3 === void 0 ? void 0 : _texture$options3.id; + assertTruthy(textureId, 'Texture must have an id to be registered'); + var textureRefInfo = this.textureMap.get(textureId); + assertTruthy(textureRefInfo, 'Texture must have been registered'); + textureRefInfo.nodeRefCount--; + textureRefInfo.lastUpdate = Date.now(); + if (textureRefInfo.nodeRefCount === 0) { + this.zeroReferenceTextureSet.add(textureRefInfo); + } + if (texture.txType === 'SubTexture') { + // If this is a SubTexture, then decrement the reference count of the + // parent texture as well. + this.decrementTextureRefCount(texture.props.texture); + } + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class FinalizationRegistryTextureUsageTracker extends TextureUsageTracker { + constructor(releaseCallback) { + super(releaseCallback); + _defineProperty(this, "registry", void 0); + this.registry = new FinalizationRegistry(releaseCallback); + } + registerTexture(texture) { + var _texture$options4, _texture$options5; + assertTruthy((_texture$options4 = texture.options) === null || _texture$options4 === void 0 ? void 0 : _texture$options4.id, 'Texture must have an ID to be registered'); + this.registry.register(texture, (_texture$options5 = texture.options) === null || _texture$options5 === void 0 ? void 0 : _texture$options5.id); + } + incrementTextureRefCount() { + // No-op for FinalizationRegistry + } + decrementTextureRefCount() { + // No-op for FinalizationRegistry + } + } + var stylePropertyMap = { + alpha: v => { + if (v === 1) { + return null; + } + return { + prop: 'opacity', + value: `${v}` + }; + }, + x: _x => { + return { + prop: 'left', + value: `${_x}px` + }; + }, + y: _y => { + return { + prop: 'top', + value: `${_y}px` + }; + }, + width: w => { + if (w === 0) { + return null; + } + return { + prop: 'width', + value: `${w}px` + }; + }, + height: h => { + if (h === 0) { + return null; + } + return { + prop: 'height', + value: `${h}px` + }; + }, + zIndex: () => 'zIndex', + fontFamily: () => 'font-family', + fontSize: () => 'font-size', + fontStyle: () => 'font-style', + fontWeight: () => 'font-weight', + fontStretch: () => 'font-stretch', + lineHeight: () => 'line-height', + letterSpacing: () => 'letter-spacing', + textAlign: () => 'text-align', + overflowSuffix: () => 'overflow-suffix', + maxLines: () => 'max-lines', + contain: () => 'contain', + verticalAlign: () => 'vertical-align', + clipping: v => { + if (v === false) { + return null; + } + return { + prop: 'overflow', + value: v ? 'hidden' : 'visible' + }; + }, + rotation: v => { + if (v === 0) { + return null; + } + return { + prop: 'transform', + value: `rotate(${v}rad)` + }; + }, + scale: v => { + if (v === 1) { + return null; + } + return { + prop: 'transform', + value: `scale(${v})` + }; + }, + scaleX: v => { + if (v === 1) { + return null; + } + return { + prop: 'transform', + value: `scaleX(${v})` + }; + }, + scaleY: v => { + if (v === 1) { + return null; + } + return { + prop: 'transform', + value: `scaleY(${v})` + }; + }, + color: v => { + if (v === 0) { + return null; + } + return { + prop: 'color', + value: convertColorToRgba(v) + }; + } + }; + var convertColorToRgba = color => { + var a = (color & 0xff) / 255; + var b = color >> 8 & 0xff; + var g = color >> 16 & 0xff; + var r = color >> 24 & 0xff; + return `rgba(${r},${g},${b},${a})`; + }; + var domPropertyMap = { + id: 'id' + }; + class Inspector { + constructor(canvas, settings) { + var _settings$appHeight, _settings$deviceLogic, _settings$appWidth, _settings$deviceLogic2, _settings$deviceLogic3, _settings$deviceLogic4; + _defineProperty(this, "root", null); + _defineProperty(this, "canvas", null); + _defineProperty(this, "height", 1080); + _defineProperty(this, "width", 1920); + _defineProperty(this, "scaleX", 1); + _defineProperty(this, "scaleY", 1); + if (isProductionEnvironment()) return; + if (!settings) { + throw new Error('settings is required'); + } + // calc dimensions based on the devicePixelRatio + this.height = Math.ceil((_settings$appHeight = settings.appHeight) !== null && _settings$appHeight !== void 0 ? _settings$appHeight : 1080 / ((_settings$deviceLogic = settings.deviceLogicalPixelRatio) !== null && _settings$deviceLogic !== void 0 ? _settings$deviceLogic : 1)); + this.width = Math.ceil((_settings$appWidth = settings.appWidth) !== null && _settings$appWidth !== void 0 ? _settings$appWidth : 1900 / ((_settings$deviceLogic2 = settings.deviceLogicalPixelRatio) !== null && _settings$deviceLogic2 !== void 0 ? _settings$deviceLogic2 : 1)); + this.scaleX = (_settings$deviceLogic3 = settings.deviceLogicalPixelRatio) !== null && _settings$deviceLogic3 !== void 0 ? _settings$deviceLogic3 : 1; + this.scaleY = (_settings$deviceLogic4 = settings.deviceLogicalPixelRatio) !== null && _settings$deviceLogic4 !== void 0 ? _settings$deviceLogic4 : 1; + this.canvas = canvas; + this.root = document.createElement('div'); + this.setRootPosition(); + document.body.appendChild(this.root); + //listen for changes on canvas + var mutationObserver = new MutationObserver(this.setRootPosition.bind(this)); + mutationObserver.observe(canvas, { + attributes: true, + childList: false, + subtree: false + }); + // Create a ResizeObserver to watch for changes in the element's size + var resizeObserver = new ResizeObserver(this.setRootPosition.bind(this)); + resizeObserver.observe(canvas); + //listen for changes on window + window.addEventListener('resize', this.setRootPosition.bind(this)); + console.warn('Inspector is enabled, this will impact performance'); + } + setRootPosition() { + if (this.root === null || this.canvas === null) { + return; + } + // get the world position of the canvas object, so we can match the inspector to it + var rect = this.canvas.getBoundingClientRect(); + var top = document.documentElement.scrollTop + rect.top; + var left = document.documentElement.scrollLeft + rect.left; + this.root.id = 'root'; + this.root.style.left = `${left}px`; + this.root.style.top = `${top}px`; + this.root.style.width = `${this.width}px`; + this.root.style.height = `${this.height}px`; + this.root.style.position = 'absolute'; + this.root.style.transformOrigin = '0 0 0'; + this.root.style.transform = `scale(${this.scaleX}, ${this.scaleY})`; + this.root.style.overflow = 'hidden'; + this.root.style.zIndex = '65534'; + } + createDiv(node, properties) { + var div = document.createElement('div'); + div.style.position = 'absolute'; + div.id = node.id.toString(); + // set initial properties + for (var _key2 in properties) { + this.updateNodeProperty(div, + // really typescript? really? + _key2, properties[_key2]); + } + return div; + } + createNode(driver, properties) { + var node = driver.createNode(properties); + var div = this.createDiv(node, properties); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any + div.node = node; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any + node.div = div; + return this.createProxy(node, div); + } + createTextNode(driver, properties) { + var node = driver.createTextNode(properties); + var div = this.createDiv(node, properties); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any + div.node = node; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any + node.div = div; + return this.createProxy(node, div); + } + createProxy(node, div) { + return new Proxy(node, { + set: (target, property, value) => { + this.updateNodeProperty(div, property, value); + return Reflect.set(target, property, value); + }, + get: (target, property, receiver) => { + if (property === 'destroy') { + this.destroyNode(target); + } + if (property === 'animate') { + return (props, settings) => { + var anim = target.animate(props, settings); + // Trap the animate start function so we can update the inspector accordingly + return new Proxy(anim, { + get: (target, property, receiver) => { + if (property === 'start') { + this.animateNode(div, node, props, settings); + } + return Reflect.get(target, property, receiver); + } + }); + }; + } + return Reflect.get(target, property, receiver); + } + }); + } + destroyNode(node) { + var div = document.getElementById(node.id.toString()); + div === null || div === void 0 || div.remove(); + } + updateNodeProperty(div, property, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + value) { + if (this.root === null || value === undefined || value === null) { + return; + } + /** + * Special case for parent property + */ + if (property === 'parent') { + var parentId = value.id; + // only way to detect if the parent is the root node + // if you are reading this and have a better way, please let me know + if (parentId === 1) { + this.root.appendChild(div); + return; + } + var parent = document.getElementById(parentId.toString()); + parent === null || parent === void 0 || parent.appendChild(div); + return; + } + // special case for text + if (property === 'text') { + div.innerHTML = String(value); + // hide text because we can't render SDF fonts + // it would look weird and obstruct the WebGL rendering + div.style.visibility = 'hidden'; + return; + } + // special case for images + // we're not setting any CSS properties to avoid images getting loaded twice + // as the renderer will handle the loading of the image. Setting it to `data-src` + if (property === 'src' && value) { + div.setAttribute(`data-src`, String(value)); + return; + } + // special case for color gradients (normal colors are handled by the stylePropertyMap) + // FIXME the renderer seems to return the same number for all colors + // if (gradientColorPropertyMap.includes(property as string)) { + // const color = convertColorToRgba(value as number); + // div.setAttribute(`data-${property}`, color); + // return; + // } + // CSS mappable attribute + if (stylePropertyMap[property]) { + var _stylePropertyMap$pro; + var mappedStyleResponse = (_stylePropertyMap$pro = stylePropertyMap[property]) === null || _stylePropertyMap$pro === void 0 ? void 0 : _stylePropertyMap$pro.call(stylePropertyMap, value); + if (mappedStyleResponse === null) { + return; + } + if (typeof mappedStyleResponse === 'string') { + div.style.setProperty(mappedStyleResponse, String(value)); + return; + } + if (typeof mappedStyleResponse === 'object') { + div.style.setProperty(mappedStyleResponse.prop, mappedStyleResponse.value); + } + return; + } + // DOM properties + if (domPropertyMap[property]) { + div.setAttribute(String(stylePropertyMap[property]), String(value)); + return; + } + // custom data properties + if (property === 'data') { + for (var _key3 in value) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + div.setAttribute(`data-${_key3}`, String(value[_key3])); + } + return; + } + } + // simple animation handler + animateNode(div, node, props, settings) { + var _settings$duration = settings.duration, + duration = _settings$duration === void 0 ? 1000 : _settings$duration, + _settings$delay = settings.delay, + delay = _settings$delay === void 0 ? 0 : _settings$delay; + var x = props.x, + y = props.y, + width = props.width, + height = props.height, + _props$alpha = props.alpha, + alpha = _props$alpha === void 0 ? 1 : _props$alpha, + _props$rotation = props.rotation, + rotation = _props$rotation === void 0 ? 0 : _props$rotation, + _props$scale = props.scale, + scale = _props$scale === void 0 ? 1 : _props$scale, + color = props.color; + // ignoring loops and repeats for now, as that might be a bit too much for the inspector + function animate() { + setTimeout(() => { + div.style.top = `${y}px`; + div.style.left = `${x}px`; + div.style.width = `${width}px`; + div.style.height = `${height}px`; + div.style.opacity = `${alpha}`; + div.style.rotate = `${rotation}rad`; + div.style.scale = `${scale}`; + div.style.color = convertColorToRgba(color); + }, duration); + } + setTimeout(animate, delay); + } + } + var scriptRel = 'modulepreload'; + var assetsURL = function assetsURL(dep) { + return "/solid-demo-app/" + dep; + }; + var seen = {}; + var __vitePreload = function preload(baseModule, deps, importerUrl) { + var promise = Promise.resolve(); + // @ts-expect-error false will be replaced with boolean later + if (false && deps && deps.length > 0) { + var links = document.getElementsByTagName('link'); + var cspNonceMeta = document.querySelector('meta[property=csp-nonce]'); + // `.nonce` should be used to get along with nonce hiding (https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce#accessing_nonces_and_nonce_hiding) + // Firefox 67-74 uses modern chunks and supports CSP nonce, but does not support `.nonce` + // in that case fallback to getAttribute + var cspNonce = (cspNonceMeta === null || cspNonceMeta === void 0 ? void 0 : cspNonceMeta.nonce) || (cspNonceMeta === null || cspNonceMeta === void 0 ? void 0 : cspNonceMeta.getAttribute('nonce')); + promise = Promise.all(deps.map(dep => { + // @ts-expect-error assetsURL is declared before preload.toString() + dep = assetsURL(dep); + if (dep in seen) return; + seen[dep] = true; + var isCss = dep.endsWith('.css'); + var cssSelector = isCss ? '[rel="stylesheet"]' : ''; + var isBaseRelative = !!importerUrl; + // check if the file is already preloaded by SSR markup + if (isBaseRelative) { + // When isBaseRelative is true then we have `importerUrl` and `dep` is + // already converted to an absolute URL by the `assetsURL` function + for (var i = links.length - 1; i >= 0; i--) { + var _link = links[i]; + // The `links[i].href` is an absolute URL thanks to browser doing the work + // for us. See https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#reflecting-content-attributes-in-idl-attributes:idl-domstring-5 + if (_link.href === dep && (!isCss || _link.rel === 'stylesheet')) { + return; + } + } + } else if (document.querySelector(`link[href="${dep}"]${cssSelector}`)) { + return; + } + var link = document.createElement('link'); + link.rel = isCss ? 'stylesheet' : scriptRel; + if (!isCss) { + link.as = 'script'; + link.crossOrigin = ''; + } + link.href = dep; + if (cspNonce) { + link.setAttribute('nonce', cspNonce); + } + document.head.appendChild(link); + if (isCss) { + return new Promise((res, rej) => { + link.addEventListener('load', res); + link.addEventListener('error', () => rej(new Error(`Unable to preload CSS for ${dep}`))); + }); + } + })); + } + return promise.then(() => baseModule()).catch(err => { + var e = new Event('vite:preloadError', { + cancelable: true + }); + // @ts-expect-error custom payload + e.payload = err; + window.dispatchEvent(e); + if (!e.defaultPrevented) { + throw err; + } + }); + }; + class ShaderEffect { + static getEffectKey(props) { + return ''; + } + static getMethodParameters(uniforms, props) { + var res = []; + for (var u in uniforms) { + var uni = uniforms[u]; + var define = ''; + if (uni.size) { + define = `[${uni.size(props)}]`; + } + res.push(`${uni.type} ${u}${define}`); + } + return res.join(','); + } + constructor(options) { + _defineProperty(this, "priority", 1); + _defineProperty(this, "name", ''); + _defineProperty(this, "ref", void 0); + _defineProperty(this, "target", void 0); + _defineProperty(this, "passParameters", ''); + _defineProperty(this, "declaredUniforms", ''); + _defineProperty(this, "uniformInfo", {}); + var ref = options.ref, + target = options.target, + _options$props = options.props, + props = _options$props === void 0 ? {} : _options$props; + this.ref = ref; + this.target = target; + var uniformInfo = {}; + var passParameters = []; + var declaredUniforms = ''; + var uniforms = this.constructor.uniforms || {}; + for (var u in uniforms) { + var unif = uniforms[u]; + var uniType = unif.type; + //make unique uniform name + var uniformName = `${ref}_${u}`; + var define = ''; + if (unif.size) { + define = `[${unif.size(props)}]`; + } + passParameters.push(uniformName); + declaredUniforms += `uniform ${uniType} ${uniformName}${define};`; + uniformInfo[u] = { + name: uniformName, + uniform: uniforms[u].method + }; + } + this.passParameters = passParameters.join(','); + this.declaredUniforms = declaredUniforms; + this.uniformInfo = uniformInfo; + } + static resolveDefaults(props) { + return {}; + } + static makeEffectKey(props) { + return false; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + _defineProperty(ShaderEffect, "uniforms", {}); + _defineProperty(ShaderEffect, "methods", void 0); + _defineProperty(ShaderEffect, "onShaderMask", void 0); + _defineProperty(ShaderEffect, "onColorize", void 0); + _defineProperty(ShaderEffect, "onEffectMask", void 0); + var trPropSetterDefaults = { + x: (state, value) => { + state.props.x = value; + }, + y: (state, value) => { + state.props.y = value; + }, + width: (state, value) => { + state.props.width = value; + }, + height: (state, value) => { + state.props.height = value; + }, + color: (state, value) => { + state.props.color = value; + }, + zIndex: (state, value) => { + state.props.zIndex = value; + }, + fontFamily: (state, value) => { + state.props.fontFamily = value; + }, + fontWeight: (state, value) => { + state.props.fontWeight = value; + }, + fontStyle: (state, value) => { + state.props.fontStyle = value; + }, + fontStretch: (state, value) => { + state.props.fontStretch = value; + }, + fontSize: (state, value) => { + state.props.fontSize = value; + }, + text: (state, value) => { + state.props.text = value; + }, + textAlign: (state, value) => { + state.props.textAlign = value; + }, + contain: (state, value) => { + state.props.contain = value; + }, + offsetY: (state, value) => { + state.props.offsetY = value; + }, + scrollable: (state, value) => { + state.props.scrollable = value; + }, + scrollY: (state, value) => { + state.props.scrollY = value; + }, + letterSpacing: (state, value) => { + state.props.letterSpacing = value; + }, + lineHeight: (state, value) => { + state.props.lineHeight = value; + }, + maxLines: (state, value) => { + state.props.maxLines = value; + }, + textBaseline: (state, value) => { + state.props.textBaseline = value; + }, + verticalAlign: (state, value) => { + state.props.verticalAlign = value; + }, + overflowSuffix: (state, value) => { + state.props.overflowSuffix = value; + }, + debug: (state, value) => { + state.props.debug = value; + } + }; + class TextRenderer { + constructor(stage) { + _defineProperty(this, "stage", void 0); + _defineProperty(this, "set", void 0); + this.stage = stage; + var propSetters = _objectSpread(_objectSpread({}, trPropSetterDefaults), this.getPropertySetters()); + // For each prop setter add a wrapper method that checks if the prop is + // different before calling the setter + this.set = Object.freeze(Object.fromEntries(Object.entries(propSetters).map(([key, setter]) => { + return [key, (state, value) => { + if (state.props[key] !== value) { + setter(state, value); + // Assume any prop change will require a render + // This is required because otherwise a paused RAF will result + // in renders when text props are changed. + this.stage.requestRender(); + } + }]; + }))); + } + setStatus(state, status, error) { + // Don't emit the same status twice + if (state.status === status) { + return; + } + state.status = status; + state.emitter.emit(status, error); + } + /** + * Allows the CoreTextNode to communicate changes to the isRenderable state of + * the itself. + * + * @param state + * @param renderable + */ + setIsRenderable(state, renderable) { + state.isRenderable = renderable; + } + /** + * Destroy/Clean up the state object + * + * @remarks + * Opposite of createState(). Frees any event listeners / resources held by + * the state that may not reliably get garbage collected. + * + * @param state + */ + destroyState(state) { + var stateEvents = ['loading', 'loaded', 'failed']; + // Remove the old event listeners from previous state obj there was one + stateEvents.forEach(eventName => { + state.emitter.off(eventName); + }); + } + /** + * Schedule a state update via queueMicrotask + * + * @remarks + * This method is used to schedule a state update via queueMicrotask. This + * method should be called whenever a state update is needed, and it will + * ensure that the state is only updated once per microtask. + * @param state + * @returns + */ + scheduleUpdateState(state) { + if (state.updateScheduled) { + return; + } + state.updateScheduled = true; + queueMicrotask(() => { + state.updateScheduled = false; + this.updateState(state); + }); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class WebTrFontFace extends TrFontFace { + constructor(fontFamily, descriptors, fontUrl) { + super(fontFamily, descriptors); + // Filter out parentheses from fontUrl + _defineProperty(this, "fontFace", void 0); + _defineProperty(this, "fontUrl", void 0); + var fontUrlWithoutParentheses = fontUrl.replace(/\(|\)/g, ''); + // Defaults for descriptors resolved in the super constructor + var determinedDescriptors = this.descriptors; + // Convert TrFontFaceDescriptors to CSS FontFaceDescriptors + var cssDescriptors = { + style: determinedDescriptors.style, + weight: typeof determinedDescriptors.weight === 'number' ? `${determinedDescriptors.weight}` : determinedDescriptors.weight, + stretch: determinedDescriptors.stretch, + unicodeRange: determinedDescriptors.unicodeRange, + variant: determinedDescriptors.variant, + featureSettings: determinedDescriptors.featureSettings, + display: determinedDescriptors.display + }; + var fontFace = new FontFace(fontFamily, `url(${fontUrlWithoutParentheses})`, cssDescriptors); + fontFace.load().then(() => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + this.loaded = true; + this.emit('loaded'); + }).catch(console.error); + this.fontFace = fontFace; + this.fontUrl = fontUrl; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /* eslint-disable @typescript-eslint/no-non-null-assertion */ + var MAX_TEXTURE_DIMENSION = 2048; + /** + * Calculate height for the canvas + * + * @param textBaseline + * @param fontSize + * @param lineHeight + * @param numLines + * @param offsetY + * @returns + */ + function calcHeight(textBaseline, fontSize, lineHeight, numLines, offsetY) { + var baselineOffset = textBaseline !== 'bottom' ? 0.5 * fontSize : 0; + return lineHeight * (numLines - 1) + baselineOffset + Math.max(lineHeight, fontSize) + (offsetY || 0); + } + class LightningTextTextureRenderer { + constructor(canvas, context) { + _defineProperty(this, "_canvas", void 0); + _defineProperty(this, "_context", void 0); + _defineProperty(this, "_settings", void 0); + _defineProperty(this, "renderInfo", void 0); + this._canvas = canvas; + this._context = context; + this._settings = this.mergeDefaults({}); + } + set settings(v) { + this._settings = this.mergeDefaults(v); + } + get settings() { + return this._settings; + } + getPrecision() { + return this._settings.precision; + } + setFontProperties() { + this._context.font = this._getFontSetting(); + this._context.textBaseline = this._settings.textBaseline; + } + _getFontSetting() { + var ff = [this._settings.fontFace]; + var ffs = []; + for (var i = 0, n = ff.length; i < n; i++) { + if (ff[i] === 'serif' || ff[i] === 'sans-serif') { + ffs.push(ff[i]); + } else { + ffs.push(`"${ff[i]}"`); + } + } + return `${this._settings.fontStyle} ${this._settings.fontSize * this.getPrecision()}px ${ffs.join(',')}`; + } + _load() { + if (document.fonts) { + var fontSetting = this._getFontSetting(); + try { + if (!document.fonts.check(fontSetting, this._settings.text)) { + // Use a promise that waits for loading. + return document.fonts.load(fontSetting, this._settings.text).catch(err => { + // Just load the fallback font. + console.warn('[Lightning] Font load error', err, fontSetting); + }).then(() => { + if (!document.fonts.check(fontSetting, this._settings.text)) { + console.warn('[Lightning] Font not found', fontSetting); + } + }); + } + } catch (e) { + console.warn("[Lightning] Can't check font loading for " + fontSetting); + } + } + } + calculateRenderInfo() { + var renderInfo = {}; + var precision = this.getPrecision(); + var paddingLeft = this._settings.paddingLeft * precision; + var paddingRight = this._settings.paddingRight * precision; + var fontSize = this._settings.fontSize * precision; + var offsetY = this._settings.offsetY === null ? null : this._settings.offsetY * precision; + var lineHeight = (this._settings.lineHeight || fontSize) * precision; + var w = this._settings.w * precision; + var h = this._settings.h * precision; + var wordWrapWidth = this._settings.wordWrapWidth * precision; + var cutSx = this._settings.cutSx * precision; + var cutEx = this._settings.cutEx * precision; + var cutSy = this._settings.cutSy * precision; + var cutEy = this._settings.cutEy * precision; + var letterSpacing = (this._settings.letterSpacing || 0) * precision; + var textIndent = this._settings.textIndent * precision; + // Set font properties. + this.setFontProperties(); + // Total width. + var width = w || 2048 / this.getPrecision(); + // Inner width. + var innerWidth = width - paddingLeft; + if (innerWidth < 10) { + width += 10 - innerWidth; + innerWidth = 10; + } + if (!wordWrapWidth) { + wordWrapWidth = innerWidth; + } + // Text overflow + if (this._settings.textOverflow && !this._settings.wordWrap) { + var suffix; + switch (this._settings.textOverflow) { + case 'clip': + suffix = ''; + break; + case 'ellipsis': + suffix = this._settings.overflowSuffix; + break; + default: + suffix = this._settings.textOverflow; + } + this._settings.text = this.wrapWord(this._settings.text, wordWrapWidth - textIndent, suffix); + } + // word wrap + // preserve original text + var linesInfo; + if (this._settings.wordWrap) { + linesInfo = this.wrapText(this._settings.text, wordWrapWidth, letterSpacing, textIndent); + } else { + linesInfo = { + l: this._settings.text.split(/(?:\r\n|\r|\n)/), + n: [] + }; + var n = linesInfo.l.length; + for (var i = 0; i < n - 1; i++) { + linesInfo.n.push(i); + } + } + var lines = linesInfo.l; + if (this._settings.maxLines && lines.length > this._settings.maxLines) { + var usedLines = lines.slice(0, this._settings.maxLines); + var otherLines = null; + if (this._settings.overflowSuffix) { + // Wrap again with max lines suffix enabled. + var _w = this._settings.overflowSuffix ? this.measureText(this._settings.overflowSuffix) : 0; + var al = this.wrapText(usedLines[usedLines.length - 1], wordWrapWidth - _w, letterSpacing, textIndent); + usedLines[usedLines.length - 1] = `${al.l[0]}${this._settings.overflowSuffix}`; + otherLines = [al.l.length > 1 ? al.l[1] : '']; + } else { + otherLines = ['']; + } + // Re-assemble the remaining text. + var _i2; + var _n2 = lines.length; + var j = 0; + var m = linesInfo.n.length; + for (_i2 = this._settings.maxLines; _i2 < _n2; _i2++) { + otherLines[j] += `${otherLines[j] ? ' ' : ''}${lines[_i2]}`; + if (_i2 + 1 < m && linesInfo.n[_i2 + 1]) { + j++; + } + } + renderInfo.remainingText = otherLines.join('\n'); + renderInfo.moreTextLines = true; + lines = usedLines; + } else { + renderInfo.moreTextLines = false; + renderInfo.remainingText = ''; + } + // calculate text width + var maxLineWidth = 0; + var lineWidths = []; + for (var _i3 = 0; _i3 < lines.length; _i3++) { + var lineWidth = this.measureText(lines[_i3], letterSpacing) + (_i3 === 0 ? textIndent : 0); + lineWidths.push(lineWidth); + maxLineWidth = Math.max(maxLineWidth, lineWidth); + } + renderInfo.lineWidths = lineWidths; + if (!w) { + // Auto-set width to max text length. + width = maxLineWidth + paddingLeft + paddingRight; + innerWidth = maxLineWidth; + } + // calculate text height + lineHeight = lineHeight || fontSize; + var height; + if (h) { + height = h; + } else { + height = calcHeight(this._settings.textBaseline, fontSize, lineHeight, lines.length, offsetY); + } + if (offsetY === null) { + offsetY = fontSize; + } + renderInfo.w = width; + renderInfo.h = height; + renderInfo.lines = lines; + renderInfo.precision = precision; + if (!width) { + // To prevent canvas errors. + width = 1; + } + if (!height) { + // To prevent canvas errors. + height = 1; + } + if (cutSx || cutEx) { + width = Math.min(width, cutEx - cutSx); + } + if (cutSy || cutEy) { + height = Math.min(height, cutEy - cutSy); + } + renderInfo.width = width; + renderInfo.innerWidth = innerWidth; + renderInfo.height = height; + renderInfo.fontSize = fontSize; + renderInfo.cutSx = cutSx; + renderInfo.cutSy = cutSy; + renderInfo.cutEx = cutEx; + renderInfo.cutEy = cutEy; + renderInfo.lineHeight = lineHeight; + renderInfo.lineWidths = lineWidths; + renderInfo.offsetY = offsetY; + renderInfo.paddingLeft = paddingLeft; + renderInfo.paddingRight = paddingRight; + renderInfo.letterSpacing = letterSpacing; + renderInfo.textIndent = textIndent; + return renderInfo; + } + draw(renderInfo, linesOverride) { + var precision = this.getPrecision(); + // Allow lines to be overriden for partial rendering. + var lines = (linesOverride === null || linesOverride === void 0 ? void 0 : linesOverride.lines) || renderInfo.lines; + var lineWidths = (linesOverride === null || linesOverride === void 0 ? void 0 : linesOverride.lineWidths) || renderInfo.lineWidths; + var height = linesOverride ? calcHeight(this._settings.textBaseline, renderInfo.fontSize, renderInfo.lineHeight, linesOverride.lines.length, this._settings.offsetY === null ? null : this._settings.offsetY * precision) : renderInfo.height; + // Add extra margin to prevent issue with clipped text when scaling. + this._canvas.width = Math.min(Math.ceil(renderInfo.width + this._settings.textRenderIssueMargin), MAX_TEXTURE_DIMENSION); + this._canvas.height = Math.min(Math.ceil(height), MAX_TEXTURE_DIMENSION); + // Canvas context has been reset. + this.setFontProperties(); + if (renderInfo.fontSize >= 128) { + // WpeWebKit bug: must force compositing because cairo-traps-compositor will not work with text first. + this._context.globalAlpha = 0.01; + this._context.fillRect(0, 0, 0.01, 0.01); + this._context.globalAlpha = 1.0; + } + if (renderInfo.cutSx || renderInfo.cutSy) { + this._context.translate(-renderInfo.cutSx, -renderInfo.cutSy); + } + var linePositionX; + var linePositionY; + var drawLines = []; + // Draw lines line by line. + for (var i = 0, n = lines.length; i < n; i++) { + linePositionX = i === 0 ? renderInfo.textIndent : 0; + // By default, text is aligned to top + linePositionY = i * renderInfo.lineHeight + renderInfo.offsetY; + if (this._settings.verticalAlign == 'middle') { + linePositionY += (renderInfo.lineHeight - renderInfo.fontSize) / 2; + } else if (this._settings.verticalAlign == 'bottom') { + linePositionY += renderInfo.lineHeight - renderInfo.fontSize; + } + if (this._settings.textAlign === 'right') { + linePositionX += renderInfo.innerWidth - lineWidths[i]; + } else if (this._settings.textAlign === 'center') { + linePositionX += (renderInfo.innerWidth - lineWidths[i]) / 2; + } + linePositionX += renderInfo.paddingLeft; + drawLines.push({ + text: lines[i], + x: linePositionX, + y: linePositionY, + w: lineWidths[i] + }); + } + // Highlight. + if (this._settings.highlight) { + var color = this._settings.highlightColor; + var hlHeight = this._settings.highlightHeight * precision || renderInfo.fontSize * 1.5; + var offset = this._settings.highlightOffset * precision; + var hlPaddingLeft = this._settings.highlightPaddingLeft !== null ? this._settings.highlightPaddingLeft * precision : renderInfo.paddingLeft; + var hlPaddingRight = this._settings.highlightPaddingRight !== null ? this._settings.highlightPaddingRight * precision : renderInfo.paddingRight; + this._context.fillStyle = getRgbaString(color); + for (var _i4 = 0; _i4 < drawLines.length; _i4++) { + var drawLine = drawLines[_i4]; + this._context.fillRect(drawLine.x - hlPaddingLeft, drawLine.y - renderInfo.offsetY + offset, drawLine.w + hlPaddingRight + hlPaddingLeft, hlHeight); + } + } + // Text shadow. + var prevShadowSettings = null; + if (this._settings.shadow) { + prevShadowSettings = [this._context.shadowColor, this._context.shadowOffsetX, this._context.shadowOffsetY, this._context.shadowBlur]; + this._context.shadowColor = getRgbaString(this._settings.shadowColor); + this._context.shadowOffsetX = this._settings.shadowOffsetX * precision; + this._context.shadowOffsetY = this._settings.shadowOffsetY * precision; + this._context.shadowBlur = this._settings.shadowBlur * precision; + } + this._context.fillStyle = getRgbaString(this._settings.textColor); + for (var _i5 = 0, _n3 = drawLines.length; _i5 < _n3; _i5++) { + var _drawLine = drawLines[_i5]; + if (renderInfo.letterSpacing === 0) { + this._context.fillText(_drawLine.text, _drawLine.x, _drawLine.y); + } else { + var textSplit = _drawLine.text.split(''); + var x = _drawLine.x; + for (var _i6 = 0, j = textSplit.length; _i6 < j; _i6++) { + this._context.fillText(textSplit[_i6], x, _drawLine.y); + x += this.measureText(textSplit[_i6], renderInfo.letterSpacing); + } + } + } + if (prevShadowSettings) { + this._context.shadowColor = prevShadowSettings[0]; + this._context.shadowOffsetX = prevShadowSettings[1]; + this._context.shadowOffsetY = prevShadowSettings[2]; + this._context.shadowBlur = prevShadowSettings[3]; + } + if (renderInfo.cutSx || renderInfo.cutSy) { + this._context.translate(renderInfo.cutSx, renderInfo.cutSy); + } + this.renderInfo = renderInfo; + } + wrapWord(word, wordWrapWidth, suffix) { + var suffixWidth = this._context.measureText(suffix).width; + var wordLen = word.length; + var wordWidth = this._context.measureText(word).width; + /* If word fits wrapWidth, do nothing */ + if (wordWidth <= wordWrapWidth) { + return word; + } + /* Make initial guess for text cuttoff */ + var cutoffIndex = Math.floor(wordWrapWidth * wordLen / wordWidth); + var truncWordWidth = this._context.measureText(word.substring(0, cutoffIndex)).width + suffixWidth; + /* In case guess was overestimated, shrink it letter by letter. */ + if (truncWordWidth > wordWrapWidth) { + while (cutoffIndex > 0) { + truncWordWidth = this._context.measureText(word.substring(0, cutoffIndex)).width + suffixWidth; + if (truncWordWidth > wordWrapWidth) { + cutoffIndex -= 1; + } else { + break; + } + } + /* In case guess was underestimated, extend it letter by letter. */ + } else { + while (cutoffIndex < wordLen) { + truncWordWidth = this._context.measureText(word.substring(0, cutoffIndex)).width + suffixWidth; + if (truncWordWidth < wordWrapWidth) { + cutoffIndex += 1; + } else { + // Finally, when bound is crossed, retract last letter. + cutoffIndex -= 1; + break; + } + } + } + /* If wrapWidth is too short to even contain suffix alone, return empty string */ + return word.substring(0, cutoffIndex) + (wordWrapWidth >= suffixWidth ? suffix : ''); + } + /** + * Applies newlines to a string to have it optimally fit into the horizontal + * bounds set by the Text object's wordWrapWidth property. + */ + wrapText(text, wordWrapWidth, letterSpacing, indent = 0) { + // Greedy wrapping algorithm that will wrap words as the line grows longer. + // than its horizontal bounds. + var lines = text.split(/\r?\n/g); + var allLines = []; + var realNewlines = []; + for (var i = 0; i < lines.length; i++) { + var resultLines = []; + var result = ''; + var spaceLeft = wordWrapWidth - indent; + var words = lines[i].split(' '); + for (var j = 0; j < words.length; j++) { + var wordWidth = this.measureText(words[j], letterSpacing); + var wordWidthWithSpace = wordWidth + this.measureText(' ', letterSpacing); + if (j === 0 || wordWidthWithSpace > spaceLeft) { + // Skip printing the newline if it's the first word of the line that is. + // greater than the word wrap width. + if (j > 0) { + resultLines.push(result); + result = ''; + } + result += words[j]; + spaceLeft = wordWrapWidth - wordWidth - (j === 0 ? indent : 0); + } else { + spaceLeft -= wordWidthWithSpace; + result += ` ${words[j]}`; + } + } + resultLines.push(result); + result = ''; + allLines = allLines.concat(resultLines); + if (i < lines.length - 1) { + realNewlines.push(allLines.length); + } + } + return { + l: allLines, + n: realNewlines + }; + } + measureText(word, space = 0) { + if (!space) { + return this._context.measureText(word).width; + } + return word.split('').reduce((acc, char) => { + return acc + this._context.measureText(char).width + space; + }, 0); + } + mergeDefaults(settings) { + return _objectSpread({ + text: '', + w: 0, + h: 0, + fontStyle: 'normal', + fontSize: 40, + fontFace: null, + wordWrap: true, + wordWrapWidth: 0, + wordBreak: false, + textOverflow: '', + lineHeight: null, + textBaseline: 'alphabetic', + textAlign: 'left', + verticalAlign: 'top', + offsetY: null, + maxLines: 0, + overflowSuffix: '...', + textColor: [1.0, 1.0, 1.0, 1.0], + paddingLeft: 0, + paddingRight: 0, + shadow: false, + shadowColor: [0.0, 0.0, 0.0, 1.0], + shadowOffsetX: 0, + shadowOffsetY: 0, + shadowBlur: 5, + highlight: false, + highlightHeight: 0, + highlightColor: [0.0, 0.0, 0.0, 1.0], + highlightOffset: 0, + highlightPaddingLeft: 0, + highlightPaddingRight: 0, + letterSpacing: 0, + textIndent: 0, + cutSx: 0, + cutEx: 0, + cutSy: 0, + cutEy: 0, + advancedRenderer: false, + fontBaselineRatio: 0, + precision: 1, + textRenderIssueMargin: 0 + }, settings); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + var resolvedGlobal = typeof self === 'undefined' ? globalThis : self; + /** + * Global font set regardless of if run in the main thread or a web worker + */ + var globalFontSet = ((_resolvedGlobal$docum = resolvedGlobal.document) === null || _resolvedGlobal$docum === void 0 ? void 0 : _resolvedGlobal$docum.fonts) || resolvedGlobal.fonts; + function getFontCssString(props) { + var fontFamily = props.fontFamily, + fontStyle = props.fontStyle, + fontWeight = props.fontWeight, + fontStretch = props.fontStretch, + fontSize = props.fontSize; + return [fontStyle, fontWeight, fontStretch, `${fontSize}px`, fontFamily].join(' '); + } + /** + * Ephemeral bounds object used for intersection calculations + * + * @remarks + * Used to avoid creating a new object every time we need to intersect + * element bounds. + */ + var tmpElementBounds = createBound(0, 0, 0, 0); + class CanvasTextRenderer extends TextRenderer { + constructor(stage) { + super(stage); + _defineProperty(this, "canvas", void 0); + _defineProperty(this, "context", void 0); + _defineProperty(this, "rendererBounds", void 0); + if (typeof OffscreenCanvas !== 'undefined') { + this.canvas = new OffscreenCanvas(0, 0); + } else { + this.canvas = document.createElement('canvas'); + } + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + var context = this.canvas.getContext('2d'); + if (!context) { + // A browser may appear to support OffscreenCanvas but not actually support the Canvas '2d' context + // Here we try getting the context again after falling back to an HTMLCanvasElement. + // See: https://github.com/lightning-js/renderer/issues/26#issuecomment-1750438486 + this.canvas = document.createElement('canvas'); + context = this.canvas.getContext('2d'); + } + assertTruthy(context); + this.context = context; + this.rendererBounds = { + x1: 0, + y1: 0, + x2: this.stage.options.appWidth, + y2: this.stage.options.appHeight + }; + } + //#region Overrides + getPropertySetters() { + return { + fontFamily: (state, value) => { + state.props.fontFamily = value; + state.fontInfo = undefined; + this.invalidateLayoutCache(state); + }, + fontWeight: (state, value) => { + state.props.fontWeight = value; + state.fontInfo = undefined; + this.invalidateLayoutCache(state); + }, + fontStyle: (state, value) => { + state.props.fontStyle = value; + state.fontInfo = undefined; + this.invalidateLayoutCache(state); + }, + fontStretch: (state, value) => { + state.props.fontStretch = value; + state.fontInfo = undefined; + this.invalidateLayoutCache(state); + }, + fontSize: (state, value) => { + state.props.fontSize = value; + state.fontInfo = undefined; + this.invalidateLayoutCache(state); + }, + text: (state, value) => { + state.props.text = value; + this.invalidateLayoutCache(state); + }, + textAlign: (state, value) => { + state.props.textAlign = value; + this.invalidateLayoutCache(state); + }, + color: (state, value) => { + state.props.color = value; + this.invalidateLayoutCache(state); + }, + x: (state, value) => { + state.props.x = value; + this.invalidateVisibleWindowCache(state); + }, + y: (state, value) => { + state.props.y = value; + this.invalidateVisibleWindowCache(state); + }, + contain: (state, value) => { + state.props.contain = value; + this.invalidateLayoutCache(state); + }, + width: (state, value) => { + state.props.width = value; + // Only invalidate layout cache if we're containing in the horizontal direction + if (state.props.contain !== 'none') { + this.invalidateLayoutCache(state); + } + }, + height: (state, value) => { + state.props.height = value; + // Only invalidate layout cache if we're containing in the vertical direction + if (state.props.contain === 'both') { + this.invalidateLayoutCache(state); + } + }, + offsetY: (state, value) => { + state.props.offsetY = value; + this.invalidateLayoutCache(state); + }, + scrollY: (state, value) => { + state.props.scrollY = value; + }, + letterSpacing: (state, value) => { + state.props.letterSpacing = value; + this.invalidateLayoutCache(state); + }, + lineHeight: (state, value) => { + state.props.lineHeight = value; + this.invalidateLayoutCache(state); + }, + maxLines: (state, value) => { + state.props.maxLines = value; + this.invalidateLayoutCache(state); + }, + textBaseline: (state, value) => { + state.props.textBaseline = value; + this.invalidateLayoutCache(state); + }, + verticalAlign: (state, value) => { + state.props.verticalAlign = value; + this.invalidateLayoutCache(state); + }, + overflowSuffix: (state, value) => { + state.props.overflowSuffix = value; + this.invalidateLayoutCache(state); + } + // debug: (state, value) => { + // state.props.debug = value; + // }, + }; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + canRenderFont(props) { + // The canvas renderer can render any font because it automatically + // falls back to system fonts. The CanvasTextRenderer should be + // checked last if other renderers are preferred. + return true; + } + isFontFaceSupported(fontFace) { + return fontFace instanceof WebTrFontFace; + } + addFontFace(fontFace) { + // Make sure the font face is an Canvas font face (it should have already passed + // the `isFontFaceSupported` check) + assertTruthy(fontFace instanceof WebTrFontFace); + // We simply add the font face to the document + // @ts-expect-error `add()` method should be available from a FontFaceSet + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + globalFontSet.add(fontFace.fontFace); + } + createState(props) { + return { + props, + status: 'initialState', + updateScheduled: false, + emitter: new EventEmitter(), + canvasPages: undefined, + lightning2TextRenderer: new LightningTextTextureRenderer(this.canvas, this.context), + renderWindow: undefined, + visibleWindow: { + x1: 0, + y1: 0, + x2: 0, + y2: 0, + valid: false + }, + renderInfo: undefined, + forceFullLayoutCalc: false, + textW: 0, + textH: 0, + fontInfo: undefined, + fontFaceLoadedHandler: undefined, + isRenderable: false, + debugData: { + updateCount: 0, + layoutCount: 0, + drawCount: 0, + lastLayoutNumCharacters: 0, + layoutSum: 0, + drawSum: 0, + bufferSize: 0 + } + }; + } + updateState(state) { + // On the first update call we need to set the status to loading + if (state.status === 'initialState') { + this.setStatus(state, 'loading'); + } + // If fontInfo is invalid, we need to establish it + if (!state.fontInfo) { + var cssString = getFontCssString(state.props); + state.fontInfo = { + cssString: cssString, + // TODO: For efficiency we would use this here but it's not reliable on WPE -> document.fonts.check(cssString), + loaded: false + }; + // If font is not loaded, set up a handler to update the font info when the font loads + if (!state.fontInfo.loaded) { + globalFontSet.load(cssString).then(this.onFontLoaded.bind(this, state, cssString)).catch(this.onFontLoadError.bind(this, state, cssString)); + return; + } + } + // If we're waiting for a font face to load, don't render anything + if (!state.fontInfo.loaded) { + return; + } + if (!state.renderInfo) { + var maxLines = state.props.maxLines; + var containedMaxLines = state.props.contain === 'both' ? Math.floor((state.props.height - state.props.offsetY) / state.props.lineHeight) : 0; + var calcMaxLines = containedMaxLines > 0 && maxLines > 0 ? Math.min(containedMaxLines, maxLines) : Math.max(containedMaxLines, maxLines); + state.lightning2TextRenderer.settings = { + text: state.props.text, + textAlign: state.props.textAlign, + fontFace: state.props.fontFamily, + fontSize: state.props.fontSize, + fontStyle: [state.props.fontStretch, state.props.fontStyle, state.props.fontWeight].join(' '), + textColor: getNormalizedRgbaComponents(state.props.color), + offsetY: state.props.fontSize + state.props.offsetY, + wordWrap: state.props.contain !== 'none', + wordWrapWidth: state.props.contain === 'none' ? undefined : state.props.width, + letterSpacing: state.props.letterSpacing, + lineHeight: state.props.lineHeight, + maxLines: calcMaxLines, + textBaseline: state.props.textBaseline, + verticalAlign: state.props.verticalAlign, + overflowSuffix: state.props.overflowSuffix + }; + // const renderInfoCalculateTime = performance.now(); + state.renderInfo = state.lightning2TextRenderer.calculateRenderInfo(); + // console.log( + // 'Render info calculated in', + // performance.now() - renderInfoCalculateTime, + // 'ms', + // ); + state.textH = state.renderInfo.lineHeight * state.renderInfo.lines.length; + state.textW = state.renderInfo.width; + // Invalidate renderWindow because the renderInfo changed + state.renderWindow = undefined; + } + var _state$props = state.props, + x = _state$props.x, + y = _state$props.y, + width = _state$props.width, + height = _state$props.height, + scrollY = _state$props.scrollY, + contain = _state$props.contain; + var visibleWindow = state.visibleWindow; + var renderWindow = state.renderWindow, + canvasPages = state.canvasPages; + if (!visibleWindow.valid) { + // Figure out whats actually in the bounds of the renderer/canvas (visibleWindow) + var elementBounds = createBound(x, y, contain !== 'none' ? x + width : Infinity, contain === 'both' ? y + height : Infinity, tmpElementBounds); + /** + * Area that is visible on the screen. + */ + intersectBound(this.rendererBounds, elementBounds, visibleWindow); + visibleWindow.valid = true; + } + var visibleWindowHeight = visibleWindow.y2 - visibleWindow.y1; + var maxLinesPerCanvasPage = Math.ceil(visibleWindowHeight / state.renderInfo.lineHeight); + if (visibleWindowHeight === 0) { + // Nothing to render. Clear any canvasPages and existing renderWindow + // Return early. + canvasPages = undefined; + renderWindow = undefined; + this.setStatus(state, 'loaded'); + return; + } else if (renderWindow && canvasPages) { + // Return early if we're still viewing inside the established render window + // No need to re-render what we've already rendered + var renderWindowScreenX1 = x + renderWindow.x1; + var renderWindowScreenY1 = y - scrollY + renderWindow.y1; + var renderWindowScreenX2 = x + renderWindow.x2; + var renderWindowScreenY2 = y - scrollY + renderWindow.y2; + if (renderWindowScreenX1 <= visibleWindow.x1 && renderWindowScreenX2 >= visibleWindow.x2 && renderWindowScreenY1 <= visibleWindow.y1 && renderWindowScreenY2 >= visibleWindow.y2) { + this.setStatus(state, 'loaded'); + return; + } + if (renderWindowScreenY2 < visibleWindow.y2) { + // We've scrolled up, so we need to render the next page + renderWindow.y1 += maxLinesPerCanvasPage * state.renderInfo.lineHeight; + renderWindow.y2 += maxLinesPerCanvasPage * state.renderInfo.lineHeight; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + canvasPages.push(canvasPages.shift()); + canvasPages[2].lineNumStart = canvasPages[1].lineNumStart + maxLinesPerCanvasPage; + canvasPages[2].lineNumEnd = canvasPages[2].lineNumStart + maxLinesPerCanvasPage; + canvasPages[2].valid = false; + } else if (renderWindowScreenY1 > visibleWindow.y1) { + // We've scrolled down, so we need to render the previous page + renderWindow.y1 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight; + renderWindow.y2 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + canvasPages.unshift(canvasPages.pop()); + canvasPages[0].lineNumStart = canvasPages[1].lineNumStart - maxLinesPerCanvasPage; + canvasPages[0].lineNumEnd = canvasPages[0].lineNumStart + maxLinesPerCanvasPage; + canvasPages[0].valid = false; + } + } else { + var _canvasPages, _canvasPages2, _canvasPages3; + var pageHeight = state.renderInfo.lineHeight * maxLinesPerCanvasPage; + var page1Block = Math.ceil(scrollY / pageHeight); + var page1LineStart = page1Block * maxLinesPerCanvasPage; + var page0LineStart = page1LineStart - maxLinesPerCanvasPage; + var page2LineStart = page1LineStart + maxLinesPerCanvasPage; + // We haven't rendered anything yet, so we need to render the first page + // If canvasPages already exist, let's re-use the textures + canvasPages = [{ + texture: (_canvasPages = canvasPages) === null || _canvasPages === void 0 ? void 0 : _canvasPages[0].texture, + lineNumStart: page0LineStart, + lineNumEnd: page0LineStart + maxLinesPerCanvasPage, + valid: false + }, { + texture: (_canvasPages2 = canvasPages) === null || _canvasPages2 === void 0 ? void 0 : _canvasPages2[1].texture, + lineNumStart: page1LineStart, + lineNumEnd: page1LineStart + maxLinesPerCanvasPage, + valid: false + }, { + texture: (_canvasPages3 = canvasPages) === null || _canvasPages3 === void 0 ? void 0 : _canvasPages3[2].texture, + lineNumStart: page2LineStart, + lineNumEnd: page2LineStart + maxLinesPerCanvasPage, + valid: false + }]; + state.canvasPages = canvasPages; + var scrollYNearestPage = page1Block * pageHeight; + renderWindow = { + x1: 0, + y1: scrollYNearestPage - pageHeight, + x2: width, + y2: scrollYNearestPage + pageHeight * 2 + }; + } + state.renderWindow = renderWindow; + performance.now(); + var _iterator5 = _createForOfIteratorHelper(canvasPages), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var pageInfo = _step5.value; + if (pageInfo.valid) continue; + if (pageInfo.lineNumStart < 0) { + var _pageInfo$texture; + (_pageInfo$texture = pageInfo.texture) === null || _pageInfo$texture === void 0 || _pageInfo$texture.setRenderableOwner(state, false); + pageInfo.texture = this.stage.txManager.loadTexture('ImageTexture', { + src: '' + }); + pageInfo.texture.setRenderableOwner(state, state.isRenderable); + pageInfo.valid = true; + continue; + } + state.lightning2TextRenderer.draw(state.renderInfo, { + lines: state.renderInfo.lines.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd), + lineWidths: state.renderInfo.lineWidths.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd) + }); + if (!(this.canvas.width === 0 || this.canvas.height === 0)) { + var _pageInfo$texture2; + (_pageInfo$texture2 = pageInfo.texture) === null || _pageInfo$texture2 === void 0 || _pageInfo$texture2.setRenderableOwner(state, false); + pageInfo.texture = this.stage.txManager.loadTexture('ImageTexture', { + src: this.context.getImageData(0, 0, this.canvas.width, this.canvas.height) + }, { + preload: true + }); + pageInfo.texture.setRenderableOwner(state, state.isRenderable); + } + pageInfo.valid = true; + } + // console.log('pageDrawTime', performance.now() - pageDrawTime, 'ms'); + // Report final status + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + this.setStatus(state, 'loaded'); + } + renderQuads(state, transform, clippingRect, alpha) { + var stage = this.stage; + var canvasPages = state.canvasPages, + _state$textW = state.textW, + textW = _state$textW === void 0 ? 0 : _state$textW, + _state$textH = state.textH, + textH = _state$textH === void 0 ? 0 : _state$textH, + renderWindow = state.renderWindow; + if (!canvasPages || !renderWindow) return; + var _state$props2 = state.props, + x = _state$props2.x, + y = _state$props2.y, + scrollY = _state$props2.scrollY, + contain = _state$props2.contain, + width = _state$props2.width, + height = _state$props2.height; + var elementRect = { + x: x, + y: y, + width: contain !== 'none' ? width : textW, + height: contain === 'both' ? height : textH + }; + intersectRect({ + x: 0, + y: 0, + width: stage.options.appWidth, + height: stage.options.appHeight + }, elementRect); + // if (!debug.disableScissor) { + // renderer.enableScissor( + // visibleRect.x, + // visibleRect.y, + // visibleRect.w, + // visibleRect.h, + // ); + // } + assertTruthy(canvasPages, 'canvasPages is not defined'); + assertTruthy(renderWindow, 'renderWindow is not defined'); + var renderWindowHeight = renderWindow.y2 - renderWindow.y1; + var pageSize = renderWindowHeight / 3.0; + var _state$props3 = state.props, + zIndex = _state$props3.zIndex, + color = _state$props3.color; + // Color alpha of text is not properly rendered to the Canvas texture, so we + // need to apply it here. + var combinedAlpha = alpha * getNormalizedAlphaComponent(color); + var quadColor = mergeColorAlphaPremultiplied(0xffffffff, combinedAlpha); + if (canvasPages[0].valid) { + var _canvasPages$0$textur, _canvasPages$0$textur2; + this.stage.renderer.addQuad({ + alpha: combinedAlpha, + clippingRect, + colorBl: quadColor, + colorBr: quadColor, + colorTl: quadColor, + colorTr: quadColor, + width: ((_canvasPages$0$textur = canvasPages[0].texture) === null || _canvasPages$0$textur === void 0 || (_canvasPages$0$textur = _canvasPages$0$textur.dimensions) === null || _canvasPages$0$textur === void 0 ? void 0 : _canvasPages$0$textur.width) || 0, + height: ((_canvasPages$0$textur2 = canvasPages[0].texture) === null || _canvasPages$0$textur2 === void 0 || (_canvasPages$0$textur2 = _canvasPages$0$textur2.dimensions) === null || _canvasPages$0$textur2 === void 0 ? void 0 : _canvasPages$0$textur2.height) || 0, + texture: canvasPages[0].texture, + textureOptions: {}, + shader: null, + shaderProps: null, + zIndex, + tx: transform.tx, + ty: transform.ty - scrollY + renderWindow.y1, + ta: transform.ta, + tb: transform.tb, + tc: transform.tc, + td: transform.td + }); + } + if (canvasPages[1].valid) { + var _canvasPages$1$textur, _canvasPages$1$textur2; + this.stage.renderer.addQuad({ + alpha: combinedAlpha, + clippingRect, + colorBl: quadColor, + colorBr: quadColor, + colorTl: quadColor, + colorTr: quadColor, + width: ((_canvasPages$1$textur = canvasPages[1].texture) === null || _canvasPages$1$textur === void 0 || (_canvasPages$1$textur = _canvasPages$1$textur.dimensions) === null || _canvasPages$1$textur === void 0 ? void 0 : _canvasPages$1$textur.width) || 0, + height: ((_canvasPages$1$textur2 = canvasPages[1].texture) === null || _canvasPages$1$textur2 === void 0 || (_canvasPages$1$textur2 = _canvasPages$1$textur2.dimensions) === null || _canvasPages$1$textur2 === void 0 ? void 0 : _canvasPages$1$textur2.height) || 0, + texture: canvasPages[1].texture, + textureOptions: {}, + shader: null, + shaderProps: null, + zIndex, + tx: transform.tx, + ty: transform.ty - scrollY + renderWindow.y1 + pageSize, + ta: transform.ta, + tb: transform.tb, + tc: transform.tc, + td: transform.td + }); + } + if (canvasPages[2].valid) { + var _canvasPages$2$textur, _canvasPages$2$textur2; + this.stage.renderer.addQuad({ + alpha: combinedAlpha, + clippingRect, + colorBl: quadColor, + colorBr: quadColor, + colorTl: quadColor, + colorTr: quadColor, + width: ((_canvasPages$2$textur = canvasPages[2].texture) === null || _canvasPages$2$textur === void 0 || (_canvasPages$2$textur = _canvasPages$2$textur.dimensions) === null || _canvasPages$2$textur === void 0 ? void 0 : _canvasPages$2$textur.width) || 0, + height: ((_canvasPages$2$textur2 = canvasPages[2].texture) === null || _canvasPages$2$textur2 === void 0 || (_canvasPages$2$textur2 = _canvasPages$2$textur2.dimensions) === null || _canvasPages$2$textur2 === void 0 ? void 0 : _canvasPages$2$textur2.height) || 0, + texture: canvasPages[2].texture, + textureOptions: {}, + shader: null, + shaderProps: null, + zIndex, + tx: transform.tx, + ty: transform.ty - scrollY + renderWindow.y1 + pageSize + pageSize, + ta: transform.ta, + tb: transform.tb, + tc: transform.tc, + td: transform.td + }); + } + // renderer.disableScissor(); + // if (debug.showElementRect) { + // this.renderer.drawBorder( + // Colors.Blue, + // elementRect.x, + // elementRect.y, + // elementRect.w, + // elementRect.h, + // ); + // } + // if (debug.showVisibleRect) { + // this.renderer.drawBorder( + // Colors.Green, + // visibleRect.x, + // visibleRect.y, + // visibleRect.w, + // visibleRect.h, + // ); + // } + // if (debug.showRenderWindow && renderWindow) { + // this.renderer.drawBorder( + // Colors.Red, + // x + renderWindow.x1, + // y + renderWindow.y1 - scrollY, + // x + renderWindow.x2 - (x + renderWindow.x1), + // y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY), + // ); + // } + } + setIsRenderable(state, renderable) { + var _state$canvasPages; + super.setIsRenderable(state, renderable); + // Set state object owner from any canvas page textures + (_state$canvasPages = state.canvasPages) === null || _state$canvasPages === void 0 || _state$canvasPages.forEach(pageInfo => { + var _pageInfo$texture3; + (_pageInfo$texture3 = pageInfo.texture) === null || _pageInfo$texture3 === void 0 || _pageInfo$texture3.setRenderableOwner(state, renderable); + }); + } + destroyState(state) { + var _state$canvasPages2; + // Remove state object owner from any canvas page textures + (_state$canvasPages2 = state.canvasPages) === null || _state$canvasPages2 === void 0 || _state$canvasPages2.forEach(pageInfo => { + var _pageInfo$texture4; + (_pageInfo$texture4 = pageInfo.texture) === null || _pageInfo$texture4 === void 0 || _pageInfo$texture4.setRenderableOwner(state, false); + }); + } + //#endregion Overrides + /** + * Invalidate the visible window stored in the state. This will cause a new + * visible window to be calculated on the next update. + * + * @param state + */ + invalidateVisibleWindowCache(state) { + state.visibleWindow.valid = false; + this.setStatus(state, 'loading'); + this.scheduleUpdateState(state); + } + /** + * Invalidate the layout cache stored in the state. This will cause the text + * to be re-layed out on the next update. + * + * @remarks + * This also invalidates the visible window cache. + * + * @param state + */ + invalidateLayoutCache(state) { + state.renderInfo = undefined; + state.visibleWindow.valid = false; + this.setStatus(state, 'loading'); + this.scheduleUpdateState(state); + } + onFontLoaded(state, cssString) { + var _state$fontInfo; + if (cssString !== ((_state$fontInfo = state.fontInfo) === null || _state$fontInfo === void 0 ? void 0 : _state$fontInfo.cssString) || !state.fontInfo) { + return; + } + state.fontInfo.loaded = true; + this.scheduleUpdateState(state); + } + onFontLoadError(state, cssString, error) { + var _state$fontInfo2; + if (cssString !== ((_state$fontInfo2 = state.fontInfo) === null || _state$fontInfo2 === void 0 ? void 0 : _state$fontInfo2.cssString) || !state.fontInfo) { + return; + } + // Font didn't actually load, but we'll log the error and mark it as loaded + // because the browser can still render with a fallback font. + state.fontInfo.loaded = true; + console.error(`CanvasTextRenderer: Error loading font '${state.fontInfo.cssString}'`, error); + this.scheduleUpdateState(state); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class DefaultShader extends WebGlCoreShader { + constructor(renderer) { + super({ + renderer, + attributes: ['a_position', 'a_textureCoordinate', 'a_color'], + uniforms: [{ + name: 'u_resolution', + uniform: 'uniform2fv' + }, { + name: 'u_pixelRatio', + uniform: 'uniform1f' + }, { + name: 'u_texture', + uniform: 'uniform2fv' + }] + }); + } + bindTextures(textures) { + var glw = this.glw; + glw.activeTexture(0); + glw.bindTexture(textures[0].ctxTexture); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + // import type { Texture } from '../textures/Texture'; + _defineProperty(DefaultShader, "shaderSources", { + vertex: ` + # ifdef GL_FRAGMENT_PRESICISON_HIGH + precision highp float; + # else + precision mediump float; + # endif + + attribute vec2 a_position; + attribute vec2 a_textureCoordinate; + attribute vec4 a_color; + + uniform vec2 u_resolution; + uniform float u_pixelRatio; + + + varying vec4 v_color; + varying vec2 v_textureCoordinate; + + void main() { + vec2 normalized = a_position * u_pixelRatio; + vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y); + + v_color = a_color; + v_textureCoordinate = a_textureCoordinate; + + gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0); + gl_Position.y = -sign(screenSpace.y) * gl_Position.y; + } + `, + fragment: ` + # ifdef GL_FRAGMENT_PRESICISON_HIGH + precision highp float; + # else + precision mediump float; + # endif + + uniform vec2 u_resolution; + uniform sampler2D u_texture; + + varying vec4 v_color; + varying vec2 v_textureCoordinate; + + void main() { + vec4 color = texture2D(u_texture, v_textureCoordinate); + gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoordinate); + } + ` + }); + class DefaultShaderBatched extends WebGlCoreShader { + constructor(renderer) { + super({ + renderer, + attributes: ['a_position', 'a_textureCoordinate', 'a_color', 'a_textureIndex'], + uniforms: [{ + name: 'u_resolution', + uniform: 'uniform2fv' + }, { + name: 'u_pixelRatio', + uniform: 'uniform1f' + }, { + name: 'u_textures[0]', + uniform: 'uniform1iv' + }] + }); + _defineProperty(this, "supportsIndexedTextures", true); + } + bindTextures(texture) { + var renderer = this.renderer, + glw = this.glw; + if (texture.length > renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS) { + throw new Error(`DefaultShaderBatched: Cannot bind more than ${renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS} textures`); + } + texture.forEach((t, i) => { + glw.activeTexture(i); + glw.bindTexture(t.ctxTexture); + }); + var samplers = Array.from(Array(texture.length).keys()); + this.setUniform('u_textures[0]', samplers); + } + } + _defineProperty(DefaultShaderBatched, "shaderSources", { + vertex: ` + # ifdef GL_FRAGMENT_PRESICISON_HIGH + precision highp float; + # else + precision mediump float; + # endif + + attribute vec2 a_textureCoordinate; + attribute vec2 a_position; + attribute vec4 a_color; + attribute float a_textureIndex; + attribute float a_depth; + + uniform vec2 u_resolution; + uniform float u_pixelRatio; + + varying vec4 v_color; + varying vec2 v_textureCoordinate; + varying float v_textureIndex; + + void main(){ + vec2 normalized = a_position * u_pixelRatio / u_resolution; + vec2 zero_two = normalized * 2.0; + vec2 clip_space = zero_two - 1.0; + + // pass to fragment + v_color = a_color; + v_textureCoordinate = a_textureCoordinate; + v_textureIndex = a_textureIndex; + + // flip y + gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1); + } + `, + fragment: textureUnits => ` + #define txUnits ${textureUnits} + # ifdef GL_FRAGMENT_PRESICISON_HIGH + precision highp float; + # else + precision mediump float; + # endif + + uniform vec2 u_resolution; + uniform sampler2D u_image; + uniform sampler2D u_textures[txUnits]; + + varying vec4 v_color; + varying vec2 v_textureCoordinate; + varying float v_textureIndex; + + vec4 sampleFromTexture(sampler2D textures[${textureUnits}], int idx, vec2 uv) { + ${Array.from(Array(textureUnits).keys()).map(idx => ` + ${idx !== 0 ? 'else ' : ''}if (idx == ${idx}) { + return texture2D(textures[${idx}], uv); + } + `).join('')} + return texture2D(textures[0], uv); + } + + void main(){ + gl_FragColor = vec4(v_color) * sampleFromTexture(u_textures, int(v_textureIndex), v_textureCoordinate); + } + ` + }); + var effectCache = new Map(); + var getResolvedEffect = (effects, effectContructors) => { + var key = JSON.stringify(effects); + if (effectCache.has(key)) { + return effectCache.get(key); + } + var value = (effects !== null && effects !== void 0 ? effects : []).map(effect => ({ + type: effect.type, + props: effectContructors[effect.type].resolveDefaults(effect.props || {}) + })); + effectCache.set(key, value); + return value; + }; + class DynamicShader extends WebGlCoreShader { + constructor(renderer, props, effectContructors) { + var shader = DynamicShader.createShader(props, effectContructors); + super({ + renderer, + attributes: ['a_position', 'a_textureCoordinate', 'a_color'], + uniforms: [{ + name: 'u_resolution', + uniform: 'uniform2fv' + }, { + name: 'u_pixelRatio', + uniform: 'uniform1f' + }, { + name: 'u_texture', + uniform: 'uniform2fv' + }, { + name: 'u_dimensions', + uniform: 'uniform2fv' + }, { + name: 'u_alpha', + uniform: 'uniform1f' + }, ...shader.uniforms], + shaderSources: { + vertex: shader.vertex, + fragment: shader.fragment + } + }); + _defineProperty(this, "effects", []); + this.effects = shader.effects; + this.calculateProps = memize(this.calculateProps.bind(this)); + } + bindTextures(textures) { + var glw = this.glw; + glw.activeTexture(0); + glw.bindTexture(textures[0].ctxTexture); + } + calculateProps(effects) { + var regEffects = this.renderer.shManager.getRegisteredEffects(); + var results = []; + effects === null || effects === void 0 || effects.forEach((eff, index) => { + var _eff$props; + var effect = this.effects[index]; + var fxClass = regEffects[effect.name]; + var props = (_eff$props = eff.props) !== null && _eff$props !== void 0 ? _eff$props : {}; + var uniInfo = effect.uniformInfo; + Object.keys(props).forEach(p => { + var fxProp = fxClass.uniforms[p]; + var propInfo = uniInfo[p]; + var value = fxProp.validator ? fxProp.validator(props[p], props) : props[p]; + if (Array.isArray(value)) { + value = new Float32Array(value); + } + results.push({ + name: propInfo.name, + value + }); + }); + }); + return results; + } + bindProps(props) { + var results = this.calculateProps(props.effects); + results.forEach(r => { + this.setUniform(r.name, r.value); + }); + } + canBatchShaderProps(propsA, propsB) { + if (propsA.$dimensions.width !== propsB.$dimensions.width || propsA.$dimensions.height !== propsB.$dimensions.height || propsA.effects.length !== propsB.effects.length) { + return false; + } + var propsEffectsLen = propsA.effects.length; + var i = 0; + for (; i < propsEffectsLen; i++) { + var effectA = propsA.effects[i]; + var effectB = propsB.effects[i]; + if (effectA.type !== effectB.type) { + return false; + } + for (var _key4 in effectA.props) { + if (effectB.props && !effectB.props[_key4] || effectA.props[_key4] !== effectB.props[_key4]) { + return false; + } + } + } + return true; + } + static createShader(props, effectContructors) { + //counts duplicate effects + var effectNameCount = {}; + var methods = {}; + var declareUniforms = ''; + var uniforms = []; + var uFx = []; + var effects = props.effects.map(effect => { + var baseClass = effectContructors[effect.type]; + var key = baseClass.getEffectKey(effect.props || {}); + effectNameCount[key] = effectNameCount[key] ? ++effectNameCount[key] : 1; + var nr = effectNameCount[key]; + if (nr === 1) { + uFx.push({ + key, + type: effect.type, + props: effect.props + }); + } + //initialize new effect class; + var fxClass = new baseClass({ + ref: `${key}${nr === 1 ? '' : nr}`, + target: key, + props: effect.props + }); + declareUniforms += fxClass.declaredUniforms; + uniforms.push(...Object.values(fxClass.uniformInfo)); + return fxClass; + }); + //build source + var effectMethods = ''; + uFx === null || uFx === void 0 || uFx.forEach(fx => { + var _fx$props; + var fxClass = effectContructors[fx.type]; + var fxProps = fxClass.resolveDefaults((_fx$props = fx.props) !== null && _fx$props !== void 0 ? _fx$props : {}); + var remap = []; + for (var m in fxClass.methods) { + var cm = m; + var fxMethod = fxClass.methods[m]; + if (methods[m] && methods[m] !== fxMethod) { + cm = DynamicShader.resolveMethodDuplicate(m, fxMethod, methods); + } + methods[cm] = fxMethod.replace('function', cm); + remap.push({ + m, + cm + }); + } + var onShaderMask = fxClass.onShaderMask instanceof Function ? fxClass.onShaderMask(fxProps) : fxClass.onShaderMask; + var onColorize = fxClass.onColorize instanceof Function ? fxClass.onColorize(fxProps) : fxClass.onColorize; + var onEffectMask = fxClass.onEffectMask instanceof Function ? fxClass.onEffectMask(fxProps) : fxClass.onEffectMask; + remap.forEach(r => { + var m = r.m, + cm = r.cm; + var reg = new RegExp(`\\$${m}`, 'g'); + if (onShaderMask) { + onShaderMask = onShaderMask.replace(reg, cm); + } + if (onColorize) { + onColorize = onColorize.replace(reg, cm); + } + if (onEffectMask) { + onEffectMask = onEffectMask.replace(reg, cm); + } + }); + var methodParameters = fxClass.getMethodParameters(fxClass.uniforms, fxProps); + var pm = methodParameters.length > 0 ? `, ${methodParameters}` : ''; + if (onShaderMask) { + effectMethods += ` + float fx_${fx.key}_onShaderMask(float shaderMask ${pm}) { + ${onShaderMask} + } + `; + } + if (onColorize) { + effectMethods += ` + vec4 fx_${fx.key}_onColorize(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) { + ${onColorize} + } + `; + } + if (onEffectMask) { + effectMethods += ` + vec4 fx_${fx.key}_onEffectMask(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) { + ${onEffectMask} + } + `; + } + }); + var sharedMethods = ''; + for (var m in methods) { + sharedMethods += methods[m]; + } + //fill main functions + var currentMask = `mix(shaderColor, maskColor, clamp(-(lng_DefaultMask), 0.0, 1.0))`; + var drawEffects = ` + + `; + for (var i = 0; i < effects.length; i++) { + var current = effects[i]; + var pm = current.passParameters.length > 0 ? `, ${current.passParameters}` : ''; + var currentClass = effectContructors[current.name]; + if (currentClass.onShaderMask) { + drawEffects += ` + shaderMask = fx_${current.target}_onShaderMask(shaderMask ${pm}); + `; + } + if (currentClass.onColorize) { + drawEffects += ` + maskColor = fx_${current.target}_onColorize(shaderMask, maskColor, shaderColor${pm}); + `; + } + if (currentClass.onEffectMask) { + currentMask = `fx_${current.target}_onEffectMask(shaderMask, maskColor, shaderColor${pm})`; + } + var next = effects[i + 1]; + if (next === undefined || effectContructors[next.name].onEffectMask) { + drawEffects += ` + shaderColor = ${currentMask}; + `; + } + } + return { + effects, + uniforms, + fragment: DynamicShader.fragment(declareUniforms, sharedMethods, effectMethods, drawEffects), + vertex: DynamicShader.vertex() + }; + } + static resolveMethodDuplicate(key, effectMethod, methodCollection, increment = 0) { + var m = key + (increment > 0 ? increment : ''); + if (methodCollection[m] && methodCollection[m] !== effectMethod) { + return this.resolveMethodDuplicate(key, effectMethod, methodCollection, ++increment); + } + return m; + } + static resolveDefaults(props, effectContructors) { + return { + effects: getResolvedEffect(props.effects, effectContructors), + $dimensions: { + width: 0, + height: 0 + }, + $alpha: 0 + }; + } + static makeCacheKey(props, effectContructors) { + var _props$effects; + var fx = ''; + (_props$effects = props.effects) === null || _props$effects === void 0 || _props$effects.forEach(effect => { + var baseClass = effectContructors[effect.type]; + var key = baseClass.getEffectKey(effect.props || {}); + fx += `,${key}`; + }); + return `DynamicShader${fx}`; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Similar to the {@link DefaultShader} but cuts out 4 rounded rectangle corners + * as defined by the specified corner {@link RoundedRectangleProps.radius} + */ + _defineProperty(DynamicShader, "z$__type__Props", void 0); + _defineProperty(DynamicShader, "vertex", () => ` + # ifdef GL_FRAGMENT_PRESICISON_HIGH + precision highp float; + # else + precision mediump float; + # endif + + attribute vec2 a_textureCoordinate; + attribute vec2 a_position; + attribute vec4 a_color; + attribute float a_textureIndex; + + uniform vec2 u_resolution; + uniform float u_pixelRatio; + + varying vec4 v_color; + varying vec2 v_textureCoordinate; + varying float v_textureIndex; + + void main(){ + vec2 normalized = a_position * u_pixelRatio / u_resolution; + vec2 zero_two = normalized * 2.0; + vec2 clip_space = zero_two - 1.0; + + // pass to fragment + v_color = a_color; + v_textureCoordinate = a_textureCoordinate; + v_textureIndex = a_textureIndex; + + // flip y + gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1); + } + `); + _defineProperty(DynamicShader, "fragment", (uniforms, methods, effectMethods, drawEffects) => ` + # ifdef GL_FRAGMENT_PRESICISON_HIGH + precision highp float; + # else + precision mediump float; + # endif + + #define PI 3.14159265359 + + uniform vec2 u_resolution; + uniform vec2 u_dimensions; + uniform float u_alpha; + uniform float u_radius; + uniform sampler2D u_texture; + uniform float u_pixelRatio; + + ${uniforms} + + varying vec4 v_color; + varying vec2 v_textureCoordinate; + + ${methods} + + ${effectMethods} + + void main() { + vec2 p = v_textureCoordinate.xy * u_dimensions - u_dimensions * 0.5; + vec2 d = abs(p) - (u_dimensions) * 0.5; + float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0)); + + vec4 shaderColor = vec4(0.0); + float shaderMask = lng_DefaultMask; + + vec4 maskColor = texture2D(u_texture, v_textureCoordinate) * v_color; + + shaderColor = mix(shaderColor, maskColor, clamp(-(lng_DefaultMask + 0.5), 0.0, 1.0)); + + ${drawEffects} + + gl_FragColor = shaderColor * u_alpha; + } + `); + class RoundedRectangle extends WebGlCoreShader { + constructor(renderer) { + super({ + renderer, + attributes: ['a_position', 'a_textureCoordinate', 'a_color'], + uniforms: [{ + name: 'u_resolution', + uniform: 'uniform2fv' + }, { + name: 'u_pixelRatio', + uniform: 'uniform1f' + }, { + name: 'u_texture', + uniform: 'uniform2f' + }, { + name: 'u_dimensions', + uniform: 'uniform2fv' + }, { + name: 'u_radius', + uniform: 'uniform1f' + }] + }); + } + static resolveDefaults(props) { + return { + radius: props.radius || 10, + $dimensions: { + width: 0, + height: 0 + } + }; + } + bindTextures(textures) { + var glw = this.glw; + glw.activeTexture(0); + glw.bindTexture(textures[0].ctxTexture); + } + bindProps(props) { + this.setUniform('u_radius', props.radius); + } + canBatchShaderProps(propsA, propsB) { + return propsA.radius === propsB.radius && propsA.$dimensions.width === propsB.$dimensions.width && propsA.$dimensions.height === propsB.$dimensions.height; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + _defineProperty(RoundedRectangle, "z$__type__Props", void 0); + _defineProperty(RoundedRectangle, "shaderSources", { + vertex: ` + # ifdef GL_FRAGMENT_PRESICISON_HIGH + precision highp float; + # else + precision mediump float; + # endif + + attribute vec2 a_position; + attribute vec2 a_textureCoordinate; + attribute vec4 a_color; + attribute float a_textureIndex; + attribute float a_depth; + + uniform vec2 u_resolution; + uniform float u_pixelRatio; + + varying vec4 v_color; + varying vec2 v_textureCoordinate; + + void main() { + vec2 normalized = a_position * u_pixelRatio / u_resolution; + vec2 zero_two = normalized * 2.0; + vec2 clip_space = zero_two - 1.0; + + // pass to fragment + v_color = a_color; + v_textureCoordinate = a_textureCoordinate; + + // flip y + gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1); + } + `, + fragment: ` + # ifdef GL_FRAGMENT_PRESICISON_HIGH + precision highp float; + # else + precision mediump float; + # endif + + uniform vec2 u_resolution; + uniform vec2 u_dimensions; + uniform float u_radius; + uniform sampler2D u_texture; + + varying vec4 v_color; + varying vec2 v_textureCoordinate; + + float boxDist(vec2 p, vec2 size, float radius){ + size -= vec2(radius); + vec2 d = abs(p) - size; + return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius; + } + + float fillMask(float dist) { + return clamp(-dist, 0.0, 1.0); + } + + void main() { + vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color; + vec2 halfDimensions = u_dimensions * 0.5; + + float d = boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius); + gl_FragColor = mix(vec4(0.0), color, fillMask(d)); + } + ` + }); + var IDENTITY_MATRIX_3x3 = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); + /** + * SdfShader supports multi-channel and single-channel signed distance field textures. + * + * @remarks + * This Shader is used by the {@link SdfTextRenderer}. Do not use thie Shader + * directly. Instead create a Text Node and assign a SDF font family to it. + * + * @internalRemarks + * The only thing this shader does to support multi-channel SDFs is to + * add a median function to the fragment shader. If this one function call + * ends up being a performance bottleneck we can always look at ways to + * remove it. + */ + class SdfShader extends WebGlCoreShader { + constructor(renderer) { + super({ + renderer, + attributes: ['a_position', 'a_textureCoordinate'], + uniforms: [{ + name: 'u_resolution', + uniform: 'uniform2fv' + }, { + name: 'u_transform', + uniform: 'uniformMatrix3fv' + }, { + name: 'u_scrollY', + uniform: 'uniform1f' + }, { + name: 'u_pixelRatio', + uniform: 'uniform1f' + }, { + name: 'u_texture', + uniform: 'uniform2f' + }, { + name: 'u_color', + uniform: 'uniform4fv' + }, { + name: 'u_size', + uniform: 'uniform1f' + }, { + name: 'u_distanceRange', + uniform: 'uniform1f' + }, { + name: 'u_debug', + uniform: 'uniform1i' + }] + }); + } + bindTextures(textures) { + var glw = this.glw; + glw.activeTexture(0); + glw.bindTexture(textures[0].ctxTexture); + } + bindProps(props) { + var resolvedProps = SdfShader.resolveDefaults(props); + for (var _key5 in resolvedProps) { + if (_key5 === 'transform') { + this.setUniform('u_transform', false, resolvedProps[_key5]); + } else if (_key5 === 'scrollY') { + this.setUniform('u_scrollY', resolvedProps[_key5]); + } else if (_key5 === 'color') { + var components = getNormalizedRgbaComponents(resolvedProps.color); + this.setUniform('u_color', components); + } else if (_key5 === 'size') { + this.setUniform('u_size', resolvedProps[_key5]); + } else if (_key5 === 'distanceRange') { + this.setUniform('u_distanceRange', resolvedProps[_key5]); + } else if (_key5 === 'debug') { + this.setUniform('u_debug', resolvedProps[_key5] ? 1.0 : 0.0); + } + } + } + static resolveDefaults(props = {}) { + var _props$transform, _props$scrollY, _props$color, _props$size, _props$distanceRange, _props$debug; + return { + transform: (_props$transform = props.transform) !== null && _props$transform !== void 0 ? _props$transform : IDENTITY_MATRIX_3x3, + scrollY: (_props$scrollY = props.scrollY) !== null && _props$scrollY !== void 0 ? _props$scrollY : 0, + color: (_props$color = props.color) !== null && _props$color !== void 0 ? _props$color : 0xffffffff, + size: (_props$size = props.size) !== null && _props$size !== void 0 ? _props$size : 16, + distanceRange: (_props$distanceRange = props.distanceRange) !== null && _props$distanceRange !== void 0 ? _props$distanceRange : 1.0, + debug: (_props$debug = props.debug) !== null && _props$debug !== void 0 ? _props$debug : false + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Masks the current maskcolor with rounded corners similar to {@link RoundedRectangle} + */ + _defineProperty(SdfShader, "shaderSources", { + vertex: ` + // an attribute is an input (in) to a vertex shader. + // It will receive data from a buffer + attribute vec2 a_position; + attribute vec2 a_textureCoordinate; + + uniform vec2 u_resolution; + uniform mat3 u_transform; + uniform float u_scrollY; + uniform float u_pixelRatio; + uniform float u_size; + + varying vec2 v_texcoord; + + void main() { + vec2 scrolledPosition = a_position * u_size - vec2(0, u_scrollY); + vec2 transformedPosition = (u_transform * vec3(scrolledPosition, 1)).xy; + + // Calculate screen space with pixel ratio + vec2 screenSpace = (transformedPosition * u_pixelRatio / u_resolution * 2.0 - 1.0) * vec2(1, -1); + + gl_Position = vec4(screenSpace, 0.0, 1.0); + v_texcoord = a_textureCoordinate; + + } + `, + fragment: ` + precision highp float; + + uniform vec4 u_color; + uniform sampler2D u_texture; + uniform float u_distanceRange; + uniform float u_pixelRatio; + uniform int u_debug; + + varying vec2 v_texcoord; + + float median(float r, float g, float b) { + return max(min(r, g), min(max(r, g), b)); + } + + void main() { + vec3 sample = texture2D(u_texture, v_texcoord).rgb; + if (u_debug == 1) { + gl_FragColor = vec4(sample.r, sample.g, sample.b, 1.0); + return; + } + float scaledDistRange = u_distanceRange * u_pixelRatio; + float sigDist = scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5); + float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_color.a; + + // Build the final color. + // IMPORTANT: We must premultiply the color by the alpha value before returning it. + gl_FragColor = vec4(u_color.r * opacity, u_color.g * opacity, u_color.b * opacity, opacity); + } + ` + }); + class RadiusEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'radius'); + } + static getEffectKey() { + return `radius`; + } + static resolveDefaults(props) { + var _props$radius; + return { + radius: (_props$radius = props.radius) !== null && _props$radius !== void 0 ? _props$radius : 10 + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * The BorderEffect renders a border along all edges of an element + */ + _defineProperty(RadiusEffect, "z$__type__Props", void 0); + _defineProperty(RadiusEffect, "uniforms", { + radius: { + value: 0, + method: 'uniform4fv', + type: 'vec4', + validator: value => { + var r = value; + if (Array.isArray(r)) { + if (r.length === 2) { + r = [r[0], r[1], r[0], r[1]]; + } else if (r.length === 3) { + r = [r[0], r[1], r[2], r[0]]; + } else if (r.length !== 4) { + r = [r[0], r[0], r[0], r[0]]; + } + } else if (typeof r === 'number') { + r = [r, r, r, r]; + } + return r; + } + } + }); + _defineProperty(RadiusEffect, "methods", { + fillMask: ` + float function(float dist) { + return clamp(-dist, 0.0, 1.0); + } + `, + boxDist: ` + float function(vec2 p, vec2 size, float radius) { + size -= vec2(radius); + vec2 d = abs(p) - size; + return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius; + } + ` + }); + _defineProperty(RadiusEffect, "onShaderMask", ` + vec2 halfDimensions = u_dimensions * 0.5; + float r = radius[0] * step(v_textureCoordinate.x, 0.5) * step(v_textureCoordinate.y, 0.5); + r = r + radius[1] * step(0.5, v_textureCoordinate.x) * step(v_textureCoordinate.y, 0.5); + r = r + radius[2] * step(0.5, v_textureCoordinate.x) * step(0.5, v_textureCoordinate.y); + r = r + radius[3] * step(v_textureCoordinate.x, 0.5) * step(0.5, v_textureCoordinate.y); + return $boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions, r); + `); + _defineProperty(RadiusEffect, "onEffectMask", ` + return mix(vec4(0.0), maskColor, $fillMask(shaderMask)); + `); + class BorderEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'border'); + } + static getEffectKey() { + return `border`; + } + static resolveDefaults(props) { + var _props$width, _props$color2; + return { + width: (_props$width = props.width) !== null && _props$width !== void 0 ? _props$width : 10, + color: (_props$color2 = props.color) !== null && _props$color2 !== void 0 ? _props$color2 : 0xffffffff + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Linear Gradient effect over a effect mask + */ + _defineProperty(BorderEffect, "z$__type__Props", void 0); + _defineProperty(BorderEffect, "uniforms", { + width: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + color: { + value: 0xffffffff, + validator: rgba => getNormalizedRgbaComponents(rgba), + method: 'uniform4fv', + type: 'vec4' + } + }); + _defineProperty(BorderEffect, "onEffectMask", ` + float mask = clamp(shaderMask + width, 0.0, 1.0) - clamp(shaderMask, 0.0, 1.0); + return mix(shaderColor, mix(shaderColor, maskColor, maskColor.a), mask); + `); + _defineProperty(BorderEffect, "onColorize", ` + return color; + `); + class LinearGradientEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'linearGradient'); + } + static getEffectKey(props) { + return `linearGradient${props.colors.length}`; + } + static resolveDefaults(props) { + var _props$colors, _props$angle; + var colors = (_props$colors = props.colors) !== null && _props$colors !== void 0 ? _props$colors : [0xff000000, 0xffffffff]; + var stops = props.stops || []; + if (stops.length === 0 || stops.length !== colors.length) { + var colorsL = colors.length; + var i = 0; + var tmp = stops; + for (; i < colorsL; i++) { + if (stops[i]) { + tmp[i] = stops[i]; + if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) { + tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2; + } + } else { + tmp[i] = i * (1 / (colors.length - 1)); + } + } + stops = tmp; + } + return { + colors, + stops, + angle: (_props$angle = props.angle) !== null && _props$angle !== void 0 ? _props$angle : 0 + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Grayscale effect grayscales the color values of the current mask color + */ + _LinearGradientEffect = LinearGradientEffect; + _defineProperty(LinearGradientEffect, "z$__type__Props", void 0); + _defineProperty(LinearGradientEffect, "uniforms", { + angle: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + colors: { + value: 0xffffffff, + validator: rgbas => { + var cols = rgbas.map(rgbas => getNormalizedRgbaComponents(rgbas)); + return cols.reduce((acc, val) => acc.concat(val), []); + }, + size: props => props.colors.length, + method: 'uniform4fv', + type: 'vec4' + }, + stops: { + value: [], + size: props => props.colors.length, + method: 'uniform1fv', + type: 'float' + } + }); + _defineProperty(LinearGradientEffect, "methods", { + fromLinear: ` + vec4 function(vec4 linearRGB) { + vec4 higher = vec4(1.055)*pow(linearRGB, vec4(1.0/2.4)) - vec4(0.055); + vec4 lower = linearRGB * vec4(12.92); + return mix(higher, lower, 1.0); + } + `, + toLinear: ` + vec4 function(vec4 sRGB) { + vec4 higher = pow((sRGB + vec4(0.055))/vec4(1.055), vec4(2.4)); + vec4 lower = sRGB/vec4(12.92); + return mix(higher, lower, 1.0); + } + `, + calcPoint: ` + vec2 function(float d, float angle) { + return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5); + } + ` + }); + _defineProperty(LinearGradientEffect, "ColorLoop", amount => { + var loop = ''; + for (var i = 2; i < amount; i++) { + loop += `colorOut = mix(colorOut, colors[${i}], clamp((dist - stops[${i - 1}]) / (stops[${i}] - stops[${i - 1}]), 0.0, 1.0));`; + } + return loop; + }); + _defineProperty(LinearGradientEffect, "onColorize", props => { + var colors = props.colors.length || 1; + return ` + float a = angle - (PI / 180.0 * 90.0); + float lineDist = abs(u_dimensions.x * cos(a)) + abs(u_dimensions.y * sin(a)); + vec2 f = $calcPoint(lineDist * 0.5, a); + vec2 t = $calcPoint(lineDist * 0.5, a + PI); + vec2 gradVec = t - f; + float dist = dot(v_textureCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec); + + float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]); + vec4 colorOut = $fromLinear(mix($toLinear(colors[0]), $toLinear(colors[1]), stopCalc)); + ${_LinearGradientEffect.ColorLoop(colors)} + return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0)); + `; + }); + class GrayscaleEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'grayscale'); + } + static getEffectKey() { + return `grayscale`; + } + static resolveDefaults(props) { + var _props$amount; + return { + amount: (_props$amount = props.amount) !== null && _props$amount !== void 0 ? _props$amount : 1 + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * The BorderBottomEffect renders a border on the right side of an element + */ + _defineProperty(GrayscaleEffect, "uniforms", { + amount: { + value: 1, + method: 'uniform1f', + type: 'float' + } + }); + _defineProperty(GrayscaleEffect, "onColorize", ` + float grayness = 0.2 * maskColor.r + 0.6 * maskColor.g + 0.2 * maskColor.b; + return vec4(amount * vec3(grayness) + (1.0 - amount) * maskColor.rgb, maskColor.a); + `); + class BorderRightEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'borderRight'); + } + static getEffectKey() { + return `borderRight`; + } + static resolveDefaults(props) { + var _props$width2, _props$color3; + return { + width: (_props$width2 = props.width) !== null && _props$width2 !== void 0 ? _props$width2 : 10, + color: (_props$color3 = props.color) !== null && _props$color3 !== void 0 ? _props$color3 : 0xffffffff + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * The BorderBottomEffect renders a border on the top side of an element + */ + _defineProperty(BorderRightEffect, "z$__type__Props", void 0); + _defineProperty(BorderRightEffect, "uniforms", { + width: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + color: { + value: 0xffffffff, + validator: rgba => getNormalizedRgbaComponents(rgba), + method: 'uniform4fv', + type: 'vec4' + } + }); + _defineProperty(BorderRightEffect, "methods", { + fillMask: ` + float function(float dist) { + return clamp(-dist, 0.0, 1.0); + } + `, + rectDist: ` + float function(vec2 p, vec2 size) { + vec2 d = abs(p) - size; + return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)); + } + ` + }); + _defineProperty(BorderRightEffect, "onEffectMask", ` + vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0); + float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y)); + return mix(shaderColor, maskColor, $fillMask(mask)); + `); + _defineProperty(BorderRightEffect, "onColorize", ` + return color; + `); + class BorderTopEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'borderTop'); + } + static getEffectKey() { + return `borderTop`; + } + static resolveDefaults(props) { + var _props$width3, _props$color4; + return { + width: (_props$width3 = props.width) !== null && _props$width3 !== void 0 ? _props$width3 : 10, + color: (_props$color4 = props.color) !== null && _props$color4 !== void 0 ? _props$color4 : 0xffffffff + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * The BorderBottomEffect renders a border on the bottom side of an element + */ + _defineProperty(BorderTopEffect, "z$__type__Props", void 0); + _defineProperty(BorderTopEffect, "uniforms", { + width: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + color: { + value: 0xffffffff, + validator: rgba => getNormalizedRgbaComponents(rgba), + method: 'uniform4fv', + type: 'vec4' + } + }); + _defineProperty(BorderTopEffect, "methods", { + fillMask: ` + float function(float dist) { + return clamp(-dist, 0.0, 1.0); + } + `, + rectDist: ` + float function(vec2 p, vec2 size) { + vec2 d = abs(p) - size; + return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)); + } + ` + }); + _defineProperty(BorderTopEffect, "onEffectMask", ` + vec2 pos = vec2(0.0, width * 0.5); + float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5)); + return mix(shaderColor, maskColor, $fillMask(mask)); + `); + _defineProperty(BorderTopEffect, "onColorize", ` + return color; + `); + class BorderBottomEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'borderBottom'); + } + static getEffectKey() { + return `borderBottom`; + } + static resolveDefaults(props) { + var _props$width4, _props$color5; + return { + width: (_props$width4 = props.width) !== null && _props$width4 !== void 0 ? _props$width4 : 10, + color: (_props$color5 = props.color) !== null && _props$color5 !== void 0 ? _props$color5 : 0xffffffff + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * The BorderBottomEffect renders a border on the left of an element + */ + _defineProperty(BorderBottomEffect, "z$__type__Props", void 0); + _defineProperty(BorderBottomEffect, "uniforms", { + width: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + color: { + value: 0xffffffff, + validator: rgba => getNormalizedRgbaComponents(rgba), + method: 'uniform4fv', + type: 'vec4' + } + }); + _defineProperty(BorderBottomEffect, "methods", { + fillMask: ` + float function(float dist) { + return clamp(-dist, 0.0, 1.0); + } + `, + rectDist: ` + float function(vec2 p, vec2 size) { + vec2 d = abs(p) - size; + return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)); + } + ` + }); + _defineProperty(BorderBottomEffect, "onEffectMask", ` + vec2 pos = vec2(0.0, u_dimensions.y - width * 0.5); + float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5)); + return mix(shaderColor, maskColor, $fillMask(mask)); + `); + _defineProperty(BorderBottomEffect, "onColorize", ` + return color; + `); + class BorderLeftEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'borderLeft'); + } + static getEffectKey() { + return `borderLeft`; + } + static resolveDefaults(props) { + var _props$width5, _props$color6; + return { + width: (_props$width5 = props.width) !== null && _props$width5 !== void 0 ? _props$width5 : 10, + color: (_props$color6 = props.color) !== null && _props$color6 !== void 0 ? _props$color6 : 0xffffffff + }; + } + } + + /** + * Renders a Glitch effect using the incoming texture + */ + _defineProperty(BorderLeftEffect, "z$__type__Props", void 0); + _defineProperty(BorderLeftEffect, "uniforms", { + width: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + color: { + value: 0xffffffff, + validator: rgba => getNormalizedRgbaComponents(rgba), + method: 'uniform4fv', + type: 'vec4' + } + }); + _defineProperty(BorderLeftEffect, "methods", { + fillMask: ` + float function(float dist) { + return clamp(-dist, 0.0, 1.0); + } + `, + rectDist: ` + float function(vec2 p, vec2 size) { + vec2 d = abs(p) - size; + return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)); + } + ` + }); + _defineProperty(BorderLeftEffect, "onEffectMask", ` + vec2 pos = vec2(width * 0.5, 0.0); + float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y)); + return mix(shaderColor, maskColor, $fillMask(mask)); + `); + _defineProperty(BorderLeftEffect, "onColorize", ` + return color; + `); + class GlitchEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'glitch'); + } + static getEffectKey(props) { + return `glitch`; + } + static resolveDefaults(props) { + var _props$amplitude, _props$narrowness, _props$blockiness, _props$minimizer, _props$time; + return { + amplitude: (_props$amplitude = props.amplitude) !== null && _props$amplitude !== void 0 ? _props$amplitude : 0.2, + narrowness: (_props$narrowness = props.narrowness) !== null && _props$narrowness !== void 0 ? _props$narrowness : 4.0, + blockiness: (_props$blockiness = props.blockiness) !== null && _props$blockiness !== void 0 ? _props$blockiness : 2.0, + minimizer: (_props$minimizer = props.minimizer) !== null && _props$minimizer !== void 0 ? _props$minimizer : 8.0, + time: (_props$time = props.time) !== null && _props$time !== void 0 ? _props$time : Date.now() + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + _defineProperty(GlitchEffect, "z$__type__Props", void 0); + _defineProperty(GlitchEffect, "uniforms", { + amplitude: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + narrowness: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + blockiness: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + minimizer: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + time: { + value: 0, + method: 'uniform1f', + validator: value => { + return (Date.now() - value) % 1000; + }, + type: 'float' + } + }); + _defineProperty(GlitchEffect, "methods", { + rand: ` + float function(vec2 p, float time) { + float t = floor(time * 20.) / 10.; + return fract(sin(dot(p, vec2(t * 12.9898, t * 78.233))) * 43758.5453); + } + `, + noise: ` + float function(vec2 uv, float blockiness, float time) { + vec2 lv = fract(uv); + vec2 id = floor(uv); + + float n1 = rand(id, time); + float n2 = rand(id+vec2(1,0), time); + float n3 = rand(id+vec2(0,1), time); + float n4 = rand(id+vec2(1,1), time); + vec2 u = smoothstep(0.0, 1.0 + blockiness, lv); + return mix(mix(n1, n2, u.x), mix(n3, n4, u.x), u.y); + } + `, + fbm: ` + float function(vec2 uv, int count, float blockiness, float complexity, float time) { + float val = 0.0; + float amp = 0.5; + const int MAX_ITERATIONS = 10; + + for(int i = 0; i < MAX_ITERATIONS; i++) { + if(i >= count) {break;} + val += amp * noise(uv, blockiness, time); + amp *= 0.5; + uv *= complexity; + } + return val; + } + ` + }); + _defineProperty(GlitchEffect, "onColorize", ` + vec2 uv = v_textureCoordinate.xy; + float aspect = u_dimensions.x / u_dimensions.y; + vec2 a = vec2(uv.x * aspect , uv.y); + vec2 uv2 = vec2(a.x / u_dimensions.x, exp(a.y)); + + float shift = amplitude * pow($fbm(uv2, 4, blockiness, narrowness, time), minimizer); + float colR = texture2D(u_texture, vec2(uv.x + shift, uv.y)).r * (1. - shift); + float colG = texture2D(u_texture, vec2(uv.x - shift, uv.y)).g * (1. - shift); + float colB = texture2D(u_texture, vec2(uv.x - shift, uv.y)).b * (1. - shift); + + vec3 f = vec3(colR, colG, colB); + return vec4(f, texture2D(u_texture, vec2(uv.x - shift, uv.y)).a); + `); + class FadeOutEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'fadeOut'); + } + static getEffectKey() { + return `fadeOut`; + } + static resolveDefaults(props) { + var _props$fade; + return { + fade: (_props$fade = props.fade) !== null && _props$fade !== void 0 ? _props$fade : 10 + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + _defineProperty(FadeOutEffect, "z$__type__Props", void 0); + _defineProperty(FadeOutEffect, "uniforms", { + fade: { + value: 0, + method: 'uniform4fv', + type: 'vec4', + validator: value => { + var r = value; + if (Array.isArray(r)) { + if (r.length === 2) { + r = [r[0], r[1], r[0], r[1]]; + } else if (r.length === 3) { + r = [r[0], r[1], r[2], r[0]]; + } else if (r.length !== 4) { + r = [r[0], r[0], r[0], r[0]]; + } + } else if (typeof r === 'number') { + r = [r, r, r, r]; + } + return r; + } + } + }); + _defineProperty(FadeOutEffect, "onColorize", ` + vec2 point = v_textureCoordinate.xy * u_dimensions.xy; + vec2 pos1; + vec2 pos2; + vec2 d; + float c; + vec4 result = maskColor; + + + if(fade[0] > 0.0) { + pos1 = vec2(point.x, point.y); + pos2 = vec2(point.x, point.y + fade[0]); + d = pos2 - pos1; + c = dot(pos1, d) / dot(d, d); + result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0))); + } + + if(fade[1] > 0.0) { + pos1 = vec2(point.x - u_dimensions.x - fade[1], v_textureCoordinate.y); + pos2 = vec2(point.x - u_dimensions.x, v_textureCoordinate.y); + d = pos1 - pos2; + c = dot(pos2, d) / dot(d, d); + result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0))); + } + + if(fade[2] > 0.0) { + pos1 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y - fade[2]); + pos2 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y); + d = pos1 - pos2; + c = dot(pos2, d) / dot(d, d); + result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0))); + } + + if(fade[3] > 0.0) { + pos1 = vec2(point.x, point.y); + pos2 = vec2(point.x + fade[3], point.y); + d = pos2 - pos1; + c = dot(pos1, d) / dot(d, d); + result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0))); + } + + return result; + `); + class RadialGradientEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'radialGradient'); + } + static getEffectKey(props) { + return `radialGradient${props.colors.length}`; + } + static resolveDefaults(props) { + var _props$colors2, _props$width6, _ref, _props$height, _props$pivot; + var colors = (_props$colors2 = props.colors) !== null && _props$colors2 !== void 0 ? _props$colors2 : [0xff000000, 0xffffffff]; + var stops = props.stops || []; + if (stops.length === 0 || stops.length !== colors.length) { + var colorsL = colors.length; + var i = 0; + var tmp = stops; + for (; i < colorsL; i++) { + if (stops[i]) { + tmp[i] = stops[i]; + if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) { + tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2; + } + } else { + tmp[i] = i * (1 / (colors.length - 1)); + } + } + stops = tmp; + } + return { + colors, + stops, + width: (_props$width6 = props.width) !== null && _props$width6 !== void 0 ? _props$width6 : 0, + height: (_ref = (_props$height = props.height) !== null && _props$height !== void 0 ? _props$height : props.width) !== null && _ref !== void 0 ? _ref : 0, + pivot: (_props$pivot = props.pivot) !== null && _props$pivot !== void 0 ? _props$pivot : [0.5, 0.5] + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * The RadialProgressEffect renders a border along all edges of an element + */ + _RadialGradientEffect = RadialGradientEffect; + _defineProperty(RadialGradientEffect, "z$__type__Props", void 0); + _defineProperty(RadialGradientEffect, "uniforms", { + width: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + height: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + pivot: { + value: [0.5, 0.5], + method: 'uniform2fv', + type: 'vec2' + }, + colors: { + value: 0xffffffff, + validator: rgbas => { + var cols = rgbas.map(rgbas => getNormalizedRgbaComponents(rgbas)); + return cols.reduce((acc, val) => acc.concat(val), []); + }, + size: props => props.colors.length, + method: 'uniform4fv', + type: 'vec4' + }, + stops: { + value: [], + size: props => props.colors.length, + method: 'uniform1fv', + type: 'float' + } + }); + _defineProperty(RadialGradientEffect, "ColorLoop", amount => { + var loop = ''; + for (var i = 2; i < amount; i++) { + loop += `colorOut = mix(colorOut, colors[${i}], clamp((dist - stops[${i - 1}]) / (stops[${i}] - stops[${i - 1}]), 0.0, 1.0));`; + } + return loop; + }); + _defineProperty(RadialGradientEffect, "onColorize", props => { + var colors = props.colors.length || 1; + return ` + vec2 point = v_textureCoordinate.xy * u_dimensions; + vec2 projection = vec2(pivot.x * u_dimensions.x, pivot.y * u_dimensions.y); + + float dist = length((point - projection) / vec2(width, height)); + + float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]); + vec4 colorOut = mix(colors[0], colors[1], stopCalc); + ${_RadialGradientEffect.ColorLoop(colors)} + return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0)); + `; + }); + class RadialProgressEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'radialProgress'); + } + static getEffectKey() { + return `radialProgress`; + } + static resolveDefaults(props) { + var _props$width7, _props$progress, _props$offset, _props$range, _props$rounded, _props$radius2, _props$color7; + return { + width: (_props$width7 = props.width) !== null && _props$width7 !== void 0 ? _props$width7 : 10, + progress: (_props$progress = props.progress) !== null && _props$progress !== void 0 ? _props$progress : 0.5, + offset: (_props$offset = props.offset) !== null && _props$offset !== void 0 ? _props$offset : 0, + range: (_props$range = props.range) !== null && _props$range !== void 0 ? _props$range : Math.PI * 2, + rounded: (_props$rounded = props.rounded) !== null && _props$rounded !== void 0 ? _props$rounded : false, + radius: (_props$radius2 = props.radius) !== null && _props$radius2 !== void 0 ? _props$radius2 : 1, + color: (_props$color7 = props.color) !== null && _props$color7 !== void 0 ? _props$color7 : 0xffffffff + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Masks the current maskcolor a holepunch effect with rounded corners similar to {@link RoundedRectangle} + */ + _defineProperty(RadialProgressEffect, "z$__type__Props", void 0); + _defineProperty(RadialProgressEffect, "uniforms", { + width: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + progress: { + value: 0.5, + method: 'uniform1f', + type: 'float' + }, + offset: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + range: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + rounded: { + value: 0, + method: 'uniform1f', + type: 'float', + validator: value => { + return value ? 1 : 0; + } + }, + radius: { + value: 1, + method: 'uniform1f', + type: 'float' + }, + color: { + value: 0xffffffff, + validator: rgba => getNormalizedRgbaComponents(rgba), + method: 'uniform4fv', + type: 'vec4' + } + }); + _defineProperty(RadialProgressEffect, "methods", { + rotateUV: ` + vec2 function(vec2 uv, float d) { + float s = sin(d); + float c = cos(d); + mat2 rotMatrix = mat2(c, -s, s, c); + return uv * rotMatrix; + } + `, + drawDot: ` + float function(vec2 uv, vec2 p, float r) { + uv += p; + float circle = length(uv) - r; + return clamp(-circle, 0.0, 1.0); + } + ` + }); + _defineProperty(RadialProgressEffect, "onEffectMask", ` + float outerRadius = radius * u_dimensions.y * 0.5; + + float endAngle = range * progress - 0.0005; + + vec2 uv = v_textureCoordinate.xy * u_dimensions.xy - u_dimensions * 0.5; + + uv = $rotateUV(uv, -(offset)); + float linewidth = width * u_pixelRatio; + float circle = length(uv) - (outerRadius - linewidth) ; + circle = abs(circle) - linewidth; + circle = clamp(-circle, 0.0, 1.0); + + float angle = (atan(uv.x, -uv.y) / 3.14159265359 * 0.5); + float p = endAngle / (PI * 2.); + + circle *= step(fract(angle), fract(p)); + + circle = rounded < 1. ? circle : max(circle, $drawDot(uv, vec2(0, outerRadius - linewidth), linewidth)); + circle = rounded < 1. ? circle : max(circle, $drawDot($rotateUV(uv, -(endAngle)), vec2(0, outerRadius - linewidth), linewidth)); + + return mix(shaderColor, maskColor, circle); + `); + _defineProperty(RadialProgressEffect, "onColorize", ` + return color; + `); + class HolePunchEffect extends ShaderEffect { + constructor(...args) { + super(...args); + _defineProperty(this, "name", 'holePunch'); + } + static getEffectKey() { + return `holePunch`; + } + static resolveDefaults(props) { + var _props$radius3; + return { + x: props.x || 0, + y: props.y || 0, + width: props.width || 50, + height: props.height || 50, + radius: (_props$radius3 = props.radius) !== null && _props$radius3 !== void 0 ? _props$radius3 : 0 + }; + } + } + _defineProperty(HolePunchEffect, "z$__type__Props", void 0); + _defineProperty(HolePunchEffect, "uniforms", { + x: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + y: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + width: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + height: { + value: 0, + method: 'uniform1f', + type: 'float' + }, + radius: { + value: 0, + method: 'uniform4fv', + type: 'vec4', + validator: value => { + var r = value; + if (Array.isArray(r)) { + if (r.length === 2) { + r = [r[0], r[1], r[0], r[1]]; + } else if (r.length === 3) { + r = [r[0], r[1], r[2], r[0]]; + } else if (r.length !== 4) { + r = [r[0], r[0], r[0], r[0]]; + } + } else if (typeof r === 'number') { + r = [r, r, r, r]; + } + return r; + } + } + }); + _defineProperty(HolePunchEffect, "methods", { + fillMask: ` + float function(float dist) { + return clamp(-dist, 0.0, 1.0); + } + `, + boxDist: ` + float function(vec2 p, vec2 size, float radius) { + size -= vec2(radius); + vec2 d = abs(p) - size; + return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius; + } + ` + }); + _defineProperty(HolePunchEffect, "onShaderMask", ` + vec2 halfDimensions = u_dimensions * 0.5; + vec2 size = vec2(width, height) * 0.5; + vec2 basePos = v_textureCoordinate.xy * u_dimensions.xy - vec2(x, y); + vec2 pos = basePos - size; + float r = radius[0] * step(pos.x, 0.5) * step(pos.y, 0.5); + r = r + radius[1] * step(0.5, pos.x) * step(pos.y, 0.5); + r = r + radius[2] * step(0.5, pos.x) * step(0.5, pos.y); + r = r + radius[3] * step(pos.x, 0.5) * step(0.5, pos.y); + return $boxDist(pos, size, r); + `); + _defineProperty(HolePunchEffect, "onEffectMask", ` + return mix(maskColor, vec4(0.0), $fillMask(shaderMask)); + `); + class CoreShaderManager { + constructor() { + _defineProperty(this, "shCache", new Map()); + _defineProperty(this, "shConstructors", {}); + _defineProperty(this, "attachedShader", null); + _defineProperty(this, "effectConstructors", {}); + _defineProperty(this, "renderer", void 0); + this.registerShaderType('DefaultShader', DefaultShader); + this.registerShaderType('DefaultShaderBatched', DefaultShaderBatched); + this.registerShaderType('RoundedRectangle', RoundedRectangle); + this.registerShaderType('DynamicShader', DynamicShader); + this.registerShaderType('SdfShader', SdfShader); + this.registerEffectType('border', BorderEffect); + this.registerEffectType('borderBottom', BorderBottomEffect); + this.registerEffectType('borderLeft', BorderLeftEffect); + this.registerEffectType('borderRight', BorderRightEffect); + this.registerEffectType('borderTop', BorderTopEffect); + this.registerEffectType('fadeOut', FadeOutEffect); + this.registerEffectType('linearGradient', LinearGradientEffect); + this.registerEffectType('radialGradient', RadialGradientEffect); + this.registerEffectType('grayscale', GrayscaleEffect); + this.registerEffectType('glitch', GlitchEffect); + this.registerEffectType('radius', RadiusEffect); + this.registerEffectType('radialProgress', RadialProgressEffect); + this.registerEffectType('holePunch', HolePunchEffect); + } + registerShaderType(shType, shClass) { + this.shConstructors[shType] = shClass; + } + registerEffectType(effectType, effectClass) { + this.effectConstructors[effectType] = effectClass; + } + getRegisteredEffects() { + return this.effectConstructors; + } + getRegisteredShaders() { + return this.shConstructors; + } + loadShader(shType, props) { + if (!this.renderer) { + throw new Error(`Renderer is not been defined`); + } + var ShaderClass = this.shConstructors[shType]; + if (!ShaderClass) { + throw new Error(`Shader type "${shType}" is not registered`); + } + if (shType === 'DynamicShader') { + return this.loadDynamicShader(props); + } + var resolvedProps = ShaderClass.resolveDefaults(props); + var cacheKey = ShaderClass.makeCacheKey(resolvedProps) || ShaderClass.name; + if (cacheKey && this.shCache.has(cacheKey)) { + return { + shader: this.shCache.get(cacheKey), + props: resolvedProps + }; + } + // @ts-expect-error ShaderClass WILL accept a Renderer + var shader = new ShaderClass(this.renderer, props); + if (cacheKey) { + this.shCache.set(cacheKey, shader); + } + return { + shader, + props: resolvedProps + }; + } + loadDynamicShader(props) { + if (!this.renderer) { + throw new Error(`Renderer is not been defined`); + } + var resolvedProps = DynamicShader.resolveDefaults(props, this.effectConstructors); + var cacheKey = DynamicShader.makeCacheKey(resolvedProps, this.effectConstructors); + if (cacheKey && this.shCache.has(cacheKey)) { + return { + shader: this.shCache.get(cacheKey), + props: resolvedProps + }; + } + var shader = new DynamicShader(this.renderer, props, this.effectConstructors); + if (cacheKey) { + this.shCache.set(cacheKey, shader); + } + return { + shader: shader, + props: resolvedProps + }; + } + useShader(shader) { + if (this.attachedShader === shader) { + return; + } + if (this.attachedShader) { + this.attachedShader.detach(); + } + shader.attach(); + this.attachedShader = shader; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Class that keeps track of the invocations of Context methods when + * the `enableContextSpy` renderer option is enabled. + */ + class ContextSpy { + constructor() { + _defineProperty(this, "data", {}); + } + reset() { + this.data = {}; + } + increment(name) { + if (!this.data[name]) { + this.data[name] = 0; + } + this.data[name]++; + } + getData() { + return _objectSpread({}, this.data); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Tests if the given location is a compressed texture container + * @param url + * @remarks + * This function is used to determine if the given image url is a compressed + * and only supports the following extensions: .ktx and .pvr + * @returns + */ + function isCompressedTextureContainer(url) { + return /\.(ktx|pvr)$/.test(url); + } + /** + * Loads a compressed texture container + * @param url + * @returns + */ + var loadCompressedTexture = /*#__PURE__*/function () { + var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(url) { + var response, arrayBuffer; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return fetch(url); + case 2: + response = _context.sent; + _context.next = 5; + return response.arrayBuffer(); + case 5: + arrayBuffer = _context.sent; + if (!(url.indexOf('.ktx') !== -1)) { + _context.next = 8; + break; + } + return _context.abrupt("return", loadKTXData(arrayBuffer)); + case 8: + return _context.abrupt("return", loadPVRData(arrayBuffer)); + case 9: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function loadCompressedTexture(_x2) { + return _ref2.apply(this, arguments); + }; + }(); + /** + * Loads a KTX texture container and returns the texture data + * @param buffer + * @returns + */ + var loadKTXData = /*#__PURE__*/function () { + var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(buffer) { + var view, littleEndian, mipmaps, data, offset, i, imageSize; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + view = new DataView(buffer); + littleEndian = view.getUint32(12) === 16909060 ? true : false; + mipmaps = []; + data = { + glInternalFormat: view.getUint32(28, littleEndian), + pixelWidth: view.getUint32(36, littleEndian), + pixelHeight: view.getUint32(40, littleEndian), + numberOfMipmapLevels: view.getUint32(56, littleEndian), + bytesOfKeyValueData: view.getUint32(60, littleEndian) + }; + offset = 64; // Key Value Pairs of data start at byte offset 64 + // But the only known kvp is the API version, so skipping parsing. + offset += data.bytesOfKeyValueData; + for (i = 0; i < data.numberOfMipmapLevels; i++) { + imageSize = view.getUint32(offset); + offset += 4; + mipmaps.push(view.buffer.slice(offset, imageSize)); + offset += imageSize; + } + return _context2.abrupt("return", { + data: { + glInternalFormat: data.glInternalFormat, + mipmaps, + width: data.pixelWidth || 0, + height: data.pixelHeight || 0, + type: 'ktx' + }, + premultiplyAlpha: false + }); + case 8: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + return function loadKTXData(_x3) { + return _ref3.apply(this, arguments); + }; + }(); + /** + * Loads a PVR texture container and returns the texture data + * @param buffer + * @returns + */ + var loadPVRData = /*#__PURE__*/function () { + var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(buffer) { + var pvrHeaderLength, pvrFormatEtc1, pvrWidth, pvrHeight, pvrMipmapCount, pvrMetadata, arrayBuffer, header, dataOffset, pvrtcData, mipmaps, data, offset, width, height, i, level, view; + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + // pvr header length in 32 bits + pvrHeaderLength = 13; // for now only we only support: COMPRESSED_RGB_ETC1_WEBGL + pvrFormatEtc1 = 0x8d64; + pvrWidth = 7; + pvrHeight = 6; + pvrMipmapCount = 11; + pvrMetadata = 12; + arrayBuffer = buffer; + header = new Int32Array(arrayBuffer, 0, pvrHeaderLength); // @ts-expect-error Object possibly undefined + // eslint-disable-next-line @typescript-eslint/restrict-plus-operands + dataOffset = header[pvrMetadata] + 52; + pvrtcData = new Uint8Array(arrayBuffer, dataOffset); + mipmaps = []; + data = { + pixelWidth: header[pvrWidth], + pixelHeight: header[pvrHeight], + numberOfMipmapLevels: header[pvrMipmapCount] || 0 + }; + offset = 0; + width = data.pixelWidth || 0; + height = data.pixelHeight || 0; + for (i = 0; i < data.numberOfMipmapLevels; i++) { + level = (width + 3 >> 2) * (height + 3 >> 2) * 8; + view = new Uint8Array(arrayBuffer, pvrtcData.byteOffset + offset, level); + mipmaps.push(view); + offset += level; + width = width >> 1; + height = height >> 1; + } + return _context3.abrupt("return", { + data: { + glInternalFormat: pvrFormatEtc1, + mipmaps: mipmaps, + width: data.pixelWidth || 0, + height: data.pixelHeight || 0, + type: 'pvr' + }, + premultiplyAlpha: false + }); + case 17: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + return function loadPVRData(_x4) { + return _ref4.apply(this, arguments); + }; + }(); + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Texture consisting of an image loaded from a URL + * + * @remarks + * The ImageTexture's {@link ImageTextureProps.src} prop defines the image URL + * to be downloaded. + * + * By default, the texture's alpha values will be premultiplied into its color + * values which is generally the desired setting before they are sent to the + * texture's associated {@link Shader}. However, in special cases you may want + * the Shader to receive straight (non-premultiplied) values. In that case you + * can disable the default behavior by setting the + * {@link ImageTextureProps.premultiplyAlpha} prop to `false`. + */ + class ImageTexture extends Texture { + constructor(txManager, props) { + super(txManager); + _defineProperty(this, "props", void 0); + this.props = ImageTexture.resolveDefaults(props); + } + hasAlphaChannel(mimeType) { + return mimeType.indexOf('image/png') !== -1; + } + getTextureData() { + var _this = this; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() { + var _this$props, src, premultiplyAlpha, response, blob, hasAlphaChannel, img; + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + _this$props = _this.props, src = _this$props.src, premultiplyAlpha = _this$props.premultiplyAlpha; + if (src) { + _context4.next = 3; + break; + } + return _context4.abrupt("return", { + data: null + }); + case 3: + if (!(src instanceof ImageData)) { + _context4.next = 5; + break; + } + return _context4.abrupt("return", { + data: src, + premultiplyAlpha + }); + case 5: + if (!isCompressedTextureContainer(src)) { + _context4.next = 7; + break; + } + return _context4.abrupt("return", loadCompressedTexture(src)); + case 7: + if (!_this.txManager.imageWorkerManager) { + _context4.next = 13; + break; + } + _context4.next = 10; + return _this.txManager.imageWorkerManager.getImage(src, premultiplyAlpha); + case 10: + return _context4.abrupt("return", _context4.sent); + case 13: + if (!_this.txManager.hasCreateImageBitmap) { + _context4.next = 28; + break; + } + _context4.next = 16; + return fetch(src); + case 16: + response = _context4.sent; + _context4.next = 19; + return response.blob(); + case 19: + blob = _context4.sent; + hasAlphaChannel = premultiplyAlpha !== null && premultiplyAlpha !== void 0 ? premultiplyAlpha : _this.hasAlphaChannel(blob.type); + _context4.next = 23; + return createImageBitmap(blob, { + premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none', + colorSpaceConversion: 'none', + imageOrientation: 'none' + }); + case 23: + _context4.t0 = _context4.sent; + _context4.t1 = hasAlphaChannel; + return _context4.abrupt("return", { + data: _context4.t0, + premultiplyAlpha: _context4.t1 + }); + case 28: + img = new Image(); + if (!(src.substr(0, 5) == "data:")) { + // Base64. + img.crossOrigin = "Anonymous"; + } + img.src = src; + _context4.next = 33; + return new Promise((resolve, reject) => { + img.onload = () => resolve(); + img.onerror = () => reject(new Error(`Failed to load image`)); + }).catch(e => { + console.error(e); + }); + case 33: + return _context4.abrupt("return", { + data: img, + premultiplyAlpha: premultiplyAlpha !== null && premultiplyAlpha !== void 0 ? premultiplyAlpha : true + }); + case 34: + case "end": + return _context4.stop(); + } + }, _callee4); + }))(); + } + static makeCacheKey(props) { + var resolvedProps = ImageTexture.resolveDefaults(props); + // ImageTextures sourced by ImageData are non-cacheable + if (resolvedProps.src instanceof ImageData) { + return false; + } + return `ImageTexture,${resolvedProps.src},${resolvedProps.premultiplyAlpha}`; + } + static resolveDefaults(props) { + var _props$src, _props$premultiplyAlp; + return { + src: (_props$src = props.src) !== null && _props$src !== void 0 ? _props$src : '', + premultiplyAlpha: (_props$premultiplyAlp = props.premultiplyAlpha) !== null && _props$premultiplyAlp !== void 0 ? _props$premultiplyAlp : true // null, + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Number of floating point numbers that represent a single glyph in the SDF vertex buffer. + * + * @remarks + * The vertex buffer contains: + * - 6 vertex positions + * - 6 texture coordinates + * - = 12 positions/coordinates per glyph + * + * Each vertex position and texture coordinate consist of 2 floating point numbers (x/y). + * So there are 12 * 2 = 24 floating point numbers that make up a single glyph. + */ + _defineProperty(ImageTexture, "z$__type__Props", void 0); + var FLOATS_PER_GLYPH = 24; + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Gets the start conditions for the layout loop. + * + * @remarks + * Returns `undefined` if the layout loop should not be run. + * + * @param fontSize + * @param fontSizeRatio + * @param sdfLineHeight + * @param renderWindow + * @param lineCache + * @param textH + * @returns + */ + function getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH) { + // State variables + var startLineIndex = Math.min(Math.max(renderWindow.firstLineIdx, 0), lineCache.length); + // TODO: (fontSize / 6.4286 / fontSizeRatio) Adding this to the startY helps the text line up better with Canvas rendered text + var sdfStartX = 0; + var sdfVerticalAlignYOffset = 0; + if (verticalAlign === 'middle') { + sdfVerticalAlignYOffset = (sdfLineHeight - sdfFontSize) / 2; + } else if (verticalAlign === 'bottom') { + sdfVerticalAlignYOffset = sdfLineHeight - sdfFontSize; + } + var sdfOffsetY = offsetY / fontSizeRatio; + var sdfStartY = sdfOffsetY + startLineIndex * sdfLineHeight + sdfVerticalAlignYOffset; // TODO: Figure out what determines the initial y offset of text. + // Don't attempt to render anything if we know we're starting past the established end of the text + if (textH && sdfStartY >= textH / fontSizeRatio) { + return; + } + return { + sdfX: sdfStartX, + sdfY: sdfStartY, + lineIndex: startLineIndex + }; + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * A wrapper Generator class that makes a generator peekable. + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + class PeekableIterator { + constructor(iterator, indexBase = 0) { + _defineProperty(this, "iterator", void 0); + _defineProperty(this, "peekBuffer", []); + _defineProperty(this, "_lastIndex", void 0); + this.iterator = iterator; + this.iterator = iterator; + this._lastIndex = indexBase - 1; + this.peekBuffer = []; + } + next() { + var nextResult = this.peekBuffer.length > 0 ? + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.peekBuffer.pop() : this.iterator.next(); + if (nextResult.done) { + this._lastIndex = -1; + } else { + this._lastIndex++; + } + return nextResult; + } + peek() { + if (this.peekBuffer.length > 0) { + // We know that the buffer is not empty, so we can safely use the + // non-null assertion operator + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return this.peekBuffer[0]; + } + var result = this.iterator.next(); + this.peekBuffer.push(result); + return result; + } + get lastIndex() { + return this._lastIndex; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + // Reversible Generator Wrapper Class + /** + * Generator function that yields each Unicode code point in the given string. + */ + function getUnicodeCodepoints(text, start = 0) { + var i, codePoint; + return _regeneratorRuntime().wrap(function getUnicodeCodepoints$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + i = start; + case 1: + if (!(i < text.length)) { + _context5.next = 10; + break; + } + codePoint = text.codePointAt(i); + if (!(codePoint === undefined)) { + _context5.next = 5; + break; + } + throw new Error('Invalid Unicode code point'); + case 5: + _context5.next = 7; + return codePoint; + case 7: + i += codePoint <= 0xffff ? 1 : 2; + _context5.next = 1; + break; + case 10: + case "end": + return _context5.stop(); + } + }, _marked); + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Measures a single-line of text width ignoring any unmapped glyphs including line breaks + * + * @param text + * @param shaperProps + * @param shaper + * @returns + */ + function measureText(text, shaperProps, shaper) { + var glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, 0), 0)); + var width = 0; + var _iterator6 = _createForOfIteratorHelper(glyphs), + _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var glyph = _step6.value; + if (glyph.mapped) { + width += glyph.xAdvance; + } + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } + return width; + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + function layoutText(curLineIndex, startX, startY, text, textAlign, width, height, fontSize, lineHeight, letterSpacing, + /** + * Mutated + */ + vertexBuffer, contain, + /** + * Mutated + */ + lineCache, rwSdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines) { + assertTruthy(trFontFace, 'Font face must be loaded'); + assertTruthy(trFontFace.loaded, 'Font face must be loaded'); + assertTruthy(trFontFace.data, 'Font face must be loaded'); + assertTruthy(trFontFace.shaper, 'Font face must be loaded'); + // Regardless of fontSize (or other scaling properties), we layout the vertices of each glyph + // using the fixed coordinate space determined by font size used to produce the atlas. + // Scaling for display is handled by shader uniforms inexpensively. + // So we have: + // - vertex space: the space in which the vertices of each glyph are laid out + // - screen space: the screen pixel space + // Input properties such as x, y, w, fontSize, letterSpacing, etc. are all expressed in screen space. + // We convert these to the vertex space by dividing them the `fontSizeRatio` factor. + /** + * See above + */ + var fontSizeRatio = fontSize / trFontFace.data.info.size; + /** + * `lineHeight` in vertex coordinates + */ + var vertexLineHeight = lineHeight / fontSizeRatio; + /** + * `w` in vertex coordinates + */ + var vertexW = width / fontSizeRatio; + /** + * `letterSpacing` in vertex coordinates + */ + var vertexLSpacing = letterSpacing / fontSizeRatio; + var startingLineCacheEntry = lineCache[curLineIndex]; + var startingCodepointIndex = (startingLineCacheEntry === null || startingLineCacheEntry === void 0 ? void 0 : startingLineCacheEntry.codepointIndex) || 0; + var startingMaxX = (startingLineCacheEntry === null || startingLineCacheEntry === void 0 ? void 0 : startingLineCacheEntry.maxX) || 0; + var startingMaxY = (startingLineCacheEntry === null || startingLineCacheEntry === void 0 ? void 0 : startingLineCacheEntry.maxY) || 0; + var maxX = startingMaxX; + var maxY = startingMaxY; + var curX = startX; + var curY = startY; + var bufferOffset = 0; + /** + * Buffer offset to last word boundry. This is -1 when we aren't in a word boundry. + */ + var lastWord = { + codepointIndex: -1, + bufferOffset: -1, + xStart: -1 + }; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + var shaper = trFontFace.shaper; + var shaperProps = { + letterSpacing: vertexLSpacing + }; + // Get glyphs + var glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, startingCodepointIndex), startingCodepointIndex)); + var glyphResult; + var curLineBufferStart = -1; + var bufferLineInfos = []; + var vertexTruncateHeight = height / fontSizeRatio; + var overflowSuffVertexWidth = measureText(overflowSuffix, shaperProps, shaper); + // Line-by-line layout + var moreLines = true; + while (moreLines) { + var nextLineWillFit = (maxLines === 0 || curLineIndex + 1 < maxLines) && (contain !== 'both' || scrollable || curY + vertexLineHeight + trFontFace.maxCharHeight <= vertexTruncateHeight); + var lineVertexW = nextLineWillFit ? vertexW : vertexW - overflowSuffVertexWidth; + /** + * Vertex X position to the beginning of the last word boundary. This becomes -1 when we start traversing a word. + */ + var xStartLastWordBoundary = 0; + var lineIsBelowWindowTop = curY + vertexLineHeight >= rwSdf.y1; + var lineIsAboveWindowBottom = curY <= rwSdf.y2; + var lineIsWithinWindow = lineIsBelowWindowTop && lineIsAboveWindowBottom; + // Layout glyphs in this line + // Any break statements in this while loop will trigger a line break + while ((glyphResult = glyphs.next()) && !glyphResult.done) { + var glyph = glyphResult.value; + if (curLineIndex === lineCache.length) { + lineCache.push({ + codepointIndex: glyph.cluster, + maxY, + maxX + }); + } else if (curLineIndex > lineCache.length) { + throw new Error('Unexpected lineCache length'); + } + // If we encounter a word boundary (white space or newline) we invalidate + // the lastWord and set the xStartLastWordBoundary if we haven't already. + if (glyph.codepoint === 32 || glyph.codepoint === 10) { + if (lastWord.codepointIndex !== -1) { + lastWord.codepointIndex = -1; + xStartLastWordBoundary = curX; + } + } else if (lastWord.codepointIndex === -1) { + lastWord.codepointIndex = glyph.cluster; + lastWord.bufferOffset = bufferOffset; + lastWord.xStart = xStartLastWordBoundary; + } + if (glyph.mapped) { + // Mapped glyph + var charEndX = curX + glyph.xOffset + glyph.width; + // Word wrap check + if ( + // We are containing the text + contain !== 'none' && + // The current glyph reaches outside the contained width + charEndX >= lineVertexW && + // There is a last word that we can break to the next line + lastWord.codepointIndex !== -1 && + // Prevents infinite loop when a single word is longer than the width + lastWord.xStart > 0) { + // The current word is about to go off the edge of the container width + // Reinitialize the iterator starting at the last word + // and proceeding to the next line + if (nextLineWillFit) { + glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, lastWord.codepointIndex), lastWord.codepointIndex)); + bufferOffset = lastWord.bufferOffset; + break; + } else { + glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0)); + curX = lastWord.xStart; + bufferOffset = lastWord.bufferOffset; + // HACK: For the rest of the line when inserting the overflow suffix, + // set contain = 'none' to prevent an infinite loop. + contain = 'none'; + } + } else { + // This glyph fits, so we can add it to the buffer + var quadX = curX + glyph.xOffset; + var quadY = curY + glyph.yOffset; + // Only add to buffer for rendering if the line is within the render window + if (lineIsWithinWindow) { + if (curLineBufferStart === -1) { + curLineBufferStart = bufferOffset; + } + var atlasEntry = trFontFace.getAtlasEntry(glyph.glyphId); + // Add texture coordinates + var u = atlasEntry.x / trFontFace.data.common.scaleW; + var v = atlasEntry.y / trFontFace.data.common.scaleH; + var uvWidth = atlasEntry.width / trFontFace.data.common.scaleW; + var uvHeight = atlasEntry.height / trFontFace.data.common.scaleH; + // TODO: (Performance) We can optimize this by using ELEMENT_ARRAY_BUFFER + // eliminating the need to duplicate vertices + // Top-left + vertexBuffer[bufferOffset++] = quadX; + vertexBuffer[bufferOffset++] = quadY; + vertexBuffer[bufferOffset++] = u; + vertexBuffer[bufferOffset++] = v; + // Top-right + vertexBuffer[bufferOffset++] = quadX + glyph.width; + vertexBuffer[bufferOffset++] = quadY; + vertexBuffer[bufferOffset++] = u + uvWidth; + vertexBuffer[bufferOffset++] = v; + // Bottom-left + vertexBuffer[bufferOffset++] = quadX; + vertexBuffer[bufferOffset++] = quadY + glyph.height; + vertexBuffer[bufferOffset++] = u; + vertexBuffer[bufferOffset++] = v + uvHeight; + // Bottom-right + vertexBuffer[bufferOffset++] = quadX + glyph.width; + vertexBuffer[bufferOffset++] = quadY + glyph.height; + vertexBuffer[bufferOffset++] = u + uvWidth; + vertexBuffer[bufferOffset++] = v + uvHeight; + } + maxY = Math.max(maxY, quadY + glyph.height); + maxX = Math.max(maxX, quadX + glyph.width); + curX += glyph.xAdvance; + } + } else { + // Unmapped character + // Handle newlines + if (glyph.codepoint === 10) { + if (nextLineWillFit) { + // The whole line fit, so we can break to the next line + break; + } else { + // The whole line won't fit, so we need to add the overflow suffix + glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0)); + // HACK: For the rest of the line when inserting the overflow suffix, + // set contain = 'none' to prevent an infinite loop. + contain = 'none'; + } + } + } + } + // Prepare for the next line... + if (curLineBufferStart !== -1) { + bufferLineInfos.push({ + bufferStart: curLineBufferStart, + bufferEnd: bufferOffset + }); + curLineBufferStart = -1; + } + curX = 0; + curY += vertexLineHeight; + curLineIndex++; + lastWord.codepointIndex = -1; + xStartLastWordBoundary = 0; + // Figure out if there are any more lines to render... + if (!forceFullLayoutCalc && contain === 'both' && curY > rwSdf.y2) { + // Stop layout calculation early (for performance purposes) if: + // - We're not forcing a full layout calculation (for width/height calculation) + // - ...and we're containing the text vertically+horizontally (contain === 'both') + // - ...and we have a render window + // - ...and the next line is below the bottom of the render window + moreLines = false; + } else if (glyphResult && glyphResult.done) { + // If we've reached the end of the text, we know we're done + moreLines = false; + } else if (!nextLineWillFit) { + // If we're contained vertically+horizontally (contain === 'both') + // but not scrollable and the next line won't fit, we're done. + moreLines = false; + } + } + // Use textAlign to determine if we need to adjust the x position of the text + // in the buffer line by line + if (textAlign === 'center') { + var vertexTextW = contain === 'none' ? maxX : vertexW; + for (var i = 0; i < bufferLineInfos.length; i++) { + var line = bufferLineInfos[i]; + // - 4 = the x position of a rightmost vertex + var lineWidth = + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + vertexBuffer[line.bufferEnd - 4] - vertexBuffer[line.bufferStart]; + var xOffset = (vertexTextW - lineWidth) / 2; + for (var j = line.bufferStart; j < line.bufferEnd; j += 4) { + vertexBuffer[j] += xOffset; + } + } + } else if (textAlign === 'right') { + var _vertexTextW = contain === 'none' ? maxX : vertexW; + for (var _i7 = 0; _i7 < bufferLineInfos.length; _i7++) { + var _line = bufferLineInfos[_i7]; + var _lineWidth = _line.bufferEnd === _line.bufferStart ? 0 : + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + vertexBuffer[_line.bufferEnd - 4] - vertexBuffer[_line.bufferStart]; + var _xOffset = _vertexTextW - _lineWidth; + for (var _j2 = _line.bufferStart; _j2 < _line.bufferEnd; _j2 += 4) { + vertexBuffer[_j2] += _xOffset; + } + } + } + assertTruthy(glyphResult); + return { + bufferNumFloats: bufferOffset, + bufferNumQuads: bufferOffset / 16, + layoutNumCharacters: glyphResult.done ? text.length - startingCodepointIndex : glyphResult.value.cluster - startingCodepointIndex + 1, + fullyProcessed: !!glyphResult.done, + maxX, + maxY + }; + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Round up to the nearest multiple of the given number. + * + * @param value + * @param multiple + * @returns + */ + function roundUpToMultiple(value, multiple) { + return Math.ceil(value / multiple) * multiple; + } + /** + * Round down to the nearest multiple of the given number. + * + * @param value + * @param multiple + * @returns + */ + function roundDownToMultiple(value, multiple) { + return Math.floor(value / multiple) * multiple; + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Create a render window from the given parameters. + * + * @remarks + * The render window is a rectangle that defines the area of the text that + * should be rendered. It is used to skip rendering parts of the text that + * are outside of the render window. The render window is relative to the + * text's top left corner of the overrall text. + * + * @param x The x coordinate of the text element's top left corner relative to the screen. + * @param y The y coordinate of the text element's top left corner relative to the screen. + * @param scrollY The amount of pixels to scroll the text vertically. + * @param lineHeight The number of extra lines to render above and below the visible window. + * @param visibleWindow The visible window of the text element relative to the screen + * @returns + */ + function setRenderWindow(outRenderWindow, x, y, scrollY, lineHeight, bufferMargin, visibleWindow, fontSizeRatio) { + var screen = outRenderWindow.screen, + sdf = outRenderWindow.sdf; + if (!isBoundPositive(visibleWindow)) { + screen.x1 = 0; + screen.y1 = 0; + screen.x2 = 0; + screen.y2 = 0; + sdf.x1 = 0; + sdf.y1 = 0; + sdf.x2 = 0; + sdf.y2 = 0; + outRenderWindow.numLines = 0; + outRenderWindow.firstLineIdx = 0; + } else { + var x1 = visibleWindow.x1 - x; + var x2 = x1 + (visibleWindow.x2 - visibleWindow.x1); + var y1Base = visibleWindow.y1 - y + scrollY; + var y1 = roundDownToMultiple(y1Base - bufferMargin, lineHeight || 1); + var y2 = roundUpToMultiple(y1Base + (visibleWindow.y2 - visibleWindow.y1) + bufferMargin, lineHeight || 1); + screen.x1 = x1; + screen.y1 = y1; + screen.x2 = x2; + screen.y2 = y2; + sdf.x1 = x1 / fontSizeRatio; + sdf.y1 = y1 / fontSizeRatio; + sdf.x2 = x2 / fontSizeRatio; + sdf.y2 = y2 / fontSizeRatio; + outRenderWindow.numLines = Math.ceil((y2 - y1) / lineHeight); + outRenderWindow.firstLineIdx = lineHeight ? Math.floor(y1 / lineHeight) : 0; + } + outRenderWindow.valid = true; + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + var weightConversions = { + normal: 400, + bold: 700, + bolder: 900, + lighter: 100 + }; + var fontWeightToNumber = weight => { + if (typeof weight === 'number') { + return weight; + } + return weightConversions[weight] || 400; + }; + function rawResolveFontToUse(familyMapsByPriority, family, weightIn, style, stretch) { + var weight = fontWeightToNumber(weightIn); + var _iterator7 = _createForOfIteratorHelper(familyMapsByPriority), + _step7; + try { + for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { + var fontFamiles = _step7.value; + var fontFaces = fontFamiles[family]; + if (!fontFaces) { + continue; + } + if (fontFaces.size === 1) { + // No Exact match found, find nearest weight match + console.warn(`TrFontManager: Only one font face found for family: '${family}' - will be used for all weights and styles`); + return fontFaces.values().next().value; + } + var weightMap = new Map(); + var _iterator8 = _createForOfIteratorHelper(fontFaces), + _step8; + try { + for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { + var fontFace = _step8.value; + var fontFamilyWeight = fontWeightToNumber(fontFace.descriptors.weight); + if (fontFamilyWeight === weight && fontFace.descriptors.style === style && fontFace.descriptors.stretch === stretch) { + return fontFace; + } + weightMap.set(fontFamilyWeight, fontFace); + } + // No Exact match found, find nearest weight match + } catch (err) { + _iterator8.e(err); + } finally { + _iterator8.f(); + } + var msg = `TrFontManager: No exact match: '${family} Weight: ${weight} Style: ${style} Stretch: ${stretch}'`; + console.error(msg); + // Follow the CSS font-weight algorithm to find the nearest weight match + // https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/#font-matching-algorithm + if (weight === 400 && weightMap.has(500)) { + return weightMap.get(500); + } + if (weight === 500 && weightMap.has(400)) { + return weightMap.get(400); + } + if (weight < 400) { + while (weight > 0) { + if (weightMap.has(weight)) { + return weightMap.get(weight); + } + weight -= 100; + } + // reset back for the next loop + weight = 600; + } + while (weight < 1000) { + if (weightMap.has(weight)) { + return weightMap.get(weight); + } + weight += 100; + } + // finally check lower again + weight = 500; + while (weight > 0) { + if (weightMap.has(weight)) { + return weightMap.get(weight); + } + weight -= 100; + } + } + } catch (err) { + _iterator7.e(err); + } finally { + _iterator7.f(); + } + return; + } + var resolveFontToUse = memize(rawResolveFontToUse); + class TrFontManager { + constructor(textRenderers) { + _defineProperty(this, "textRenderers", void 0); + this.textRenderers = textRenderers; + // Intentionally left blank + } + addFontFace(font) { + // All the font face to all of the text renderers that support it + for (var trId in this.textRenderers) { + var tr = this.textRenderers[trId]; + if (tr && tr.isFontFaceSupported(font)) { + tr.addFontFace(font); + } + } + } + /** + * Utility method to resolve a single font face from a list of prioritized family maps based on + * a set of font properties. + * + * @remarks + * These are to be used by a text renderer to resolve a font face if needed. + * + * @param familyMapsByPriority + * @param props + * @returns + */ + static resolveFontFace(familyMapsByPriority, props) { + var fontFamily = props.fontFamily, + fontWeight = props.fontWeight, + fontStyle = props.fontStyle, + fontStretch = props.fontStretch; + return resolveFontToUse(familyMapsByPriority, fontFamily, fontWeight, fontStyle, fontStretch); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Ephemeral rect object used for calculations + */ + var tmpRect = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + /** + * Singleton class for rendering text using signed distance fields. + * + * @remarks + * SdfTextRenderer supports both single-channel and multi-channel signed distance fields. + */ + class SdfTextRenderer extends TextRenderer { + constructor(stage) { + super(stage); + /** + * Map of font family names to a set of font faces. + */ + _defineProperty(this, "ssdfFontFamilies", {}); + _defineProperty(this, "msdfFontFamilies", {}); + _defineProperty(this, "fontFamilyArray", [this.ssdfFontFamilies, this.msdfFontFamilies]); + _defineProperty(this, "sdfShader", void 0); + _defineProperty(this, "rendererBounds", void 0); + this.sdfShader = this.stage.shManager.loadShader('SdfShader').shader; + this.rendererBounds = { + x1: 0, + y1: 0, + x2: this.stage.options.appWidth, + y2: this.stage.options.appHeight + }; + } + //#region Overrides + getPropertySetters() { + return { + fontFamily: (state, value) => { + state.props.fontFamily = value; + this.releaseFontFace(state); + this.invalidateLayoutCache(state); + }, + fontWeight: (state, value) => { + state.props.fontWeight = value; + this.releaseFontFace(state); + this.invalidateLayoutCache(state); + }, + fontStyle: (state, value) => { + state.props.fontStyle = value; + this.releaseFontFace(state); + this.invalidateLayoutCache(state); + }, + fontStretch: (state, value) => { + state.props.fontStretch = value; + this.releaseFontFace(state); + this.invalidateLayoutCache(state); + }, + fontSize: (state, value) => { + state.props.fontSize = value; + this.invalidateLayoutCache(state); + }, + text: (state, value) => { + state.props.text = value; + this.invalidateLayoutCache(state); + }, + textAlign: (state, value) => { + state.props.textAlign = value; + this.invalidateLayoutCache(state); + }, + color: (state, value) => { + state.props.color = value; + }, + x: (state, value) => { + state.props.x = value; + if (state.elementBounds.valid) { + this.setElementBoundsX(state); + // Only schedule an update if the text is not already rendered + // (renderWindow is invalid) and the element possibly overlaps the screen + // This is to avoid unnecessary updates when we know text is off-screen + if (!state.renderWindow.valid && boundsOverlap(state.elementBounds, this.rendererBounds)) { + this.scheduleUpdateState(state); + } + } + }, + y: (state, value) => { + state.props.y = value; + if (state.elementBounds.valid) { + this.setElementBoundsY(state); + // See x() for explanation + if (!state.renderWindow.valid && boundsOverlap(state.elementBounds, this.rendererBounds)) { + this.scheduleUpdateState(state); + } + } + }, + contain: (state, value) => { + state.props.contain = value; + this.invalidateLayoutCache(state); + }, + width: (state, value) => { + state.props.width = value; + // Only invalidate layout cache if we're containing in the horizontal direction + if (state.props.contain !== 'none') { + this.invalidateLayoutCache(state); + } + }, + height: (state, value) => { + state.props.height = value; + // Only invalidate layout cache if we're containing in the vertical direction + if (state.props.contain === 'both') { + this.invalidateLayoutCache(state); + } + }, + offsetY: (state, value) => { + state.props.offsetY = value; + this.invalidateLayoutCache(state); + }, + scrollable: (state, value) => { + state.props.scrollable = value; + this.invalidateLayoutCache(state); + }, + scrollY: (state, value) => { + state.props.scrollY = value; + // Scrolling doesn't need to invalidate any caches, but it does need to + // schedule an update + this.scheduleUpdateState(state); + }, + letterSpacing: (state, value) => { + state.props.letterSpacing = value; + this.invalidateLayoutCache(state); + }, + lineHeight: (state, value) => { + state.props.lineHeight = value; + this.invalidateLayoutCache(state); + }, + maxLines: (state, value) => { + state.props.maxLines = value; + this.invalidateLayoutCache(state); + }, + textBaseline: (state, value) => { + state.props.textBaseline = value; + this.invalidateLayoutCache(state); + }, + verticalAlign: (state, value) => { + state.props.verticalAlign = value; + this.invalidateLayoutCache(state); + }, + overflowSuffix: (state, value) => { + state.props.overflowSuffix = value; + this.invalidateLayoutCache(state); + }, + debug: (state, value) => { + state.props.debug = value; + } + }; + } + canRenderFont(props) { + // TODO: Support matching on font stretch, weight and style (if/when needed) + // For now we just match on the font family name + // '$$SDF_FAILURE_TEST$$' is used to test the 'failure' event coming from text + var fontFamily = props.fontFamily; + return fontFamily in this.ssdfFontFamilies || fontFamily in this.msdfFontFamilies || fontFamily === '$$SDF_FAILURE_TEST$$'; + } + isFontFaceSupported(fontFace) { + return fontFace instanceof SdfTrFontFace; + } + addFontFace(fontFace) { + // Make sure the font face is an SDF font face (it should have already passed + // the `isFontFaceSupported` check) + assertTruthy(fontFace instanceof SdfTrFontFace); + var familyName = fontFace.fontFamily; + var fontFamiles = fontFace.type === 'ssdf' ? this.ssdfFontFamilies : fontFace.type === 'msdf' ? this.msdfFontFamilies : undefined; + if (!fontFamiles) { + console.warn(`Invalid font face type: ${fontFace.type}`); + return; + } + var faceSet = fontFamiles[familyName]; + if (!faceSet) { + faceSet = new Set(); + fontFamiles[familyName] = faceSet; + } + faceSet.add(fontFace); + } + createState(props) { + return { + props, + status: 'initialState', + updateScheduled: false, + emitter: new EventEmitter(), + lineCache: [], + forceFullLayoutCalc: false, + renderWindow: { + screen: { + x1: 0, + y1: 0, + x2: 0, + y2: 0 + }, + sdf: { + x1: 0, + y1: 0, + x2: 0, + y2: 0 + }, + firstLineIdx: 0, + numLines: 0, + valid: false + }, + elementBounds: { + x1: 0, + y1: 0, + x2: 0, + y2: 0, + valid: false + }, + clippingRect: { + x: 0, + y: 0, + width: 0, + height: 0, + valid: false + }, + bufferNumFloats: 0, + bufferNumQuads: 0, + vertexBuffer: undefined, + webGlBuffers: null, + bufferUploaded: false, + textH: undefined, + textW: undefined, + distanceRange: 0, + trFontFace: undefined, + isRenderable: false, + debugData: { + updateCount: 0, + layoutCount: 0, + lastLayoutNumCharacters: 0, + layoutSum: 0, + drawSum: 0, + drawCount: 0, + bufferSize: 0 + } + }; + } + updateState(state) { + var trFontFace = state.trFontFace; + var textH = state.textH, + lineCache = state.lineCache, + debugData = state.debugData, + forceFullLayoutCalc = state.forceFullLayoutCalc; + debugData.updateCount++; + // On the first update call we need to set the status to loading + if (state.status === 'initialState') { + this.setStatus(state, 'loading'); + } + // Resolve font face if we haven't yet + if (!trFontFace) { + trFontFace = this.resolveFontFace(state.props); + state.trFontFace = trFontFace; + if (!trFontFace) { + var msg = `SdfTextRenderer: Could not resolve font face for family: '${state.props.fontFamily}'`; + console.error(msg); + this.setStatus(state, 'failed', new Error(msg)); + return; + } + trFontFace.texture.setRenderableOwner(state, state.isRenderable); + } + // If the font hasn't been loaded yet, stop here. + // Listen for the 'loaded' event and forward fontLoaded event + if (!trFontFace.loaded) { + trFontFace.once('loaded', () => { + this.scheduleUpdateState(state); + }); + return; + } + // If the font is loaded then so should the data + assertTruthy(trFontFace.data, 'Font face data should be loaded'); + var _state$props4 = state.props, + text = _state$props4.text, + fontSize = _state$props4.fontSize, + x = _state$props4.x, + y = _state$props4.y, + contain = _state$props4.contain, + width = _state$props4.width, + height = _state$props4.height, + lineHeight = _state$props4.lineHeight, + verticalAlign = _state$props4.verticalAlign, + scrollable = _state$props4.scrollable, + overflowSuffix = _state$props4.overflowSuffix, + maxLines = _state$props4.maxLines; + // scrollY only has an effect when contain === 'both' and scrollable === true + var scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0; + var renderWindow = state.renderWindow; + /** + * The font size of the SDF font face (the basis for SDF space units) + */ + var sdfFontSize = trFontFace.data.info.size; + /** + * Divide screen space units by this to get the SDF space units + * Mulitple SDF space units by this to get screen space units + */ + var fontSizeRatio = fontSize / sdfFontSize; + // Needed in renderWindow calculation + var sdfLineHeight = lineHeight / fontSizeRatio; + state.distanceRange = fontSizeRatio * trFontFace.data.distanceField.distanceRange; + // Allocate buffers if needed + var neededLength = text.length * FLOATS_PER_GLYPH; + var vertexBuffer = state.vertexBuffer; + if (!vertexBuffer || vertexBuffer.length < neededLength) { + vertexBuffer = new Float32Array(neededLength * 2); + } + var elementBounds = state.elementBounds; + if (!elementBounds.valid) { + this.setElementBoundsX(state); + this.setElementBoundsY(state); + elementBounds.valid = true; + } + // Return early if we're still viewing inside the established render window + // No need to re-render what we've already rendered + // (Only if there's an established renderWindow and we're not suppressing early exit) + if (!forceFullLayoutCalc && renderWindow.valid) { + var rwScreen = renderWindow.screen; + if (x + rwScreen.x1 <= elementBounds.x1 && x + rwScreen.x2 >= elementBounds.x2 && y - scrollY + rwScreen.y1 <= elementBounds.y1 && y - scrollY + rwScreen.y2 >= elementBounds.y2) { + this.setStatus(state, 'loaded'); + return; + } + // Otherwise invalidate the renderWindow so it can be redone + renderWindow.valid = false; + this.setStatus(state, 'loading'); + } + var _state$props5 = state.props, + offsetY = _state$props5.offsetY, + textAlign = _state$props5.textAlign; + // Create a new renderWindow if needed + if (!renderWindow.valid) { + var isPossiblyOnScreen = boundsOverlap(elementBounds, this.rendererBounds); + if (!isPossiblyOnScreen) { + // If the element is not possibly on screen, we can skip the layout and rendering completely + return; + } + setRenderWindow(renderWindow, x, y, scrollY, lineHeight, contain === 'both' ? elementBounds.y2 - elementBounds.y1 : 0, elementBounds, fontSizeRatio); + // console.log('newRenderWindow', renderWindow); + } + var start = getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH); + if (!start) { + // Nothing to render, return early, but still mark as loaded (since the text is just scrolled + // out of view) + this.setStatus(state, 'loaded'); + return; + } + var letterSpacing = state.props.letterSpacing; + var out2 = layoutText(start.lineIndex, start.sdfX, start.sdfY, text, textAlign, width, height, fontSize, lineHeight, letterSpacing, vertexBuffer, contain, lineCache, renderWindow.sdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines); + state.bufferUploaded = false; + state.bufferNumFloats = out2.bufferNumFloats; + state.bufferNumQuads = out2.bufferNumQuads; + state.vertexBuffer = vertexBuffer; + state.renderWindow = renderWindow; + debugData.lastLayoutNumCharacters = out2.layoutNumCharacters; + debugData.bufferSize = vertexBuffer.byteLength; + // If we didn't exit early, we know we have completely computed w/h + if (out2.fullyProcessed) { + state.textW = out2.maxX * fontSizeRatio; + state.textH = out2.maxY * fontSizeRatio; + } + // if (state.props.debug.printLayoutTime) { + // debugData.layoutSum += performance.now() - updateStartTime; + // debugData.layoutCount++; + // } + this.setStatus(state, 'loaded'); + } + renderQuads(state, transform, clippingRect, alpha, parentHasRenderTexture, framebufferDimensions) { + var _trFontFace$data, _state$trFontFace; + if (!state.vertexBuffer) { + // Nothing to draw + return; + } + var renderer = this.stage.renderer; + var _state$props6 = state.props, + fontSize = _state$props6.fontSize, + color = _state$props6.color, + contain = _state$props6.contain, + scrollable = _state$props6.scrollable, + zIndex = _state$props6.zIndex, + debug = _state$props6.debug; + // scrollY only has an effect when contain === 'both' and scrollable === true + var scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0; + var _state$textW2 = state.textW, + textW = _state$textW2 === void 0 ? 0 : _state$textW2, + _state$textH2 = state.textH, + textH = _state$textH2 === void 0 ? 0 : _state$textH2, + distanceRange = state.distanceRange, + vertexBuffer = state.vertexBuffer, + bufferUploaded = state.bufferUploaded, + trFontFace = state.trFontFace, + elementBounds = state.elementBounds; + var webGlBuffers = state.webGlBuffers; + if (!webGlBuffers) { + var glw = renderer.glw; + var stride = 4 * Float32Array.BYTES_PER_ELEMENT; + var webGlBuffer = glw.createBuffer(); + assertTruthy(webGlBuffer); + state.webGlBuffers = new BufferCollection([{ + buffer: webGlBuffer, + attributes: { + a_position: { + name: 'a_position', + size: 2, + type: glw.FLOAT, + normalized: false, + stride, + offset: 0 // start at the beginning of the buffer + }, + a_textureCoordinate: { + name: 'a_textureCoordinate', + size: 2, + type: glw.FLOAT, + normalized: false, + stride, + offset: 2 * Float32Array.BYTES_PER_ELEMENT + } + } + }]); + state.bufferUploaded = false; + assertTruthy(state.webGlBuffers); + webGlBuffers = state.webGlBuffers; + } + if (!bufferUploaded) { + var _webGlBuffers$getBuff, _webGlBuffers; + var _glw = renderer.glw; + var buffer = (_webGlBuffers$getBuff = (_webGlBuffers = webGlBuffers) === null || _webGlBuffers === void 0 ? void 0 : _webGlBuffers.getBuffer('a_textureCoordinate')) !== null && _webGlBuffers$getBuff !== void 0 ? _webGlBuffers$getBuff : null; + _glw.arrayBufferData(buffer, vertexBuffer, _glw.STATIC_DRAW); + state.bufferUploaded = true; + } + assertTruthy(trFontFace); + if (scrollable && contain === 'both') { + assertTruthy(elementBounds.valid); + var elementRect = convertBoundToRect(elementBounds, tmpRect); + if (clippingRect.valid) { + state.clippingRect.valid = true; + clippingRect = intersectRect(clippingRect, elementRect, state.clippingRect); + } else { + state.clippingRect.valid = true; + clippingRect = copyRect(elementRect, state.clippingRect); + } + } + var renderOp = new WebGlCoreRenderOp(renderer.glw, renderer.options, webGlBuffers, this.sdfShader, { + transform: transform.data, + // IMPORTANT: The SDF Shader expects the color NOT to be premultiplied + // for the best blending results. Which is why we use `mergeColorAlpha` + // instead of `mergeColorAlphaPremultiplied` here. + color: mergeColorAlpha(color, alpha), + size: fontSize / (((_trFontFace$data = trFontFace.data) === null || _trFontFace$data === void 0 ? void 0 : _trFontFace$data.info.size) || 0), + scrollY, + distanceRange, + debug: debug.sdfShaderDebug + }, alpha, clippingRect, { + height: textH, + width: textW + }, 0, zIndex, false, parentHasRenderTexture, framebufferDimensions); + var texture = (_state$trFontFace = state.trFontFace) === null || _state$trFontFace === void 0 ? void 0 : _state$trFontFace.texture; + assertTruthy(texture); + var ctxTexture = this.stage.txManager.getCtxTexture(texture); + renderOp.addTexture(ctxTexture); + renderOp.length = state.bufferNumFloats; + renderOp.numQuads = state.bufferNumQuads; + renderer.addRenderOp(renderOp); + // if (!debug.disableScissor) { + // renderer.enableScissor( + // visibleRect.x, + // visibleRect.y, + // visibleRect.w, + // visibleRect.h, + // ); + // } + // Draw the arrays + // gl.drawArrays( + // gl.TRIANGLES, // Primitive type + // 0, + // bufferNumVertices, // Number of verticies + // ); + // renderer.disableScissor(); + // if (debug.showElementRect) { + // this.renderer.drawBorder( + // Colors.Blue, + // elementRect.x, + // elementRect.y, + // elementRect.w, + // elementRect.h, + // ); + // } + // if (debug.showVisibleRect) { + // this.renderer.drawBorder( + // Colors.Green, + // visibleRect.x, + // visibleRect.y, + // visibleRect.w, + // visibleRect.h, + // ); + // } + // if (debug.showRenderWindow && renderWindow) { + // this.renderer.drawBorder( + // Colors.Red, + // x + renderWindow.x1, + // y + renderWindow.y1 - scrollY, + // x + renderWindow.x2 - (x + renderWindow.x1), + // y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY), + // ); + // } + // if (debug.printLayoutTime) { + // debugData.drawSum += performance.now() - drawStartTime; + // debugData.drawCount++; + // } + } + setIsRenderable(state, renderable) { + var _state$trFontFace2; + super.setIsRenderable(state, renderable); + (_state$trFontFace2 = state.trFontFace) === null || _state$trFontFace2 === void 0 || _state$trFontFace2.texture.setRenderableOwner(state, renderable); + } + destroyState(state) { + var _state$trFontFace3; + super.destroyState(state); + // If there's a Font Face assigned we must free the owner relation to its texture + (_state$trFontFace3 = state.trFontFace) === null || _state$trFontFace3 === void 0 || _state$trFontFace3.texture.setRenderableOwner(state, false); + } + //#endregion Overrides + resolveFontFace(props) { + return TrFontManager.resolveFontFace(this.fontFamilyArray, props); + } + /** + * Release the loaded SDF font face + * + * @param state + */ + releaseFontFace(state) { + if (state.trFontFace) { + state.trFontFace.texture.setRenderableOwner(state, false); + state.trFontFace = undefined; + } + } + /** + * Invalidate the layout cache stored in the state. This will cause the text + * to be re-layed out on the next update. + * + * @remarks + * This also invalidates the visible window cache. + * + * @param state + */ + invalidateLayoutCache(state) { + state.renderWindow.valid = false; + state.elementBounds.valid = false; + state.textH = undefined; + state.textW = undefined; + state.lineCache = []; + this.setStatus(state, 'loading'); + this.scheduleUpdateState(state); + } + setElementBoundsX(state) { + var _state$props7 = state.props, + x = _state$props7.x, + contain = _state$props7.contain, + width = _state$props7.width; + var elementBounds = state.elementBounds; + elementBounds.x1 = x; + elementBounds.x2 = contain !== 'none' ? x + width : Infinity; + } + setElementBoundsY(state) { + var _state$props8 = state.props, + y = _state$props8.y, + contain = _state$props8.contain, + height = _state$props8.height; + var elementBounds = state.elementBounds; + elementBounds.y1 = y; + elementBounds.y2 = contain === 'both' ? y + height : Infinity; + } + } + + /** + * Type guard that checks if a Class extends CoreExtension. + * + * @param Class + * @returns + */ + function classExtendsCoreExtension(Class) { + return Class.prototype instanceof CoreExtension; + } + function loadCoreExtension(_x5, _x6) { + return _loadCoreExtension.apply(this, arguments); + } + function _loadCoreExtension() { + _loadCoreExtension = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(coreExtensionModule, stage) { + var module$1, ExtensionClass, coreExtension; + return _regeneratorRuntime().wrap(function _callee12$(_context13) { + while (1) switch (_context13.prev = _context13.next) { + case 0: + _context13.prev = 0; + console.log('Loading core extension', coreExtensionModule); + _context13.next = 4; + return __vitePreload(() => module.import(coreExtensionModule /* @vite-ignore */), false ? "__VITE_PRELOAD__" : void 0); + case 4: + module$1 = _context13.sent; + _context13.next = 12; + break; + case 7: + _context13.prev = 7; + _context13.t0 = _context13["catch"](0); + console.error(`The core extension module at '${coreExtensionModule}' could not be loaded.`); + console.error(_context13.t0); + return _context13.abrupt("return"); + case 12: + if (module$1.default) { + _context13.next = 15; + break; + } + console.error(`The core extension module at '${coreExtensionModule}' does not have a default export.`); + return _context13.abrupt("return"); + case 15: + ExtensionClass = module$1.default; + if (!classExtendsCoreExtension(ExtensionClass)) { + _context13.next = 29; + break; + } + coreExtension = new ExtensionClass(); + _context13.prev = 18; + _context13.next = 21; + return coreExtension.run(stage); + case 21: + _context13.next = 27; + break; + case 23: + _context13.prev = 23; + _context13.t1 = _context13["catch"](18); + console.error(`The core extension at '${coreExtensionModule}' threw an error.`); + console.error(_context13.t1); + case 27: + _context13.next = 30; + break; + case 29: + console.error(`The core extension at '${coreExtensionModule}' does not extend CoreExtension.`); + case 30: + case "end": + return _context13.stop(); + } + }, _callee12, null, [[0, 7], [18, 23]]); + })); + return _loadCoreExtension.apply(this, arguments); + } + function santizeCustomDataMap(d) { + var validTypes = { + boolean: true, + string: true, + number: true + }; + var keys = Object.keys(d); + for (var i = 0; i < keys.length; i++) { + var _key6 = keys[i]; + if (!_key6) { + continue; + } + var value = d[_key6]; + var valueType = typeof value; + // Typescript doesn't understand the above const valueType ¯\_(ツ)_/¯ + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore-next-line + if (valueType === 'string' && value.length > 2048) { + console.warn(`Custom Data value for ${_key6} is too long, it will be truncated to 2048 characters`); + // same here, see above comment, this can only be a string at this point + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore-next-line + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + d[_key6] = value.substring(0, 2048); + } + if (!validTypes[valueType]) { + console.warn(`Custom Data value for ${_key6} is not a boolean, string, or number, it will be ignored`); + delete d[_key6]; + } + } + return d; + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * The Renderer Main API + * + * @remarks + * This is the primary class used to configure and operate the Renderer. + * + * It is used to create and destroy Nodes, as well as Texture and Shader + * references. + * + * Example: + * ```ts + * import { RendererMain, MainCoreDriver } from '@lightningjs/renderer'; + * + * // Initialize the Renderer + * const renderer = new RendererMain( + * { + * appWidth: 1920, + * appHeight: 1080 + * }, + * 'app', + * new MainCoreDriver(), + * ); + * ``` + */ + class RendererMain extends EventEmitter { + /** + * Constructs a new Renderer instance + * + * @param settings Renderer settings + * @param target Element ID or HTMLElement to insert the canvas into + * @param driver Core Driver to use + */ + constructor(settings, target, driver) { + var _settings$clearColor, _settings$experimenta, _settings$enableConte, _settings$enableInspe; + super(); + _defineProperty(this, "root", null); + _defineProperty(this, "driver", void 0); + _defineProperty(this, "canvas", void 0); + _defineProperty(this, "settings", void 0); + _defineProperty(this, "inspector", null); + _defineProperty(this, "nodes", new Map()); + _defineProperty(this, "nextTextureId", 1); + /** + * Texture Usage Tracker for Usage Based Texture Garbage Collection + * + * @remarks + * For internal use only. DO NOT ACCESS. + */ + _defineProperty(this, "textureTracker", void 0); + var resolvedSettings = { + appWidth: settings.appWidth || 1920, + appHeight: settings.appHeight || 1080, + txMemByteThreshold: settings.txMemByteThreshold || 124e6, + boundsMargin: settings.boundsMargin || 0, + deviceLogicalPixelRatio: settings.deviceLogicalPixelRatio || 1, + devicePhysicalPixelRatio: settings.devicePhysicalPixelRatio || window.devicePixelRatio, + clearColor: (_settings$clearColor = settings.clearColor) !== null && _settings$clearColor !== void 0 ? _settings$clearColor : 0x00000000, + coreExtensionModule: settings.coreExtensionModule || null, + experimental_FinalizationRegistryTextureUsageTracker: (_settings$experimenta = settings.experimental_FinalizationRegistryTextureUsageTracker) !== null && _settings$experimenta !== void 0 ? _settings$experimenta : false, + textureCleanupOptions: settings.textureCleanupOptions || {}, + fpsUpdateInterval: settings.fpsUpdateInterval || 0, + numImageWorkers: settings.numImageWorkers !== undefined ? settings.numImageWorkers : 2, + enableContextSpy: (_settings$enableConte = settings.enableContextSpy) !== null && _settings$enableConte !== void 0 ? _settings$enableConte : false, + enableInspector: (_settings$enableInspe = settings.enableInspector) !== null && _settings$enableInspe !== void 0 ? _settings$enableInspe : false + }; + this.settings = resolvedSettings; + var appWidth = resolvedSettings.appWidth, + appHeight = resolvedSettings.appHeight, + deviceLogicalPixelRatio = resolvedSettings.deviceLogicalPixelRatio, + devicePhysicalPixelRatio = resolvedSettings.devicePhysicalPixelRatio, + enableInspector = resolvedSettings.enableInspector; + var releaseCallback = textureId => { + this.driver.releaseTexture(textureId); + }; + var useFinalizationRegistryTracker = resolvedSettings.experimental_FinalizationRegistryTextureUsageTracker && typeof FinalizationRegistry === 'function'; + this.textureTracker = useFinalizationRegistryTracker ? new FinalizationRegistryTextureUsageTracker(releaseCallback) : new ManualCountTextureUsageTracker(releaseCallback, this.settings.textureCleanupOptions); + var deviceLogicalWidth = appWidth * deviceLogicalPixelRatio; + var deviceLogicalHeight = appHeight * deviceLogicalPixelRatio; + this.driver = driver; + var canvas = document.createElement('canvas'); + this.canvas = canvas; + canvas.width = deviceLogicalWidth * devicePhysicalPixelRatio; + canvas.height = deviceLogicalHeight * devicePhysicalPixelRatio; + canvas.style.width = `${deviceLogicalWidth}px`; + canvas.style.height = `${deviceLogicalHeight}px`; + var targetEl; + if (typeof target === 'string') { + targetEl = document.getElementById(target); + } else { + targetEl = target; + } + if (!targetEl) { + throw new Error('Could not find target element'); + } + // Hook up the driver's callbacks + driver.onCreateNode = node => { + this.nodes.set(node.id, node); + }; + driver.onBeforeDestroyNode = node => { + this.nodes.delete(node.id); + }; + driver.onFpsUpdate = fpsData => { + this.emit('fpsUpdate', fpsData); + }; + driver.onFrameTick = frameTickData => { + this.emit('frameTick', frameTickData); + }; + driver.onIdle = () => { + this.emit('idle'); + }; + targetEl.appendChild(canvas); + if (enableInspector && !isProductionEnvironment()) { + this.inspector = new Inspector(canvas, resolvedSettings); + } + } + /** + * Initialize the renderer + * + * @remarks + * This method must be called and resolved asyncronously before any other + * methods are called. + */ + init() { + var _this2 = this; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() { + return _regeneratorRuntime().wrap(function _callee5$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + _context6.next = 2; + return _this2.driver.init(_this2, _this2.settings, _this2.canvas); + case 2: + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + _this2.root = _this2.driver.getRootNode(); + case 3: + case "end": + return _context6.stop(); + } + }, _callee5); + }))(); + } + /** + * Create a new scene graph node + * + * @remarks + * A node is the main graphical building block of the Renderer scene graph. It + * can be a container for other nodes, or it can be a leaf node that renders a + * solid color, gradient, image, or specific texture, using a specific shader. + * + * To create a text node, see {@link createTextNode}. + * + * See {@link INode} for more details. + * + * @param props + * @returns + */ + createNode(props) { + if (this.inspector) { + return this.inspector.createNode(this.driver, this.resolveNodeDefaults(props)); + } + return this.driver.createNode(this.resolveNodeDefaults(props)); + } + /** + * Create a new scene graph text node + * + * @remarks + * A text node is the second graphical building block of the Renderer scene + * graph. It renders text using a specific text renderer that is automatically + * chosen based on the font requested and what type of fonts are installed + * into an app via a CoreExtension. + * + * See {@link ITextNode} for more details. + * + * @param props + * @returns + */ + createTextNode(props) { + var _props$fontSize, _props$text, _props$textRendererOv, _props$fontFamily, _props$fontStyle, _props$fontWeight, _props$fontStretch, _props$textAlign, _props$contain, _props$scrollable, _props$scrollY2, _props$offsetY, _props$letterSpacing, _props$lineHeight, _props$maxLines, _props$textBaseline, _props$verticalAlign, _props$overflowSuffix, _props$debug2; + var fontSize = (_props$fontSize = props.fontSize) !== null && _props$fontSize !== void 0 ? _props$fontSize : 16; + var data = _objectSpread(_objectSpread({}, this.resolveNodeDefaults(props)), {}, { + text: (_props$text = props.text) !== null && _props$text !== void 0 ? _props$text : '', + textRendererOverride: (_props$textRendererOv = props.textRendererOverride) !== null && _props$textRendererOv !== void 0 ? _props$textRendererOv : null, + fontSize, + fontFamily: (_props$fontFamily = props.fontFamily) !== null && _props$fontFamily !== void 0 ? _props$fontFamily : 'sans-serif', + fontStyle: (_props$fontStyle = props.fontStyle) !== null && _props$fontStyle !== void 0 ? _props$fontStyle : 'normal', + fontWeight: (_props$fontWeight = props.fontWeight) !== null && _props$fontWeight !== void 0 ? _props$fontWeight : 'normal', + fontStretch: (_props$fontStretch = props.fontStretch) !== null && _props$fontStretch !== void 0 ? _props$fontStretch : 'normal', + textAlign: (_props$textAlign = props.textAlign) !== null && _props$textAlign !== void 0 ? _props$textAlign : 'left', + contain: (_props$contain = props.contain) !== null && _props$contain !== void 0 ? _props$contain : 'none', + scrollable: (_props$scrollable = props.scrollable) !== null && _props$scrollable !== void 0 ? _props$scrollable : false, + scrollY: (_props$scrollY2 = props.scrollY) !== null && _props$scrollY2 !== void 0 ? _props$scrollY2 : 0, + offsetY: (_props$offsetY = props.offsetY) !== null && _props$offsetY !== void 0 ? _props$offsetY : 0, + letterSpacing: (_props$letterSpacing = props.letterSpacing) !== null && _props$letterSpacing !== void 0 ? _props$letterSpacing : 0, + lineHeight: (_props$lineHeight = props.lineHeight) !== null && _props$lineHeight !== void 0 ? _props$lineHeight : fontSize, + maxLines: (_props$maxLines = props.maxLines) !== null && _props$maxLines !== void 0 ? _props$maxLines : 0, + textBaseline: (_props$textBaseline = props.textBaseline) !== null && _props$textBaseline !== void 0 ? _props$textBaseline : 'alphabetic', + verticalAlign: (_props$verticalAlign = props.verticalAlign) !== null && _props$verticalAlign !== void 0 ? _props$verticalAlign : 'top', + overflowSuffix: (_props$overflowSuffix = props.overflowSuffix) !== null && _props$overflowSuffix !== void 0 ? _props$overflowSuffix : '...', + debug: (_props$debug2 = props.debug) !== null && _props$debug2 !== void 0 ? _props$debug2 : {} + }); + if (this.inspector) { + return this.inspector.createTextNode(this.driver, data); + } + return this.driver.createTextNode(data); + } + /** + * Resolves the default property values for a Node + * + * @remarks + * This method is used internally by the RendererMain to resolve the default + * property values for a Node. It is exposed publicly so that it can be used + * by Core Driver implementations. + * + * @param props + * @returns + */ + resolveNodeDefaults(props) { + var _props$color8, _ref5, _ref6, _props$colorTl, _ref7, _ref8, _props$colorTr, _ref9, _ref10, _props$colorBl, _ref11, _ref12, _props$colorBr, _props$data, _ref13, _props$parent$rtt, _props$parent, _props$parent2, _props$x, _props$y, _props$width8, _props$height2, _props$alpha2, _props$autosize, _props$clipping, _props$colorTop, _props$colorBottom, _props$colorLeft, _props$colorRight, _props$zIndex, _props$zIndexLocked, _props$parent3, _props$texture, _props$shader, _props$src2, _props$scale2, _ref14, _props$scaleX, _ref15, _props$scaleY, _props$mount, _ref16, _props$mountX, _ref17, _props$mountY, _props$pivot2, _ref18, _props$pivotX, _ref19, _props$pivotY, _props$rotation2, _props$rtt; + var color = (_props$color8 = props.color) !== null && _props$color8 !== void 0 ? _props$color8 : 0xffffffff; + var colorTl = (_ref5 = (_ref6 = (_props$colorTl = props.colorTl) !== null && _props$colorTl !== void 0 ? _props$colorTl : props.colorTop) !== null && _ref6 !== void 0 ? _ref6 : props.colorLeft) !== null && _ref5 !== void 0 ? _ref5 : color; + var colorTr = (_ref7 = (_ref8 = (_props$colorTr = props.colorTr) !== null && _props$colorTr !== void 0 ? _props$colorTr : props.colorTop) !== null && _ref8 !== void 0 ? _ref8 : props.colorRight) !== null && _ref7 !== void 0 ? _ref7 : color; + var colorBl = (_ref9 = (_ref10 = (_props$colorBl = props.colorBl) !== null && _props$colorBl !== void 0 ? _props$colorBl : props.colorBottom) !== null && _ref10 !== void 0 ? _ref10 : props.colorLeft) !== null && _ref9 !== void 0 ? _ref9 : color; + var colorBr = (_ref11 = (_ref12 = (_props$colorBr = props.colorBr) !== null && _props$colorBr !== void 0 ? _props$colorBr : props.colorBottom) !== null && _ref12 !== void 0 ? _ref12 : props.colorRight) !== null && _ref11 !== void 0 ? _ref11 : color; + var data = santizeCustomDataMap((_props$data = props.data) !== null && _props$data !== void 0 ? _props$data : {}); + var parentHasRenderTexture = (_ref13 = (_props$parent$rtt = (_props$parent = props.parent) === null || _props$parent === void 0 ? void 0 : _props$parent.rtt) !== null && _props$parent$rtt !== void 0 ? _props$parent$rtt : (_props$parent2 = props.parent) === null || _props$parent2 === void 0 ? void 0 : _props$parent2.parentHasRenderTexture) !== null && _ref13 !== void 0 ? _ref13 : false; + return { + x: (_props$x = props.x) !== null && _props$x !== void 0 ? _props$x : 0, + y: (_props$y = props.y) !== null && _props$y !== void 0 ? _props$y : 0, + width: (_props$width8 = props.width) !== null && _props$width8 !== void 0 ? _props$width8 : 0, + height: (_props$height2 = props.height) !== null && _props$height2 !== void 0 ? _props$height2 : 0, + alpha: (_props$alpha2 = props.alpha) !== null && _props$alpha2 !== void 0 ? _props$alpha2 : 1, + autosize: (_props$autosize = props.autosize) !== null && _props$autosize !== void 0 ? _props$autosize : false, + clipping: (_props$clipping = props.clipping) !== null && _props$clipping !== void 0 ? _props$clipping : false, + color, + colorTop: (_props$colorTop = props.colorTop) !== null && _props$colorTop !== void 0 ? _props$colorTop : color, + colorBottom: (_props$colorBottom = props.colorBottom) !== null && _props$colorBottom !== void 0 ? _props$colorBottom : color, + colorLeft: (_props$colorLeft = props.colorLeft) !== null && _props$colorLeft !== void 0 ? _props$colorLeft : color, + colorRight: (_props$colorRight = props.colorRight) !== null && _props$colorRight !== void 0 ? _props$colorRight : color, + colorBl, + colorBr, + colorTl, + colorTr, + zIndex: (_props$zIndex = props.zIndex) !== null && _props$zIndex !== void 0 ? _props$zIndex : 0, + zIndexLocked: (_props$zIndexLocked = props.zIndexLocked) !== null && _props$zIndexLocked !== void 0 ? _props$zIndexLocked : 0, + parent: (_props$parent3 = props.parent) !== null && _props$parent3 !== void 0 ? _props$parent3 : null, + texture: (_props$texture = props.texture) !== null && _props$texture !== void 0 ? _props$texture : null, + shader: (_props$shader = props.shader) !== null && _props$shader !== void 0 ? _props$shader : null, + // Since setting the `src` will trigger a texture load, we need to set it after + // we set the texture. Otherwise, problems happen. + src: (_props$src2 = props.src) !== null && _props$src2 !== void 0 ? _props$src2 : '', + scale: (_props$scale2 = props.scale) !== null && _props$scale2 !== void 0 ? _props$scale2 : null, + scaleX: (_ref14 = (_props$scaleX = props.scaleX) !== null && _props$scaleX !== void 0 ? _props$scaleX : props.scale) !== null && _ref14 !== void 0 ? _ref14 : 1, + scaleY: (_ref15 = (_props$scaleY = props.scaleY) !== null && _props$scaleY !== void 0 ? _props$scaleY : props.scale) !== null && _ref15 !== void 0 ? _ref15 : 1, + mount: (_props$mount = props.mount) !== null && _props$mount !== void 0 ? _props$mount : 0, + mountX: (_ref16 = (_props$mountX = props.mountX) !== null && _props$mountX !== void 0 ? _props$mountX : props.mount) !== null && _ref16 !== void 0 ? _ref16 : 0, + mountY: (_ref17 = (_props$mountY = props.mountY) !== null && _props$mountY !== void 0 ? _props$mountY : props.mount) !== null && _ref17 !== void 0 ? _ref17 : 0, + pivot: (_props$pivot2 = props.pivot) !== null && _props$pivot2 !== void 0 ? _props$pivot2 : 0.5, + pivotX: (_ref18 = (_props$pivotX = props.pivotX) !== null && _props$pivotX !== void 0 ? _props$pivotX : props.pivot) !== null && _ref18 !== void 0 ? _ref18 : 0.5, + pivotY: (_ref19 = (_props$pivotY = props.pivotY) !== null && _props$pivotY !== void 0 ? _props$pivotY : props.pivot) !== null && _ref19 !== void 0 ? _ref19 : 0.5, + rotation: (_props$rotation2 = props.rotation) !== null && _props$rotation2 !== void 0 ? _props$rotation2 : 0, + rtt: (_props$rtt = props.rtt) !== null && _props$rtt !== void 0 ? _props$rtt : false, + parentHasRenderTexture, + data: data + }; + } + /** + * Destroy a node + * + * @remarks + * This method destroys a node but does not destroy its children. + * + * @param node + * @returns + */ + destroyNode(node) { + if (this.inspector) { + this.inspector.destroyNode(node); + } + return this.driver.destroyNode(node); + } + /** + * Create a new texture reference + * + * @remarks + * This method creates a new reference to a texture. The texture is not + * loaded until it is used on a node. + * + * It can be assigned to a node's `texture` property, or it can be used + * when creating a SubTexture. + * + * @param textureType + * @param props + * @param options + * @returns + */ + createTexture(textureType, props, options) { + var id = this.nextTextureId++; + var desc = { + descType: 'texture', + txType: textureType, + props, + options: _objectSpread(_objectSpread({}, options), {}, { + // This ID is used to identify the texture in the CoreTextureManager's + // ID Texture Map cache. + id + }) + }; + this.textureTracker.registerTexture(desc); + return desc; + } + /** + * Create a new shader reference + * + * @remarks + * This method creates a new reference to a shader. The shader is not + * loaded until it is used on a Node. + * + * It can be assigned to a Node's `shader` property. + * + * @param shaderType + * @param props + * @returns + */ + createShader(shaderType, props) { + return { + descType: 'shader', + shType: shaderType, + props: props + }; + } + /** + * Get a Node by its ID + * + * @param id + * @returns + */ + getNodeById(id) { + return this.nodes.get(id) || null; + } + toggleFreeze() { + throw new Error('Not implemented'); + } + advanceFrame() { + throw new Error('Not implemented'); + } + /** + * Re-render the current frame without advancing any running animations. + * + * @remarks + * Any state changes will be reflected in the re-rendered frame. Useful for + * debugging. + * + * May not do anything if the render loop is running on a separate worker. + */ + rerender() { + throw new Error('Not implemented'); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class CoreAnimation extends EventEmitter { + //fixme - aint got not time for this + constructor(node, props, settings) { + super(); + _defineProperty(this, "node", void 0); + _defineProperty(this, "props", void 0); + _defineProperty(this, "settings", void 0); + _defineProperty(this, "propStartValues", {}); + _defineProperty(this, "restoreValues", {}); + _defineProperty(this, "progress", 0); + _defineProperty(this, "delayFor", 0); + _defineProperty(this, "timingFunction", void 0); + _defineProperty(this, "propsList", void 0); + this.node = node; + this.props = props; + this.settings = settings; + this.propStartValues = {}; + this.propsList = Object.keys(props); + this.propsList.forEach(propName => { + this.propStartValues[propName] = node[propName]; + }); + this.timingFunction = t => t; + if (settings.easing && typeof settings.easing === 'string') { + this.timingFunction = getTimingFunction(settings.easing); + } + this.delayFor = settings.delay || 0; + } + reset() { + this.progress = 0; + this.delayFor = this.settings.delay || 0; + this.update(0); + } + restore() { + this.reset(); + Object.keys(this.props).forEach(propName => { + this.node[propName] = this.propStartValues[propName]; + }); + } + reverse() { + this.progress = 0; + Object.keys(this.props).forEach(propName => { + // set the start value to the current value + var startValue = this.props[propName]; + var endValue = this.propStartValues[propName]; + // swap the start and end values + this.props[propName] = endValue; + this.propStartValues[propName] = startValue; + }); + // restore stop method if we are not looping + if (!this.settings.loop) { + this.settings.stopMethod = false; + } + } + applyEasing(p, s, e) { + return (this.timingFunction(p) || p) * (e - s) + s; + } + update(dt) { + var _this$settings = this.settings, + duration = _this$settings.duration, + loop = _this$settings.loop, + easing = _this$settings.easing, + stopMethod = _this$settings.stopMethod; + if (!duration) { + this.emit('finished', {}); + return; + } + if (this.delayFor > 0) { + this.delayFor -= dt; + return; + } + if (this.delayFor <= 0 && this.progress === 0) { + this.emit('start', {}); + } + this.progress += dt / duration; + if (this.progress > 1) { + this.progress = loop ? 0 : 1; + if (stopMethod) { + // If there's a stop method emit finished so the stop method can be applied. + // TODO: We should probably reevaluate how stopMethod is implemented as currently + // stop method 'reset' does not work when looping. + this.emit('finished', {}); + return; + } + } + for (var i = 0; i < this.propsList.length; i++) { + var propName = this.propsList[i]; + var propValue = this.props[propName]; + var startValue = this.propStartValues[propName]; + var endValue = propValue; + if (propName.indexOf('color') !== -1) { + // check if we have to change the color to begin with + if (startValue === endValue) { + this.node[propName] = startValue; + continue; + } + if (easing) { + var easingProgressValue = this.timingFunction(this.progress) || this.progress; + var easingColorValue = mergeColorProgress(startValue, endValue, easingProgressValue); + this.node[propName] = easingColorValue; + continue; + } + this.node[propName] = mergeColorProgress(startValue, endValue, this.progress); + continue; + } + if (easing) { + this.node[propName] = this.applyEasing(this.progress, startValue, endValue); + continue; + } + this.node[propName] = startValue + (endValue - startValue) * this.progress; + } + if (this.progress === 1) { + this.emit('finished', {}); + } + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class CoreAnimationController { + constructor(manager, animation) { + _defineProperty(this, "manager", void 0); + _defineProperty(this, "animation", void 0); + _defineProperty(this, "startedPromise", null); + /** + * If this is null, then the animation hasn't started yet. + */ + _defineProperty(this, "startedResolve", null); + _defineProperty(this, "stoppedPromise", null); + /** + * If this is null, then the animation is in a finished / stopped state. + */ + _defineProperty(this, "stoppedResolve", null); + _defineProperty(this, "state", void 0); + this.manager = manager; + this.animation = animation; + this.state = 'stopped'; + } + start() { + this.makeStartedPromise(); + this.animation.once('start', this.started.bind(this)); + this.makeStoppedPromise(); + this.animation.once('finished', this.finished.bind(this)); + // prevent registering the same animation twice + if (!this.manager.activeAnimations.has(this.animation)) { + this.manager.registerAnimation(this.animation); + } + this.state = 'running'; + return this; + } + stop() { + this.manager.unregisterAnimation(this.animation); + if (this.stoppedResolve !== null) { + this.stoppedResolve(); + this.stoppedResolve = null; + } + this.animation.reset(); + this.state = 'stopped'; + return this; + } + pause() { + this.manager.unregisterAnimation(this.animation); + this.state = 'paused'; + return this; + } + restore() { + this.stoppedResolve = null; + this.animation.restore(); + return this; + } + waitUntilStarted() { + this.makeStartedPromise(); + var promise = this.startedPromise; + assertTruthy(promise); + return promise; + } + waitUntilStopped() { + this.makeStoppedPromise(); + var promise = this.stoppedPromise; + assertTruthy(promise); + return promise; + } + makeStartedPromise() { + if (this.startedResolve === null) { + this.startedPromise = new Promise(resolve => { + this.startedResolve = resolve; + }); + } + } + makeStoppedPromise() { + if (this.stoppedResolve === null) { + this.stoppedPromise = new Promise(resolve => { + this.stoppedResolve = resolve; + }); + } + } + started() { + assertTruthy(this.startedResolve); + // resolve promise (and pass current this to continue to the chain) + this.startedResolve(this); + this.startedResolve = null; + } + finished() { + assertTruthy(this.stoppedResolve); + // If the animation is looping, then we need to restart it. + var _this$animation$setti = this.animation.settings, + loop = _this$animation$setti.loop, + stopMethod = _this$animation$setti.stopMethod; + if (stopMethod === 'reverse') { + this.animation.reverse(); + this.start(); + return; + } + // resolve promise + this.stoppedResolve(); + this.stoppedResolve = null; + if (loop) { + return; + } + // unregister animation + this.manager.unregisterAnimation(this.animation); + } + } + + /* eslint-disable @typescript-eslint/no-non-null-assertion */ + // Matrix3d is a 3x3 matrix in column-major order because that's how WebGL likes it. + // The matrix is stored in a Float32Array in the following order: + // | 0 3 6 | + // | 1 4 7 | + // | 2 5 8 | + // The following constants are used to index into the array in a row-major way. + var m0 = 0; + var m1 = 3; + var m2 = 6; + var m3 = 1; + var m4 = 4; + var m5 = 7; + var m6 = 2; + var m7 = 5; + var m8 = 8; + /** + * A 3x3 matrix representing a 2D transformation. + * + * @remarks + * The matrix is stored in column-major order in the `data` property which can + * be passed directly to a WebGL shader uniform. + * + * The matrix is stored in a Float32Array in the following index order: + * | 0 3 6 | + * | 1 4 7 | + * | 2 5 8 | + * + * Only the first two rows are really used for the transformation. The last row is + * generally always `[0, 0, 1]` if you only use the 2D transformation methods + * provided by this class. + * + * For convenience, entries in the first two rows can be accessed by the following + * getter properties: + * | ta tb tx | + * | tc td ty | + * | 0 0 1 | + */ + class Matrix3d { + /** + * Creates a new 3x3 matrix. + * + * @param entries Row-major 3x3 matrix + */ + constructor(entries) { + _defineProperty(this, "data", void 0); + if (entries) { + // Transpose the input matrix so that it's in column-major order. + this.data = new Float32Array(9); + this.data[m0] = entries[0]; + this.data[m1] = entries[3]; + this.data[m2] = entries[6]; + this.data[m3] = entries[1]; + this.data[m4] = entries[4]; + this.data[m5] = entries[7]; + this.data[m6] = entries[2]; + this.data[m7] = entries[5]; + this.data[m8] = entries[8]; + } else { + this.data = new Float32Array(9); + } + } + /** + * Returns a temporary matrix that can be used for calculations. + * + * @remarks + * This is useful for avoiding allocations in tight loops. + * + * The matrix is not guaranteed to be the same between calls. + * + * @returns + */ + static get temp() { + return tempMatrix; + } + static multiply(a, b, out) { + var e0 = a.data[m0] * b.data[m0] + a.data[m1] * b.data[m3] + a.data[m2] * b.data[m6]; + var e1 = a.data[m0] * b.data[m1] + a.data[m1] * b.data[m4] + a.data[m2] * b.data[m7]; + var e2 = a.data[m0] * b.data[m2] + a.data[m1] * b.data[m5] + a.data[m2] * b.data[m8]; + var e3 = a.data[m3] * b.data[m0] + a.data[m4] * b.data[m3] + a.data[m5] * b.data[m6]; + var e4 = a.data[m3] * b.data[m1] + a.data[m4] * b.data[m4] + a.data[m5] * b.data[m7]; + var e5 = a.data[m3] * b.data[m2] + a.data[m4] * b.data[m5] + a.data[m5] * b.data[m8]; + var e6 = a.data[m6] * b.data[m0] + a.data[m7] * b.data[m3] + a.data[m8] * b.data[m6]; + var e7 = a.data[m6] * b.data[m1] + a.data[m7] * b.data[m4] + a.data[m8] * b.data[m7]; + var e8 = a.data[m6] * b.data[m2] + a.data[m7] * b.data[m5] + a.data[m8] * b.data[m8]; + if (!out) { + out = new Matrix3d(); + } + out.data[m0] = e0; + out.data[m1] = e1; + out.data[m2] = e2; + out.data[m3] = e3; + out.data[m4] = e4; + out.data[m5] = e5; + out.data[m6] = e6; + out.data[m7] = e7; + out.data[m8] = e8; + return out; + } + static identity(out) { + if (!out) { + out = new Matrix3d(); + } + out.data[m0] = 1; + out.data[m1] = 0; + out.data[m2] = 0; + out.data[m3] = 0; + out.data[m4] = 1; + out.data[m5] = 0; + out.data[m6] = 0; + out.data[m7] = 0; + out.data[m8] = 1; + return out; + } + static translate(x, y, out) { + if (!out) { + out = new Matrix3d(); + } + out.data[m0] = 1; + out.data[m1] = 0; + out.data[m2] = x; + out.data[m3] = 0; + out.data[m4] = 1; + out.data[m5] = y; + out.data[m6] = 0; + out.data[m7] = 0; + out.data[m8] = 1; + return out; + } + static scale(sx, sy, out) { + if (!out) { + out = new Matrix3d(); + } + out.data[m0] = sx; + out.data[m1] = 0; + out.data[m2] = 0; + out.data[m3] = 0; + out.data[m4] = sy; + out.data[m5] = 0; + out.data[m6] = 0; + out.data[m7] = 0; + out.data[m8] = 1; + return out; + } + static rotate(angle, out) { + var cos = Math.cos(angle); + var sin = Math.sin(angle); + if (!out) { + out = new Matrix3d(); + } + out.data[m0] = cos; + out.data[m1] = -sin; + out.data[m2] = 0; + out.data[m3] = sin; + out.data[m4] = cos; + out.data[m5] = 0; + out.data[m6] = 0; + out.data[m7] = 0; + out.data[m8] = 1; + return out; + } + static copy(src, dst, transpose) { + if (!dst) { + dst = new Matrix3d(); + } + dst.data[0] = src.data[0]; + dst.data[1] = src.data[1]; + dst.data[2] = src.data[2]; + dst.data[3] = src.data[3]; + dst.data[4] = src.data[4]; + dst.data[5] = src.data[5]; + dst.data[6] = src.data[6]; + dst.data[7] = src.data[7]; + dst.data[8] = src.data[8]; + return dst; + } + translate(x, y) { + this.data[m2] = this.data[m0] * x + this.data[m1] * y + this.data[m2]; + this.data[m5] = this.data[m3] * x + this.data[m4] * y + this.data[m5]; + return this; + } + scale(sx, sy) { + this.data[m0] = this.data[m0] * sx; + this.data[m1] = this.data[m1] * sy; + this.data[m3] = this.data[m3] * sx; + this.data[m4] = this.data[m4] * sy; + return this; + } + rotate(angle) { + if (angle === 0 || !(angle % Math.PI * 2)) { + return this; + } + var cos = Math.cos(angle); + var sin = Math.sin(angle); + var e0 = this.data[m0] * cos + this.data[m1] * sin; + var e1 = this.data[m1] * cos - this.data[m0] * sin; + var e3 = this.data[m3] * cos + this.data[m4] * sin; + var e4 = this.data[m4] * cos - this.data[m3] * sin; + this.data[m0] = e0; + this.data[m1] = e1; + this.data[m3] = e3; + this.data[m4] = e4; + return this; + } + multiply(other) { + return Matrix3d.multiply(this, other, this); + } + get tx() { + return this.data[m2]; + } + get ty() { + return this.data[m5]; + } + get ta() { + return this.data[m0]; + } + get tb() { + return this.data[m1]; + } + get tc() { + return this.data[m3]; + } + get td() { + return this.data[m4]; + } + transformPoint(x, y) { + return [this.data[m0] * x + this.data[m1] * y + this.data[m2], this.data[m3] * x + this.data[m4] * y + this.data[m3]]; + } + } + var tempMatrix = new Matrix3d(); + var rx1 = 0; + var rx2 = 2; + var rx3 = 4; + var rx4 = 6; + var ry1 = 1; + var ry2 = 3; + var ry3 = 5; + var ry4 = 7; + class RenderCoords { + constructor(entries) { + _defineProperty(this, "data", void 0); + this.data = new Float32Array(8); + if (entries) { + this.data[rx1] = entries[rx1]; + this.data[rx2] = entries[rx2]; + this.data[rx3] = entries[rx3]; + this.data[rx4] = entries[rx4]; + this.data[ry1] = entries[ry1]; + this.data[ry2] = entries[ry2]; + this.data[ry3] = entries[ry3]; + this.data[ry4] = entries[ry4]; + } + } + static translate(x1, y1, x2, y2, x3, y3, x4, y4, out) { + if (!out) { + out = new RenderCoords(); + } + out.data[rx1] = x1; + out.data[rx2] = x2; + out.data[rx3] = x3; + out.data[rx4] = x4; + out.data[ry1] = y1; + out.data[ry2] = y2; + out.data[ry3] = y3; + out.data[ry4] = y4; + return out; + } + get x1() { + return this.data[rx1]; + } + get x2() { + return this.data[rx2]; + } + get x3() { + return this.data[rx3]; + } + get x4() { + return this.data[rx4]; + } + get y1() { + return this.data[ry1]; + } + get y2() { + return this.data[ry2]; + } + get y3() { + return this.data[ry3]; + } + get y4() { + return this.data[ry4]; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + var CoreNodeRenderState; + (function (CoreNodeRenderState) { + CoreNodeRenderState[CoreNodeRenderState["Init"] = 0] = "Init"; + CoreNodeRenderState[CoreNodeRenderState["OutOfBounds"] = 2] = "OutOfBounds"; + CoreNodeRenderState[CoreNodeRenderState["InBounds"] = 4] = "InBounds"; + CoreNodeRenderState[CoreNodeRenderState["InViewport"] = 8] = "InViewport"; + })(CoreNodeRenderState || (CoreNodeRenderState = {})); + var CoreNodeRenderStateMap = new Map(); + CoreNodeRenderStateMap.set(CoreNodeRenderState.Init, 'init'); + CoreNodeRenderStateMap.set(CoreNodeRenderState.OutOfBounds, 'outOfBounds'); + CoreNodeRenderStateMap.set(CoreNodeRenderState.InBounds, 'inBounds'); + CoreNodeRenderStateMap.set(CoreNodeRenderState.InViewport, 'inViewport'); + var UpdateType; + (function (UpdateType) { + /** + * Child updates + */ + UpdateType[UpdateType["Children"] = 1] = "Children"; + /** + * Scale/Rotate transform update + * + * @remarks + * CoreNode Properties Updated: + * - `scaleRotateTransform` + */ + UpdateType[UpdateType["ScaleRotate"] = 2] = "ScaleRotate"; + /** + * Translate transform update (x/y/width/height/pivot/mount) + * + * @remarks + * CoreNode Properties Updated: + * - `localTransform` + */ + UpdateType[UpdateType["Local"] = 4] = "Local"; + /** + * Global Transform update + * + * @remarks + * CoreNode Properties Updated: + * - `globalTransform` + * - `renderCoords` + * - `renderBound` + */ + UpdateType[UpdateType["Global"] = 8] = "Global"; + /** + * Clipping rect update + * + * @remarks + * CoreNode Properties Updated: + * - `clippingRect` + */ + UpdateType[UpdateType["Clipping"] = 16] = "Clipping"; + /** + * Calculated ZIndex update + * + * @remarks + * CoreNode Properties Updated: + * - `calcZIndex` + */ + UpdateType[UpdateType["CalculatedZIndex"] = 32] = "CalculatedZIndex"; + /** + * Z-Index Sorted Children update + * + * @remarks + * CoreNode Properties Updated: + * - `children` (sorts children by their `calcZIndex`) + */ + UpdateType[UpdateType["ZIndexSortedChildren"] = 64] = "ZIndexSortedChildren"; + /** + * Premultiplied Colors update + * + * @remarks + * CoreNode Properties Updated: + * - `premultipliedColorTl` + * - `premultipliedColorTr` + * - `premultipliedColorBl` + * - `premultipliedColorBr` + */ + UpdateType[UpdateType["PremultipliedColors"] = 128] = "PremultipliedColors"; + /** + * World Alpha update + * + * @remarks + * CoreNode Properties Updated: + * - `worldAlpha` = `parent.worldAlpha` * `alpha` + */ + UpdateType[UpdateType["WorldAlpha"] = 256] = "WorldAlpha"; + /** + * Render State update + * + * @remarks + * CoreNode Properties Updated: + * - `renderState` + */ + UpdateType[UpdateType["RenderState"] = 512] = "RenderState"; + /** + * Is Renderable update + * + * @remarks + * CoreNode Properties Updated: + * - `isRenderable` + */ + UpdateType[UpdateType["IsRenderable"] = 1024] = "IsRenderable"; + /** + * None + */ + UpdateType[UpdateType["None"] = 0] = "None"; + /** + * All + */ + UpdateType[UpdateType["All"] = 2047] = "All"; + })(UpdateType || (UpdateType = {})); + class CoreNode extends EventEmitter { + constructor(stage, props) { + super(); + _defineProperty(this, "stage", void 0); + _defineProperty(this, "children", []); + _defineProperty(this, "props", void 0); + _defineProperty(this, "updateType", UpdateType.All); + _defineProperty(this, "globalTransform", void 0); + _defineProperty(this, "scaleRotateTransform", void 0); + _defineProperty(this, "localTransform", void 0); + _defineProperty(this, "renderCoords", void 0); + _defineProperty(this, "renderBound", void 0); + _defineProperty(this, "strictBound", void 0); + _defineProperty(this, "preloadBound", void 0); + _defineProperty(this, "clippingRect", { + x: 0, + y: 0, + width: 0, + height: 0, + valid: false + }); + _defineProperty(this, "isRenderable", false); + _defineProperty(this, "renderState", CoreNodeRenderState.Init); + _defineProperty(this, "worldAlpha", 1); + _defineProperty(this, "premultipliedColorTl", 0); + _defineProperty(this, "premultipliedColorTr", 0); + _defineProperty(this, "premultipliedColorBl", 0); + _defineProperty(this, "premultipliedColorBr", 0); + _defineProperty(this, "calcZIndex", 0); + _defineProperty(this, "hasRTTupdates", false); + _defineProperty(this, "onTextureLoaded", (target, dimensions) => { + this.autosizeNode(dimensions); + // If parent has a render texture, flag that we need to update + // @todo: Reserve type for RTT updates + if (this.parentHasRenderTexture) { + this.setRTTUpdates(1); + } + this.emit('loaded', { + type: 'texture', + dimensions + }); + queueMicrotask(() => { + // Texture was loaded. In case the RAF loop has already stopped, we request + // a render to ensure the texture is rendered. + this.stage.requestRender(); + }); + }); + _defineProperty(this, "onTextureFailed", (target, error) => { + this.emit('failed', { + type: 'texture', + error + }); + }); + _defineProperty(this, "onTextureFreed", target => { + this.emit('freed', { + type: 'texture' + }); + }); + this.stage = stage; + this.props = _objectSpread(_objectSpread({}, props), {}, { + parent: null, + // Assign a default value to parentHasRenderTexture + parentHasRenderTexture: false + }); + // Allow for parent to be processed appropriately + this.parent = props.parent; + // Allow for Render Texture to be processed appropriately + this.rtt = props.rtt; + this.updateScaleRotateTransform(); + } + //#region Textures + loadTexture(textureType, props, options = null) { + // First unload any existing texture + if (this.props.texture) { + this.unloadTexture(); + } + var txManager = this.stage.txManager; + var texture = txManager.loadTexture(textureType, props, options); + this.props.texture = texture; + this.props.textureOptions = options; + this.setUpdateType(UpdateType.IsRenderable); + // If texture is already loaded / failed, trigger loaded event manually + // so that users get a consistent event experience. + // We do this in a microtask to allow listeners to be attached in the same + // synchronous task after calling loadTexture() + queueMicrotask(() => { + if (texture.state === 'loaded') { + this.onTextureLoaded(texture, texture.dimensions); + } else if (texture.state === 'failed') { + this.onTextureFailed(texture, texture.error); + } else if (texture.state === 'freed') { + this.onTextureFreed(texture); + } + texture.on('loaded', this.onTextureLoaded); + texture.on('failed', this.onTextureFailed); + texture.on('freed', this.onTextureFreed); + }); + } + unloadTexture() { + if (this.props.texture) { + var texture = this.props.texture; + texture.off('loaded', this.onTextureLoaded); + texture.off('failed', this.onTextureFailed); + texture.off('freed', this.onTextureFreed); + texture.setRenderableOwner(this, false); + } + this.props.texture = null; + this.props.textureOptions = null; + this.setUpdateType(UpdateType.IsRenderable); + } + autosizeNode(dimensions) { + if (this.autosize) { + this.width = dimensions.width; + this.height = dimensions.height; + } + } + //#endregion Textures + loadShader(shaderType, props) { + var shManager = this.stage.renderer.getShaderManager(); + assertTruthy(shManager); + var _shManager$loadShader = shManager.loadShader(shaderType, props), + shader = _shManager$loadShader.shader, + p = _shManager$loadShader.props; + this.props.shader = shader; + this.props.shaderProps = p; + this.setUpdateType(UpdateType.IsRenderable); + } + /** + * Change types types is used to determine the scope of the changes being applied + * + * @remarks + * See {@link UpdateType} for more information on each type + * + * @param type + */ + setUpdateType(type) { + this.updateType |= type; + // If we're updating this node at all, we need to inform the parent + // (and all ancestors) that their children need updating as well + var parent = this.props.parent; + if (parent && !(parent.updateType & UpdateType.Children)) { + parent.setUpdateType(UpdateType.Children); + } + // If node is part of RTT texture + // Flag that we need to update + if (this.parentHasRenderTexture) { + this.setRTTUpdates(type); + } + } + sortChildren() { + this.children.sort((a, b) => a.calcZIndex - b.calcZIndex); + } + updateScaleRotateTransform() { + this.scaleRotateTransform = Matrix3d.rotate(this.props.rotation, this.scaleRotateTransform).scale(this.props.scaleX, this.props.scaleY); + } + updateLocalTransform() { + assertTruthy(this.scaleRotateTransform); + var pivotTranslateX = this.props.pivotX * this.props.width; + var pivotTranslateY = this.props.pivotY * this.props.height; + var mountTranslateX = this.props.mountX * this.props.width; + var mountTranslateY = this.props.mountY * this.props.height; + this.localTransform = Matrix3d.translate(pivotTranslateX - mountTranslateX + this.props.x, pivotTranslateY - mountTranslateY + this.props.y, this.localTransform).multiply(this.scaleRotateTransform).translate(-pivotTranslateX, -pivotTranslateY); + this.setUpdateType(UpdateType.Global); + } + /** + * @todo: test for correct calculation flag + * @param delta + */ + update(delta, parentClippingRect) { + if (this.updateType & UpdateType.ScaleRotate) { + this.updateScaleRotateTransform(); + this.setUpdateType(UpdateType.Local); + } + if (this.updateType & UpdateType.Local) { + this.updateLocalTransform(); + this.setUpdateType(UpdateType.Global); + } + var parent = this.props.parent; + var childUpdateType = UpdateType.None; + if (this.updateType & UpdateType.Global) { + var _this$props$parent; + assertTruthy(this.localTransform); + this.globalTransform = Matrix3d.copy((parent === null || parent === void 0 ? void 0 : parent.globalTransform) || this.localTransform, this.globalTransform); + if (this.parentHasRenderTexture && (_this$props$parent = this.props.parent) !== null && _this$props$parent !== void 0 && _this$props$parent.rtt) { + this.globalTransform = Matrix3d.identity(); + } + if (parent) { + this.globalTransform.multiply(this.localTransform); + } + this.calculateRenderCoords(); + this.updateBoundingRect(); + this.setUpdateType(UpdateType.Clipping | UpdateType.RenderState | UpdateType.Children); + childUpdateType |= UpdateType.Global; + } + if (this.updateType & UpdateType.Clipping) { + this.calculateClippingRect(parentClippingRect); + this.setUpdateType(UpdateType.Children); + childUpdateType |= UpdateType.Clipping; + } + if (this.updateType & UpdateType.WorldAlpha) { + if (parent) { + this.worldAlpha = parent.worldAlpha * this.props.alpha; + } else { + this.worldAlpha = this.props.alpha; + } + this.setUpdateType(UpdateType.Children | UpdateType.PremultipliedColors | UpdateType.IsRenderable); + childUpdateType |= UpdateType.WorldAlpha; + } + if (this.updateType & UpdateType.PremultipliedColors) { + this.premultipliedColorTl = mergeColorAlphaPremultiplied(this.props.colorTl, this.worldAlpha, true); + // If all the colors are the same just sent them all to the same value + if (this.props.colorTl === this.props.colorTr && this.props.colorBl === this.props.colorBr && this.props.colorTl === this.props.colorBl) { + this.premultipliedColorTr = this.premultipliedColorBl = this.premultipliedColorBr = this.premultipliedColorTl; + } else { + this.premultipliedColorTr = mergeColorAlphaPremultiplied(this.props.colorTr, this.worldAlpha, true); + this.premultipliedColorBl = mergeColorAlphaPremultiplied(this.props.colorBl, this.worldAlpha, true); + this.premultipliedColorBr = mergeColorAlphaPremultiplied(this.props.colorBr, this.worldAlpha, true); + } + } + if (this.updateType & UpdateType.RenderState) { + this.updateRenderState(parentClippingRect); + this.setUpdateType(UpdateType.IsRenderable); + } + if (this.updateType & UpdateType.IsRenderable) { + this.updateIsRenderable(); + } + // No need to update zIndex if there is no parent + if (parent && this.updateType & UpdateType.CalculatedZIndex) { + this.calculateZIndex(); + // Tell parent to re-sort children + parent.setUpdateType(UpdateType.ZIndexSortedChildren); + } + if (this.updateType & UpdateType.Children && this.children.length && !this.rtt) { + this.children.forEach(child => { + // Trigger the depenedent update types on the child + child.setUpdateType(childUpdateType); + // If child has no updates, skip + if (child.updateType === 0) { + return; + } + child.update(delta, this.clippingRect); + }); + } + // Sorting children MUST happen after children have been updated so + // that they have the oppotunity to update their calculated zIndex. + if (this.updateType & UpdateType.ZIndexSortedChildren) { + // reorder z-index + this.sortChildren(); + } + // reset update type + this.updateType = 0; + } + //check if CoreNode is renderable based on props + checkRenderProps() { + if (this.props.texture) { + return true; + } + if (!this.props.width || !this.props.height) { + return false; + } + if (this.props.shader) { + return true; + } + if (this.props.clipping) { + return true; + } + if (this.props.color !== 0) { + return true; + } + // Consider removing these checks and just using the color property check above. + // Maybe add a forceRender prop for nodes that should always render. + if (this.props.colorTop !== 0) { + return true; + } + if (this.props.colorBottom !== 0) { + return true; + } + if (this.props.colorLeft !== 0) { + return true; + } + if (this.props.colorRight !== 0) { + return true; + } + if (this.props.colorTl !== 0) { + return true; + } + if (this.props.colorTr !== 0) { + return true; + } + if (this.props.colorBl !== 0) { + return true; + } + if (this.props.colorBr !== 0) { + return true; + } + return false; + } + checkRenderBounds(parentClippingRect) { + assertTruthy(this.renderBound); + var rectW = parentClippingRect.width || this.stage.root.width; + var rectH = parentClippingRect.height || this.stage.root.height; + this.strictBound = createBound(parentClippingRect.x, parentClippingRect.y, parentClippingRect.x + rectW, parentClippingRect.y + rectH, this.strictBound); + var renderM = this.stage.boundsMargin; + this.preloadBound = createBound(parentClippingRect.x - renderM[3], parentClippingRect.y - renderM[0], parentClippingRect.x + rectW + renderM[1], parentClippingRect.y + rectH + renderM[2], this.preloadBound); + if (boundInsideBound(this.renderBound, this.strictBound)) { + return CoreNodeRenderState.InViewport; + } + if (boundInsideBound(this.renderBound, this.preloadBound)) { + return CoreNodeRenderState.InBounds; + } + return CoreNodeRenderState.OutOfBounds; + } + updateRenderState(parentClippingRect) { + var renderState = this.checkRenderBounds(parentClippingRect); + if (renderState !== this.renderState) { + var previous = this.renderState; + this.renderState = renderState; + if (previous === CoreNodeRenderState.InViewport) { + this.emit('outOfViewport', { + previous, + current: renderState + }); + } + if (previous < CoreNodeRenderState.InBounds && renderState === CoreNodeRenderState.InViewport) { + this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), { + previous, + current: renderState + }); + previous = CoreNodeRenderState.InBounds; + } else if (previous > CoreNodeRenderState.InBounds && renderState === CoreNodeRenderState.OutOfBounds) { + this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), { + previous, + current: renderState + }); + previous = CoreNodeRenderState.InBounds; + } + var event = CoreNodeRenderStateMap.get(renderState); + assertTruthy(event); + this.emit(event, { + previous, + current: renderState + }); + } + } + setRenderState(state) { + if (state !== this.renderState) { + this.renderState = state; + this.emit(CoreNodeRenderState[state]); + } + } + /** + * This function updates the `isRenderable` property based on certain conditions. + * + * @returns + */ + updateIsRenderable() { + var newIsRenderable; + if (this.worldAlpha === 0 || !this.checkRenderProps()) { + newIsRenderable = false; + } else { + newIsRenderable = this.renderState > CoreNodeRenderState.OutOfBounds; + } + if (this.isRenderable !== newIsRenderable) { + this.isRenderable = newIsRenderable; + this.onChangeIsRenderable(newIsRenderable); + } + } + onChangeIsRenderable(isRenderable) { + var _this$props$texture; + (_this$props$texture = this.props.texture) === null || _this$props$texture === void 0 || _this$props$texture.setRenderableOwner(this, isRenderable); + } + calculateRenderCoords() { + var width = this.width, + height = this.height, + transform = this.globalTransform; + assertTruthy(transform); + var tx = transform.tx, + ty = transform.ty, + ta = transform.ta, + tb = transform.tb, + tc = transform.tc, + td = transform.td; + if (tb === 0 && tc === 0) { + var minX = tx; + var maxX = tx + width * ta; + var minY = ty; + var maxY = ty + height * td; + this.renderCoords = RenderCoords.translate( + //top-left + minX, minY, + //top-right + maxX, minY, + //bottom-right + maxX, maxY, + //bottom-left + minX, maxY, this.renderCoords); + } else { + this.renderCoords = RenderCoords.translate( + //top-left + tx, ty, + //top-right + tx + width * ta, ty + width * tc, + //bottom-right + tx + width * ta + height * tb, ty + width * tc + height * td, + //bottom-left + tx + height * tb, ty + height * td, this.renderCoords); + } + } + updateBoundingRect() { + var renderCoords = this.renderCoords, + transform = this.globalTransform; + assertTruthy(transform); + assertTruthy(renderCoords); + var tb = transform.tb, + tc = transform.tc; + var x1 = renderCoords.x1, + y1 = renderCoords.y1, + x3 = renderCoords.x3, + y3 = renderCoords.y3; + if (tb === 0 || tc === 0) { + this.renderBound = createBound(x1, y1, x3, y3, this.renderBound); + } else { + var x2 = renderCoords.x2, + x4 = renderCoords.x4, + y2 = renderCoords.y2, + y4 = renderCoords.y4; + this.renderBound = createBound(Math.min(x1, x2, x3, x4), Math.min(y1, y2, y3, y4), Math.max(x1, x2, x3, x4), Math.max(y1, y2, y3, y4), this.renderBound); + } + } + /** + * This function calculates the clipping rectangle for a node. + * + * The function then checks if the node is rotated. If the node requires clipping and is not rotated, a new clipping rectangle is created based on the node's global transform and dimensions. + * If a parent clipping rectangle exists, it is intersected with the node's clipping rectangle (if it exists), or replaces the node's clipping rectangle. + * + * Finally, the node's parentClippingRect and clippingRect properties are updated. + */ + calculateClippingRect(parentClippingRect) { + assertTruthy(this.globalTransform); + var clippingRect = this.clippingRect, + props = this.props, + gt = this.globalTransform; + var clipping = props.clipping; + var isRotated = gt.tb !== 0 || gt.tc !== 0; + if (clipping && !isRotated) { + clippingRect.x = gt.tx; + clippingRect.y = gt.ty; + clippingRect.width = this.width * gt.ta; + clippingRect.height = this.height * gt.td; + clippingRect.valid = true; + } else { + clippingRect.valid = false; + } + if (parentClippingRect.valid && clippingRect.valid) { + // Intersect parent clipping rect with node clipping rect + intersectRect(parentClippingRect, clippingRect, clippingRect); + } else if (parentClippingRect.valid) { + // Copy parent clipping rect + copyRect(parentClippingRect, clippingRect); + clippingRect.valid = true; + } + } + calculateZIndex() { + var _props$parent4, _props$parent5; + var props = this.props; + var z = props.zIndex || 0; + var p = ((_props$parent4 = props.parent) === null || _props$parent4 === void 0 ? void 0 : _props$parent4.zIndex) || 0; + var zIndex = z; + if ((_props$parent5 = props.parent) !== null && _props$parent5 !== void 0 && _props$parent5.zIndexLocked) { + zIndex = z < p ? z : p; + } + this.calcZIndex = zIndex; + } + /** + * Destroy the node and cleanup all resources + */ + destroy() { + this.unloadTexture(); + this.clippingRect.valid = false; + this.isRenderable = false; + delete this.renderCoords; + delete this.renderBound; + delete this.strictBound; + delete this.preloadBound; + delete this.globalTransform; + delete this.scaleRotateTransform; + delete this.localTransform; + this.props.texture = null; + this.props.shader = null; + this.removeAllListeners(); + this.parent = null; + } + renderQuads(renderer) { + var _this$props2 = this.props, + width = _this$props2.width, + height = _this$props2.height, + texture = _this$props2.texture, + textureOptions = _this$props2.textureOptions, + shader = _this$props2.shader, + shaderProps = _this$props2.shaderProps, + rtt = _this$props2.rtt, + parentHasRenderTexture = _this$props2.parentHasRenderTexture; + // Prevent quad rendering if parent has a render texture + // and renderer is not currently rendering to a texture + if (parentHasRenderTexture) { + if (!renderer.renderToTextureActive) { + return; + } + // Prevent quad rendering if parent render texture is not the active render texture + if (this.parentRenderTexture !== renderer.activeRttNode) { + return; + } + } + var premultipliedColorTl = this.premultipliedColorTl, + premultipliedColorTr = this.premultipliedColorTr, + premultipliedColorBl = this.premultipliedColorBl, + premultipliedColorBr = this.premultipliedColorBr; + var zIndex = this.zIndex, + worldAlpha = this.worldAlpha, + gt = this.globalTransform, + clippingRect = this.clippingRect; + assertTruthy(gt); + // add to list of renderables to be sorted before rendering + renderer.addQuad({ + width, + height, + colorTl: premultipliedColorTl, + colorTr: premultipliedColorTr, + colorBl: premultipliedColorBl, + colorBr: premultipliedColorBr, + texture, + textureOptions, + zIndex, + shader, + shaderProps, + alpha: worldAlpha, + clippingRect, + tx: gt.tx, + ty: gt.ty, + ta: gt.ta, + tb: gt.tb, + tc: gt.tc, + td: gt.td, + rtt, + parentHasRenderTexture, + framebufferDimensions: this.framebufferDimensions + }); + } + //#region Properties + get id() { + return this.props.id; + } + get x() { + return this.props.x; + } + set x(value) { + if (this.props.x !== value) { + this.props.x = value; + this.setUpdateType(UpdateType.Local); + } + } + get absX() { + var _this$props$parent2, _this$props$parent3; + return this.props.x + (((_this$props$parent2 = this.props.parent) === null || _this$props$parent2 === void 0 ? void 0 : _this$props$parent2.absX) || ((_this$props$parent3 = this.props.parent) === null || _this$props$parent3 === void 0 || (_this$props$parent3 = _this$props$parent3.globalTransform) === null || _this$props$parent3 === void 0 ? void 0 : _this$props$parent3.tx) || 0); + } + get absY() { + var _this$props$parent$ab, _this$props$parent4; + return this.props.y + ((_this$props$parent$ab = (_this$props$parent4 = this.props.parent) === null || _this$props$parent4 === void 0 ? void 0 : _this$props$parent4.absY) !== null && _this$props$parent$ab !== void 0 ? _this$props$parent$ab : 0); + } + get y() { + return this.props.y; + } + set y(value) { + if (this.props.y !== value) { + this.props.y = value; + this.setUpdateType(UpdateType.Local); + } + } + get width() { + return this.props.width; + } + set width(value) { + if (this.props.width !== value) { + this.props.width = value; + this.setUpdateType(UpdateType.Local); + } + } + get height() { + return this.props.height; + } + set height(value) { + if (this.props.height !== value) { + this.props.height = value; + this.setUpdateType(UpdateType.Local); + } + } + get scale() { + // The CoreNode `scale` property is only used by Animations. + // Unlike INode, `null` should never be possibility for Animations. + return this.scaleX; + } + set scale(value) { + // The CoreNode `scale` property is only used by Animations. + // Unlike INode, `null` should never be possibility for Animations. + this.scaleX = value; + this.scaleY = value; + } + get scaleX() { + return this.props.scaleX; + } + set scaleX(value) { + if (this.props.scaleX !== value) { + this.props.scaleX = value; + this.setUpdateType(UpdateType.ScaleRotate); + } + } + get scaleY() { + return this.props.scaleY; + } + set scaleY(value) { + if (this.props.scaleY !== value) { + this.props.scaleY = value; + this.setUpdateType(UpdateType.ScaleRotate); + } + } + get mount() { + return this.props.mount; + } + set mount(value) { + if (this.props.mountX !== value || this.props.mountY !== value) { + this.props.mountX = value; + this.props.mountY = value; + this.props.mount = value; + this.setUpdateType(UpdateType.Local); + } + } + get mountX() { + return this.props.mountX; + } + set mountX(value) { + if (this.props.mountX !== value) { + this.props.mountX = value; + this.setUpdateType(UpdateType.Local); + } + } + get mountY() { + return this.props.mountY; + } + set mountY(value) { + if (this.props.mountY !== value) { + this.props.mountY = value; + this.setUpdateType(UpdateType.Local); + } + } + get pivot() { + return this.props.pivot; + } + set pivot(value) { + if (this.props.pivotX !== value || this.props.pivotY !== value) { + this.props.pivotX = value; + this.props.pivotY = value; + this.props.pivot = value; + this.setUpdateType(UpdateType.Local); + } + } + get pivotX() { + return this.props.pivotX; + } + set pivotX(value) { + if (this.props.pivotX !== value) { + this.props.pivotX = value; + this.setUpdateType(UpdateType.Local); + } + } + get pivotY() { + return this.props.pivotY; + } + set pivotY(value) { + if (this.props.pivotY !== value) { + this.props.pivotY = value; + this.setUpdateType(UpdateType.Local); + } + } + get rotation() { + return this.props.rotation; + } + set rotation(value) { + if (this.props.rotation !== value) { + this.props.rotation = value; + this.setUpdateType(UpdateType.ScaleRotate); + } + } + get alpha() { + return this.props.alpha; + } + set alpha(value) { + this.props.alpha = value; + this.setUpdateType(UpdateType.PremultipliedColors | UpdateType.WorldAlpha); + } + get autosize() { + return this.props.autosize; + } + set autosize(value) { + this.props.autosize = value; + } + get clipping() { + return this.props.clipping; + } + set clipping(value) { + this.props.clipping = value; + this.setUpdateType(UpdateType.Clipping); + } + get color() { + return this.props.color; + } + set color(value) { + if (this.props.colorTl !== value || this.props.colorTr !== value || this.props.colorBl !== value || this.props.colorBr !== value) { + this.colorTl = value; + this.colorTr = value; + this.colorBl = value; + this.colorBr = value; + } + this.props.color = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorTop() { + return this.props.colorTop; + } + set colorTop(value) { + if (this.props.colorTl !== value || this.props.colorTr !== value) { + this.colorTl = value; + this.colorTr = value; + } + this.props.colorTop = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorBottom() { + return this.props.colorBottom; + } + set colorBottom(value) { + if (this.props.colorBl !== value || this.props.colorBr !== value) { + this.colorBl = value; + this.colorBr = value; + } + this.props.colorBottom = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorLeft() { + return this.props.colorLeft; + } + set colorLeft(value) { + if (this.props.colorTl !== value || this.props.colorBl !== value) { + this.colorTl = value; + this.colorBl = value; + } + this.props.colorLeft = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorRight() { + return this.props.colorRight; + } + set colorRight(value) { + if (this.props.colorTr !== value || this.props.colorBr !== value) { + this.colorTr = value; + this.colorBr = value; + } + this.props.colorRight = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorTl() { + return this.props.colorTl; + } + set colorTl(value) { + this.props.colorTl = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorTr() { + return this.props.colorTr; + } + set colorTr(value) { + this.props.colorTr = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorBl() { + return this.props.colorBl; + } + set colorBl(value) { + this.props.colorBl = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + get colorBr() { + return this.props.colorBr; + } + set colorBr(value) { + this.props.colorBr = value; + this.setUpdateType(UpdateType.PremultipliedColors); + } + // we're only interested in parent zIndex to test + // if we should use node zIndex is higher then parent zIndex + get zIndexLocked() { + return this.props.zIndexLocked || 0; + } + set zIndexLocked(value) { + this.props.zIndexLocked = value; + this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children); + this.children.forEach(child => { + child.setUpdateType(UpdateType.CalculatedZIndex); + }); + } + get zIndex() { + return this.props.zIndex; + } + set zIndex(value) { + this.props.zIndex = value; + this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children); + this.children.forEach(child => { + child.setUpdateType(UpdateType.CalculatedZIndex); + }); + } + get parent() { + return this.props.parent; + } + set parent(newParent) { + var oldParent = this.props.parent; + if (oldParent === newParent) { + return; + } + this.props.parent = newParent; + if (oldParent) { + var index = oldParent.children.indexOf(this); + assertTruthy(index !== -1, "CoreNode.parent: Node not found in old parent's children!"); + oldParent.children.splice(index, 1); + oldParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren); + } + if (newParent) { + newParent.children.push(this); + // Since this node has a new parent, to be safe, have it do a full update. + this.setUpdateType(UpdateType.All); + // Tell parent that it's children need to be updated and sorted. + newParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren); + if (newParent.rtt || newParent.parentHasRenderTexture) { + this.setRTTUpdates(UpdateType.All); + } + } + this.parentHasRenderTexture = (newParent === null || newParent === void 0 ? void 0 : newParent.rtt) || (newParent === null || newParent === void 0 ? void 0 : newParent.parentHasRenderTexture); + this.updateScaleRotateTransform(); + } + get rtt() { + return this.props.rtt; + } + set rtt(value) { + var _this$stage$renderer; + if (!value) { + return; + } + this.props.rtt = true; + this.hasRTTupdates = true; + // Store RTT nodes in a separate list + (_this$stage$renderer = this.stage.renderer) === null || _this$stage$renderer === void 0 || _this$stage$renderer.renderToTexture(this); + } + set parentHasRenderTexture(value) { + this.props.parentHasRenderTexture = !!value; + } + get parentHasRenderTexture() { + return this.props.parentHasRenderTexture; + } + /** + * Returns the framebuffer dimensions of the node. + * If the node has a render texture, the dimensions are the same as the node's dimensions. + * If the node does not have a render texture, the dimensions are inherited from the parent. + * If the node parent has a render texture and the node is a render texture, the nodes dimensions are used. + */ + get framebufferDimensions() { + if (this.parentHasRenderTexture && !this.rtt) { + var _this$parent; + return (_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.framebufferDimensions; + } + return { + width: this.width, + height: this.height + }; + } + /** + * Returns the parent render texture node if it exists. + */ + get parentRenderTexture() { + var parent = this.parent; + while (parent) { + if (parent.rtt) { + return parent; + } + parent = parent.parent; + } + return null; + } + get texture() { + return this.props.texture; + } + setRTTUpdates(type) { + var _this$parent2; + this.hasRTTupdates = true; + (_this$parent2 = this.parent) === null || _this$parent2 === void 0 || _this$parent2.setRTTUpdates(type); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + var nextId = 1; + function getNewId() { + return nextId++; + } + class MainOnlyNode extends EventEmitter { + constructor(props, rendererMain, stage, coreNode) { + var _coreNode$id; + super(); + _defineProperty(this, "rendererMain", void 0); + _defineProperty(this, "stage", void 0); + _defineProperty(this, "id", void 0); + _defineProperty(this, "coreNode", void 0); + // Prop stores + _defineProperty(this, "_children", []); + _defineProperty(this, "_src", ''); + _defineProperty(this, "_parent", null); + _defineProperty(this, "_texture", null); + _defineProperty(this, "_shader", null); + _defineProperty(this, "_data", {}); + _defineProperty(this, "onTextureLoaded", (target, payload) => { + this.emit('loaded', payload); + }); + _defineProperty(this, "onTextureFailed", (target, payload) => { + this.emit('failed', payload); + }); + _defineProperty(this, "onTextureFreed", (target, payload) => { + this.emit('freed', payload); + }); + _defineProperty(this, "onOutOfBounds", (target, payload) => { + this.emit('outOfBounds', payload); + }); + _defineProperty(this, "onInBounds", (target, payload) => { + this.emit('inBounds', payload); + }); + _defineProperty(this, "onOutOfViewport", (target, payload) => { + this.emit('outOfViewport', payload); + }); + _defineProperty(this, "onInViewport", (target, payload) => { + this.emit('inViewport', payload); + }); + this.rendererMain = rendererMain; + this.stage = stage; + this.id = (_coreNode$id = coreNode === null || coreNode === void 0 ? void 0 : coreNode.id) !== null && _coreNode$id !== void 0 ? _coreNode$id : getNewId(); + this.coreNode = coreNode || new CoreNode(this.stage, { + id: this.id, + x: props.x, + y: props.y, + width: props.width, + height: props.height, + alpha: props.alpha, + autosize: props.autosize, + clipping: props.clipping, + color: props.color, + colorTop: props.colorTop, + colorBottom: props.colorBottom, + colorLeft: props.colorLeft, + colorRight: props.colorRight, + colorTl: props.colorTl, + colorTr: props.colorTr, + colorBl: props.colorBl, + colorBr: props.colorBr, + zIndex: props.zIndex, + zIndexLocked: props.zIndexLocked, + scaleX: props.scaleX, + scaleY: props.scaleY, + mountX: props.mountX, + mountY: props.mountY, + mount: props.mount, + pivot: props.pivot, + pivotX: props.pivotX, + pivotY: props.pivotY, + rotation: props.rotation, + parent: null, + shader: null, + shaderProps: null, + texture: null, + textureOptions: null, + rtt: props.rtt, + parentHasRenderTexture: props.parentHasRenderTexture + }); + // Forward loaded/failed events + this.coreNode.on('loaded', this.onTextureLoaded); + this.coreNode.on('failed', this.onTextureFailed); + this.coreNode.on('freed', this.onTextureFreed); + this.coreNode.on('outOfBounds', this.onOutOfBounds); + this.coreNode.on('inBounds', this.onInBounds); + this.coreNode.on('outOfViewport', this.onOutOfViewport); + this.coreNode.on('inViewport', this.onInViewport); + // Assign properties to this object + this.parent = props.parent; + this.shader = props.shader; + this.texture = props.texture; + this.src = props.src; + this.rtt = props.rtt; + this._data = props.data; + } + get x() { + return this.coreNode.x; + } + set x(value) { + this.coreNode.x = value; + } + get y() { + return this.coreNode.y; + } + set y(value) { + this.coreNode.y = value; + } + get width() { + return this.coreNode.width; + } + set width(value) { + this.coreNode.width = value; + } + get height() { + return this.coreNode.height; + } + set height(value) { + this.coreNode.height = value; + } + get alpha() { + return this.coreNode.alpha; + } + set alpha(value) { + this.coreNode.alpha = value; + } + get autosize() { + return this.coreNode.autosize; + } + set autosize(value) { + this.coreNode.autosize = value; + } + get clipping() { + return this.coreNode.clipping; + } + set clipping(value) { + this.coreNode.clipping = value; + } + get color() { + return this.coreNode.color; + } + set color(value) { + this.coreNode.color = value; + } + get colorTop() { + return this.coreNode.colorTop; + } + set colorTop(value) { + this.coreNode.colorTop = value; + } + get colorBottom() { + return this.coreNode.colorBottom; + } + set colorBottom(value) { + this.coreNode.colorBottom = value; + } + get colorLeft() { + return this.coreNode.colorLeft; + } + set colorLeft(value) { + this.coreNode.colorLeft = value; + } + get colorRight() { + return this.coreNode.colorRight; + } + set colorRight(value) { + this.coreNode.colorRight = value; + } + get colorTl() { + return this.coreNode.colorTl; + } + set colorTl(value) { + this.coreNode.colorTl = value; + } + get colorTr() { + return this.coreNode.colorTr; + } + set colorTr(value) { + this.coreNode.colorTr = value; + } + get colorBl() { + return this.coreNode.colorBl; + } + set colorBl(value) { + this.coreNode.colorBl = value; + } + get colorBr() { + return this.coreNode.colorBr; + } + set colorBr(value) { + this.coreNode.colorBr = value; + } + get scale() { + if (this.scaleX !== this.scaleY) { + return null; + } + return this.coreNode.scaleX; + } + set scale(value) { + // We ignore `null` when it's set. + if (value === null) { + return; + } + this.coreNode.scaleX = value; + this.coreNode.scaleY = value; + } + get scaleX() { + return this.coreNode.scaleX; + } + set scaleX(value) { + this.coreNode.scaleX = value; + } + get scaleY() { + return this.coreNode.scaleY; + } + set scaleY(value) { + this.coreNode.scaleY = value; + } + get mount() { + return this.coreNode.mount; + } + set mount(value) { + this.coreNode.mount = value; + } + get mountX() { + return this.coreNode.mountX; + } + set mountX(value) { + this.coreNode.mountX = value; + } + get mountY() { + return this.coreNode.mountY; + } + set mountY(value) { + this.coreNode.mountY = value; + } + get pivot() { + return this.coreNode.pivot; + } + set pivot(value) { + this.coreNode.pivot = value; + } + get pivotX() { + return this.coreNode.pivotX; + } + set pivotX(value) { + this.coreNode.pivotX = value; + } + get pivotY() { + return this.coreNode.pivotY; + } + set pivotY(value) { + this.coreNode.pivotY = value; + } + get rotation() { + return this.coreNode.rotation; + } + set rotation(value) { + this.coreNode.rotation = value; + } + get parent() { + return this._parent; + } + set parent(newParent) { + var _newParent$coreNode; + var oldParent = this._parent; + this._parent = newParent; + this.coreNode.parent = (_newParent$coreNode = newParent === null || newParent === void 0 ? void 0 : newParent.coreNode) !== null && _newParent$coreNode !== void 0 ? _newParent$coreNode : null; + if (oldParent) { + var index = oldParent.children.indexOf(this); + assertTruthy(index !== -1, "MainOnlyNode.parent: Node not found in old parent's children!"); + oldParent.children.splice(index, 1); + } + if (newParent) { + newParent.children.push(this); + } + } + get children() { + return this._children; + } + get zIndex() { + return this.coreNode.zIndex; + } + set zIndex(value) { + this.coreNode.zIndex = value; + } + get zIndexLocked() { + return this.coreNode.zIndexLocked; + } + set zIndexLocked(value) { + this.coreNode.zIndexLocked = value; + } + get src() { + return this._src; + } + set src(imageUrl) { + if (this._src === imageUrl) { + return; + } + this._src = imageUrl; + if (!imageUrl) { + this.texture = null; + return; + } + this.texture = this.rendererMain.createTexture('ImageTexture', { + src: imageUrl + }); + } + //#region Texture + get texture() { + return this._texture; + } + set texture(texture) { + if (this._texture === texture) { + return; + } + if (this._texture) { + this.rendererMain.textureTracker.decrementTextureRefCount(this._texture); + } + if (texture) { + this.rendererMain.textureTracker.incrementTextureRefCount(texture); + } + this._texture = texture; + if (texture) { + this.coreNode.loadTexture(texture.txType, texture.props, texture.options); + } else { + this.coreNode.unloadTexture(); + } + } + get rtt() { + return this.coreNode.rtt; + } + set rtt(value) { + if (value) { + this.texture = this.rendererMain.createTexture('RenderTexture', { + width: this.width, + height: this.height + }, { + preload: true, + flipY: true + }); + } + this.coreNode.rtt = value; + } + get parentHasRenderTexture() { + return this.coreNode.parentHasRenderTexture; + } + set parentHasRenderTexture(value) { + this.coreNode.parentHasRenderTexture = value; + } + //#endregion Texture + get shader() { + return this._shader; + } + set shader(shader) { + if (this._shader === shader) { + return; + } + this._shader = shader; + if (shader) { + this.coreNode.loadShader(shader.shType, shader.props); + } + } + get data() { + return this._data; + } + set data(d) { + this._data = santizeCustomDataMap(d); + } + destroy() { + this.emit('beforeDestroy', {}); + //use while loop since setting parent to null removes it from array + var child = this.children[0]; + while (child) { + child.destroy(); + child = this.children[0]; + } + this.coreNode.destroy(); + this.parent = null; + this.texture = null; + this.emit('afterDestroy', {}); + this.removeAllListeners(); + } + flush() { + // No-op + } + animate(props, settings) { + var animation = new CoreAnimation(this.coreNode, props, settings); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + var controller = new CoreAnimationController(this.stage.animationManager, animation); + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return controller; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Platform render loop initiator + */ + var startLoop = stage => { + var isIdle = false; + var runLoop = () => { + stage.updateAnimations(); + if (!stage.hasSceneUpdates()) { + // We still need to calculate the fps else it looks like the app is frozen + stage.calculateFps(); + setTimeout(runLoop, 16.666666666666668); + if (!isIdle) { + stage.emit('idle'); + isIdle = true; + } + return; + } + isIdle = false; + stage.drawFrame(); + requestAnimationFrame(runLoop); + }; + requestAnimationFrame(runLoop); + }; + /** + * Return unix timestamp + * @return {number} + */ + var getTimeStamp = () => { + return performance ? performance.now() : Date.now(); + }; + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class AnimationManager { + constructor() { + _defineProperty(this, "activeAnimations", new Set()); + } + registerAnimation(animation) { + this.activeAnimations.add(animation); + } + unregisterAnimation(animation) { + this.activeAnimations.delete(animation); + } + update(dt) { + this.activeAnimations.forEach(animation => { + animation.update(dt); + }); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class ImageWorkerManager { + constructor(numImageWorkers) { + _defineProperty(this, "imageWorkersEnabled", true); + _defineProperty(this, "messageManager", {}); + _defineProperty(this, "workers", []); + _defineProperty(this, "workerIndex", 0); + this.workers = this.createWorkers(numImageWorkers); + this.workers.forEach(worker => { + worker.onmessage = this.handleMessage.bind(this); + }); + } + handleMessage(event) { + var _event$data = event.data, + src = _event$data.src, + data = _event$data.data, + error = _event$data.error; + var msg = this.messageManager[src]; + if (msg) { + var _msg = _slicedToArray(msg, 2), + resolve = _msg[0], + reject = _msg[1]; + delete this.messageManager[src]; + if (error) { + reject(new Error(error)); + } else { + resolve(data); + } + } + } + createWorkers(numWorkers = 1) { + var workerCode = ` + function hasAlphaChannel(mimeType) { + return (mimeType.indexOf("image/png") !== -1); + } + + function getImage(src, premultiplyAlpha) { + return new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', src, true); + xhr.responseType = 'blob'; + + xhr.onload = function() { + if (xhr.status === 200) { + var blob = xhr.response; + var hasAlphaChannel = premultiplyAlpha !== undefined ? premultiplyAlpha : hasAlphaChannel(blob.type); + + createImageBitmap(blob, { + premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none', + colorSpaceConversion: 'none', + imageOrientation: 'none' + }).then(function(data) { + resolve({ data: data, premultiplyAlpha: premultiplyAlpha }); + }).catch(function(error) { + reject(error); + }); + } else { + reject(new Error('Failed to load image: ' + xhr.statusText)); + } + }; + + xhr.onerror = function() { + reject(new Error('Network error occurred while trying to fetch the image.')); + }; + + xhr.send(); + }); + } + + self.onmessage = (event) => { + var src = event.data.src; + var premultiplyAlpha = event.data.premultiplyAlpha; + + getImage(src, premultiplyAlpha) + .then(function(data) { + self.postMessage({ src: src, data: data }, [data.data]); + }) + .catch(function(error) { + self.postMessage({ src: src, error: error.message }); + }); + }; + `; + var blob = new Blob([workerCode.replace('"use strict";', '')], { + type: 'application/javascript' + }); + var blobURL = (self.URL ? URL : webkitURL).createObjectURL(blob); + var workers = []; + for (var i = 0; i < numWorkers; i++) { + workers.push(new Worker(blobURL)); + } + return workers; + } + getNextWorker() { + var worker = this.workers[this.workerIndex]; + this.workerIndex = (this.workerIndex + 1) % this.workers.length; + return worker; + } + convertUrlToAbsolute(url) { + var absoluteUrl = new URL(url, self.location.href); + return absoluteUrl.href; + } + getImage(src, premultiplyAlpha) { + return new Promise((resolve, reject) => { + try { + if (this.workers) { + var absoluteSrcUrl = this.convertUrlToAbsolute(src); + this.messageManager[absoluteSrcUrl] = [resolve, reject]; + this.getNextWorker().postMessage({ + src: absoluteSrcUrl, + premultiplyAlpha + }); + } + } catch (error) { + reject(error); + } + }); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Texture consisting of a random grid of greyscale pixels + * + * @remarks + * The width and height of the NoiseTexture are defined by it's + * {@link NoiseTextureProps.width} and {@link NoiseTextureProps.height} + * properties. The {@link NoiseTextureProps.cacheId} prop can be varied in order + * to bypass cache and get newly randomized texture data. + */ + class NoiseTexture extends Texture { + constructor(txManager, props) { + super(txManager); + _defineProperty(this, "props", void 0); + this.props = NoiseTexture.resolveDefaults(props); + } + getTextureData() { + var _this3 = this; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() { + var _this3$props, width, height, size, pixelData8, i, v; + return _regeneratorRuntime().wrap(function _callee6$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + _this3$props = _this3.props, width = _this3$props.width, height = _this3$props.height; + size = width * height * 4; + pixelData8 = new Uint8ClampedArray(size); + for (i = 0; i < size; i += 4) { + v = Math.floor(Math.random() * 256); + pixelData8[i] = v; + pixelData8[i + 1] = v; + pixelData8[i + 2] = v; + pixelData8[i + 3] = 255; + } + return _context7.abrupt("return", { + data: new ImageData(pixelData8, width, height) + }); + case 5: + case "end": + return _context7.stop(); + } + }, _callee6); + }))(); + } + static makeCacheKey(props) { + var resolvedProps = NoiseTexture.resolveDefaults(props); + return `NoiseTexture,${resolvedProps.width},${resolvedProps.height},${resolvedProps.cacheId}`; + } + static resolveDefaults(props) { + var _props$width9, _props$height3, _props$cacheId; + return { + width: (_props$width9 = props.width) !== null && _props$width9 !== void 0 ? _props$width9 : 128, + height: (_props$height3 = props.height) !== null && _props$height3 !== void 0 ? _props$height3 : 128, + cacheId: (_props$cacheId = props.cacheId) !== null && _props$cacheId !== void 0 ? _props$cacheId : 0 + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + _defineProperty(NoiseTexture, "z$__type__Props", void 0); + class CoreTextureManager { + constructor(numImageWorkers) { + /** + * Amount of used memory defined in pixels + */ + _defineProperty(this, "usedMemory", 0); + _defineProperty(this, "txConstructors", {}); + _defineProperty(this, "textureKeyCache", new Map()); + _defineProperty(this, "textureIdCache", new Map()); + _defineProperty(this, "ctxTextureCache", new WeakMap()); + _defineProperty(this, "textureRefCountMap", new WeakMap()); + _defineProperty(this, "imageWorkerManager", null); + _defineProperty(this, "hasCreateImageBitmap", !!self.createImageBitmap); + _defineProperty(this, "hasWorker", !!self.Worker); + /** + * Renderer that this texture manager is associated with + * + * @remarks + * This MUST be set before the texture manager is used. Otherwise errors + * will occur when using the texture manager. + */ + _defineProperty(this, "renderer", void 0); + // Register default known texture types + if (this.hasCreateImageBitmap && this.hasWorker) { + this.imageWorkerManager = new ImageWorkerManager(numImageWorkers); + } + if (!this.hasCreateImageBitmap) { + console.warn('[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.'); + } + this.registerTextureType('ImageTexture', ImageTexture); + this.registerTextureType('ColorTexture', ColorTexture); + this.registerTextureType('NoiseTexture', NoiseTexture); + this.registerTextureType('SubTexture', SubTexture); + this.registerTextureType('RenderTexture', RenderTexture); + } + registerTextureType(textureType, textureClass) { + this.txConstructors[textureType] = textureClass; + } + loadTexture(textureType, props, options = null) { + var TextureClass = this.txConstructors[textureType]; + if (!TextureClass) { + throw new Error(`Texture type "${textureType}" is not registered`); + } + var texture; + // If an ID is specified, try to get the texture from the ID cache first + if ((options === null || options === void 0 ? void 0 : options.id) !== undefined && this.textureIdCache.has(options.id)) { + // console.log('Getting texture by texture desc ID', options.id); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + texture = this.textureIdCache.get(options.id); + } + // If the texture is not found in the ID cache, try to get it from the key cache + if (!texture) { + var _options$cacheKey; + var descId = options === null || options === void 0 ? void 0 : options.id; + var cacheKey = (_options$cacheKey = options === null || options === void 0 ? void 0 : options.cacheKey) !== null && _options$cacheKey !== void 0 ? _options$cacheKey : TextureClass.makeCacheKey(props); + if (cacheKey && this.textureKeyCache.has(cacheKey)) { + // console.log('Getting texture by cache key', cacheKey); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + texture = this.textureKeyCache.get(cacheKey); + } else { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any + texture = new TextureClass(this, props); + } + if (descId) { + this.addTextureIdToCache(descId, cacheKey, texture); + } + } + if (options !== null && options !== void 0 && options.preload) { + var ctxTx = this.getCtxTexture(texture); + ctxTx.load(); + } + return texture; + } + /** + * Add a `Texture` to the texture cache by its texture desc ID and cache key + * + * @remarks + * This is used internally by the `CoreTextureManager` to cache textures + * when they are created. + * + * It handles updating the texture ID cache, texture key cache, and texture + * reference count map. + * + * @param textureDescId + * @param cacheKey + * @param texture + */ + addTextureIdToCache(textureDescId, cacheKey, texture) { + var textureIdCache = this.textureIdCache, + textureRefCountMap = this.textureRefCountMap; + textureIdCache.set(textureDescId, texture); + if (textureRefCountMap.has(texture)) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + textureRefCountMap.get(texture).count++; + } else { + textureRefCountMap.set(texture, { + cacheKey, + count: 1 + }); + if (cacheKey) { + this.textureKeyCache.set(cacheKey, texture); + } + } + } + /** + * Remove a `Texture` from the texture cache by its texture desc ID + * + * @remarks + * This is called externally by when we know (at least reasonably well) that + * the `TextureRef` in the Main API space has been is no longer used. This + * allows us to remove the `Texture` from the Usage Cache so that it can be + * garbage collected as well. + * + * @param textureDescId + */ + removeTextureIdFromCache(textureDescId) { + var _this$ctxTextureCache; + var textureIdCache = this.textureIdCache, + textureRefCountMap = this.textureRefCountMap; + var texture = textureIdCache.get(textureDescId); + if (!texture) { + // Sometimes a texture is removed from the cache before it ever gets + // added to the cache. This is fine and not an error. + return; + } + textureIdCache.delete(textureDescId); + if (textureRefCountMap.has(texture)) { + var refCountObj = textureRefCountMap.get(texture); + assertTruthy(refCountObj); + refCountObj.count--; + if (refCountObj.count === 0) { + textureRefCountMap.delete(texture); + // If the texture is not referenced anywhere else, remove it from the key cache + // as well. + // This should allow the `Texture` instance to be garbage collected. + if (refCountObj.cacheKey) { + this.textureKeyCache.delete(refCountObj.cacheKey); + } + } + } + // Free the ctx texture if it exists. + (_this$ctxTextureCache = this.ctxTextureCache.get(texture)) === null || _this$ctxTextureCache === void 0 || _this$ctxTextureCache.free(); + } + /** + * Get an object containing debug information about the texture manager. + * + * @returns + */ + getDebugInfo() { + // const textureSet = new Set(); + // for (const texture of this.textureIdCache.values()) { + // textureSet.add(texture); + // } + // for (const texture of this.textureKeyCache.values()) { + // textureSet.add(texture); + // } + // TODO: Output number of bytes used by textures + return { + keyCacheSize: this.textureKeyCache.size, + idCacheSize: this.textureIdCache.size + }; + } + /** + * Get a CoreContextTexture for the given Texture source. + * + * @remarks + * If the texture source already has an allocated CoreContextTexture, it will be + * returned from the cache. Otherwise, a new CoreContextTexture will be created + * and cached. + * + * ContextTextures are stored in a WeakMap, so they will be garbage collected + * when the Texture source is no longer referenced. + * + * @param textureSource + * @returns + */ + getCtxTexture(textureSource) { + if (this.ctxTextureCache.has(textureSource)) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return this.ctxTextureCache.get(textureSource); + } + var texture = this.renderer.createCtxTexture(textureSource); + this.ctxTextureCache.set(textureSource, texture); + return texture; + } + } + class TextureMemoryManager { + /** + * @param byteThreshold Number of texture bytes to trigger garbage collection + */ + constructor(byteThreshold) { + _defineProperty(this, "memUsed", 0); + _defineProperty(this, "textures", new Map()); + _defineProperty(this, "threshold", void 0); + this.threshold = byteThreshold; + // If the threshold is 0, we disable the memory manager by replacing the + // setTextureMemUse method with a no-op function. + if (byteThreshold === 0) { + // eslint-disable-next-line @typescript-eslint/no-empty-function + this.setTextureMemUse = () => {}; + } + } + setTextureMemUse(ctxTexture, byteSize) { + if (this.textures.has(ctxTexture)) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.memUsed -= this.textures.get(ctxTexture); + } + if (byteSize === 0) { + this.textures.delete(ctxTexture); + return; + } else { + this.memUsed += byteSize; + this.textures.set(ctxTexture, byteSize); + } + if (this.memUsed > this.threshold) { + this.gc(); + } + } + gc() { + this.textures.forEach((byteSize, ctxTexture) => { + if (!ctxTexture.renderable) { + ctxTexture.free(); + } + }); + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + var bufferMemory = 2e6; + class Stage extends EventEmitter { + /** + * Stage constructor + */ + constructor(options) { + super(); + _defineProperty(this, "options", void 0); + /// Module Instances + _defineProperty(this, "animationManager", void 0); + _defineProperty(this, "txManager", void 0); + _defineProperty(this, "txMemManager", void 0); + _defineProperty(this, "fontManager", void 0); + _defineProperty(this, "textRenderers", void 0); + _defineProperty(this, "shManager", void 0); + _defineProperty(this, "renderer", void 0); + _defineProperty(this, "root", void 0); + _defineProperty(this, "boundsMargin", void 0); + /// State + _defineProperty(this, "deltaTime", 0); + _defineProperty(this, "lastFrameTime", 0); + _defineProperty(this, "currentFrameTime", 0); + _defineProperty(this, "fpsNumFrames", 0); + _defineProperty(this, "fpsElapsedTime", 0); + _defineProperty(this, "renderRequested", false); + /// Debug data + _defineProperty(this, "contextSpy", null); + this.options = options; + var canvas = options.canvas, + clearColor = options.clearColor, + rootId = options.rootId, + debug = options.debug, + appWidth = options.appWidth, + appHeight = options.appHeight, + boundsMargin = options.boundsMargin, + enableContextSpy = options.enableContextSpy, + numImageWorkers = options.numImageWorkers, + txMemByteThreshold = options.txMemByteThreshold; + this.txManager = new CoreTextureManager(numImageWorkers); + this.txMemManager = new TextureMemoryManager(txMemByteThreshold); + this.shManager = new CoreShaderManager(); + this.animationManager = new AnimationManager(); + this.contextSpy = enableContextSpy ? new ContextSpy() : null; + var bm = [0, 0, 0, 0]; + if (boundsMargin) { + bm = Array.isArray(boundsMargin) ? boundsMargin : [boundsMargin, boundsMargin, boundsMargin, boundsMargin]; + } + this.boundsMargin = bm; + if (debug !== null && debug !== void 0 && debug.monitorTextureCache) { + setInterval(() => { + assertTruthy(this.txManager); + var debugInfo = this.txManager.getDebugInfo(); + console.log('Texture ID Cache Size: ', debugInfo.idCacheSize); + console.log('Texture Key Cache Size: ', debugInfo.keyCacheSize); + }, 1000); + } + this.renderer = new WebGlCoreRenderer({ + stage: this, + canvas, + pixelRatio: options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio, + clearColor: clearColor !== null && clearColor !== void 0 ? clearColor : 0xff000000, + bufferMemory, + txManager: this.txManager, + txMemManager: this.txMemManager, + shManager: this.shManager, + contextSpy: this.contextSpy + }); + // Must do this after renderer is created + this.txManager.renderer = this.renderer; + this.textRenderers = { + canvas: new CanvasTextRenderer(this), + sdf: new SdfTextRenderer(this) + }; + this.fontManager = new TrFontManager(this.textRenderers); + // create root node + var rootNode = new CoreNode(this, { + id: rootId, + x: 0, + y: 0, + width: appWidth, + height: appHeight, + alpha: 1, + autosize: false, + clipping: false, + color: 0x00000000, + colorTop: 0x00000000, + colorBottom: 0x00000000, + colorLeft: 0x00000000, + colorRight: 0x00000000, + colorTl: 0x00000000, + colorTr: 0x00000000, + colorBl: 0x00000000, + colorBr: 0x00000000, + zIndex: 0, + zIndexLocked: 0, + scaleX: 1, + scaleY: 1, + mountX: 0, + mountY: 0, + mount: 0, + pivot: 0.5, + pivotX: 0.5, + pivotY: 0.5, + rotation: 0, + parent: null, + texture: null, + textureOptions: null, + shader: null, + shaderProps: null, + rtt: false + }); + this.root = rootNode; + // execute platform start loop + { + startLoop(this); + } + } + /** + * Update animations + */ + updateAnimations() { + var animationManager = this.animationManager; + if (!this.root) { + return; + } + this.lastFrameTime = this.currentFrameTime; + this.currentFrameTime = getTimeStamp(); + this.deltaTime = !this.lastFrameTime ? 100 / 6 : this.currentFrameTime - this.lastFrameTime; + this.emit('frameTick', { + time: this.currentFrameTime, + delta: this.deltaTime + }); + // step animation + animationManager.update(this.deltaTime); + } + /** + * Check if the scene has updates + */ + hasSceneUpdates() { + return !!this.root.updateType || this.renderRequested; + } + /** + * Start a new frame draw + */ + drawFrame() { + var renderer = this.renderer, + renderRequested = this.renderRequested; + // Update tree if needed + if (this.root.updateType !== 0) { + this.root.update(this.deltaTime, this.root.clippingRect); + } + // Reset render operations and clear the canvas + renderer === null || renderer === void 0 || renderer.reset(); + // If we have RTT nodes draw them first + // So we can use them as textures in the main scene + if (renderer.rttNodes.length > 0) { + renderer.renderRTTNodes(); + } + // Fill quads buffer + this.addQuads(this.root); + // Perform render pass + renderer === null || renderer === void 0 || renderer.render(); + this.calculateFps(); + // Reset renderRequested flag if it was set + if (renderRequested) { + this.renderRequested = false; + } + } + calculateFps() { + // If there's an FPS update interval, emit the FPS update event + // when the specified interval has elapsed. + var fpsUpdateInterval = this.options.fpsUpdateInterval; + if (fpsUpdateInterval) { + this.fpsNumFrames++; + this.fpsElapsedTime += this.deltaTime; + if (this.fpsElapsedTime >= fpsUpdateInterval) { + var _this$contextSpy$getD, _this$contextSpy, _this$contextSpy2; + var _fps = Math.round(this.fpsNumFrames * 1000 / this.fpsElapsedTime); + this.fpsNumFrames = 0; + this.fpsElapsedTime = 0; + this.emit('fpsUpdate', { + fps: _fps, + contextSpyData: (_this$contextSpy$getD = (_this$contextSpy = this.contextSpy) === null || _this$contextSpy === void 0 ? void 0 : _this$contextSpy.getData()) !== null && _this$contextSpy$getD !== void 0 ? _this$contextSpy$getD : null + }); + (_this$contextSpy2 = this.contextSpy) === null || _this$contextSpy2 === void 0 || _this$contextSpy2.reset(); + } + } + } + addQuads(node) { + assertTruthy(this.renderer && node.globalTransform); + if (node.isRenderable) { + node.renderQuads(this.renderer); + } + for (var i = 0; i < node.children.length; i++) { + var child = node.children[i]; + if (!child) { + continue; + } + if ((child === null || child === void 0 ? void 0 : child.worldAlpha) === 0) { + continue; + } + this.addQuads(child); + } + } + /** + * Request a render pass without forcing an update + */ + requestRender() { + this.renderRequested = true; + } + /** + * Given a font name, and possible renderer override, return the best compatible text renderer. + * + * @remarks + * Will always return at least a canvas renderer if no other suitable renderer can be resolved. + * + * @param fontFamily + * @param textRendererOverride + * @returns + */ + resolveTextRenderer(trProps, textRendererOverride = null) { + var rendererId = textRendererOverride; + var overrideFallback = false; + // Check if the override is valid (if one is provided) + if (rendererId) { + var possibleRenderer = this.textRenderers[rendererId]; + if (!possibleRenderer) { + console.warn(`Text renderer override '${rendererId}' not found.`); + rendererId = null; + overrideFallback = true; + } else if (!possibleRenderer.canRenderFont(trProps)) { + console.warn(`Cannot use override text renderer '${rendererId}' for font`, trProps); + rendererId = null; + overrideFallback = true; + } + } + if (!rendererId) { + // Iterate through the text renderers and find the first one that can render the font + for (var _i8 = 0, _Object$entries = Object.entries(this.textRenderers); _i8 < _Object$entries.length; _i8++) { + var _Object$entries$_i = _slicedToArray(_Object$entries[_i8], 2), + trId = _Object$entries$_i[0], + tr = _Object$entries$_i[1]; + if (trId === 'canvas') { + // Canvas is always a fallback + continue; + } + if (tr.canRenderFont(trProps)) { + rendererId = trId; + break; + } + } + if (!rendererId) { + // If no renderer can be found, use the canvas renderer + rendererId = 'canvas'; + } + } + if (overrideFallback) { + console.warn(`Falling back to text renderer ${String(rendererId)}`); + } + // By now we are guaranteed to have a valid rendererId (at least Canvas); + var resolvedTextRenderer = this.textRenderers[rendererId]; + assertTruthy(resolvedTextRenderer, 'resolvedTextRenderer undefined'); + // Need to explicitly cast to TextRenderer because TS doesn't like + // the covariant state argument in the setter method map + return resolvedTextRenderer; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class CoreTextNode extends CoreNode { + constructor(stage, props) { + super(stage, props); + _defineProperty(this, "textRenderer", void 0); + _defineProperty(this, "trState", void 0); + _defineProperty(this, "_textRendererOverride", null); + _defineProperty(this, "onTextLoaded", () => { + var contain = this.contain; + var setWidth = this.trState.props.width; + var setHeight = this.trState.props.height; + var calcWidth = this.trState.textW || 0; + var calcHeight = this.trState.textH || 0; + if (contain === 'both') { + this.props.width = setWidth; + this.props.height = setHeight; + } else if (contain === 'width') { + this.props.width = setWidth; + this.props.height = calcHeight; + } else if (contain === 'none') { + this.props.width = calcWidth; + this.props.height = calcHeight; + } + this.updateLocalTransform(); + // Incase the RAF loop has been stopped already before text was loaded, + // we request a render so it can be drawn. + this.stage.requestRender(); + this.emit('loaded', { + type: 'text', + dimensions: { + width: this.trState.textW || 0, + height: this.trState.textH || 0 + } + }); + }); + _defineProperty(this, "onTextFailed", (target, error) => { + this.emit('failed', { + type: 'text', + error + }); + }); + this._textRendererOverride = props.textRendererOverride; + var _this$resolveTextRend = this.resolveTextRendererAndState({ + x: this.absX, + y: this.absY, + width: props.width, + height: props.height, + textAlign: props.textAlign, + color: props.color, + zIndex: props.zIndex, + contain: props.contain, + scrollable: props.scrollable, + scrollY: props.scrollY, + offsetY: props.offsetY, + letterSpacing: props.letterSpacing, + debug: props.debug, + fontFamily: props.fontFamily, + fontSize: props.fontSize, + fontStretch: props.fontStretch, + fontStyle: props.fontStyle, + fontWeight: props.fontWeight, + text: props.text, + lineHeight: props.lineHeight, + maxLines: props.maxLines, + textBaseline: props.textBaseline, + verticalAlign: props.verticalAlign, + overflowSuffix: props.overflowSuffix + }), + resolvedTextRenderer = _this$resolveTextRend.resolvedTextRenderer, + textRendererState = _this$resolveTextRend.textRendererState; + this.textRenderer = resolvedTextRenderer; + this.trState = textRendererState; + } + get width() { + return this.props.width; + } + set width(value) { + this.props.width = value; + this.textRenderer.set.width(this.trState, value); + // If not containing, we must update the local transform to account for the + // new width + if (this.contain === 'none') { + this.setUpdateType(UpdateType.Local); + } + } + get height() { + return this.props.height; + } + set height(value) { + this.props.height = value; + this.textRenderer.set.height(this.trState, value); + // If not containing in the horizontal direction, we must update the local + // transform to account for the new height + if (this.contain !== 'both') { + this.setUpdateType(UpdateType.Local); + } + } + get color() { + return this.trState.props.color; + } + set color(value) { + this.textRenderer.set.color(this.trState, value); + } + get text() { + return this.trState.props.text; + } + set text(value) { + this.textRenderer.set.text(this.trState, value); + } + get textRendererOverride() { + return this._textRendererOverride; + } + set textRendererOverride(value) { + this._textRendererOverride = value; + this.textRenderer.destroyState(this.trState); + var _this$resolveTextRend2 = this.resolveTextRendererAndState(this.trState.props), + resolvedTextRenderer = _this$resolveTextRend2.resolvedTextRenderer, + textRendererState = _this$resolveTextRend2.textRendererState; + this.textRenderer = resolvedTextRenderer; + this.trState = textRendererState; + } + get fontSize() { + return this.trState.props.fontSize; + } + set fontSize(value) { + this.textRenderer.set.fontSize(this.trState, value); + } + get fontFamily() { + return this.trState.props.fontFamily; + } + set fontFamily(value) { + this.textRenderer.set.fontFamily(this.trState, value); + } + get fontStretch() { + return this.trState.props.fontStretch; + } + set fontStretch(value) { + this.textRenderer.set.fontStretch(this.trState, value); + } + get fontStyle() { + return this.trState.props.fontStyle; + } + set fontStyle(value) { + this.textRenderer.set.fontStyle(this.trState, value); + } + get fontWeight() { + return this.trState.props.fontWeight; + } + set fontWeight(value) { + this.textRenderer.set.fontWeight(this.trState, value); + } + get textAlign() { + return this.trState.props.textAlign; + } + set textAlign(value) { + this.textRenderer.set.textAlign(this.trState, value); + } + get contain() { + return this.trState.props.contain; + } + set contain(value) { + this.textRenderer.set.contain(this.trState, value); + } + get scrollable() { + return this.trState.props.scrollable; + } + set scrollable(value) { + this.textRenderer.set.scrollable(this.trState, value); + } + get scrollY() { + return this.trState.props.scrollY; + } + set scrollY(value) { + this.textRenderer.set.scrollY(this.trState, value); + } + get offsetY() { + return this.trState.props.offsetY; + } + set offsetY(value) { + this.textRenderer.set.offsetY(this.trState, value); + } + get letterSpacing() { + return this.trState.props.letterSpacing; + } + set letterSpacing(value) { + this.textRenderer.set.letterSpacing(this.trState, value); + } + get lineHeight() { + return this.trState.props.lineHeight; + } + set lineHeight(value) { + if (this.textRenderer.set.lineHeight) { + this.textRenderer.set.lineHeight(this.trState, value); + } + } + get maxLines() { + return this.trState.props.maxLines; + } + set maxLines(value) { + if (this.textRenderer.set.maxLines) { + this.textRenderer.set.maxLines(this.trState, value); + } + } + get textBaseline() { + return this.trState.props.textBaseline; + } + set textBaseline(value) { + if (this.textRenderer.set.textBaseline) { + this.textRenderer.set.textBaseline(this.trState, value); + } + } + get verticalAlign() { + return this.trState.props.verticalAlign; + } + set verticalAlign(value) { + if (this.textRenderer.set.verticalAlign) { + this.textRenderer.set.verticalAlign(this.trState, value); + } + } + get overflowSuffix() { + return this.trState.props.overflowSuffix; + } + set overflowSuffix(value) { + if (this.textRenderer.set.overflowSuffix) { + this.textRenderer.set.overflowSuffix(this.trState, value); + } + } + get debug() { + return this.trState.props.debug; + } + set debug(value) { + this.textRenderer.set.debug(this.trState, value); + } + update(delta, parentClippingRect) { + super.update(delta, parentClippingRect); + assertTruthy(this.globalTransform); + // globalTransform is updated in super.update(delta) + this.textRenderer.set.x(this.trState, this.globalTransform.tx); + this.textRenderer.set.y(this.trState, this.globalTransform.ty); + } + checkRenderProps() { + if (this.trState.props.text !== '') { + return true; + } + return super.checkRenderProps(); + } + onChangeIsRenderable(isRenderable) { + super.onChangeIsRenderable(isRenderable); + this.textRenderer.setIsRenderable(this.trState, isRenderable); + } + renderQuads(renderer) { + var _this$props$parent5; + assertTruthy(this.globalTransform); + // Prevent quad rendering if parent has a render texture + // and this node is not the render texture + if (this.parentHasRenderTexture) { + if (!renderer.renderToTextureActive) { + return; + } + // Prevent quad rendering if parent render texture is not the active render texture + if (this.parentRenderTexture !== renderer.activeRttNode) { + return; + } + } + if (this.parentHasRenderTexture && (_this$props$parent5 = this.props.parent) !== null && _this$props$parent5 !== void 0 && _this$props$parent5.rtt) { + var _this$localTransform; + this.globalTransform = Matrix3d.identity(); + this.globalTransform.multiply((_this$localTransform = this.localTransform) !== null && _this$localTransform !== void 0 ? _this$localTransform : Matrix3d.identity()); + } + assertTruthy(this.globalTransform); + this.textRenderer.renderQuads(this.trState, this.globalTransform, this.clippingRect, this.worldAlpha, this.parentHasRenderTexture, this.framebufferDimensions); + } + /** + * Destroy the node and cleanup all resources + */ + destroy() { + super.destroy(); + this.textRenderer.destroyState(this.trState); + } + /** + * Resolve a text renderer and a new state based on the current text renderer props provided + * @param props + * @returns + */ + resolveTextRendererAndState(props) { + var resolvedTextRenderer = this.stage.resolveTextRenderer(props, this._textRendererOverride); + var textRendererState = resolvedTextRenderer.createState(props); + textRendererState.emitter.on('loaded', this.onTextLoaded); + textRendererState.emitter.on('failed', this.onTextFailed); + resolvedTextRenderer.scheduleUpdateState(textRendererState); + return { + resolvedTextRenderer, + textRendererState + }; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class MainOnlyTextNode extends MainOnlyNode { + constructor(props, rendererMain, stage) { + super(props, rendererMain, stage, new CoreTextNode(stage, { + id: getNewId(), + x: props.x, + y: props.y, + width: props.width, + height: props.height, + alpha: props.alpha, + autosize: props.autosize, + clipping: props.clipping, + color: props.color, + colorTop: props.colorTop, + colorBottom: props.colorBottom, + colorLeft: props.colorLeft, + colorRight: props.colorRight, + colorTl: props.colorTl, + colorTr: props.colorTr, + colorBl: props.colorBl, + colorBr: props.colorBr, + zIndex: props.zIndex, + zIndexLocked: props.zIndexLocked, + scaleX: props.scaleX, + scaleY: props.scaleY, + mountX: props.mountX, + mountY: props.mountY, + mount: props.mount, + pivot: props.pivot, + pivotX: props.pivotX, + pivotY: props.pivotY, + rotation: props.rotation, + // Text properties + text: props.text, + fontSize: props.fontSize, + fontFamily: props.fontFamily, + fontWeight: props.fontWeight, + fontStretch: props.fontStretch, + fontStyle: props.fontStyle, + contain: props.contain, + scrollable: props.scrollable, + letterSpacing: props.letterSpacing, + textAlign: props.textAlign, + scrollY: props.scrollY, + offsetY: props.offsetY, + textRendererOverride: props.textRendererOverride, + lineHeight: props.lineHeight, + maxLines: props.maxLines, + textBaseline: props.textBaseline, + verticalAlign: props.verticalAlign, + overflowSuffix: props.overflowSuffix, + debug: props.debug, + // These properties will get set appropriately in the base MainOnlyNode class + parent: null, + texture: null, + textureOptions: null, + shader: null, + shaderProps: null, + rtt: false, + parentHasRenderTexture: false + })); + } + get text() { + return this.coreNode.text; + } + set text(value) { + this.coreNode.text = value; + } + get textRendererOverride() { + return this.coreNode.textRendererOverride; + } + set textRendererOverride(value) { + this.coreNode.textRendererOverride = value; + } + get fontSize() { + return this.coreNode.fontSize; + } + set fontSize(value) { + this.coreNode.fontSize = value; + } + get fontFamily() { + return this.coreNode.fontFamily; + } + set fontFamily(value) { + this.coreNode.fontFamily = value; + } + get fontWeight() { + return this.coreNode.fontWeight; + } + set fontWeight(value) { + this.coreNode.fontWeight = value; + } + get fontStretch() { + return this.coreNode.fontStretch; + } + set fontStretch(value) { + this.coreNode.fontStretch = value; + } + get fontStyle() { + return this.coreNode.fontStyle; + } + set fontStyle(value) { + this.coreNode.fontStyle = value; + } + get textAlign() { + return this.coreNode.textAlign; + } + set textAlign(value) { + this.coreNode.textAlign = value; + } + get contain() { + return this.coreNode.contain; + } + set contain(value) { + this.coreNode.contain = value; + } + get scrollable() { + return this.coreNode.scrollable; + } + set scrollable(value) { + this.coreNode.scrollable = value; + } + get scrollY() { + return this.coreNode.scrollY; + } + set scrollY(value) { + this.coreNode.scrollY = value; + } + get offsetY() { + return this.coreNode.offsetY; + } + set offsetY(value) { + this.coreNode.offsetY = value; + } + get letterSpacing() { + return this.coreNode.letterSpacing; + } + set letterSpacing(value) { + this.coreNode.letterSpacing = value; + } + get lineHeight() { + return this.coreNode.lineHeight; + } + set lineHeight(value) { + if (value) { + this.coreNode.lineHeight = value; + } + } + get maxLines() { + return this.coreNode.maxLines; + } + set maxLines(value) { + if (value) { + this.coreNode.maxLines = value; + } + } + get textBaseline() { + return this.coreNode.textBaseline; + } + set textBaseline(value) { + if (value) { + this.coreNode.textBaseline = value; + } + } + get verticalAlign() { + return this.coreNode.verticalAlign; + } + set verticalAlign(value) { + if (value) { + this.coreNode.verticalAlign = value; + } + } + get overflowSuffix() { + return this.coreNode.overflowSuffix; + } + set overflowSuffix(value) { + if (value) { + this.coreNode.overflowSuffix = value; + } + } + get debug() { + return this.coreNode.debug; + } + set debug(value) { + this.coreNode.debug = value; + } + } + + /* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + class MainCoreDriver { + constructor() { + _defineProperty(this, "root", null); + _defineProperty(this, "stage", null); + _defineProperty(this, "rendererMain", null); + } + init(rendererMain, rendererSettings, canvas) { + var _this4 = this; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() { + var node; + return _regeneratorRuntime().wrap(function _callee7$(_context8) { + while (1) switch (_context8.prev = _context8.next) { + case 0: + _this4.stage = new Stage({ + rootId: getNewId(), + appWidth: rendererSettings.appWidth, + appHeight: rendererSettings.appHeight, + txMemByteThreshold: rendererSettings.txMemByteThreshold, + boundsMargin: rendererSettings.boundsMargin, + deviceLogicalPixelRatio: rendererSettings.deviceLogicalPixelRatio, + devicePhysicalPixelRatio: rendererSettings.devicePhysicalPixelRatio, + clearColor: rendererSettings.clearColor, + canvas, + fpsUpdateInterval: rendererSettings.fpsUpdateInterval, + enableContextSpy: rendererSettings.enableContextSpy, + numImageWorkers: rendererSettings.numImageWorkers, + debug: { + monitorTextureCache: false + } + }); + _this4.rendererMain = rendererMain; + assertTruthy(_this4.stage.root); + node = new MainOnlyNode(rendererMain.resolveNodeDefaults({}), _this4.rendererMain, _this4.stage, _this4.stage.root); + _this4.root = node; + node.once('beforeDestroy', _this4.onBeforeDestroyNode.bind(_this4, node)); + _this4.onCreateNode(node); + // Load the Core Extension Module if one was specified. + if (!rendererSettings.coreExtensionModule) { + _context8.next = 10; + break; + } + _context8.next = 10; + return loadCoreExtension(rendererSettings.coreExtensionModule, _this4.stage); + case 10: + // Forward fpsUpdate events from the stage to RendererMain + _this4.stage.on('fpsUpdate', (stage, fpsData) => { + _this4.onFpsUpdate(fpsData); + }); + _this4.stage.on('frameTick', (stage, frameTickData) => { + _this4.onFrameTick(frameTickData); + }); + _this4.stage.on('idle', () => { + _this4.onIdle(); + }); + case 13: + case "end": + return _context8.stop(); + } + }, _callee7); + }))(); + } + createNode(props) { + assertTruthy(this.rendererMain); + assertTruthy(this.stage); + var node = new MainOnlyNode(props, this.rendererMain, this.stage); + node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node)); + this.onCreateNode(node); + return node; + } + createTextNode(props) { + assertTruthy(this.rendererMain); + assertTruthy(this.stage); + var node = new MainOnlyTextNode(props, this.rendererMain, this.stage); + node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node)); + this.onCreateNode(node); + return node; + } + // TODO: Remove? + destroyNode(node) { + node.destroy(); + } + releaseTexture(id) { + var stage = this.stage; + assertTruthy(stage); + stage.txManager.removeTextureIdFromCache(id); + } + getRootNode() { + assertTruthy(this.root); + return this.root; + } + //#region Event Methods + // The implementations for these event methods are provided by RendererMain + onCreateNode(node) { + throw new Error('Method not implemented.'); + } + onBeforeDestroyNode(node) { + throw new Error('Method not implemented.'); + } + onFpsUpdate(fpsData) { + throw new Error('Method not implemented.'); + } + onFrameTick(frameTickData) { + throw new Error('Method not implemented.'); + } + onIdle() { + throw new Error('Method not implemented.'); + } + } + var equalFn = (a, b) => a === b; + var $PROXY = Symbol("solid-proxy"); + var $TRACK = Symbol("solid-track"); + var signalOptions = { + equals: equalFn + }; + var runEffects = runQueue; + var STALE = 1; + var PENDING = 2; + var UNOWNED = { + owned: null, + cleanups: null, + context: null, + owner: null + }; + var NO_INIT = {}; + var Owner = null; + var Transition = null; + var ExternalSourceConfig = null; + var Listener = null; + var Updates = null; + var Effects = null; + var ExecCount = 0; + function createRoot(fn, detachedOwner) { + var listener = Listener, + owner = Owner, + unowned = fn.length === 0, + current = detachedOwner === undefined ? owner : detachedOwner, + root = unowned ? UNOWNED : { + owned: null, + cleanups: null, + context: current ? current.context : null, + owner: current + }, + updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root))); + Owner = root; + Listener = null; + try { + return runUpdates(updateFn, true); + } finally { + Listener = listener; + Owner = owner; + } + } + function createSignal(value, options) { + options = options ? Object.assign({}, signalOptions, options) : signalOptions; + var s = { + value, + observers: null, + observerSlots: null, + comparator: options.equals || undefined + }; + var setter = value => { + if (typeof value === "function") { + value = value(s.value); + } + return writeSignal(s, value); + }; + return [readSignal.bind(s), setter]; + } + function createComputed(fn, value, options) { + var c = createComputation(fn, value, true, STALE); + updateComputation(c); + } + function createRenderEffect(fn, value, options) { + var c = createComputation(fn, value, false, STALE); + updateComputation(c); + } + function createEffect(fn, value, options) { + runEffects = runUserEffects; + var c = createComputation(fn, value, false, STALE); + if (!options || !options.render) c.user = true; + Effects ? Effects.push(c) : updateComputation(c); + } + function createMemo(fn, value, options) { + options = options ? Object.assign({}, signalOptions, options) : signalOptions; + var c = createComputation(fn, value, true, 0); + c.observers = null; + c.observerSlots = null; + c.comparator = options.equals || undefined; + updateComputation(c); + return readSignal.bind(c); + } + function isPromise(v) { + return v && typeof v === "object" && "then" in v; + } + function createResource(pSource, pFetcher, pOptions) { + var source; + var fetcher; + var options; + if (arguments.length === 2 && typeof pFetcher === "object" || arguments.length === 1) { + source = true; + fetcher = pSource; + options = pFetcher || {}; + } else { + source = pSource; + fetcher = pFetcher; + options = pOptions || {}; + } + var pr = null, + initP = NO_INIT, + scheduled = false, + resolved = ("initialValue" in options), + dynamic = typeof source === "function" && createMemo(source); + var contexts = new Set(), + _ref20 = (options.storage || createSignal)(options.initialValue), + _ref21 = _slicedToArray(_ref20, 2), + value = _ref21[0], + setValue = _ref21[1], + _createSignal = createSignal(undefined), + _createSignal2 = _slicedToArray(_createSignal, 2), + error = _createSignal2[0], + setError = _createSignal2[1], + _createSignal3 = createSignal(undefined, { + equals: false + }), + _createSignal4 = _slicedToArray(_createSignal3, 2), + track = _createSignal4[0], + trigger = _createSignal4[1], + _createSignal5 = createSignal(resolved ? "ready" : "unresolved"), + _createSignal6 = _slicedToArray(_createSignal5, 2), + state = _createSignal6[0], + setState = _createSignal6[1]; + function loadEnd(p, v, error, key) { + if (pr === p) { + pr = null; + key !== undefined && (resolved = true); + if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, { + value: v + })); + initP = NO_INIT; + completeLoad(v, error); + } + return v; + } + function completeLoad(v, err) { + runUpdates(() => { + if (err === undefined) setValue(() => v); + setState(err !== undefined ? "errored" : resolved ? "ready" : "unresolved"); + setError(err); + var _iterator9 = _createForOfIteratorHelper(contexts.keys()), + _step9; + try { + for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) { + var c = _step9.value; + c.decrement(); + } + } catch (err) { + _iterator9.e(err); + } finally { + _iterator9.f(); + } + contexts.clear(); + }, false); + } + function read() { + var c = SuspenseContext, + v = value(), + err = error(); + if (err !== undefined && !pr) throw err; + if (Listener && !Listener.user && c) { + createComputed(() => { + track(); + if (pr) { + if (c.resolved) ;else if (!contexts.has(c)) { + c.increment(); + contexts.add(c); + } + } + }); + } + return v; + } + function load(refetching = true) { + if (refetching !== false && scheduled) return; + scheduled = false; + var lookup = dynamic ? dynamic() : source; + if (lookup == null || lookup === false) { + loadEnd(pr, untrack(value)); + return; + } + var p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, { + value: value(), + refetching + })); + if (!isPromise(p)) { + loadEnd(pr, p, undefined, lookup); + return p; + } + pr = p; + if ("value" in p) { + if (p.status === "success") loadEnd(pr, p.value, undefined, lookup);else loadEnd(pr, undefined, undefined, lookup); + return p; + } + scheduled = true; + queueMicrotask(() => scheduled = false); + runUpdates(() => { + setState(resolved ? "refreshing" : "pending"); + trigger(); + }, false); + return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup)); + } + Object.defineProperties(read, { + state: { + get: () => state() + }, + error: { + get: () => error() + }, + loading: { + get() { + var s = state(); + return s === "pending" || s === "refreshing"; + } + }, + latest: { + get() { + if (!resolved) return read(); + var err = error(); + if (err && !pr) throw err; + return value(); + } + } + }); + if (dynamic) createComputed(() => load(false));else load(false); + return [read, { + refetch: load, + mutate: setValue + }]; + } + function createSelector(source, fn = equalFn, options) { + var subs = new Map(); + var node = createComputation(p => { + var v = source(); + var _iterator10 = _createForOfIteratorHelper(subs.entries()), + _step10; + try { + for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { + var _step10$value = _slicedToArray(_step10.value, 2), + _key7 = _step10$value[0], + val = _step10$value[1]; + if (fn(_key7, v) !== fn(_key7, p)) { + var _iterator11 = _createForOfIteratorHelper(val.values()), + _step11; + try { + for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) { + var c = _step11.value; + c.state = STALE; + if (c.pure) Updates.push(c);else Effects.push(c); + } + } catch (err) { + _iterator11.e(err); + } finally { + _iterator11.f(); + } + } + } + } catch (err) { + _iterator10.e(err); + } finally { + _iterator10.f(); + } + return v; + }, undefined, true, STALE); + updateComputation(node); + return key => { + var listener = Listener; + if (listener) { + var l; + if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener])); + onCleanup(() => { + l.delete(listener); + !l.size && subs.delete(key); + }); + } + return fn(key, node.value); + }; + } + function batch(fn) { + return runUpdates(fn, false); + } + function untrack(fn) { + if (Listener === null) return fn(); + var listener = Listener; + Listener = null; + try { + if (ExternalSourceConfig) ; + return fn(); + } finally { + Listener = listener; + } + } + function on(deps, fn, options) { + var isArray = Array.isArray(deps); + var prevInput; + var defer = options && options.defer; + return prevValue => { + var input; + if (isArray) { + input = Array(deps.length); + for (var i = 0; i < deps.length; i++) input[i] = deps[i](); + } else input = deps(); + if (defer) { + defer = false; + return prevValue; + } + var result = untrack(() => fn(input, prevInput, prevValue)); + prevInput = input; + return result; + }; + } + function onMount(fn) { + createEffect(() => untrack(fn)); + } + function onCleanup(fn) { + if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn); + return fn; + } + function getOwner() { + return Owner; + } + function runWithOwner(o, fn) { + var prev = Owner; + var prevListener = Listener; + Owner = o; + Listener = null; + try { + return runUpdates(fn, true); + } catch (err) { + handleError(err); + } finally { + Owner = prev; + Listener = prevListener; + } + } + function startTransition(fn) { + var l = Listener; + var o = Owner; + return Promise.resolve().then(() => { + Listener = l; + Owner = o; + var t; + runUpdates(fn, false); + Listener = Owner = null; + return t ? t.done : undefined; + }); + } + function createContext(defaultValue, options) { + var id = Symbol("context"); + return { + id, + Provider: createProvider(id), + defaultValue + }; + } + function useContext(context) { + return Owner && Owner.context && Owner.context[context.id] !== undefined ? Owner.context[context.id] : context.defaultValue; + } + function children(fn) { + var children = createMemo(fn); + var memo = createMemo(() => resolveChildren(children())); + memo.toArray = () => { + var c = memo(); + return Array.isArray(c) ? c : c != null ? [c] : []; + }; + return memo; + } + var SuspenseContext; + function readSignal() { + if (this.sources && this.state) { + if (this.state === STALE) updateComputation(this);else { + var updates = Updates; + Updates = null; + runUpdates(() => lookUpstream(this), false); + Updates = updates; + } + } + if (Listener) { + var sSlot = this.observers ? this.observers.length : 0; + if (!Listener.sources) { + Listener.sources = [this]; + Listener.sourceSlots = [sSlot]; + } else { + Listener.sources.push(this); + Listener.sourceSlots.push(sSlot); + } + if (!this.observers) { + this.observers = [Listener]; + this.observerSlots = [Listener.sources.length - 1]; + } else { + this.observers.push(Listener); + this.observerSlots.push(Listener.sources.length - 1); + } + } + return this.value; + } + function writeSignal(node, value, isComp) { + var current = node.value; + if (!node.comparator || !node.comparator(current, value)) { + node.value = value; + if (node.observers && node.observers.length) { + runUpdates(() => { + for (var i = 0; i < node.observers.length; i += 1) { + var o = node.observers[i]; + var TransitionRunning = Transition && Transition.running; + if (TransitionRunning && Transition.disposed.has(o)) ; + if (TransitionRunning ? !o.tState : !o.state) { + if (o.pure) Updates.push(o);else Effects.push(o); + if (o.observers) markDownstream(o); + } + if (!TransitionRunning) o.state = STALE; + } + if (Updates.length > 10e5) { + Updates = []; + if (false) ; + throw new Error(); + } + }, false); + } + } + return value; + } + function updateComputation(node) { + if (!node.fn) return; + cleanNode(node); + var time = ExecCount; + runComputation(node, node.value, time); + } + function runComputation(node, value, time) { + var nextValue; + var owner = Owner, + listener = Listener; + Listener = Owner = node; + try { + nextValue = node.fn(value); + } catch (err) { + if (node.pure) { + { + node.state = STALE; + node.owned && node.owned.forEach(cleanNode); + node.owned = null; + } + } + node.updatedAt = time + 1; + return handleError(err); + } finally { + Listener = listener; + Owner = owner; + } + if (!node.updatedAt || node.updatedAt <= time) { + if (node.updatedAt != null && "observers" in node) { + writeSignal(node, nextValue); + } else node.value = nextValue; + node.updatedAt = time; + } + } + function createComputation(fn, init, pure, state = STALE, options) { + var c = { + fn, + state: state, + updatedAt: null, + owned: null, + sources: null, + sourceSlots: null, + cleanups: null, + value: init, + owner: Owner, + context: Owner ? Owner.context : null, + pure + }; + if (Owner === null) ;else if (Owner !== UNOWNED) { + { + if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c); + } + } + return c; + } + function runTop(node) { + if (node.state === 0) return; + if (node.state === PENDING) return lookUpstream(node); + if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node); + var ancestors = [node]; + while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) { + if (node.state) ancestors.push(node); + } + for (var i = ancestors.length - 1; i >= 0; i--) { + node = ancestors[i]; + if (node.state === STALE) { + updateComputation(node); + } else if (node.state === PENDING) { + var updates = Updates; + Updates = null; + runUpdates(() => lookUpstream(node, ancestors[0]), false); + Updates = updates; + } + } + } + function runUpdates(fn, init) { + if (Updates) return fn(); + var wait = false; + if (!init) Updates = []; + if (Effects) wait = true;else Effects = []; + ExecCount++; + try { + var res = fn(); + completeUpdates(wait); + return res; + } catch (err) { + if (!wait) Effects = null; + Updates = null; + handleError(err); + } + } + function completeUpdates(wait) { + if (Updates) { + runQueue(Updates); + Updates = null; + } + if (wait) return; + var e = Effects; + Effects = null; + if (e.length) runUpdates(() => runEffects(e), false); + } + function runQueue(queue) { + for (var i = 0; i < queue.length; i++) runTop(queue[i]); + } + function runUserEffects(queue) { + var i, + userLength = 0; + for (i = 0; i < queue.length; i++) { + var e = queue[i]; + if (!e.user) runTop(e);else queue[userLength++] = e; + } + for (i = 0; i < userLength; i++) runTop(queue[i]); + } + function lookUpstream(node, ignore) { + node.state = 0; + for (var i = 0; i < node.sources.length; i += 1) { + var source = node.sources[i]; + if (source.sources) { + var state = source.state; + if (state === STALE) { + if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source); + } else if (state === PENDING) lookUpstream(source, ignore); + } + } + } + function markDownstream(node) { + for (var i = 0; i < node.observers.length; i += 1) { + var o = node.observers[i]; + if (!o.state) { + o.state = PENDING; + if (o.pure) Updates.push(o);else Effects.push(o); + o.observers && markDownstream(o); + } + } + } + function cleanNode(node) { + var i; + if (node.sources) { + while (node.sources.length) { + var source = node.sources.pop(), + index = node.sourceSlots.pop(), + obs = source.observers; + if (obs && obs.length) { + var n = obs.pop(), + s = source.observerSlots.pop(); + if (index < obs.length) { + n.sourceSlots[s] = index; + obs[index] = n; + source.observerSlots[index] = s; + } + } + } + } + if (node.owned) { + for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]); + node.owned = null; + } + if (node.cleanups) { + for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i](); + node.cleanups = null; + } + node.state = 0; + } + function castError(err) { + if (err instanceof Error) return err; + return new Error(typeof err === "string" ? err : "Unknown error", { + cause: err + }); + } + function handleError(err, owner = Owner) { + var error = castError(err); + throw error; + } + function resolveChildren(children) { + if (typeof children === "function" && !children.length) return resolveChildren(children()); + if (Array.isArray(children)) { + var results = []; + for (var i = 0; i < children.length; i++) { + var result = resolveChildren(children[i]); + Array.isArray(result) ? results.push.apply(results, result) : results.push(result); + } + return results; + } + return children; + } + function createProvider(id, options) { + return function provider(props) { + var res; + createRenderEffect(() => res = untrack(() => { + Owner.context = _objectSpread(_objectSpread({}, Owner.context), {}, { + [id]: props.value + }); + return children(() => props.children); + }), undefined); + return res; + }; + } + var FALLBACK = Symbol("fallback"); + function dispose(d) { + for (var i = 0; i < d.length; i++) d[i](); + } + function mapArray(list, mapFn, options = {}) { + var items = [], + mapped = [], + disposers = [], + len = 0, + indexes = mapFn.length > 1 ? [] : null; + onCleanup(() => dispose(disposers)); + return () => { + var newItems = list() || [], + i, + j; + newItems[$TRACK]; + return untrack(() => { + var newLen = newItems.length, + newIndices, + newIndicesNext, + temp, + tempdisposers, + tempIndexes, + start, + end, + newEnd, + item; + if (newLen === 0) { + if (len !== 0) { + dispose(disposers); + disposers = []; + items = []; + mapped = []; + len = 0; + indexes && (indexes = []); + } + if (options.fallback) { + items = [FALLBACK]; + mapped[0] = createRoot(disposer => { + disposers[0] = disposer; + return options.fallback(); + }); + len = 1; + } + } else if (len === 0) { + mapped = new Array(newLen); + for (j = 0; j < newLen; j++) { + items[j] = newItems[j]; + mapped[j] = createRoot(mapper); + } + len = newLen; + } else { + temp = new Array(newLen); + tempdisposers = new Array(newLen); + indexes && (tempIndexes = new Array(newLen)); + for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++); + for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) { + temp[newEnd] = mapped[end]; + tempdisposers[newEnd] = disposers[end]; + indexes && (tempIndexes[newEnd] = indexes[end]); + } + newIndices = new Map(); + newIndicesNext = new Array(newEnd + 1); + for (j = newEnd; j >= start; j--) { + item = newItems[j]; + i = newIndices.get(item); + newIndicesNext[j] = i === undefined ? -1 : i; + newIndices.set(item, j); + } + for (i = start; i <= end; i++) { + item = items[i]; + j = newIndices.get(item); + if (j !== undefined && j !== -1) { + temp[j] = mapped[i]; + tempdisposers[j] = disposers[i]; + indexes && (tempIndexes[j] = indexes[i]); + j = newIndicesNext[j]; + newIndices.set(item, j); + } else disposers[i](); + } + for (j = start; j < newLen; j++) { + if (j in temp) { + mapped[j] = temp[j]; + disposers[j] = tempdisposers[j]; + if (indexes) { + indexes[j] = tempIndexes[j]; + indexes[j](j); + } + } else mapped[j] = createRoot(mapper); + } + mapped = mapped.slice(0, len = newLen); + items = newItems.slice(0); + } + return mapped; + }); + function mapper(disposer) { + disposers[j] = disposer; + if (indexes) { + var _createSignal7 = createSignal(j), + _createSignal8 = _slicedToArray(_createSignal7, 2), + s = _createSignal8[0], + set = _createSignal8[1]; + indexes[j] = set; + return mapFn(newItems[j], s); + } + return mapFn(newItems[j]); + } + }; + } + function createComponent$1(Comp, props) { + return untrack(() => Comp(props || {})); + } + function trueFn() { + return true; + } + var propTraps = { + get(_, property, receiver) { + if (property === $PROXY) return receiver; + return _.get(property); + }, + has(_, property) { + if (property === $PROXY) return true; + return _.has(property); + }, + set: trueFn, + deleteProperty: trueFn, + getOwnPropertyDescriptor(_, property) { + return { + configurable: true, + enumerable: true, + get() { + return _.get(property); + }, + set: trueFn, + deleteProperty: trueFn + }; + }, + ownKeys(_) { + return _.keys(); + } + }; + function resolveSource(s) { + return !(s = typeof s === "function" ? s() : s) ? {} : s; + } + function resolveSources() { + for (var i = 0, length = this.length; i < length; ++i) { + var v = this[i](); + if (v !== undefined) return v; + } + } + function mergeProps$1(...sources) { + var proxy = false; + for (var i = 0; i < sources.length; i++) { + var s = sources[i]; + proxy = proxy || !!s && $PROXY in s; + sources[i] = typeof s === "function" ? (proxy = true, createMemo(s)) : s; + } + if (proxy) { + return new Proxy({ + get(property) { + for (var _i9 = sources.length - 1; _i9 >= 0; _i9--) { + var v = resolveSource(sources[_i9])[property]; + if (v !== undefined) return v; + } + }, + has(property) { + for (var _i10 = sources.length - 1; _i10 >= 0; _i10--) { + if (property in resolveSource(sources[_i10])) return true; + } + return false; + }, + keys() { + var keys = []; + for (var _i11 = 0; _i11 < sources.length; _i11++) keys.push(...Object.keys(resolveSource(sources[_i11]))); + return [...new Set(keys)]; + } + }, propTraps); + } + var sourcesMap = {}; + var defined = Object.create(null); + for (var _i12 = sources.length - 1; _i12 >= 0; _i12--) { + var source = sources[_i12]; + if (!source) continue; + var sourceKeys = Object.getOwnPropertyNames(source); + var _loop = function _loop() { + var key = sourceKeys[_i13]; + if (key === "__proto__" || key === "constructor") return 1; // continue + var desc = Object.getOwnPropertyDescriptor(source, key); + if (!defined[key]) { + defined[key] = desc.get ? { + enumerable: true, + configurable: true, + get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)]) + } : desc.value !== undefined ? desc : undefined; + } else { + var _sources = sourcesMap[key]; + if (_sources) { + if (desc.get) _sources.push(desc.get.bind(source));else if (desc.value !== undefined) _sources.push(() => desc.value); + } + } + }; + for (var _i13 = sourceKeys.length - 1; _i13 >= 0; _i13--) { + if (_loop()) continue; + } + } + var target = {}; + var definedKeys = Object.keys(defined); + for (var _i14 = definedKeys.length - 1; _i14 >= 0; _i14--) { + var _key8 = definedKeys[_i14], + desc = defined[_key8]; + if (desc && desc.get) Object.defineProperty(target, _key8, desc);else target[_key8] = desc ? desc.value : undefined; + } + return target; + } + function splitProps(props, ...keys) { + if ($PROXY in props) { + var blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]); + var res = keys.map(k => { + return new Proxy({ + get(property) { + return k.includes(property) ? props[property] : undefined; + }, + has(property) { + return k.includes(property) && property in props; + }, + keys() { + return k.filter(property => property in props); + } + }, propTraps); + }); + res.push(new Proxy({ + get(property) { + return blocked.has(property) ? undefined : props[property]; + }, + has(property) { + return blocked.has(property) ? false : property in props; + }, + keys() { + return Object.keys(props).filter(k => !blocked.has(k)); + } + }, propTraps)); + return res; + } + var otherObject = {}; + var objects = keys.map(() => ({})); + var _iterator12 = _createForOfIteratorHelper(Object.getOwnPropertyNames(props)), + _step12; + try { + for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) { + var propName = _step12.value; + var desc = Object.getOwnPropertyDescriptor(props, propName); + var isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable; + var _blocked = false; + var objectIndex = 0; + var _iterator13 = _createForOfIteratorHelper(keys), + _step13; + try { + for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) { + var k = _step13.value; + if (k.includes(propName)) { + _blocked = true; + isDefaultDesc ? objects[objectIndex][propName] = desc.value : Object.defineProperty(objects[objectIndex], propName, desc); + } + ++objectIndex; + } + } catch (err) { + _iterator13.e(err); + } finally { + _iterator13.f(); + } + if (!_blocked) { + isDefaultDesc ? otherObject[propName] = desc.value : Object.defineProperty(otherObject, propName, desc); + } + } + } catch (err) { + _iterator12.e(err); + } finally { + _iterator12.f(); + } + return [...objects, otherObject]; + } + var narrowedError = name => `Stale read from <${name}>.`; + function For(props) { + var fallback = "fallback" in props && { + fallback: () => props.fallback + }; + return createMemo(mapArray(() => props.each, props.children, fallback || undefined)); + } + function Show(props) { + var keyed = props.keyed; + var condition = createMemo(() => props.when, undefined, { + equals: (a, b) => keyed ? a === b : !a === !b + }); + return createMemo(() => { + var c = condition(); + if (c) { + var child = props.children; + var fn = typeof child === "function" && child.length > 0; + return fn ? untrack(() => child(keyed ? c : () => { + if (!untrack(condition)) throw narrowedError("Show"); + return props.when; + })) : child; + } + return props.fallback; + }, undefined, undefined); + } + function resetErrorBoundaries() {} + var DEV = undefined; + var renderer; + var createShader; + function startLightningRenderer(options = {}, rootId = "app") { + var driver = new MainCoreDriver(); + renderer = new RendererMain(options, rootId, driver); + createShader = renderer.createShader.bind(renderer); + return renderer; + } + class Children extends Array { + constructor(node) { + super(); + _defineProperty(this, "_parent", void 0); + this._parent = node; + } + get selected() { + return this[this._parent.selected || 0]; + } + get firstChild() { + return this[0]; + } + insert(node, beforeNode) { + if (beforeNode) { + var index = this.indexOf(beforeNode); + this.splice(index, 0, node); + } else { + this.push(node); + } + node.parent = this._parent; + this._parent._isDirty = true; + } + remove(node) { + var nodeIndexToRemove = this.indexOf(node); + if (nodeIndexToRemove >= 0) { + this.splice(nodeIndexToRemove, 1); + } + } + } + function isDevEnv() { + return { + "BASE_URL": "/solid-demo-app/", + "MODE": "production", + "DEV": false, + "PROD": true, + "SSR": false, + "LEGACY": true + } && false; + } + var isDev$1 = isDevEnv() || false; + var config = { + debug: false, + animationsEnabled: true, + animationSettings: { + duration: 250, + easing: "ease-in-out" + }, + fontSettings: { + fontFamily: "Ubuntu", + fontSize: 100 + } + }; + function hasDebug(node) { + return isObject(node) && node.debug; + } + function log(msg, node, ...args) { + if (isDev$1) { + if (config.debug || hasDebug(node) || hasDebug(args[0])) { + console.log(msg, node, ...args); + } + } + } + function isFunc$1(item) { + return typeof item === "function"; + } + function isObject(item) { + return typeof item === "object"; + } + function isArray$1(item) { + return Array.isArray(item); + } + function isString(item) { + return typeof item === "string"; + } + function isNumber(item) { + return typeof item === "number"; + } + function isInteger(item) { + return Number.isInteger(item); + } + function keyExists(obj, keys) { + var _iterator14 = _createForOfIteratorHelper(keys), + _step14; + try { + for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) { + var _key9 = _step14.value; + if (_key9 in obj) { + return true; + } + } + } catch (err) { + _iterator14.e(err); + } finally { + _iterator14.f(); + } + return false; + } + function flattenStyles(obj, result = {}) { + if (isArray$1(obj)) { + obj.forEach(item => { + flattenStyles(item, result); + }); + } else if (obj) { + for (var _key10 in obj) { + if (result[_key10] === void 0) { + result[_key10] = obj[_key10]; + } + } + } + return result; + } + class States extends Array { + constructor(callback, initialState = {}) { + if (isArray$1(initialState)) { + super(...initialState); + _defineProperty(this, "onChange", void 0); + } else if (isString(initialState)) { + super(initialState); + _defineProperty(this, "onChange", void 0); + } else { + super(...Object.entries(initialState).filter(([_key, value]) => value).map(([key]) => key)); + _defineProperty(this, "onChange", void 0); + } + this.onChange = callback; + return this; + } + has(state) { + return this.indexOf(state) >= 0; + } + is(state) { + return this.indexOf(state) >= 0; + } + add(state) { + this.push(state); + this.onChange(); + } + toggle(state) { + if (this.has(state)) { + this.remove(state); + } else { + this.add(state); + } + } + remove(state) { + var stateIndexToRemove = this.indexOf(state); + if (stateIndexToRemove >= 0) { + this.splice(stateIndexToRemove, 1); + this.onChange(); + } + } + } + function calculateFlex(node) { + var children = []; + var hasOrder = false; + for (var i = 0; i < node.children.length; i++) { + var c = node.children[i]; + if (c.name === "TextNode") { + continue; + } + if (c.flexItem === false) { + continue; + } + if (c.name === "text" && c.text !== "" && !(c.width || c.height)) { + return false; + } + if (c.flexOrder !== void 0) { + hasOrder = true; + } + children.push(c); + } + if (hasOrder) { + children.sort((a, b) => (a.flexOrder || 0) - (b.flexOrder || 0)); + } + var numChildren = children.length; + var direction = node.flexDirection || "row"; + var isRow = direction === "row"; + var dimension = isRow ? "width" : "height"; + var crossDimension = isRow ? "height" : "width"; + var marginOne = isRow ? "marginLeft" : "marginTop"; + var marginTwo = isRow ? "marginRight" : "marginBottom"; + var prop = isRow ? "x" : "y"; + var crossProp = isRow ? "y" : "x"; + var containerSize = node[dimension] || 0; + var containerCrossSize = node[crossDimension] || 0; + var gap = node.gap || 0; + var justify = node.justifyContent || "flexStart"; + var align = node.alignItems; + var itemSize = 0; + if (["center", "spaceBetween", "spaceEvenly"].includes(justify)) { + itemSize = children.reduce((prev, c) => prev + (c[dimension] || 0), 0); + } + var crossAlignChild = containerCrossSize && align ? c => { + if (align === "flexStart") { + c[crossProp] = 0; + } else if (align === "center") { + c[crossProp] = (containerCrossSize - (c[crossDimension] || 0)) / 2; + } else if (align === "flexEnd") { + c[crossProp] = containerCrossSize - (c[crossDimension] || 0); + } + } : c => c; + if (justify === "flexStart") { + var start = 0; + children.forEach(c => { + c[prop] = start + (c[marginOne] || 0); + start += (c[dimension] || 0) + gap + (c[marginOne] || 0) + (c[marginTwo] || 0); + crossAlignChild(c); + }); + if (node.flexBoundary !== "fixed") { + var calculatedSize = start - gap; + if (calculatedSize !== node[dimension]) { + node[dimension] = calculatedSize; + return true; + } + } + } else if (justify === "flexEnd") { + var _start = containerSize; + for (var _i15 = numChildren - 1; _i15 >= 0; _i15--) { + var _c3 = children[_i15]; + assertTruthy(_c3); + _c3[prop] = _start - (_c3[dimension] || 0) - (_c3[marginTwo] || 0); + _start -= (_c3[dimension] || 0) + gap + (_c3[marginOne] || 0) + (_c3[marginTwo] || 0); + crossAlignChild(_c3); + } + } else if (justify === "center") { + var _start2 = (containerSize - (itemSize + gap * (numChildren - 1))) / 2; + children.forEach(c => { + c[prop] = _start2; + _start2 += (c[dimension] || 0) + gap; + crossAlignChild(c); + }); + } else if (justify === "spaceBetween") { + var toPad = (containerSize - itemSize) / (numChildren - 1); + var _start3 = 0; + children.forEach(c => { + c[prop] = _start3; + _start3 += (c[dimension] || 0) + toPad; + crossAlignChild(c); + }); + } else if (justify === "spaceEvenly") { + var _toPad = (containerSize - itemSize) / (numChildren + 1); + var _start4 = _toPad; + children.forEach(c => { + c[prop] = _start4; + _start4 += (c[dimension] || 0) + _toPad; + crossAlignChild(c); + }); + } + return false; + } + var _createSignal9 = createSignal(void 0), + _createSignal10 = _slicedToArray(_createSignal9, 2), + activeElement = _createSignal10[0], + setActiveElement = _createSignal10[1]; + var defaultAnimationSettings = config.animationSettings; + function convertEffectsToShader(styleEffects) { + var effects = []; + for (var _i16 = 0, _Object$entries2 = Object.entries(styleEffects); _i16 < _Object$entries2.length; _i16++) { + var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i16], 2), + type = _Object$entries2$_i[0], + props = _Object$entries2$_i[1]; + effects.push({ + type, + props + }); + } + return createShader("DynamicShader", { + effects + }); + } + function borderAccessor(direction = "") { + return { + set(value) { + if (isNumber(value)) { + value = { + width: value, + color: 255 + }; + } + this.effects = _objectSpread(_objectSpread({}, this.effects || {}), { + [`border${direction}`]: value + }); + this[`_border${direction}`] = value; + }, + get() { + return this[`_border${direction}`]; + } + }; + } + var LightningRendererNumberProps = ["alpha", "color", "colorTop", "colorRight", "colorLeft", "colorBottom", "colorTl", "colorTr", "colorBl", "colorBr", "height", "fontSize", "lineHeight", "mount", "mountX", "mountY", "pivot", "pivotX", "pivotY", "rotation", "scale", "width", "worldX", "worldY", "x", "y", "zIndex", "zIndexLocked"]; + var LightningRendererNonAnimatingProps = ["autosize", "clipping", "contain", "fontFamily", "fontStretch", "fontStyle", "fontWeight", "letterSpacing", "maxLines", "offsetY", "overflowSuffix", "rtt", "scrollable", "scrollY", "src", "text", "textAlign", "textBaseline", "textOverflow", "texture", "verticalAlign", "wordWrap"]; + class ElementNode extends Object { + constructor(name) { + super(); + _defineProperty(this, "id", void 0); + _defineProperty(this, "debug", void 0); + _defineProperty(this, "name", void 0); + _defineProperty(this, "lng", void 0); + _defineProperty(this, "renderer", void 0); + _defineProperty(this, "selected", void 0); + _defineProperty(this, "autofocus", void 0); + _defineProperty(this, "flexItem", void 0); + _defineProperty(this, "flexOrder", void 0); + _defineProperty(this, "flexBoundary", void 0); + // default is undefined - contained for flex calculated size + _defineProperty(this, "_queueDelete", void 0); + _defineProperty(this, "forwardFocus", void 0); + _defineProperty(this, "_undoStyles", void 0); + _defineProperty(this, "_renderProps", void 0); + _defineProperty(this, "_effects", void 0); + _defineProperty(this, "_parent", void 0); + _defineProperty(this, "_shader", void 0); + _defineProperty(this, "_style", void 0); + _defineProperty(this, "_states", void 0); + _defineProperty(this, "_events", void 0); + _defineProperty(this, "_animationSettings", void 0); + _defineProperty(this, "_borderRadius", void 0); + _defineProperty(this, "_border", void 0); + _defineProperty(this, "_borderLeft", void 0); + _defineProperty(this, "_borderRight", void 0); + _defineProperty(this, "_borderTop", void 0); + _defineProperty(this, "_borderBottom", void 0); + _defineProperty(this, "_autosized", void 0); + // Public but uses _ prefix + _defineProperty(this, "_isDirty", void 0); + // Public but uses _ prefix + _defineProperty(this, "_animationQueue", []); + _defineProperty(this, "_animationQueueSettings", void 0); + _defineProperty(this, "_animationRunning", false); + _defineProperty(this, "children", void 0); + this.name = name; + this._renderProps = {}; + this.children = new Children(this); + } + get effects() { + return this._effects; + } + set effects(v) { + this._effects = v; + if (this.lng) { + this.shader = convertEffectsToShader(v); + } + } + get parent() { + return this._parent; + } + set parent(p) { + this._parent = p; + if (this.lng) { + var _p$lng; + this.lng.parent = (_p$lng = p === null || p === void 0 ? void 0 : p.lng) !== null && _p$lng !== void 0 ? _p$lng : null; + } + } + get shader() { + return this._shader; + } + set shader(v) { + if (isArray$1(v)) { + this._shader = createShader(...v); + } else { + this._shader = v; + } + this._sendToLightning("shader", this._shader); + } + _sendToLightningAnimatable(name, value) { + if (this.lng) { + if (config.animationsEnabled && this.transition && (this.transition === true || this.transition[name])) { + var animationSettings = this.transition === true || this.transition[name] === true ? void 0 : this.transition[name]; + return this.animate({ + [name]: value + }, animationSettings).start(); + } + this.lng[name] = value; + } else { + this._renderProps[name] = value; + } + } + _sendToLightning(name, value) { + if (this.lng) { + this.lng[name] = value; + } else { + this._renderProps[name] = value; + } + } + animate(props, animationSettings) { + assertTruthy(this.lng, "Node must be rendered before animating"); + return this.lng.animate(props, animationSettings || this.animationSettings); + } + chain(props, animationSettings) { + if (this._animationRunning) { + this._animationQueue = []; + this._animationRunning = false; + } + if (animationSettings) { + this._animationQueueSettings = animationSettings; + } else if (!this._animationQueueSettings) { + this._animationQueueSettings = animationSettings || this.animationSettings; + } + animationSettings = animationSettings || this._animationQueueSettings; + this._animationQueue.push({ + props, + animationSettings + }); + return this; + } + start() { + var _this5 = this; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() { + var animation; + return _regeneratorRuntime().wrap(function _callee8$(_context9) { + while (1) switch (_context9.prev = _context9.next) { + case 0: + animation = _this5._animationQueue.shift(); + case 1: + if (!animation) { + _context9.next = 8; + break; + } + _this5._animationRunning = true; + _context9.next = 5; + return _this5.animate(animation.props, animation.animationSettings).start().waitUntilStopped(); + case 5: + animation = _this5._animationQueue.shift(); + _context9.next = 1; + break; + case 8: + _this5._animationRunning = false; + _this5._animationQueueSettings = void 0; + case 10: + case "end": + return _context9.stop(); + } + }, _callee8); + }))(); + } + setFocus() { + if (this.lng) { + if (this.forwardFocus !== void 0) { + if (isFunc$1(this.forwardFocus)) { + if (this.forwardFocus.call(this, this) !== false) { + return; + } + } else { + var focusedIndex = typeof this.forwardFocus === "number" ? this.forwardFocus : null; + if (focusedIndex !== null && focusedIndex < this.children.length) { + var child = this.children[focusedIndex]; + child instanceof ElementNode && child.setFocus(); + return; + } + } + } + queueMicrotask(() => setActiveElement(this)); + } else { + this.autofocus = true; + } + } + isTextNode() { + return this.name === "text"; + } + _resizeOnTextLoad() { + this.lng.on("loaded", (_node, loadedPayload) => { + if (loadedPayload.type === "text") { + var dimensions = loadedPayload.dimensions; + this.parent.updateLayout(this, dimensions); + } + }); + } + getText() { + return this.children.map(c => c.text).join(""); + } + destroy() { + if (this._queueDelete) { + var _this$lng; + (_this$lng = this.lng) === null || _this$lng === void 0 || _this$lng.destroy(); + } + } + // Must be set before render + set onEvents(events) { + this._events = events; + } + get onEvents() { + return this._events || []; + } + set style(values) { + if (isArray$1(values)) { + this._style = flattenStyles(values); + } else { + this._style = values; + } + for (var _key11 in this._style) { + if (this[_key11] === void 0) { + this[_key11] = this._style[_key11]; + } + } + } + get style() { + return this._style; + } + get hasChildren() { + return this.children.length > 0; + } + getChildById(id) { + return this.children.find(c => c.id === id); + } + searchChildrenById(id) { + for (var i = 0; i < this.children.length; i++) { + var child = this.children[i]; + if (child instanceof ElementNode) { + if (child.id === id) { + return child; + } + var found = child.searchChildrenById(id); + if (found) { + return found; + } + } + } + } + set states(states) { + this._states = new States(this._stateChanged.bind(this), states); + if (this.lng) { + this._stateChanged(); + } + } + get states() { + this._states = this._states || new States(this._stateChanged.bind(this)); + return this._states; + } + get animationSettings() { + return this._animationSettings || defaultAnimationSettings; + } + set animationSettings(animationSettings) { + this._animationSettings = animationSettings; + } + updateLayout(child, dimensions) { + if (this.hasChildren) { + log("Layout: ", this); + var changedLayout = false; + if (isFunc$1(this.onBeforeLayout)) { + changedLayout = this.onBeforeLayout.call(this, child, dimensions); + } + if (this.display === "flex") { + if (calculateFlex(this) || changedLayout) { + var _this$parent3; + (_this$parent3 = this.parent) === null || _this$parent3 === void 0 || _this$parent3.updateLayout(); + } + } else if (changedLayout) { + var _this$parent4; + (_this$parent4 = this.parent) === null || _this$parent4 === void 0 || _this$parent4.updateLayout(); + } + isFunc$1(this.onLayout) && this.onLayout.call(this, child, dimensions); + } + } + _stateChanged() { + log("State Changed: ", this, this.states); + if (this.forwardStates) { + var states2 = this.states.slice(); + this.children.forEach(c => c.states = states2); + } + var states = this.states; + if (this._undoStyles || this.style && keyExists(this.style, states)) { + this._undoStyles = this._undoStyles || []; + var stylesToUndo = {}; + this._undoStyles.forEach(styleKey => { + stylesToUndo[styleKey] = this.style[styleKey]; + }); + var newStyles = states.reduce((acc, state) => { + var styles = this.style[state]; + if (styles) { + acc = _objectSpread(_objectSpread({}, acc), styles); + } + return acc; + }, {}); + this._undoStyles = Object.keys(newStyles); + if (newStyles.transition !== void 0) { + this.transition = newStyles.transition; + } + Object.assign(this, stylesToUndo, newStyles); + } + } + render() { + var node = this; + var parent = this.parent; + if (!parent) { + console.warn("Parent not set - no node created for: ", this); + return; + } + if (!parent.lng) { + console.warn("Parent not rendered yet: ", this); + return; + } + if (this.lng) { + console.warn("Node already rendered: ", this); + return; + } + if (parent._isDirty) { + parent.updateLayout(); + parent._isDirty = false; + } + if (this.states.length) { + this._stateChanged(); + } + var props = node._renderProps; + props.x = props.x || 0; + props.y = props.y || 0; + if (parent.lng) { + props.parent = parent.lng; + } + if (node._effects) { + this.shader = convertEffectsToShader(node._effects); + } + if (node.isTextNode()) { + if (config.fontSettings) { + for (var _key12 in config.fontSettings) { + if (props[_key12] === void 0) { + props[_key12] = config.fontSettings[_key12]; + } + } + } + props.text = node.getText(); + if (props.contain) { + if (!props.width) { + props.width = (parent.width || 0) - props.x - (props.marginRight || 0); + node._autosized = true; + } + if (props.contain === "both" && !props.height && !props.maxLines) { + props.height = (parent.height || 0) - props.y - (props.marginBottom || 0); + node._autosized = true; + } + } + log("Rendering: ", this, props); + node.lng = renderer.createTextNode(props); + if (!props.width || !props.height) { + node._autosized = true; + node._resizeOnTextLoad(); + } + } else { + if (!props.texture) { + if (isNaN(props.width)) { + props.width = (parent.width || 0) - props.x; + node._autosized = true; + } + if (isNaN(props.height)) { + props.height = (parent.height || 0) - props.y; + node._autosized = true; + } + if (!props.color && !props.src) { + props.color = 0; + } + } + log("Rendering: ", this, props); + node.lng = renderer.createNode(props); + } + if (node.onFail) { + node.lng.on("failed", node.onFail); + } + if (node.onLoad) { + node.lng.on("loaded", node.onLoad); + } + isFunc$1(this.onCreate) && this.onCreate.call(this, node); + node.onEvents.forEach(([name, handler]) => { + var _node$lng; + (_node$lng = node.lng) === null || _node$lng === void 0 || _node$lng.on(name, (inode, data) => handler(node, data)); + }); + if (node.lng.div) { + node.lng.div.solid = node; + } + if (node.name !== "text") { + node.children.forEach(c => { + if (c.render) { + c.render(); + } else if (c.text !== "") { + console.warn("TextNode outside of : ", c); + } + }); + } + node.autofocus && node.setFocus(); + delete this._renderProps; + } + } + var _loop2 = function _loop2() { + var key = _LightningRendererNum[_i17]; + Object.defineProperty(ElementNode.prototype, key, { + get() { + return this.lng ? this.lng[key] : this._renderProps[key]; + }, + set(v) { + this._sendToLightningAnimatable(key, v); + } + }); + }; + for (var _i17 = 0, _LightningRendererNum = LightningRendererNumberProps; _i17 < _LightningRendererNum.length; _i17++) { + _loop2(); + } + var _loop3 = function _loop3() { + var key = _LightningRendererNon[_i18]; + Object.defineProperty(ElementNode.prototype, key, { + get() { + return this.lng ? this.lng[key] : this._renderProps[key]; + }, + set(v) { + this._sendToLightning(key, v); + } + }); + }; + for (var _i18 = 0, _LightningRendererNon = LightningRendererNonAnimatingProps; _i18 < _LightningRendererNon.length; _i18++) { + _loop3(); + } + Object.defineProperties(ElementNode.prototype, { + borderRadius: { + set(radius) { + this._borderRadius = radius; + this.effects = _objectSpread(_objectSpread({}, this.effects || {}), { + radius: { + radius + } + }); + }, + get() { + return this._borderRadius; + } + }, + border: borderAccessor(), + borderLeft: borderAccessor("Left"), + borderRight: borderAccessor("Right"), + borderTop: borderAccessor("Top"), + borderBottom: borderAccessor("Bottom") + }); + Object.defineProperties(ElementNode.prototype, { + linearGradient: { + set(props = {}) { + this._linearGradient = props; + this.effects = _objectSpread(_objectSpread({}, this.effects || {}), { + linearGradient: props + }); + }, + get() { + return this._linearGradient; + } + } + }); + var Text = props => (() => { + var _el$ = createElement("text"); + spread(_el$, props, false); + return _el$; + })(); + var View = props => (() => { + var _el$ = createElement("node"); + spread(_el$, props, false); + return _el$; + })(); + function createRenderer$1({ + createElement, + createTextNode, + isTextNode, + replaceText, + insertNode, + removeNode, + setProperty, + getParentNode, + getFirstChild, + getNextSibling + }) { + function insert(parent, accessor, marker, initial) { + if (marker !== undefined && !initial) initial = []; + if (typeof accessor !== "function") return insertExpression(parent, accessor, initial, marker); + createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial); + } + function insertExpression(parent, value, current, marker, unwrapArray) { + while (typeof current === "function") current = current(); + if (value === current) return current; + var t = typeof value, + multi = marker !== undefined; + if (t === "string" || t === "number") { + if (t === "number") value = value.toString(); + if (multi) { + var node = current[0]; + if (node && isTextNode(node)) { + replaceText(node, value); + } else node = createTextNode(value); + current = cleanChildren(parent, current, marker, node); + } else { + if (current !== "" && typeof current === "string") { + replaceText(getFirstChild(parent), current = value); + } else { + cleanChildren(parent, current, marker, createTextNode(value)); + current = value; + } + } + } else if (value == null || t === "boolean") { + current = cleanChildren(parent, current, marker); + } else if (t === "function") { + createRenderEffect(() => { + var v = value(); + while (typeof v === "function") v = v(); + current = insertExpression(parent, v, current, marker); + }); + return () => current; + } else if (Array.isArray(value)) { + var array = []; + if (normalizeIncomingArray(array, value, unwrapArray)) { + createRenderEffect(() => current = insertExpression(parent, array, current, marker, true)); + return () => current; + } + if (array.length === 0) { + var replacement = cleanChildren(parent, current, marker); + if (multi) return current = replacement; + } else { + if (Array.isArray(current)) { + if (current.length === 0) { + appendNodes(parent, array, marker); + } else reconcileArrays(parent, current, array); + } else if (current == null || current === "") { + appendNodes(parent, array); + } else { + reconcileArrays(parent, multi && current || [getFirstChild(parent)], array); + } + } + current = array; + } else { + if (Array.isArray(current)) { + if (multi) return current = cleanChildren(parent, current, marker, value); + cleanChildren(parent, current, null, value); + } else if (current == null || current === "" || !getFirstChild(parent)) { + insertNode(parent, value); + } else replaceNode(parent, value, getFirstChild(parent)); + current = value; + } + return current; + } + function normalizeIncomingArray(normalized, array, unwrap) { + var dynamic = false; + for (var i = 0, len = array.length; i < len; i++) { + var item = array[i], + t = void 0; + if (item == null || item === true || item === false) ;else if (Array.isArray(item)) { + dynamic = normalizeIncomingArray(normalized, item) || dynamic; + } else if ((t = typeof item) === "string" || t === "number") { + normalized.push(createTextNode(item)); + } else if (t === "function") { + if (unwrap) { + while (typeof item === "function") item = item(); + dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic; + } else { + normalized.push(item); + dynamic = true; + } + } else normalized.push(item); + } + return dynamic; + } + function reconcileArrays(parentNode, a, b) { + var bLength = b.length, + aEnd = a.length, + bEnd = bLength, + aStart = 0, + bStart = 0, + after = getNextSibling(a[aEnd - 1]), + map = null; + while (aStart < aEnd || bStart < bEnd) { + if (a[aStart] === b[bStart]) { + aStart++; + bStart++; + continue; + } + while (a[aEnd - 1] === b[bEnd - 1]) { + aEnd--; + bEnd--; + } + if (aEnd === aStart) { + var node = bEnd < bLength ? bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart] : after; + while (bStart < bEnd) insertNode(parentNode, b[bStart++], node); + } else if (bEnd === bStart) { + while (aStart < aEnd) { + if (!map || !map.has(a[aStart])) removeNode(parentNode, a[aStart]); + aStart++; + } + } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) { + var _node2 = getNextSibling(a[--aEnd]); + insertNode(parentNode, b[bStart++], getNextSibling(a[aStart++])); + insertNode(parentNode, b[--bEnd], _node2); + a[aEnd] = b[bEnd]; + } else { + if (!map) { + map = new Map(); + var i = bStart; + while (i < bEnd) map.set(b[i], i++); + } + var index = map.get(a[aStart]); + if (index != null) { + if (bStart < index && index < bEnd) { + var _i19 = aStart, + sequence = 1, + t = void 0; + while (++_i19 < aEnd && _i19 < bEnd) { + if ((t = map.get(a[_i19])) == null || t !== index + sequence) break; + sequence++; + } + if (sequence > index - bStart) { + var _node3 = a[aStart]; + while (bStart < index) insertNode(parentNode, b[bStart++], _node3); + } else replaceNode(parentNode, b[bStart++], a[aStart++]); + } else aStart++; + } else removeNode(parentNode, a[aStart++]); + } + } + } + function cleanChildren(parent, current, marker, replacement) { + if (marker === undefined) { + var removed; + while (removed = getFirstChild(parent)) removeNode(parent, removed); + replacement && insertNode(parent, replacement); + return ""; + } + var node = replacement || createTextNode(""); + if (current.length) { + var inserted = false; + for (var i = current.length - 1; i >= 0; i--) { + var el = current[i]; + if (node !== el) { + var isParent = getParentNode(el) === parent; + if (!inserted && !i) isParent ? replaceNode(parent, node, el) : insertNode(parent, node, marker);else isParent && removeNode(parent, el); + } else inserted = true; + } + } else insertNode(parent, node, marker); + return [node]; + } + function appendNodes(parent, array, marker) { + for (var i = 0, len = array.length; i < len; i++) insertNode(parent, array[i], marker); + } + function replaceNode(parent, newNode, oldNode) { + insertNode(parent, newNode, oldNode); + removeNode(parent, oldNode); + } + function spreadExpression(node, props, prevProps = {}, skipChildren) { + props || (props = {}); + if (!skipChildren) { + createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children)); + } + createRenderEffect(() => props.ref && props.ref(node)); + createRenderEffect(() => { + for (var prop in props) { + if (prop === "children" || prop === "ref") continue; + var value = props[prop]; + if (value === prevProps[prop]) continue; + setProperty(node, prop, value, prevProps[prop]); + prevProps[prop] = value; + } + }); + return prevProps; + } + return { + render(code, element) { + var disposer; + createRoot(dispose => { + disposer = dispose; + insert(element, code()); + }); + return disposer; + }, + insert, + spread(node, accessor, skipChildren) { + if (typeof accessor === "function") { + createRenderEffect(current => spreadExpression(node, accessor(), current, skipChildren)); + } else spreadExpression(node, accessor, undefined, skipChildren); + }, + createElement, + createTextNode, + insertNode, + setProp(node, name, value, prev) { + setProperty(node, name, value, prev); + return value; + }, + mergeProps: mergeProps$1, + effect: createRenderEffect, + memo: createMemo, + createComponent: createComponent$1, + use(fn, element, arg) { + return untrack(() => fn(element, arg)); + } + }; + } + function createRenderer(options) { + var renderer = createRenderer$1(options); + renderer.mergeProps = mergeProps$1; + return renderer; + } + var universalLightning = { + createElement(name) { + return new ElementNode(name); + }, + createTextNode(text) { + return { + name: "TextNode", + text, + parent: void 0 + }; + }, + replaceText(node, value) { + log("Replace Text: ", node, value); + node.text = value; + var parent = node.parent; + assertTruthy(parent); + parent.text = parent.getText(); + }, + setProperty(node, name, value = true) { + node[name] = value; + }, + insertNode(parent, node, anchor) { + log("INSERT: ", parent, node, anchor); + parent.children.insert(node, anchor); + node._queueDelete = false; + if (node instanceof ElementNode) { + parent.lng && node.render(); + } else if (parent.isTextNode()) { + parent.text = parent.getText(); + } + }, + isTextNode(node) { + return node.isTextNode(); + }, + removeNode(parent, node) { + log("REMOVE: ", parent, node); + parent.children.remove(node); + node._queueDelete = true; + if (node instanceof ElementNode) { + queueMicrotask(() => node.destroy()); + } + }, + getParentNode(node) { + return node.parent; + }, + getFirstChild(node) { + return node.children[0]; + }, + getNextSibling(node) { + var children = node.parent.children || []; + var index = children.indexOf(node) + 1; + if (index < children.length) { + return children[index]; + } + return void 0; + } + }; + var solidRenderer = createRenderer(universalLightning); + var render = /*#__PURE__*/function () { + var _ref22 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(code, node) { + var renderer, rootNode, dispose; + return _regeneratorRuntime().wrap(function _callee9$(_context10) { + while (1) switch (_context10.prev = _context10.next) { + case 0: + renderer = startLightningRenderer(config.rendererOptions, node); + _context10.next = 3; + return renderer.init(); + case 3: + rootNode = new ElementNode("App"); + rootNode.lng = renderer.root; + dispose = solidRenderer.render(code, rootNode); + return _context10.abrupt("return", { + dispose, + rootNode, + renderer + }); + case 7: + case "end": + return _context10.stop(); + } + }, _callee9); + })); + return function render(_x7, _x8) { + return _ref22.apply(this, arguments); + }; + }(); + var effect = solidRenderer.effect, + memo = solidRenderer.memo, + createComponent = solidRenderer.createComponent, + createElement = solidRenderer.createElement, + createTextNode = solidRenderer.createTextNode, + insertNode = solidRenderer.insertNode, + insert = solidRenderer.insert, + spread = solidRenderer.spread, + setProp = solidRenderer.setProp, + mergeProps = solidRenderer.mergeProps, + use = solidRenderer.use; + function hexColor(color = "") { + if (isInteger(color)) { + return color; + } + if (typeof color === "string") { + if (color.startsWith("#")) { + return Number(color.replace("#", "0x") + (color.length === 7 ? "ff" : "")); + } + if (color.startsWith("0x")) { + return Number(color); + } + return Number("0x" + (color.length === 6 ? color + "ff" : color)); + } + return 0; + } + var $$EVENTS = "_$DX_DELEGATE"; + function delegateEvents(eventNames, document = window.document) { + var e = document[$$EVENTS] || (document[$$EVENTS] = new Set()); + for (var i = 0, l = eventNames.length; i < l; i++) { + var name = eventNames[i]; + if (!e.has(name)) { + e.add(name); + document.addEventListener(name, eventHandler); + } + } + } + function eventHandler(e) { + var key = `$$${e.type}`; + var node = e.composedPath && e.composedPath()[0] || e.target; + if (e.target !== node) { + Object.defineProperty(e, "target", { + configurable: true, + value: node + }); + } + Object.defineProperty(e, "currentTarget", { + configurable: true, + get() { + return node || document; + } + }); + while (node) { + var handler = node[key]; + if (handler && !node.disabled) { + var data = node[`${key}Data`]; + data !== undefined ? handler.call(node, data, e) : handler.call(node, e); + if (e.cancelBubble) return; + } + node = node._$host || node.parentNode || node.host; + } + } + var voidFn = () => undefined; + var isServer = false; + function createBeforeLeave() { + var listeners = new Set(); + function subscribe(listener) { + listeners.add(listener); + return () => listeners.delete(listener); + } + var ignore = false; + function confirm(to, options) { + if (ignore) return !(ignore = false); + var e = { + to, + options, + defaultPrevented: false, + preventDefault: () => e.defaultPrevented = true + }; + var _iterator15 = _createForOfIteratorHelper(listeners), + _step15; + try { + var _loop4 = function _loop4() { + var l = _step15.value; + l.listener(_objectSpread(_objectSpread({}, e), {}, { + from: l.location, + retry: force => { + force && (ignore = true); + l.navigate(to, _objectSpread(_objectSpread({}, options), {}, { + resolve: false + })); + } + })); + }; + for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) { + _loop4(); + } + } catch (err) { + _iterator15.e(err); + } finally { + _iterator15.f(); + } + return !e.defaultPrevented; + } + return { + subscribe, + confirm + }; + } + // The following supports browser initiated blocking (eg back/forward) + var depth; + function saveCurrentDepth() { + if (!window.history.state || window.history.state._depth == null) { + window.history.replaceState(_objectSpread(_objectSpread({}, window.history.state), {}, { + _depth: window.history.length - 1 + }), ""); + } + depth = window.history.state._depth; + } + { + saveCurrentDepth(); + } + function keepDepth(state) { + return _objectSpread(_objectSpread({}, state), {}, { + _depth: window.history.state && window.history.state._depth + }); + } + function notifyIfNotBlocked(notify, block) { + var ignore = false; + return () => { + var prevDepth = depth; + saveCurrentDepth(); + var delta = prevDepth == null ? null : depth - prevDepth; + if (ignore) { + ignore = false; + return; + } + if (delta && block(delta)) { + ignore = true; + window.history.go(-delta); + } else { + notify(); + } + }; + } + var hasSchemeRegex = /^(?:[a-z0-9]+:)?\/\//i; + var trimPathRegex = /^\/+|(\/)\/+$/g; + var mockBase = "http://sr"; + function normalizePath(path, omitSlash = false) { + var s = path.replace(trimPathRegex, "$1"); + return s ? omitSlash || /^[?#]/.test(s) ? s : "/" + s : ""; + } + function resolvePath(base, path, from) { + if (hasSchemeRegex.test(path)) { + return undefined; + } + var basePath = normalizePath(base); + var fromPath = from && normalizePath(from); + var result = ""; + if (!fromPath || path.startsWith("/")) { + result = basePath; + } else if (fromPath.toLowerCase().indexOf(basePath.toLowerCase()) !== 0) { + result = basePath + fromPath; + } else { + result = fromPath; + } + return (result || "/") + normalizePath(path, !result); + } + function invariant(value, message) { + if (value == null) { + throw new Error(message); + } + return value; + } + function joinPaths(from, to) { + return normalizePath(from).replace(/\/*(\*.*)?$/g, "") + normalizePath(to); + } + function extractSearchParams(url) { + var params = {}; + url.searchParams.forEach((value, key) => { + params[key] = value; + }); + return params; + } + function createMatcher(path, partial, matchFilters) { + var _path$split = path.split("/*", 2), + _path$split2 = _slicedToArray(_path$split, 2), + pattern = _path$split2[0], + splat = _path$split2[1]; + var segments = pattern.split("/").filter(Boolean); + var len = segments.length; + return location => { + var locSegments = location.split("/").filter(Boolean); + var lenDiff = locSegments.length - len; + if (lenDiff < 0 || lenDiff > 0 && splat === undefined && !partial) { + return null; + } + var match = { + path: len ? "" : "/", + params: {} + }; + var matchFilter = s => matchFilters === undefined ? undefined : matchFilters[s]; + for (var i = 0; i < len; i++) { + var segment = segments[i]; + var locSegment = locSegments[i]; + var dynamic = segment[0] === ":"; + var _key13 = dynamic ? segment.slice(1) : segment; + if (dynamic && matchSegment(locSegment, matchFilter(_key13))) { + match.params[_key13] = locSegment; + } else if (dynamic || !matchSegment(locSegment, segment)) { + return null; + } + match.path += `/${locSegment}`; + } + if (splat) { + var remainder = lenDiff ? locSegments.slice(-lenDiff).join("/") : ""; + if (matchSegment(remainder, matchFilter(splat))) { + match.params[splat] = remainder; + } else { + return null; + } + } + return match; + }; + } + function matchSegment(input, filter) { + var isEqual = s => s.localeCompare(input, undefined, { + sensitivity: "base" + }) === 0; + if (filter === undefined) { + return true; + } else if (typeof filter === "string") { + return isEqual(filter); + } else if (typeof filter === "function") { + return filter(input); + } else if (Array.isArray(filter)) { + return filter.some(isEqual); + } else if (filter instanceof RegExp) { + return filter.test(input); + } + return false; + } + function scoreRoute(route) { + var _route$pattern$split = route.pattern.split("/*", 2), + _route$pattern$split2 = _slicedToArray(_route$pattern$split, 2), + pattern = _route$pattern$split2[0], + splat = _route$pattern$split2[1]; + var segments = pattern.split("/").filter(Boolean); + return segments.reduce((score, segment) => score + (segment.startsWith(":") ? 2 : 3), segments.length - (splat === undefined ? 0 : 1)); + } + function createMemoObject(fn) { + var map = new Map(); + var owner = getOwner(); + return new Proxy({}, { + get(_, property) { + if (!map.has(property)) { + runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property]))); + } + return map.get(property)(); + }, + getOwnPropertyDescriptor() { + return { + enumerable: true, + configurable: true + }; + }, + ownKeys() { + return Reflect.ownKeys(fn()); + } + }); + } + function expandOptionals(pattern) { + var match = /(\/?\:[^\/]+)\?/.exec(pattern); + if (!match) return [pattern]; + var prefix = pattern.slice(0, match.index); + var suffix = pattern.slice(match.index + match[0].length); + var prefixes = [prefix, prefix += match[1]]; + // This section handles adjacent optional params. We don't actually want all permuations since + // that will lead to equivalent routes which have the same number of params. For example + // `/:a?/:b?/:c`? only has the unique expansion: `/`, `/:a`, `/:a/:b`, `/:a/:b/:c` and we can + // discard `/:b`, `/:c`, `/:b/:c` by building them up in order and not recursing. This also helps + // ensure predictability where earlier params have precidence. + while (match = /^(\/\:[^\/]+)\?/.exec(suffix)) { + prefixes.push(prefix += match[1]); + suffix = suffix.slice(match[0].length); + } + return expandOptionals(suffix).reduce((results, expansion) => [...results, ...prefixes.map(p => p + expansion)], []); + } + var MAX_REDIRECTS = 100; + var RouterContextObj = createContext(); + var RouteContextObj = createContext(); + var useRouter = () => invariant(useContext(RouterContextObj), " and 'use' router primitives can be only used inside a Route."); + var useNavigate = () => useRouter().navigatorFactory(); + var useLocation = () => useRouter().location; + var useMatch = (path, matchFilters) => { + var location = useLocation(); + var matchers = createMemo(() => expandOptionals(path()).map(path => createMatcher(path, undefined, matchFilters))); + return createMemo(() => { + var _iterator16 = _createForOfIteratorHelper(matchers()), + _step16; + try { + for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) { + var matcher = _step16.value; + var match = matcher(location.pathname); + if (match) return match; + } + } catch (err) { + _iterator16.e(err); + } finally { + _iterator16.f(); + } + }); + }; + var useParams = () => useRouter().params; + function createRoutes(routeDef, base = "") { + var component = routeDef.component, + load = routeDef.load, + children = routeDef.children, + info = routeDef.info; + var isLeaf = !children || Array.isArray(children) && !children.length; + var shared = { + key: routeDef, + component, + load, + info + }; + return asArray(routeDef.path).reduce((acc, path) => { + var _iterator17 = _createForOfIteratorHelper(expandOptionals(path)), + _step17; + try { + for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) { + var originalPath = _step17.value; + var _path = joinPaths(base, originalPath); + var pattern = isLeaf ? _path : _path.split("/*", 1)[0]; + pattern = pattern.split("/").map(s => { + return s.startsWith(":") || s.startsWith("*") ? s : encodeURIComponent(s); + }).join("/"); + acc.push(_objectSpread(_objectSpread({}, shared), {}, { + originalPath, + pattern, + matcher: createMatcher(pattern, !isLeaf, routeDef.matchFilters) + })); + } + } catch (err) { + _iterator17.e(err); + } finally { + _iterator17.f(); + } + return acc; + }, []); + } + function createBranch(routes, index = 0) { + return { + routes, + score: scoreRoute(routes[routes.length - 1]) * 10000 - index, + matcher(location) { + var matches = []; + for (var i = routes.length - 1; i >= 0; i--) { + var route = routes[i]; + var match = route.matcher(location); + if (!match) { + return null; + } + matches.unshift(_objectSpread(_objectSpread({}, match), {}, { + route + })); + } + return matches; + } + }; + } + function asArray(value) { + return Array.isArray(value) ? value : [value]; + } + function createBranches(routeDef, base = "", stack = [], branches = []) { + var routeDefs = asArray(routeDef); + for (var i = 0, len = routeDefs.length; i < len; i++) { + var def = routeDefs[i]; + if (def && typeof def === "object") { + if (!def.hasOwnProperty("path")) def.path = ""; + var routes = createRoutes(def, base); + var _iterator18 = _createForOfIteratorHelper(routes), + _step18; + try { + for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) { + var route = _step18.value; + stack.push(route); + var isEmptyArray = Array.isArray(def.children) && def.children.length === 0; + if (def.children && !isEmptyArray) { + createBranches(def.children, route.pattern, stack, branches); + } else { + var branch = createBranch([...stack], branches.length); + branches.push(branch); + } + stack.pop(); + } + } catch (err) { + _iterator18.e(err); + } finally { + _iterator18.f(); + } + } + } + // Stack will be empty on final return + return stack.length ? branches : branches.sort((a, b) => b.score - a.score); + } + function getRouteMatches(branches, location) { + for (var i = 0, len = branches.length; i < len; i++) { + var match = branches[i].matcher(location); + if (match) { + return match; + } + } + return []; + } + function createLocation(path, state) { + var origin = new URL(mockBase); + var url = createMemo(prev => { + var path_ = path(); + try { + return new URL(path_, origin); + } catch (err) { + console.error(`Invalid path ${path_}`); + return prev; + } + }, origin, { + equals: (a, b) => a.href === b.href + }); + var pathname = createMemo(() => url().pathname); + var search = createMemo(() => url().search, true); + var hash = createMemo(() => url().hash); + var key = () => ""; + return { + get pathname() { + return pathname(); + }, + get search() { + return search(); + }, + get hash() { + return hash(); + }, + get state() { + return state(); + }, + get key() { + return key(); + }, + query: createMemoObject(on(search, () => extractSearchParams(url()))) + }; + } + var intent; + function createRouterContext(integration, branches, getContext, options = {}) { + var _integration$signal = _slicedToArray(integration.signal, 2), + source = _integration$signal[0], + setSource = _integration$signal[1], + _integration$utils = integration.utils, + utils = _integration$utils === void 0 ? {} : _integration$utils; + var parsePath = utils.parsePath || (p => p); + var renderPath = utils.renderPath || (p => p); + var beforeLeave = utils.beforeLeave || createBeforeLeave(); + var basePath = resolvePath("", options.base || ""); + if (basePath === undefined) { + throw new Error(`${basePath} is not a valid base path`); + } else if (basePath && !source().value) { + setSource({ + value: basePath, + replace: true, + scroll: false + }); + } + var _createSignal11 = createSignal(false), + _createSignal12 = _slicedToArray(_createSignal11, 2), + isRouting = _createSignal12[0], + setIsRouting = _createSignal12[1]; + var start = /*#__PURE__*/function () { + var _ref23 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(callback) { + return _regeneratorRuntime().wrap(function _callee10$(_context11) { + while (1) switch (_context11.prev = _context11.next) { + case 0: + setIsRouting(true); + _context11.prev = 1; + _context11.next = 4; + return startTransition(callback); + case 4: + _context11.prev = 4; + setIsRouting(false); + return _context11.finish(4); + case 7: + case "end": + return _context11.stop(); + } + }, _callee10, null, [[1,, 4, 7]]); + })); + return function start(_x9) { + return _ref23.apply(this, arguments); + }; + }(); + var _createSignal13 = createSignal(source().value), + _createSignal14 = _slicedToArray(_createSignal13, 2), + reference = _createSignal14[0], + setReference = _createSignal14[1]; + var _createSignal15 = createSignal(source().state), + _createSignal16 = _slicedToArray(_createSignal15, 2), + state = _createSignal16[0], + setState = _createSignal16[1]; + var location = createLocation(reference, state); + var referrers = []; + var submissions = createSignal([]); + var matches = createMemo(() => getRouteMatches(branches(), location.pathname)); + var params = createMemoObject(() => { + var m = matches(); + var params = {}; + for (var i = 0; i < m.length; i++) { + Object.assign(params, m[i].params); + } + return params; + }); + var baseRoute = { + pattern: basePath, + path: () => basePath, + outlet: () => null, + resolvePath(to) { + return resolvePath(basePath, to); + } + }; + createRenderEffect(() => { + var _source = source(), + value = _source.value, + state = _source.state; + // Untrack this whole block so `start` doesn't cause Solid's Listener to be preserved + untrack(() => { + if (value !== reference()) { + start(() => { + intent = "native"; + setReference(value); + setState(state); + resetErrorBoundaries(); + submissions[1]([]); + }).then(() => { + intent = undefined; + }); + } + }); + }); + return { + base: baseRoute, + location, + params, + isRouting, + renderPath, + parsePath, + navigatorFactory, + matches, + beforeLeave, + preloadRoute, + singleFlight: options.singleFlight === undefined ? true : options.singleFlight, + submissions + }; + function navigateFromRoute(route, to, options) { + // Untrack in case someone navigates in an effect - don't want to track `reference` or route paths + untrack(() => { + if (typeof to === "number") { + if (!to) { + // A delta of 0 means stay at the current location, so it is ignored + } else if (utils.go) { + utils.go(to); + } else { + console.warn("Router integration does not support relative routing"); + } + return; + } + var _replace$resolve$scro = _objectSpread({ + replace: false, + resolve: true, + scroll: true + }, options), + replace = _replace$resolve$scro.replace, + resolve = _replace$resolve$scro.resolve, + scroll = _replace$resolve$scro.scroll, + nextState = _replace$resolve$scro.state; + var resolvedTo = resolve ? route.resolvePath(to) : resolvePath("", to); + if (resolvedTo === undefined) { + throw new Error(`Path '${to}' is not a routable path`); + } else if (referrers.length >= MAX_REDIRECTS) { + throw new Error("Too many redirects"); + } + var current = reference(); + if (resolvedTo !== current || nextState !== state()) { + if (isServer) ;else if (beforeLeave.confirm(resolvedTo, options)) { + var len = referrers.push({ + value: current, + replace, + scroll, + state: state() + }); + start(() => { + intent = "navigate"; + setReference(resolvedTo); + setState(nextState); + resetErrorBoundaries(); + submissions[1]([]); + }).then(() => { + if (referrers.length === len) { + intent = undefined; + navigateEnd({ + value: resolvedTo, + state: nextState + }); + } + }); + } + } + }); + } + function navigatorFactory(route) { + // Workaround for vite issue (https://github.com/vitejs/vite/issues/3803) + route = route || useContext(RouteContextObj) || baseRoute; + return (to, options) => navigateFromRoute(route, to, options); + } + function navigateEnd(next) { + var first = referrers[0]; + if (first) { + if (next.value !== first.value || next.state !== first.state) { + setSource(_objectSpread(_objectSpread({}, next), {}, { + replace: first.replace, + scroll: first.scroll + })); + } + referrers.length = 0; + } + } + function preloadRoute(url, preloadData) { + var matches = getRouteMatches(branches(), url.pathname); + var prevIntent = intent; + intent = "preload"; + var _loop5 = function _loop5() { + var _matches$match = matches[match], + route = _matches$match.route, + params = _matches$match.params; + route.component && route.component.preload && route.component.preload(); + var load = route.load; + preloadData && load && runWithOwner(getContext(), () => load({ + params, + location: { + pathname: url.pathname, + search: url.search, + hash: url.hash, + query: extractSearchParams(url), + state: null, + key: "" + }, + intent: "preload" + })); + }; + for (var match in matches) { + _loop5(); + } + intent = prevIntent; + } + } + function createRouteContext(router, parent, _outlet, match) { + var base = router.base, + location = router.location, + params = router.params; + var _match$route = match().route, + pattern = _match$route.pattern, + component = _match$route.component, + load = _match$route.load; + var path = createMemo(() => match().path); + component && component.preload && component.preload(); + var data = load ? load({ + params, + location, + intent: intent || "initial" + }) : undefined; + var route = { + parent, + pattern, + path, + outlet: () => component ? createComponent$1(component, { + params, + location, + data, + get children() { + return _outlet(); + } + }) : _outlet(), + resolvePath(to) { + return resolvePath(base.path(), to, path()); + } + }; + return route; + } + var createRouterComponent = router => props => { + var base = props.base; + var routeDefs = children(() => props.children); + var branches = createMemo(() => createBranches(routeDefs(), props.base || "")); + var context; + var routerState = createRouterContext(router, branches, () => context, { + base, + singleFlight: props.singleFlight + }); + router.create && router.create(routerState); + return createComponent(RouterContextObj.Provider, { + value: routerState, + get children() { + return createComponent(Root, { + routerState, + get root() { + return props.root; + }, + get load() { + return props.rootLoad; + }, + get children() { + return [memo(() => (context = getOwner()) && null), createComponent(Routes, { + routerState, + get branches() { + return branches(); + } + })]; + } + }); + } + }); + }; + function Root(props) { + var location = props.routerState.location; + var params = props.routerState.params; + var data = createMemo(() => props.load && untrack(() => props.load({ + params, + location, + intent: "preload" + }))); + return createComponent(Show, { + get when() { + return props.root; + }, + keyed: true, + get fallback() { + return props.children; + }, + children: Root2 => createComponent(Root2, { + params, + location, + get data() { + return data(); + }, + get children() { + return props.children; + } + }) + }); + } + function Routes(props) { + var disposers = []; + var root; + var routeStates = createMemo(on(props.routerState.matches, (nextMatches, prevMatches, prev) => { + var equal = prevMatches && nextMatches.length === prevMatches.length; + var next = []; + var _loop6 = function _loop6(i) { + var prevMatch = prevMatches && prevMatches[i]; + var nextMatch = nextMatches[i]; + if (prev && prevMatch && nextMatch.route.key === prevMatch.route.key) { + next[i] = prev[i]; + } else { + equal = false; + if (disposers[i]) { + disposers[i](); + } + createRoot(dispose => { + disposers[i] = dispose; + next[i] = createRouteContext(props.routerState, next[i - 1] || props.routerState.base, createOutlet(() => routeStates()[i + 1]), () => props.routerState.matches()[i]); + }); + } + }; + for (var i = 0, len = nextMatches.length; i < len; i++) { + _loop6(i); + } + disposers.splice(nextMatches.length).forEach(dispose => dispose()); + if (prev && equal) { + return prev; + } + root = next[0]; + return next; + })); + return createOutlet(() => routeStates() && root)(); + } + var createOutlet = child => { + return () => createComponent(Show, { + get when() { + return child(); + }, + keyed: true, + children: child2 => createComponent(RouteContextObj.Provider, { + value: child2, + get children() { + return child2.outlet(); + } + }) + }); + }; + var Route = props => { + var childRoutes = children(() => props.children); + return mergeProps$1(props, { + get children() { + return childRoutes(); + } + }); + }; + function intercept([value, setValue], get, set) { + return [get ? () => get(value()) : value, set ? v => setValue(set(v)) : setValue]; + } + function querySelector(selector) { + if (selector === "#") { + return null; + } + // Guard against selector being an invalid CSS selector + try { + return document.querySelector(selector); + } catch (e) { + return null; + } + } + function createRouter(config) { + var ignore = false; + var wrap = value => typeof value === "string" ? { + value + } : value; + var signal = intercept(createSignal(wrap(config.get()), { + equals: (a, b) => a.value === b.value + }), undefined, next => { + !ignore && config.set(next); + return next; + }); + config.init && onCleanup(config.init((value = config.get()) => { + ignore = true; + signal[1](wrap(value)); + ignore = false; + })); + return createRouterComponent({ + signal, + create: config.create, + utils: config.utils + }); + } + function bindEvent(target, type, handler) { + target.addEventListener(type, handler); + return () => target.removeEventListener(type, handler); + } + function scrollToHash(hash, fallbackTop) { + var el = querySelector(`#${hash}`); + if (el) { + el.scrollIntoView(); + } else if (fallbackTop) { + window.scrollTo(0, 0); + } + } + var actions = /* #__PURE__ */new Map(); + function setupNativeEvents(preload = true, explicitLinks = false, actionBase = "/_server") { + return router => { + var basePath = router.base.path(); + var navigateFromRoute = router.navigatorFactory(router.base); + var preloadTimeout = {}; + function isSvg(el) { + return el.namespaceURI === "http://www.w3.org/2000/svg"; + } + function handleAnchor(evt) { + if (evt.defaultPrevented || evt.button !== 0 || evt.metaKey || evt.altKey || evt.ctrlKey || evt.shiftKey) return; + var a = evt.composedPath().find(el => el instanceof Node && el.nodeName.toUpperCase() === "A"); + if (!a || explicitLinks && !a.hasAttribute("link")) return; + var svg = isSvg(a); + var href = svg ? a.href.baseVal : a.href; + var target = svg ? a.target.baseVal : a.target; + if (target || !href && !a.hasAttribute("state")) return; + var rel = (a.getAttribute("rel") || "").split(/\s+/); + if (a.hasAttribute("download") || rel && rel.includes("external")) return; + var url = svg ? new URL(href, document.baseURI) : new URL(href); + if (url.origin !== window.location.origin || basePath && url.pathname && !url.pathname.toLowerCase().startsWith(basePath.toLowerCase())) return; + return [a, url]; + } + function handleAnchorClick(evt) { + var res = handleAnchor(evt); + if (!res) return; + var _res = _slicedToArray(res, 2), + a = _res[0], + url = _res[1]; + var to = router.parsePath(url.pathname + url.search + url.hash); + var state = a.getAttribute("state"); + evt.preventDefault(); + navigateFromRoute(to, { + resolve: false, + replace: a.hasAttribute("replace"), + scroll: !a.hasAttribute("noscroll"), + state: state && JSON.parse(state) + }); + } + function handleAnchorPreload(evt) { + var res = handleAnchor(evt); + if (!res) return; + var _res2 = _slicedToArray(res, 2), + a = _res2[0], + url = _res2[1]; + if (!preloadTimeout[url.pathname]) router.preloadRoute(url, a.getAttribute("preload") !== "false"); + } + function handleAnchorIn(evt) { + var res = handleAnchor(evt); + if (!res) return; + var _res3 = _slicedToArray(res, 2), + a = _res3[0], + url = _res3[1]; + if (preloadTimeout[url.pathname]) return; + preloadTimeout[url.pathname] = setTimeout(() => { + router.preloadRoute(url, a.getAttribute("preload") !== "false"); + delete preloadTimeout[url.pathname]; + }, 200); + } + function handleAnchorOut(evt) { + var res = handleAnchor(evt); + if (!res) return; + var _res4 = _slicedToArray(res, 2), + url = _res4[1]; + if (preloadTimeout[url.pathname]) { + clearTimeout(preloadTimeout[url.pathname]); + delete preloadTimeout[url.pathname]; + } + } + function handleFormSubmit(evt) { + var actionRef = evt.submitter && evt.submitter.hasAttribute("formaction") ? evt.submitter.getAttribute("formaction") : evt.target.getAttribute("action"); + if (!actionRef) return; + if (!actionRef.startsWith("https://action/")) { + // normalize server actions + var url = new URL(actionRef, mockBase); + actionRef = router.parsePath(url.pathname + url.search); + if (!actionRef.startsWith(actionBase)) return; + } + if (evt.target.method.toUpperCase() !== "POST") throw new Error("Only POST forms are supported for Actions"); + var handler = actions.get(actionRef); + if (handler) { + evt.preventDefault(); + var data = new FormData(evt.target); + if (evt.submitter && evt.submitter.name) data.append(evt.submitter.name, evt.submitter.value); + handler.call({ + r: router, + f: evt.target + }, data); + } + } + // ensure delegated event run first + delegateEvents(["click", "submit"]); + document.addEventListener("click", handleAnchorClick); + if (preload) { + document.addEventListener("mouseover", handleAnchorIn); + document.addEventListener("mouseout", handleAnchorOut); + document.addEventListener("focusin", handleAnchorPreload); + document.addEventListener("touchstart", handleAnchorPreload); + } + document.addEventListener("submit", handleFormSubmit); + onCleanup(() => { + document.removeEventListener("click", handleAnchorClick); + if (preload) { + document.removeEventListener("mouseover", handleAnchorIn); + document.removeEventListener("mouseout", handleAnchorOut); + document.removeEventListener("focusin", handleAnchorPreload); + document.removeEventListener("touchstart", handleAnchorPreload); + } + document.removeEventListener("submit", handleFormSubmit); + }); + }; + } + function hashParser(str) { + var to = str.replace(/^.*?#/, ""); + // Hash-only hrefs like `#foo` from plain anchors will come in as `/#foo` whereas a link to + // `/foo` will be `/#/foo`. Check if the to starts with a `/` and if not append it as a hash + // to the current path so we can handle these in-page anchors correctly. + if (!to.startsWith("/")) { + var _window$location$hash = window.location.hash.split("#", 2), + _window$location$hash2 = _slicedToArray(_window$location$hash, 2), + _window$location$hash3 = _window$location$hash2[1], + path = _window$location$hash3 === void 0 ? "/" : _window$location$hash3; + return `${path}#${to}`; + } + return to; + } + function HashRouter(props) { + var getSource = () => window.location.hash.slice(1); + var beforeLeave = createBeforeLeave(); + return createRouter({ + get: getSource, + set({ + value, + replace, + scroll, + state + }) { + if (replace) { + window.history.replaceState(keepDepth(state), "", "#" + value); + } else { + window.location.hash = value; + } + var hashIndex = value.indexOf("#"); + var hash = hashIndex >= 0 ? value.slice(hashIndex + 1) : ""; + scrollToHash(hash, scroll); + saveCurrentDepth(); + }, + init: notify => bindEvent(window, "hashchange", notifyIfNotBlocked(notify, delta => !beforeLeave.confirm(delta && delta < 0 ? delta : getSource()))), + create: setupNativeEvents(props.preload, props.explicitLinks, props.actionBase), + utils: { + go: delta => window.history.go(delta), + renderPath: path => `#${path}`, + parsePath: hashParser, + beforeLeave + } + })(props); + } + var isDev = !!DEV; + var tryOnCleanup = isDev ? fn => getOwner() ? onCleanup(fn) : fn : onCleanup; + + // src/eventListener.ts + function makeEventListener(target, type, handler, options) { + target.addEventListener(type, handler, options); + return tryOnCleanup(target.removeEventListener.bind(target, type, handler, options)); + } + function createSingletonRoot(factory, detachedOwner = getOwner()) { + var listeners = 0, + value, + disposeRoot; + return () => { + listeners++; + onCleanup(() => { + listeners--; + queueMicrotask(() => { + if (!listeners && disposeRoot) { + disposeRoot(); + disposeRoot = value = void 0; + } + }); + }); + if (!disposeRoot) { + createRoot(dispose => value = factory(disposeRoot = dispose), detachedOwner); + } + return value; + }; + } + var useKeyDownEvent = /* @__PURE__ */createSingletonRoot(() => { + var _createSignal17 = createSignal(null), + _createSignal18 = _slicedToArray(_createSignal17, 2), + event = _createSignal18[0], + setEvent = _createSignal18[1]; + makeEventListener(window, "keydown", e => { + setEvent(e); + setTimeout(() => setEvent(null)); + }); + return event; + }); + + /* + * Copyright 2023 Comcast Cable Communications Management, LLC + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + function isFunc(item) { + return typeof item === 'function'; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function isArray(item) { + return Array.isArray(item); + } + + /* + * Copyright 2023 Comcast Cable Communications Management, LLC + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + var keyMapEntries = { + ArrowLeft: 'Left', + ArrowRight: 'Right', + ArrowUp: 'Up', + ArrowDown: 'Down', + Enter: 'Enter', + l: 'Last', + ' ': 'Space', + Backspace: 'Back', + Escape: 'Escape' + }; + var _createSignal19 = createSignal([]), + _createSignal20 = _slicedToArray(_createSignal19, 2), + focusPath = _createSignal20[0], + setFocusPath = _createSignal20[1]; + var useFocusManager = userKeyMap => { + var keypressEvent = useKeyDownEvent(); + if (userKeyMap) { + var _loop7 = function _loop7() { + var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i20], 2), + key = _Object$entries3$_i[0], + value = _Object$entries3$_i[1]; + if (isArray(value)) { + value.forEach(v => { + keyMapEntries[v] = key; + }); + } else { + keyMapEntries[value] = key; + } + }; + // Flatten the userKeyMap to a hash + for (var _i20 = 0, _Object$entries3 = Object.entries(userKeyMap); _i20 < _Object$entries3.length; _i20++) { + _loop7(); + } + } + createEffect(on(activeElement, (currentFocusedElm, prevFocusedElm, prevFocusPath = []) => { + var current = currentFocusedElm; + var fp = []; + while (current) { + if (!current.states.has('focus')) { + current.states.add('focus'); + isFunc(current.onFocus) && current.onFocus.call(current, currentFocusedElm, prevFocusedElm); + } + fp.push(current); + current = current.parent; + } + prevFocusPath.forEach(elm => { + if (!fp.includes(elm)) { + elm.states.remove('focus'); + isFunc(elm.onBlur) && elm.onBlur.call(elm, currentFocusedElm, prevFocusedElm); + } + }); + setFocusPath(fp); + return fp; + }, { + defer: true + })); + createEffect(() => { + var e = keypressEvent(); + if (e) { + // Search keyMap for the value of the pressed key or keyCode if value undefined + var mappedKeyEvent = keyMapEntries[e.key] || keyMapEntries[e.keyCode]; + untrack(() => { + var fp = focusPath(); + var finalFocusElm = undefined; + var _iterator19 = _createForOfIteratorHelper(fp), + _step19; + try { + for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) { + var elm = _step19.value; + finalFocusElm = finalFocusElm || elm; + if (mappedKeyEvent) { + var onKeyHandler = elm[`on${mappedKeyEvent}`]; + if (isFunc(onKeyHandler)) { + if (onKeyHandler.call(elm, e, elm, finalFocusElm) === true) { + break; + } + } + } else { + console.log(`Unhandled key event: ${e.key}`); + } + if (isFunc(elm.onKeyPress)) { + if (elm.onKeyPress.call(elm, e, mappedKeyEvent, elm, finalFocusElm) === true) { + break; + } + } + } + } catch (err) { + _iterator19.e(err); + } finally { + _iterator19.f(); + } + return false; + }); + } + }); + return focusPath; + }; + + /* + * Copyright 2023 Comcast Cable Communications Management, LLC + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + // To use with TS import withPadding and then put withPadding; on the next line to prevent tree shaking + function withPadding(el, padding) { + var pad = padding(); + var top, left, right, bottom; + if (Array.isArray(pad)) { + // top right bottom left + if (pad.length === 2) { + top = bottom = pad[0]; + left = right = pad[1]; + } else if (pad.length === 3) { + top = pad[0]; + left = right = pad[1]; + bottom = pad[2]; + } else { + var _pad = _slicedToArray(pad, 4); + top = _pad[0]; + right = _pad[1]; + bottom = _pad[2]; + left = _pad[3]; + } + } else { + top = right = bottom = left = pad; + } + el.onBeforeLayout = (node, size) => { + if (size) { + el.width = el.children.reduce((acc, c) => { + return acc + (c.width || 0); + }, 0) + left + right; + var firstChild = el.children[0]; + if (firstChild) { + // set padding or marginLeft for flex + firstChild.x = left; + firstChild.marginLeft = left; + } + var maxHeight = 0; + el.children.forEach(c => { + c.y = top; + c.marginTop = top; + maxHeight = Math.max(maxHeight, c.height || 0); + }); + el.height = maxHeight + top + bottom; + // let flex know we need to re-layout + return true; + } + }; + } + + /* + * Copyright 2023 Comcast Cable Communications Management, LLC + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + /* global SpeechSynthesisErrorEvent */ + function flattenStrings(series = []) { + var flattenedSeries = []; + var i; + for (i = 0; i < series.length; i++) { + var s = series[i]; + if (typeof s === 'string' && !s.includes('PAUSE-')) { + flattenedSeries.push(series[i]); + } else { + break; + } + } + // add a "word boundary" to ensure the Announcer doesn't automatically try to + // interpret strings that look like dates but are not actually dates + // for example, if "Rising Sun" and "1993" are meant to be two separate lines, + // when read together, "Sun 1993" is interpretted as "Sunday 1993" + return [flattenedSeries.join(',\b ')].concat(series.slice(i)); + } + function delay(pause) { + return new Promise(resolve => { + setTimeout(resolve, pause); + }); + } + /** + * Speak a string + * + * @param phrase Phrase to speak + * @param utterances An array which the new SpeechSynthesisUtterance instance representing this utterance will be appended + * @param lang Language to speak in + * @return {Promise} Promise resolved when the utterance has finished speaking, and rejected if there's an error + */ + function speak(phrase, utterances, lang = 'en-US') { + var synth = window.speechSynthesis; + return new Promise((resolve, reject) => { + var utterance = new SpeechSynthesisUtterance(phrase); + utterance.lang = lang; + utterance.onend = () => { + resolve(); + }; + utterance.onerror = e => { + reject(e); + }; + utterances.push(utterance); + synth.speak(utterance); + }); + } + function speakSeries(series, lang, root = true) { + var synth = window.speechSynthesis; + var remainingPhrases = flattenStrings(Array.isArray(series) ? series : [series]); + var nestedSeriesResults = []; + /* + We hold this array of SpeechSynthesisUtterances in order to prevent them from being + garbage collected prematurely on STB hardware which can cause the 'onend' events of + utterances to not fire consistently. + */ + var utterances = []; + var active = true; + var seriesChain = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() { + var phrase, pause, totalRetries, retriesLeft, seriesResult, _seriesResult; + return _regeneratorRuntime().wrap(function _callee11$(_context12) { + while (1) switch (_context12.prev = _context12.next) { + case 0: + _context12.prev = 0; + case 1: + if (!(active && remainingPhrases.length)) { + _context12.next = 62; + break; + } + _context12.next = 4; + return Promise.resolve(remainingPhrases.shift()); + case 4: + phrase = _context12.sent; + if (active) { + _context12.next = 9; + break; + } + return _context12.abrupt("break", 62); + case 9: + if (!(typeof phrase === 'string' && phrase.includes('PAUSE-'))) { + _context12.next = 16; + break; + } + // Pause it + pause = Number(phrase.split('PAUSE-')[1]) * 1000; + if (isNaN(pause)) { + pause = 0; + } + _context12.next = 14; + return delay(pause); + case 14: + _context12.next = 60; + break; + case 16: + if (!(typeof phrase === 'string' && phrase.length)) { + _context12.next = 48; + break; + } + // Speak it + totalRetries = 3; + retriesLeft = totalRetries; + case 19: + if (!(active && retriesLeft > 0)) { + _context12.next = 46; + break; + } + _context12.prev = 20; + _context12.next = 23; + return speak(phrase, utterances, lang); + case 23: + retriesLeft = 0; + _context12.next = 44; + break; + case 26: + _context12.prev = 26; + _context12.t0 = _context12["catch"](20); + if (!(_context12.t0 instanceof SpeechSynthesisErrorEvent)) { + _context12.next = 43; + break; + } + if (!(_context12.t0.error === 'network')) { + _context12.next = 36; + break; + } + retriesLeft--; + console.warn(`Speech synthesis network error. Retries left: ${retriesLeft}`); + _context12.next = 34; + return delay(500 * (totalRetries - retriesLeft)); + case 34: + _context12.next = 41; + break; + case 36: + if (!(_context12.t0.error === 'canceled' || _context12.t0.error === 'interrupted')) { + _context12.next = 40; + break; + } + // Cancel or interrupt error (ignore) + retriesLeft = 0; + _context12.next = 41; + break; + case 40: + throw new Error(`SpeechSynthesisErrorEvent: ${_context12.t0.error}`); + case 41: + _context12.next = 44; + break; + case 43: + throw _context12.t0; + case 44: + _context12.next = 19; + break; + case 46: + _context12.next = 60; + break; + case 48: + if (!(typeof phrase === 'function')) { + _context12.next = 55; + break; + } + seriesResult = speakSeries(phrase(), lang, false); + nestedSeriesResults.push(seriesResult); + _context12.next = 53; + return seriesResult.series; + case 53: + _context12.next = 60; + break; + case 55: + if (!Array.isArray(phrase)) { + _context12.next = 60; + break; + } + // Speak it (recursively) + _seriesResult = speakSeries(phrase, lang, false); + nestedSeriesResults.push(_seriesResult); + _context12.next = 60; + return _seriesResult.series; + case 60: + _context12.next = 1; + break; + case 62: + _context12.prev = 62; + active = false; + return _context12.finish(62); + case 65: + case "end": + return _context12.stop(); + } + }, _callee11, null, [[0,, 62, 65], [20, 26]]); + }))(); + return { + series: seriesChain, + get active() { + return active; + }, + append: toSpeak => { + remainingPhrases.push(toSpeak); + }, + cancel: () => { + if (!active) { + return; + } + if (root) { + synth.cancel(); + } + nestedSeriesResults.forEach(nestedSeriesResults => { + nestedSeriesResults.cancel(); + }); + active = false; + } + }; + } + var currentSeries; + function SpeechEngine(toSpeak, lang = 'en-US') { + currentSeries && currentSeries.cancel(); + currentSeries = speakSeries(toSpeak, lang); + return currentSeries; + } + + // src/index.ts + var debounce = (callback, wait) => { + var timeoutId; + var clear = () => clearTimeout(timeoutId); + if (getOwner()) onCleanup(clear); + var debounced = (...args) => { + if (timeoutId !== void 0) clear(); + timeoutId = setTimeout(() => callback(...args), wait); + }; + return Object.assign(debounced, { + clear + }); + }; + + /* + * Copyright 2023 Comcast Cable Communications Management, LLC + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + var resetFocusPathTimer; + var prevFocusPath = []; + var currentlySpeaking; + var voiceOutDisabled = false; + var fiveMinutes = 300000; + function debounceWithFlush(callback, time) { + var trigger = debounce(callback, time); + var scopedValue; + var debounced = newValue => { + scopedValue = newValue; + trigger(newValue); + }; + debounced.flush = () => { + trigger.clear(); + callback(scopedValue); + }; + debounced.clear = trigger.clear; + return debounced; + } + function getElmName(elm) { + return elm.id || elm.name; + } + function onFocusChangeCore(focusPath = []) { + if (!Announcer.onFocusChange || !Announcer.enabled) { + return; + } + var loaded = focusPath.every(elm => !elm.loading); + var focusDiff = focusPath.filter(elm => !prevFocusPath.includes(elm)); + resetFocusPathTimer(); + if (!loaded && Announcer.onFocusChange) { + Announcer.onFocusChange([]); + return; + } + prevFocusPath = focusPath.slice(0); + var toAnnounceText = []; + var toAnnounce = focusDiff.reduce((acc, elm) => { + if (elm.announce) { + acc.push([getElmName(elm), 'Announce', elm.announce]); + toAnnounceText.push(elm.announce); + } else if (elm.title) { + acc.push([getElmName(elm), 'Title', elm.title]); + toAnnounceText.push(elm.title); + } else { + acc.push([getElmName(elm), 'No Announce', '']); + } + return acc; + }, []); + focusDiff.reverse().reduce((acc, elm) => { + if (elm.announceContext) { + acc.push([getElmName(elm), 'Context', elm.announceContext]); + toAnnounceText.push(elm.announceContext); + } else { + acc.push([getElmName(elm), 'No Context', '']); + } + return acc; + }, toAnnounce); + if (Announcer.debug) { + console.table(toAnnounce); + } + if (toAnnounceText.length) { + return Announcer.speak(toAnnounceText.reduce((acc, val) => acc.concat(val), [])); + } + } + function textToSpeech(toSpeak) { + if (voiceOutDisabled) { + return; + } + return currentlySpeaking = SpeechEngine(toSpeak); + } + var Announcer = { + debug: false, + enabled: true, + cancel: function cancel() { + currentlySpeaking && currentlySpeaking.cancel(); + }, + clearPrevFocus: function clearPrevFocus(depth = 0) { + prevFocusPath = prevFocusPath.slice(0, depth); + resetFocusPathTimer(); + }, + speak: function speak(text, { + append = false, + notification = false + } = {}) { + if (Announcer.onFocusChange && Announcer.enabled) { + Announcer.onFocusChange.flush(); + if (append && currentlySpeaking && currentlySpeaking.active) { + currentlySpeaking.append(text); + } else { + Announcer.cancel(); + textToSpeech(text); + } + if (notification) { + var _currentlySpeaking; + voiceOutDisabled = true; + (_currentlySpeaking = currentlySpeaking) === null || _currentlySpeaking === void 0 || _currentlySpeaking.series.finally(() => { + voiceOutDisabled = false; + Announcer.refresh(); + }).catch(console.error); + } + } + return currentlySpeaking; + }, + refresh: function refresh(depth = 0) { + Announcer.clearPrevFocus(depth); + Announcer.onFocusChange && Announcer.onFocusChange(untrack(() => focusPath())); + }, + setupTimers: function setupTimers({ + focusDebounce = 400, + focusChangeTimeout = fiveMinutes + } = {}) { + Announcer.onFocusChange = debounceWithFlush(onFocusChangeCore, focusDebounce); + resetFocusPathTimer = debounceWithFlush(() => { + // Reset focus path for full announce + prevFocusPath = []; + }, focusChangeTimeout); + } + }; + + /* + * Copyright 2023 Comcast Cable Communications Management, LLC + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + var useAnnouncer = () => { + Announcer.setupTimers(); + createEffect(on(focusPath, Announcer.onFocusChange, { + defer: true + })); + return Announcer; + }; + + /* + * Copyright 2023 Comcast Cable Communications Management, LLC + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + function createSpriteMap(src, subTextures) { + var spriteMapTexture = renderer.createTexture('ImageTexture', { + src + }); + return subTextures.reduce((acc, t) => { + var x = t.x, + y = t.y, + width = t.width, + height = t.height; + acc[t.name] = renderer.createTexture('SubTexture', { + texture: spriteMapTexture, + x, + y, + width, + height + }); + return acc; + }, {}); + } + var _createSignal21 = createSignal(""), + _createSignal22 = _slicedToArray(_createSignal21, 2), + globalBackground = _createSignal22[0], + setGlobalBackground = _createSignal22[1]; + var theme = { + name: 'Base Lightning TV', + alpha: { + primary: 1, + secondary: 0.7, + tertiary: 0.1, + inactive: 0.5, + full: 1, + none: 0, + alpha1: 0.1, + alpha2: 0.3, + alpha3: 0.5, + alpha4: 0.7, + alpha5: 0.9 + }, + animation: { + duration: { + none: 0, + xfast: 0.1, + fast: 0.25, + normal: 0.5, + slow: 0.75, + xslow: 0.9 + }, + delay: { + none: 0, + xfast: 0.01, + fast: 0.025, + normal: 0.05, + slow: 0.075, + xslow: 0.09 + }, + expressive: { + timingFunction: 'cubic-bezier(0, 0, 1, 1)', + delay: 0, + duration: 0.25 + }, + expressiveEntrance: { + timingFunction: 'cubic-bezier(0, 0, 1, 1)', + delay: 0, + duration: 0.25 + }, + expressiveExit: { + timingFunction: 'cubic-bezier(0, 0, 1, 1)', + delay: 0, + duration: 0.25 + }, + standard: { + timingFunction: 'cubic-bezier(0, 0, 1, 1)', + delay: 0, + duration: 0.25 + }, + standardEntrance: { + timingFunction: 'cubic-bezier(0, 0, 1, 1)', + delay: 0, + duration: 0.25 + }, + standardExit: { + timingFunction: 'cubic-bezier(0, 0, 1, 1)', + delay: 0, + duration: 0.25 + }, + utility: { + timingFunction: 'cubic-bezier(0, 0, 1, 1)', + delay: 0, + duration: 0.25 + }, + utilityEntrance: { + timingFunction: 'cubic-bezier(0, 0, 1, 1)', + delay: 0, + duration: 0.25 + }, + utilityExit: { + timingFunction: 'cubic-bezier(0, 0, 1, 1)', + delay: 0, + duration: 0.25 + } + }, + asset: { + arrowLeft: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAi0lEQVRIDWNgGAWjIfD//38JID5Fk5AAGqwKxPeA+D/VLQCaaQLEr0CGgwBVLQCa5wbEn0EGwwDVLAAaGA3Ev2AGw2iqWAA0rBiI/8EMRaYptgBoWDeygehsci1gIlcjWfqArqZdEMFcBLSEdpGMZAntkimSJbTLaEiW0K6oQLKEdoUdzJJRemiHAAD4n+yzPWCs7QAAAABJRU5ErkJggg==', + arrowRight: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAg0lEQVRIDWNgGAWjIYArBP7//38KiCVwyVMsDjQcBO4BsSrFhmEzAGw8hHgFpEywqaFIDMkCEPMzELtRZCC6ZjQLQNxfQByNro5sPhYLQEL/gLiYbEORNeKwACbcDVPLBGMMOhrmVDSapkFE00imaTKlaUajaVFB28Ju0CXrUQfhDAEAEgHss6NhpLQAAAAASUVORK5CYII=', + backspaceOutline: 'data:image/png;base64,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', + check: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAOCAYAAAAi2ky3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACtSURBVHgBvdPdDcIgEAfwoy8Nb45QN3AGF2s36Ahu4gpuIDoBfSgfpdoTlCbEWEMh6T8hFzjyg5AAkBHOcQe5UWqspRx435sDpMYj6IYQwwVSEiJ2MKVUBWuzLSLl2HL+uxmNCGFO8yaL7RHxve6qRZoAuS4hxac8735elWVx7jrtMKL1o0Gcat9jhExHSukN/kUIFZ7MpDRtzE1isDRkAUtDvrA8ZI597FUf8gWH9P0b4gko9wAAAABJRU5ErkJggg==' + }, + color: { + palette: { + 'blue-20': '0xbecffeff', + 'blue-40': '0x93a9fdff', + 'blue-90': '0x000033ff', + 'grey-05': '0xf8f7faff', + 'grey-40': '0x929096ff', + 'grey-70': '0x48474bff', + 'grey-90': '0x181819ff' + }, + white: '0xffffffff', + black: '0x000000ff', + grey: '0x929096ff', + red: '0xe74c3cff', + orange: '0xdc7633ff', + yellow: '0xf7dc6fff', + green: '0x2ecc71ff', + blue: '0x93a9fdff', + purple: '0x663399ff', + material: '0x181819ff', + materialBrand: '0x000033ff', + overlay: '0x181819b3', + textNeutral: '0xf8f7faff', + textNeutralSecondary: '0xf8f7fab3', + textNeutralTertiary: '0xf8f7fa1a', + textNeutralDisabled: '0xf8f7fa80', + textInverse: '0x181819ff', + textInverseSecondary: '0x181819b3', + textInverseTertiary: '0x1818191a', + textInverseDisabled: '0x18181980', + textBrand: '0x93a9fdff', + textBrandSecondary: '0x93a9fdb3', + textBrandTertiary: '0x93a9fd1a', + textBrandDisabled: '0x93a9fd80', + textPositive: '0x2ecc71ff', + textNegative: '0xe74c3cff', + textInfo: '0x93a9fdff', + textCaution: '0xdc7633ff', + fillTransparent: '0xffffff0', + fillNeutral: '0xf8f7faff', + fillNeutralSecondary: '0xf8f7fab3', + fillNeutralTertiary: '0xf8f7fa1a', + fillNeutralDisabled: '0xf8f7fa80', + fillInverse: '0x181819ff', + fillInverseSecondary: '0x181819b3', + fillInverseTertiary: '0x1818191a', + fillInverseDisabled: '0x18181980', + fillBrand: '0x93a9fdff', + fillBrandSecondary: '0x93a9fdb3', + fillBrandTertiary: '0x93a9fd1a', + fillBrandDisabled: '0x93a9fd80', + fillPositive: '0x2ecc71ff', + fillNegative: '0xe74c3cff', + fillInfo: '0x93a9fdff', + fillCaution: '0xdc7633ff', + strokeNeutral: '0xf8f7faff', + strokeNeutralSecondary: '0xf8f7fab3', + strokeNeutralTertiary: '0xf8f7fa1a', + strokeNeutralDisabled: '0xf8f7fa80', + strokeInverse: '0x181819ff', + strokeInverseSecondary: '0x181819b3', + strokeInverseTertiary: '0x1818191a', + strokeInverseDisabled: '0x18181980', + strokeBrand: '0x93a9fdff', + strokeBrandSecondary: '0x93a9fdb3', + strokeBrandTertiary: '0x93a9fd1a', + strokeBrandDisabled: '0x93a9fd80', + strokePositive: '0x2ecc71ff', + strokeNegative: '0xe74c3cff', + strokeInfo: '0x93a9fdff', + strokeCaution: '0xdc7633ff', + interactiveNeutral: '0xffffff1a', + interactiveNeutralFocus: '0xffffffff', + interactiveNeutralFocusSoft: '0xffffff1a', + interactiveInverse: '0x48474b1a', + interactiveInverseFocus: '0x48474bff', + interactiveInverseFocusSoft: '0x48474b1a', + interactiveBrand: '0xbecffe1a', + interactiveBrandFocus: '0xbecffeff', + interactiveBrandFocusSoft: '0xbecffe1a', + shadowNeutral: '0x000000b3', + shadowNeutralFocus: '0x000000b3', + shadowNeutralFocusSoft: '0x000000b3', + shadowNeutralText: '0x000000ff', + shadowInverse: '0x000000b3', + shadowInverseFocus: '0x000000b3', + shadowInverseFocusSoft: '0x000000b3', + shadowInverseText: '0x000000ff', + shadowBrand: '0x000000b3', + shadowBrandFocus: '0x000000b3', + shadowBrandFocusSoft: '0x000000b3', + shadowBrandText: '0x000000ff' + }, + font: [], + layout: { + columnCount: 10, + focusScale: 1.2, + gutterX: 20, + gutterY: 20, + marginX: 150, + marginY: 150, + safe: 50, + screenW: 1920, + screenH: 1080 + }, + radius: { + none: 0, + xs: 2, + sm: 4, + md: 8, + lg: 16, + xl: 24 + }, + spacer: { + none: 0, + xxs: 2, + xs: 4, + sm: 8, + md: 10, + lg: 20, + xl: 30, + xxl: 40, + xxxl: 50 + }, + stroke: { + none: 0, + sm: 2, + md: 4, + lg: 6, + xl: 8 + }, + typography: { + display1: { + fontFamily: 'Arial', + fontSize: 75, + lineHeight: 85, + fontWeight: 500, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + display2: { + fontFamily: 'Arial', + fontSize: 50, + lineHeight: 60, + fontWeight: 500, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + headline1: { + fontFamily: 'Arial', + fontSize: 35, + fontWeight: 500, + lineHeight: 48, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + headline2: { + fontFamily: 'Arial', + fontSize: 30, + fontWeight: 500, + lineHeight: 40, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + headline3: { + fontFamily: 'Arial', + fontSize: 25, + fontWeight: 500, + lineHeight: 36, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + body1: { + fontFamily: 'Arial', + fontSize: 25, + fontWeight: 300, + lineHeight: 40, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + body2: { + fontFamily: 'Arial', + fontSize: 22, + fontWeight: 300, + lineHeight: 32, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + body3: { + fontFamily: 'Arial', + fontSize: 20, + fontWeight: 300, + lineHeight: 32, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + button1: { + fontFamily: 'Arial', + fontSize: 25, + fontWeight: 500, + lineHeight: 32, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + button2: { + fontFamily: 'Arial', + fontSize: 20, + fontWeight: 500, + lineHeight: 32, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + callout1: { + fontFamily: 'Arial', + fontSize: 20, + fontWeight: 500, + lineHeight: 32, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + caption1: { + fontFamily: 'Arial', + fontSize: 15, + fontWeight: 500, + lineHeight: 24, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + tag1: { + fontFamily: 'Arial', + fontSize: 20, + fontWeight: 500, + lineHeight: 24, + verticalAlign: 'middle', + textBaseline: 'bottom' + }, + footnote1: { + fontFamily: 'Arial', + fontSize: 22, + fontWeight: 300, + lineHeight: 30, + verticalAlign: 'middle', + textBaseline: 'bottom' + } + }, + componentConfig: { + Keyboard: { + base: { + keyProps: { + delete: { + title: null, + icon: 'data:image/png;base64,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' + } + } + } + } + } + }; + function Background() { + var bg1, bg2, heroMask; + var active = 0; + var alpha = 1; + var animationSettings = { + duration: 750, + easing: "ease-in-out" + }; + var bgStyles = { + alpha, + color: 4294967295 + }; + function changeBackgrounds(img) { + if (img.startsWith("#")) { + bg1.color = hexColor(img); + bg1.src = ""; + bg1.alpha = 1; + active = 1; + bg2.alpha = 0; + heroMask.alpha = 0; + return; + } else { + bg1.color = 4294967295; + heroMask.alpha = 1; + } + if (active === 0) { + bg1.src = img; + active = 1; + return; + } + if (active === 1) { + bg2.src = img; + active = 2; + bg2.alpha = 0; + bg2.animate({ + alpha + }, animationSettings).start(); + bg1.animate({ + alpha: 0 + }, animationSettings).start(); + return; + } + if (active === 2) { + bg1.src = img; + active = 1; + bg1.alpha = 0; + bg1.animate({ + alpha + }, animationSettings).start(); + bg2.animate({ + alpha: 0 + }, animationSettings).start(); + } + } + createEffect(on(globalBackground, img => { + changeBackgrounds(img); + }, { + defer: true + })); + return createComponent(View, { + width: 1920, + height: 1080, + zIndex: -5, + get children() { + return [createComponent(View, { + ref(r$) { + var _ref$ = bg1; + typeof _ref$ === "function" ? _ref$(r$) : bg1 = r$; + }, + style: bgStyles + }), createComponent(View, { + ref(r$) { + var _ref$2 = bg2; + typeof _ref$2 === "function" ? _ref$2(r$) : bg2 = r$; + }, + style: bgStyles, + alpha: 0 + }), createComponent(View, { + ref(r$) { + var _ref$3 = heroMask; + typeof _ref$3 === "function" ? _ref$3(r$) : heroMask = r$; + }, + src: "./assets/hero-mask-inverted.png", + get color() { + return hexColor(theme.color.materialBrand); + }, + width: 1920, + height: 1080 + })]; + } + }); + } + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r; + function objectFromEntries(entries) { + if (!entries || !entries[Symbol.iterator]) { + throw new Error("objectFromEntries requires a single iterable argument"); + } + var obj = {}; + var _iterator20 = _createForOfIteratorHelper(entries), + _step20; + try { + for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) { + var _step20$value = _slicedToArray(_step20.value, 2), + key2 = _step20$value[0], + value = _step20$value[1]; + obj[key2] = value; + } + } catch (err) { + _iterator20.e(err); + } finally { + _iterator20.f(); + } + return obj; + } + var defaultModeKeys = ["focus", "disabled"]; + var defaultToneKeys = ["brand", "inverse", "neutral"]; + function makeComponentStyles({ + themeKeys, + base, + modes, + tones, + themeStyles: themeStyles2, + modeKeys = defaultModeKeys, + toneKeys = defaultToneKeys + }, debug = false) { + var makeToneStyles = (tones2, themeComponentStyles, modeStyles) => { + var toneStyles = toneKeys.map(tone => { + var _ref25, _ref26; + var styles2 = {}; + var styleList = new Set([].concat.apply([], [(_ref25 = tones2 == null ? void 0 : tones2[tone]) !== null && _ref25 !== void 0 ? _ref25 : {}, (_ref26 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) !== null && _ref26 !== void 0 ? _ref26 : {}].map(Object.keys))); + styleList.forEach(styleKey => { + var _a2, _b2; + if (!modeKeys.includes(styleKey)) { + var _ref27; + styles2[styleKey] = (_ref27 = (_a2 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _a2[styleKey]) !== null && _ref27 !== void 0 ? _ref27 : (_b2 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _b2[styleKey]; + } + }); + modeKeys.forEach(mode => { + var _a2, _b2; + styles2[mode] = _objectSpread(_objectSpread(_objectSpread({}, modeStyles[mode]), (_a2 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _a2[mode]), (_b2 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _b2[mode]); + }); + return [tone, styles2]; + }); + return objectFromEntries(toneStyles); + }; + var makeModeStyles = (modes2, themeComponentStyles) => { + var modeStyles = modeKeys.map(mode => { + return [mode, _objectSpread(_objectSpread({}, modes2 == null ? void 0 : modes2[mode]), themeComponentStyles == null ? void 0 : themeComponentStyles[mode])]; + }); + var modeObject = objectFromEntries(modeStyles); + return modeObject; + }; + var makeBaseStyles = (base2, themeComponentStyles) => { + var baseStyles = _objectSpread(_objectSpread({}, base2), themeComponentStyles.base); + return baseStyles; + }; + var mapThemeKeysToSolid = stylesToMap => objectFromEntries(Object.entries(themeKeys).filter(([_, themeKey]) => stylesToMap[themeKey]).map(([solidKey, themeKey]) => [solidKey, stylesToMap[themeKey]])); + var convertComponentConfig = themeStyles3 => { + var convertedThemeStyles = objectFromEntries( + // iterate through each variant + Object.entries(themeStyles3).map(([variantName, styles2]) => { + var convertedStyles = mapThemeKeysToSolid(styles2); + Object.entries(styles2).filter(([styleName, _]) => modeKeys.includes(styleName)).forEach(([modeName, modeStyles]) => { + convertedStyles[modeName] = mapThemeKeysToSolid(modeStyles); + }); + return [variantName, convertedStyles]; + })); + return convertedThemeStyles; + }; + var generateSolidStylesFromLookupObject = (base2, modes2, tones2) => { + var themeComponentStyles = convertComponentConfig(themeStyles2); + debug && console.log(themeComponentStyles); + var baseStyles = makeBaseStyles(base2, themeComponentStyles); + debug && console.log(baseStyles); + var modeStyles = makeModeStyles(modes2, themeComponentStyles); + debug && console.log(modeStyles); + var toneStyles = makeToneStyles(tones2, themeComponentStyles, modeStyles); + debug && console.log(toneStyles); + return { + base: _objectSpread(_objectSpread({}, baseStyles), modeStyles), + tones: toneStyles + }; + }; + return generateSolidStylesFromLookupObject(base, modes, tones); + } + function withScrolling(adjustment = 0) { + return (componentRef, selectedElement, selected = 0, lastSelected) => { + var _componentRef$axis, _ref28, _ref29; + if (componentRef.children.length === 0) { + return; + } + var dimension = componentRef.flexDirection === "row" ? "width" : "height"; + var axis = componentRef.flexDirection === "row" ? "x" : "y"; + var gap = componentRef.gap || 0; + var scroll = componentRef.scroll || "auto"; + var _updateLastIndex = updateLastIndex(componentRef), + _updateLastIndex2 = _slicedToArray(_updateLastIndex, 2), + lastItem = _updateLastIndex2[0], + containerSize = _updateLastIndex2[1]; + var rootPosition = (_componentRef$axis = componentRef[axis]) !== null && _componentRef$axis !== void 0 ? _componentRef$axis : 0; + var selectedPosition = (_ref28 = selectedElement == null ? void 0 : selectedElement[axis]) !== null && _ref28 !== void 0 ? _ref28 : 0; + var selectedSize = (_ref29 = selectedElement == null ? void 0 : selectedElement[dimension]) !== null && _ref29 !== void 0 ? _ref29 : 0; + var direct = lastSelected === void 0 ? "none" : selected > lastSelected ? "positive" : "negative"; + var next = rootPosition; + if (scroll === "auto") { + if (componentRef.scrollIndex != void 0 && componentRef.scrollIndex >= 0) { + if (componentRef.selected >= componentRef.scrollIndex) { + if (direct === "positive") { + next = rootPosition - selectedSize - gap; + } else { + next = rootPosition + selectedSize + gap; + } + } + } else if (Math.abs(rootPosition) + containerSize < lastItem.position + lastItem.size || selectedPosition < Math.abs(rootPosition)) { + next = -selectedPosition + adjustment; + } + } else if (scroll === "always" || scroll === "edge" && direct === "negative" && Math.abs(rootPosition) > selectedPosition) { + next = -selectedPosition + adjustment; + } else if (scroll === "edge" && direct === "positive" && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) { + next = rootPosition - selectedSize - gap; + } else if (scroll === "edge" && direct === "none") { + var currentChildIndex = 0; + var currentChild, currentChildSize; + while (currentChildIndex < componentRef.children.length && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) { + var _currentChild$dimensi; + currentChild = componentRef.children[currentChildIndex++]; + currentChildSize = (_currentChild$dimensi = currentChild[dimension]) !== null && _currentChild$dimensi !== void 0 ? _currentChild$dimensi : 0; + rootPosition -= currentChildSize + gap; + } + next = rootPosition; + } + if (axis === "x" && componentRef.x !== next) { + componentRef.x = next; + } else if (axis === "y" && componentRef.y !== next) { + componentRef.y = next; + } + }; + } + function updateLastIndex(items) { + var lastItem, containerSize; + if (items.flexDirection === "row") { + lastItem = { + position: items.children[items.children.length - 1].x, + size: items.children[items.children.length - 1].width + }; + containerSize = items.width; + } else { + lastItem = { + position: items.children[items.children.length - 1].y, + size: items.children[items.children.length - 1].height + }; + containerSize = items.height; + } + return [lastItem, containerSize]; + } + var chainFunctions = (...args) => { + var onlyFunctions = args.filter(func => typeof func === "function"); + if (onlyFunctions.length === 0) { + return void 0; + } + if (onlyFunctions.length === 1) { + return onlyFunctions[0]; + } + return function (...innerArgs) { + var result; + var _iterator21 = _createForOfIteratorHelper(onlyFunctions), + _step21; + try { + for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) { + var func = _step21.value; + result = func.apply(this, innerArgs); + if (result === true) { + return result; + } + } + } catch (err) { + _iterator21.e(err); + } finally { + _iterator21.f(); + } + return result; + }; + }; + function onGridFocus() { + if (!this || this.selected === void 0 || this.children.length === 0) return false; + var child = this.children[this.selected]; + while (child == null ? void 0 : child.skipFocus) { + this.selected++; + child = this.children[this.selected]; + } + if (!(child instanceof ElementNode)) return false; + child.setFocus(); + return true; + } + function handleNavigation(direction) { + return function () { + var _a2, _b2, _c2; + var numChildren = this.children.length; + var wrap = this.wrap; + var lastSelected = this.selected || 0; + if (numChildren === 0) { + return false; + } + if (direction === "right" || direction === "down") { + do { + this.selected = (this.selected || 0) % numChildren + 1; + if (this.selected >= numChildren) { + if (!wrap) { + this.selected = void 0; + break; + } + this.selected = 0; + } + } while ((_a2 = this.children[this.selected]) == null ? void 0 : _a2.skipFocus); + } else if (direction === "left" || direction === "up") { + do { + this.selected = (this.selected || 0) % numChildren - 1; + if (this.selected < 0) { + if (!wrap) { + this.selected = void 0; + break; + } + this.selected = numChildren - 1; + } + } while ((_b2 = this.children[this.selected]) == null ? void 0 : _b2.skipFocus); + } + if (this.selected === void 0) { + this.selected = lastSelected; + if ((_c2 = this.children[this.selected]) == null ? void 0 : _c2.states.has("focus")) { + return false; + } + } + var active = this.children[this.selected]; + this.onSelectedChanged && this.onSelectedChanged.call(this, this, active, this.selected, lastSelected); + if (this.plinko && lastSelected !== void 0) { + var lastSelectedChild = this.children[lastSelected]; + var num = lastSelectedChild.selected || 0; + active.selected = num < active.children.length ? num : active.children.length - 1; + } + active.setFocus(); + return true; + }; + } + function getWidthByUpCount$1(theme2, upCount = 1) { + var screenW = theme2.layout.screenW; + var columnCount = theme2.layout.columnCount; + var marginX = theme2.layout.marginX; + var gutterX = theme2.layout.gutterX; + if (upCount < 1 || upCount > columnCount) { + console.error(`Column expects a number between 1 & ${columnCount}. Received ${upCount}`); + return; + } + var columnWidth = screenW - marginX * 2; + var columnGapTotal = (upCount - 1) * gutterX; + var totalColumnsWidth = columnWidth - columnGapTotal; + return totalColumnsWidth / upCount; + } + var _ref30 = (_a = theme) == null ? void 0 : _a.componentConfig, + _ref30$Artwork = _ref30.Artwork, + _ref30$Artwork2 = _ref30$Artwork === void 0 ? { + styles: {} + } : _ref30$Artwork, + defaultTone$f = _ref30$Artwork2.defaultTone, + themeStyles$e = _objectWithoutProperties(_ref30$Artwork2, _excluded); + var container$f = { + themeKeys: { + fillColor: "fillColor", + scale: "imageScale", + pivotX: "imageScalePivotX", + pivotY: "imageScalePivotY" + }, + base: { + fallbackSrc: void 0, + fillColor: theme.color.overlay, + gradientColor: theme.color.material, + pivotX: 0.5, + pivotY: 0.5, + scale: void 0 + }, + themeStyles: themeStyles$e + }; + makeComponentStyles(container$f); + var _ref31 = (_b = theme) == null ? void 0 : _b.componentConfig, + _ref31$Badge = _ref31.Badge, + _ref31$Badge2 = _ref31$Badge === void 0 ? { + styles: {} + } : _ref31$Badge, + defaultTone$e = _ref31$Badge2.defaultTone, + themeStyles$d = _objectWithoutProperties(_ref31$Badge2, _excluded2); + var container$e = { + themeKeys: { + color: "backgroundColor" + }, + base: { + color: theme.color.fillInverseSecondary, + borderRadius: theme.radius.sm, + // borderRadius must be applied _before_ border to prevent the node from breaking + border: { + color: theme.color.strokeInverse, + width: theme.stroke.sm + }, + display: "flex", + justifyContent: "spaceEvenly", + padding: [theme.spacer.md - theme.stroke.sm, theme.spacer.xs + theme.stroke.sm, theme.spacer.md + theme.stroke.sm, theme.spacer.md + theme.stroke.sm] + }, + tones: { + inverse: { + color: theme.color.fillNeutralSecondary, + borderRadius: theme.radius.sm, + border: { + color: theme.color.strokeInverseSecondary, + width: theme.stroke.sm + } + }, + brand: { + color: theme.color.fillBrand, + borderRadius: theme.radius.sm, + border: { + color: theme.color.strokeInverseSecondary, + width: theme.stroke.sm + } + } + }, + themeStyles: themeStyles$d + }; + var text$7 = { + themeKeys: { + color: "textColor" + }, + base: _objectSpread(_objectSpread({}, theme.typography.tag1), {}, { + color: theme.color.textNeutral + }), + tones: { + inverse: { + color: theme.color.textInverse + }, + brand: { + color: theme.color.textNeutral + } + }, + themeStyles: themeStyles$d + }; + var icon$2 = { + themeKeys: { + color: "iconColor" + }, + base: { + color: theme.color.textNeutral + }, + tones: { + inverse: { + color: theme.color.textInverse + }, + brand: { + color: theme.color.textNeutral + } + }, + themeStyles: themeStyles$d + }; + makeComponentStyles(container$e); + makeComponentStyles(icon$2); + makeComponentStyles(text$7); + var _ref32 = (_c = theme) == null ? void 0 : _c.componentConfig, + _ref32$Button = _ref32.Button, + _ref32$Button2 = _ref32$Button === void 0 ? { + styles: {} + } : _ref32$Button, + defaultTone$d = _ref32$Button2.defaultTone, + themeStyles$c = _objectWithoutProperties(_ref32$Button2, _excluded3); + var _ref33 = (_d = theme) == null ? void 0 : _d.componentConfig, + _ref33$Surface = _ref33.Surface, + _ref33$Surface2 = _ref33$Surface === void 0 ? { + styles: {} + } : _ref33$Surface, + surfaceDefaultTone = _ref33$Surface2.surfaceDefaultTone, + surfaceThemeStyles$1 = _objectWithoutProperties(_ref33$Surface2, _excluded4); + var container$d = { + themeKeys: { + textAlign: "textAlign", + borderRadius: "radius", + color: "backgroundColor", + justifyContent: "justifyContent" + }, + base: { + height: theme.typography.button1.lineHeight + theme.spacer.xl * 2, + display: "flex", + padding: [theme.spacer.xxxl, theme.spacer.xl], + color: theme.color.interactiveNeutral, + justifyContent: "center", + alignItems: "center", + borderRadius: theme.radius.sm, + contentColor: theme.color.fillNeutral + }, + modes: { + focus: { + color: theme.color.interactiveNeutralFocus, + contentColor: theme.color.fillInverse + }, + disabled: { + color: theme.color.fillNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.interactiveInverse + }, + brand: { + color: theme.color.interactiveBrand, + focus: { + color: theme.color.fillNeutral + } + } + }, + themeStyles: _objectSpread(_objectSpread({}, surfaceThemeStyles$1), themeStyles$c) + }; + var content = { + themeKeys: { + color: "contentColor" + }, + base: { + color: theme.color.textNeutral + }, + modes: { + focus: { + color: theme.color.textInverse + }, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.fillNeutral + }, + brand: { + color: theme.color.fillBrand, + focus: { + color: theme.color.fillBrand + } + } + }, + themeStyles: _objectSpread(_objectSpread({}, surfaceThemeStyles$1), themeStyles$c) + }; + var text$6 = { + themeKeys: { + color: "textColor" + }, + base: _objectSpread({ + textAlign: "left", + color: theme.color.textNeutral + }, theme.typography.button1), + modes: { + focus: { + color: theme.color.textInverse + }, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.fillNeutral + }, + brand: { + color: theme.color.fillBrand, + focus: { + color: theme.color.fillBrand + } + } + }, + themeStyles: _objectSpread(_objectSpread({}, surfaceThemeStyles$1), themeStyles$c) + }; + var Container$c = makeComponentStyles(container$d); + var Content = makeComponentStyles(content); + var Text$5 = makeComponentStyles(text$6); + var styles$c = { + tone: defaultTone$d || surfaceDefaultTone || "neutral", + Container: Container$c, + Content, + Text: Text$5 + }; + var Button$1 = props => { + return createComponent(View, mergeProps(props, { + get style() { + var _props$tone; + var _a2; + return [...[props.style].flat(), + // + (_a2 = styles$c.Container.tones) == null ? void 0 : _a2[(_props$tone = props.tone) !== null && _props$tone !== void 0 ? _props$tone : styles$c.tone], styles$c.Container.base]; + }, + forwardStates: true, + get children() { + return createComponent(Text, { + get style() { + var _props$tone2; + var _a2; + return [...[(_a2 = props.style) == null ? void 0 : _a2.Text].flat(), + // + styles$c.Text.tones[(_props$tone2 = props.tone) !== null && _props$tone2 !== void 0 ? _props$tone2 : styles$c.tone], styles$c.Text.base]; + }, + get children() { + return props.children; + } + }); + } + })); + }; + var _ref34 = (_e = theme) == null ? void 0 : _e.componentConfig, + _ref34$Checkbox = _ref34.Checkbox, + _ref34$Checkbox2 = _ref34$Checkbox === void 0 ? { + styles: {} + } : _ref34$Checkbox, + defaultTone$c = _ref34$Checkbox2.defaultTone, + themeStyles$b = _objectWithoutProperties(_ref34$Checkbox2, _excluded5); + var strokeWidth = theme.stroke.sm; + var size = theme.spacer.xxl; + var container$c = { + themeKeys: { + color: "color", + borderRadius: "borderRadius", + border: "border", + justifyContent: "justifyContent" + }, + base: { + width: size, + height: size, + display: "flex", + justifyContent: "center", + color: theme.color.fillNeutral, + alignItems: "center", + borderRadius: size / 4, + border: { + color: theme.color.strokeInverse, + width: strokeWidth + } + }, + modes: { + disabled: { + alpha: theme.alpha.inactive + } + }, + tones: { + brand: { + borderRadius: size / 4, + border: { + color: theme.color.strokeNeutralSecondary, + width: strokeWidth + }, + color: theme.color.fillNeutralSecondary, + checked: { + borderRadius: size / 4, + border: { + color: theme.color.strokeNeutralSecondary, + width: strokeWidth + }, + color: theme.color.fillBrand + } + }, + neutral: { + borderRadius: size / 4, + border: { + color: theme.color.strokeNeutralSecondary, + width: strokeWidth + }, + color: theme.color.fillInverseSecondary, + checked: { + borderRadius: size / 4, + border: { + color: theme.color.strokeNeutralSecondary, + width: strokeWidth + }, + color: theme.color.fillNeutral + } + }, + inverse: { + borderRadius: size / 4, + border: { + color: theme.color.strokeInverseSecondary, + width: strokeWidth + }, + color: theme.color.fillNeutralSecondary, + checked: { + borderRadius: size / 4, + border: { + color: theme.color.strokeInverseSecondary, + width: strokeWidth + }, + color: theme.color.fillInverse + } + } + }, + modeKeys: ["focus", "disabled", "checked"], + themeStyles: themeStyles$b + }; + var icon$1 = { + themeKeys: { + color: "color" + }, + base: { + width: theme.spacer.lg, + height: theme.spacer.lg, + src: theme.asset.check + }, + tones: { + neutral: { + color: theme.color.fillInverse + }, + inverse: { + color: theme.color.fillNeutral + }, + brand: { + color: theme.color.fillInverse + } + }, + themeStyles: themeStyles$b + }; + makeComponentStyles(container$c); + makeComponentStyles(icon$1); + var _ref35 = (_f = theme) == null ? void 0 : _f.componentConfig, + _ref35$Icon = _ref35.Icon, + _ref35$Icon2 = _ref35$Icon === void 0 ? { + styles: {} + } : _ref35$Icon, + defaultTone$b = _ref35$Icon2.defaultTone, + themeStyles$a = _objectWithoutProperties(_ref35$Icon2, _excluded6); + var container$b = { + themeKeys: { + color: "color" + }, + base: { + width: 100, + height: 100, + color: theme.color.fillInverse + }, + tones: { + inverse: { + color: theme.color.fillInverse + }, + brand: { + color: theme.color.fillBrand + } + }, + themeStyles: themeStyles$a + }; + makeComponentStyles(container$b); + var _ref36 = (_g = theme) == null ? void 0 : _g.componentConfig, + _ref36$Column = _ref36.Column, + _ref36$Column2 = _ref36$Column === void 0 ? { + styles: {} + } : _ref36$Column, + defaultTone$a = _ref36$Column2.defaultTone, + themeStyles$9 = _objectWithoutProperties(_ref36$Column2, _excluded7); + var container$a = { + themeKeys: { + gap: "itemSpacing", + scrollIndex: "scrollIndex", + itemTransition: "itemTransition" + }, + base: { + display: "flex", + flexBoundary: "fixed", + flexDirection: "column", + gap: theme.layout.gutterY, + itemTransition: _objectSpread(_objectSpread({}, theme.animation.standardEntrance), {}, { + duration: theme.animation.duration.fast + }) + }, + themeStyles: themeStyles$9 + }; + var Container$9 = makeComponentStyles(container$a); + var styles$9 = { + tone: defaultTone$a || "neutral", + Container: Container$9 + }; + var Column = props => { + var onUp = handleNavigation("up"); + var onDown = handleNavigation("down"); + return createComponent(View, mergeProps(props, { + get onUp() { + return chainFunctions(props.onUp, onUp); + }, + get onDown() { + return chainFunctions(props.onDown, onDown); + }, + get selected() { + return props.selected || 0; + }, + forwardFocus: onGridFocus, + get onCreate() { + return chainFunctions(elm => { + var _props$selected, _props$selected2; + return withScrolling(props.y).call(elm, elm, elm.children[(_props$selected = props.selected) !== null && _props$selected !== void 0 ? _props$selected : 0], (_props$selected2 = props.selected) !== null && _props$selected2 !== void 0 ? _props$selected2 : 0, void 0); + }, props.onCreate); + }, + get onSelectedChanged() { + return chainFunctions(props.onSelectedChanged, props.scroll !== "none" ? withScrolling(props.y) : void 0); + }, + get style() { + var _props$tone3; + return [...[props.style].flat(), styles$9.Container.tones[(_props$tone3 = props.tone) !== null && _props$tone3 !== void 0 ? _props$tone3 : styles$9.tone], styles$9.Container.base]; + } + })); + }; + var _ref37 = (_h = theme) == null ? void 0 : _h.componentConfig, + _ref37$Label = _ref37.Label, + _ref37$Label2 = _ref37$Label === void 0 ? { + styles: {} + } : _ref37$Label, + defaultTone$9 = _ref37$Label2.defaultTone, + themeStyles$8 = _objectWithoutProperties(_ref37$Label2, _excluded8); + var container$9 = { + themeKeys: { + color: "backgroundColor", + borderRadius: "radius" + }, + base: { + display: "flex", + justifyContent: "center", + color: theme.color.textNeutral, + padding: [theme.spacer.md, theme.spacer.lg], + // TODO themed padding values + borderRadius: [theme.radius.md, theme.radius.md, theme.radius.md, theme.radius.none], + height: theme.typography.caption1.lineHeight + theme.spacer.md, + neutral: { + backgroundColor: theme.color.fillNeutral + } + }, + tones: { + inverse: { + color: theme.color.fillInverse + }, + brand: { + color: theme.color.fillBrand, + focus: { + color: theme.color.orange + } + } + }, + themeStyles: themeStyles$8 + }; + var text$5 = { + themeKeys: { + color: "textColor" + }, + base: _objectSpread(_objectSpread({}, theme.typography.caption1), {}, { + color: theme.color.textInverse + }), + tones: { + inverse: { + color: theme.color.textNeutral + }, + brand: { + color: theme.color.textNeutral + } + }, + themeStyles: themeStyles$8 + }; + makeComponentStyles(container$9); + makeComponentStyles(text$5); + var _ref38 = (_i = theme) == null ? void 0 : _i.componentConfig, + _ref38$Rating = _ref38.Rating, + _ref38$Rating2 = _ref38$Rating === void 0 ? { + styles: {}, + defaultTone: "neutral" + } : _ref38$Rating, + themeStyles$7 = _ref38$Rating2.styles, + defaultTone$8 = _ref38$Rating2.defaultTone; + var container$8 = { + themeKeys: { + justifyContent: "justifyContent", + itemSpacing: "itemSpacing" + }, + base: { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + itemSpacing: theme.spacer.sm + }, + toneModes: {}, + themeStyles: themeStyles$7 + }; + var text$4 = { + themeKeys: { + color: "textColor" + }, + base: _objectSpread({ + color: theme.color.textNeutral + }, theme.typography.body2), + toneModes: {}, + themeStyles: themeStyles$7 + }; + var icon = { + themeKeys: { + color: "color" + }, + base: { + height: theme.typography.body2.lineHeight, + width: theme.typography.body2.lineHeight, + color: theme.color.fillNeutral, + marginRight: theme.spacer.sm + }, + toneModes: {}, + themeStyles: themeStyles$7 + }; + makeComponentStyles(container$8); + makeComponentStyles(icon); + makeComponentStyles(text$4); + var _ref39 = (_j = theme) == null ? void 0 : _j.componentConfig, + _ref39$Details = _ref39.Details, + _ref39$Details2 = _ref39$Details === void 0 ? { + styles: {} + } : _ref39$Details, + defaultTone$7 = _ref39$Details2.defaultTone, + themeStyles$6 = _objectWithoutProperties(_ref39$Details2, _excluded9); + var container$7 = { + themeKeys: { + alignItems: "alignItems", + contentSpacing: "contentSpacing", + badgeContentSpacing: "badgeContentSpacing", + ratingContentSpacing: "ratingContentSpacing" + }, + base: { + display: "flex", + flexDirection: "row", + alignItems: "center", + contentSpacing: theme.spacer.lg, + badgeContentSpacing: theme.spacer.sm, + ratingContentSpacing: theme.spacer.lg + }, + themeStyles: themeStyles$6 + }; + var text$3 = { + themeKeys: { + color: "textColor" + }, + base: _objectSpread(_objectSpread({}, theme.typography.body2), {}, { + marginRight: theme.spacer.lg, + color: theme.color.textNeutral + }), + tones: { + neutral: { + disabled: { + color: theme.color.textNeutralDisabled + } + }, + inverse: { + color: theme.color.textInverse, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + brand: { + color: theme.color.textNeutral, + disabled: { + color: theme.color.textNeutralDisabled + } + } + }, + themeStyles: themeStyles$6 + }; + makeComponentStyles(container$7); + makeComponentStyles(text$3); + var _ref40 = (_k = theme) == null ? void 0 : _k.componentConfig, + _ref40$Metadata = _ref40.Metadata, + _ref40$Metadata2 = _ref40$Metadata === void 0 ? { + styles: {} + } : _ref40$Metadata, + defaultTone$6 = _ref40$Metadata2.defaultTone, + themeStyles$5 = _objectWithoutProperties(_ref40$Metadata2, _excluded10); + var container$6 = { + themeKeys: { + justifyContent: "justifyContent", + alpha: "alpha" + }, + base: { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + alpha: theme.alpha.primary + }, + modes: { + disabled: { + alpha: theme.alpha.inactive + } + }, + themeStyles: themeStyles$5 + }; + var titleText = { + themeKeys: { + color: "textColor" + }, + base: _objectSpread(_objectSpread({ + maxLines: 1, + contain: "width" + }, theme.typography.headline3), {}, { + color: theme.color.textNeutral + }), + tones: { + neutral: { + disabled: { + color: theme.color.textNeutralDisabled + } + }, + inverse: { + color: theme.color.textInverse, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + brand: { + color: theme.color.textNeutral, + disabled: { + color: theme.color.textNeutralDisabled + } + } + }, + themeStyles: themeStyles$5 + }; + var descriptionText = { + themeKeys: { + color: "textColor" + }, + base: _objectSpread(_objectSpread({ + contain: "width", + maxLines: 2 + }, theme.typography.body2), {}, { + color: theme.color.textNeutralSecondary + }), + tones: { + neutral: { + disabled: { + color: theme.color.textNeutralDisabled + } + }, + inverse: { + color: theme.color.textInverseSecondary, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + brand: { + color: theme.color.textNeutralSecondary, + disabled: { + color: theme.color.textNeutralDisabled + } + } + }, + themeStyles: themeStyles$5 + }; + makeComponentStyles(container$6); + makeComponentStyles(descriptionText); + makeComponentStyles(titleText); + var _ref41 = (_l = theme) == null ? void 0 : _l.componentConfig, + _ref41$ProgressBar = _ref41.ProgressBar, + _ref41$ProgressBar2 = _ref41$ProgressBar === void 0 ? { + styles: {} + } : _ref41$ProgressBar, + defaultTone$5 = _ref41$ProgressBar2.defaultTone, + themeStyles$4 = _objectWithoutProperties(_ref41$ProgressBar2, _excluded11); + var container$5 = { + themeKeys: { + color: "barColor", + borderRadius: "borderRadius" + }, + base: { + height: theme.spacer.md, + color: theme.color.fillNeutralTertiary, + borderRadius: theme.radius.xs + }, + tones: { + inverse: { + color: theme.color.fillInverseTertiary + } + }, + themeStyles: themeStyles$4 + }; + var progress = { + themeKeys: { + color: "progressColor", + borderRadius: "borderRadius" + }, + base: { + borderRadius: theme.radius.xs, + color: theme.color.fillNeutral + }, + tones: { + inverse: { + color: theme.color.fillInverse + }, + brand: { + color: theme.color.fillBrand + } + }, + themeStyles: themeStyles$4 + }; + makeComponentStyles(container$5); + makeComponentStyles(progress); + var _ref42 = (_m = theme) == null ? void 0 : _m.componentConfig, + _ref42$Row = _ref42.Row, + _ref42$Row2 = _ref42$Row === void 0 ? { + styles: {} + } : _ref42$Row, + defaultTone$4 = _ref42$Row2.defaultTone, + themeStyles$3 = _objectWithoutProperties(_ref42$Row2, _excluded12); + var container$4 = { + themeKeys: { + gap: "itemSpacing", + scrollIndex: "scrollIndex", + itemTransition: "itemTransition" + }, + base: { + display: "flex", + flexBoundary: "fixed", + flexDirection: "row", + gap: theme.layout.gutterX, + itemTransition: _objectSpread(_objectSpread({}, theme.animation.standardEntrance), {}, { + duration: theme.animation.duration.fast + }) + }, + themeStyles: themeStyles$3 + }; + var Container$3 = makeComponentStyles(container$4); + var styles$3 = { + tone: defaultTone$4, + Container: Container$3 + }; + var Row = props => { + var onLeft = handleNavigation("left"); + var onRight = handleNavigation("right"); + return createComponent(View, mergeProps(props, { + get selected() { + return props.selected || 0; + }, + get onLeft() { + return chainFunctions(props.onLeft, onLeft); + }, + get onRight() { + return chainFunctions(props.onRight, onRight); + }, + forwardFocus: onGridFocus, + get onCreate() { + return chainFunctions(elm => { + var _props$selected3, _props$selected4; + return withScrolling(props.x).call(elm, elm, elm.children[(_props$selected3 = props.selected) !== null && _props$selected3 !== void 0 ? _props$selected3 : 0], (_props$selected4 = props.selected) !== null && _props$selected4 !== void 0 ? _props$selected4 : 0, void 0); + }, props.onCreate); + }, + get onSelectedChanged() { + return chainFunctions(props.onSelectedChanged, props.scroll !== "none" ? withScrolling(props.x) : void 0); + }, + get tone() { + var _props$tone4; + return (_props$tone4 = props.tone) !== null && _props$tone4 !== void 0 ? _props$tone4 : styles$3.tone; + }, + get style() { + return [...[props.style].flat(), styles$3.Container.tones[props.tone || styles$3.tone], styles$3.Container.base]; + }, + get states() { + var _props$tone5; + return (_props$tone5 = props.tone) !== null && _props$tone5 !== void 0 ? _props$tone5 : styles$3.tone; + } + })); + }; + var _ref43 = (_n = theme) == null ? void 0 : _n.componentConfig, + _ref43$Keyboard = _ref43.Keyboard, + _ref43$Keyboard2 = _ref43$Keyboard === void 0 ? { + styles: {} + } : _ref43$Keyboard, + defaultTone$3 = _ref43$Keyboard2.defaultTone, + themeStyles$2 = _objectWithoutProperties(_ref43$Keyboard2, _excluded13); + var container$3 = { + themeKeys: { + keySpacing: "keySpacing", + screenW: "screenW", + marginX: "marginX" + }, + base: { + keySpacing: theme.spacer.md, + screenW: theme.layout.screenW, + marginX: theme.layout.marginX, + height: 100 + }, + // @ts-expect-error see TODO + themeStyles: themeStyles$2 + }; + var key = { + themeKeys: { + keySpacing: "keySpacing", + textAlign: "textAlign", + borderRadius: "borderRadius", + color: "backgroundColor", + justifyContent: "justifyContent", + baseWidth: "baseWidth", + sizes: "sizes", + contentColor: "contentColor" + // what is this used for + }, + base: { + keySpacing: theme.spacer.md, + height: theme.spacer.md * 9, + paddingX: theme.spacer.md, + sizes: { + sm: 1, + md: 2, + lg: 3, + xl: 4, + xxl: 5 + }, + contentColor: theme.color.fillNeutral, + padding: [theme.spacer.xxxl, theme.spacer.xl], + baseWidth: theme.spacer.md * 7, + color: theme.color.interactiveNeutral, + display: "flex", + justifyContent: "center", + alignItems: "center", + borderRadius: theme.radius.sm + }, + modes: { + focus: { + color: theme.color.interactiveNeutralFocus, + contentColor: theme.color.fillInverse + }, + disabled: { + color: theme.color.fillNeutralDisabled, + contentColor: theme.color.fillNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.interactiveInverse, + focus: { + color: theme.color.interactiveInverseFocus, + contentColor: theme.color.fillNeutral + } + }, + brand: { + focus: { + contentColor: theme.color.fillNeutral + } + } + }, + // @ts-expect-error see TODO + themeStyles: themeStyles$2 + }; + var text$2 = { + themeKeys: { + color: "textColor" + }, + base: _objectSpread({ + textAlign: "left", + color: theme.color.textNeutral + }, theme.typography.headline2), + modes: { + focus: { + color: theme.color.textInverse + }, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + tones: { + inverse: { + focus: { + color: theme.color.textNeutral + } + } + }, + // @ts-expect-error see TODO + themeStyles: themeStyles$2 + }; + makeComponentStyles(container$3); + makeComponentStyles(key); + makeComponentStyles(text$2); + var _ref44 = (_o = theme) == null ? void 0 : _o.componentConfig, + _ref44$Key = _ref44.Key, + _ref44$Key2 = _ref44$Key === void 0 ? { + styles: {} + } : _ref44$Key, + defaultTone$2 = _ref44$Key2.defaultTone, + themeStyles$1 = _objectWithoutProperties(_ref44$Key2, _excluded14); + var container$2 = { + themeKeys: { + keySpacing: "keySpacing", + textAlign: "textAlign", + borderRadius: "borderRadius", + color: "backgroundColor", + justifyContent: "justifyContent", + baseWidth: "baseWidth", + sizes: "sizes", + contentColor: "contentColor" + }, + base: { + keySpacing: theme.spacer.md, + height: theme.spacer.md * 9, + paddingX: theme.spacer.md, + contentColor: theme.color.fillNeutral, + sizes: { + sm: 1, + md: 2, + lg: 3, + xl: 4, + xxl: 5 + }, + padding: [theme.spacer.md], + baseWidth: theme.spacer.md * 7, + color: theme.color.interactiveNeutral, + display: "flex", + justifyContent: "center", + alignItems: "center", + borderRadius: theme.radius.sm + }, + modes: { + focus: { + color: theme.color.interactiveNeutralFocus, + contentColor: theme.color.fillInverse + }, + disabled: { + color: theme.color.fillNeutralDisabled, + contentColor: theme.color.fillNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.interactiveInverse, + focus: { + color: theme.color.interactiveInverseFocus, + contentColor: theme.color.fillNeutral + } + }, + brand: { + focus: { + contentColor: theme.color.fillNeutral + } + } + }, + themeStyles: themeStyles$1 + }; + var text$1 = { + themeKeys: { + color: "textColor" + }, + base: _objectSpread({ + textAlign: "left", + color: theme.color.textNeutral + }, theme.typography.headline2), + modes: { + focus: { + color: theme.color.textInverse + }, + disabled: { + color: theme.color.textNeutralDisabled + } + }, + tones: { + inverse: { + focus: { + color: theme.color.textNeutral + } + } + }, + themeStyles: themeStyles$1 + }; + makeComponentStyles(container$2); + makeComponentStyles(text$1); + var _ref45 = (_p = theme) == null ? void 0 : _p.componentConfig, + _ref45$Input = _ref45.Input, + _ref45$Input2 = _ref45$Input === void 0 ? { + styles: {} + } : _ref45$Input, + defaultTone$1 = _ref45$Input2.defaultTone, + themeStyles = _objectWithoutProperties(_ref45$Input2, _excluded15); + var container$1 = { + themeKeys: { + justifyContent: "justifyContent" + }, + base: { + display: "flex", + justifyContent: "flexStart", + flexDirection: "column", + width: 100, + height: 100, + actualTitle: "" + }, + themeStyles + }; + var input = { + themeKeys: { + borderRadius: "borderRadius", + color: "backgroundColor" + }, + base: { + width: getWidthByUpCount$1(theme, 4), + height: 100, + display: "flex", + flexDirection: "column", + padding: [theme.spacer.xxxl, theme.spacer.xl], + color: theme.color.interactiveNeutral, + contentColor: theme.color.fillInverse, + borderRadius: theme.radius.sm, + marginX: theme.spacer.xxxl + }, + modes: { + focus: { + color: theme.color.interactiveNeutralFocus + }, + disabled: { + color: theme.color.fillNeutralDisabled + } + }, + tones: { + inverse: { + color: theme.color.interactiveInverse + }, + brand: { + color: theme.color.interactiveBrand, + focus: { + color: theme.color.fillNeutral + } + } + }, + themeStyles + }; + var text = { + themeKeys: { + color: "textColor" + }, + base: _objectSpread({ + textAlign: "left", + color: theme.color.textNeutral + }, theme.typography.button1), + themeStyles + }; + makeComponentStyles(container$1); + makeComponentStyles(input); + makeComponentStyles(text); + var _ref46 = (_q = theme) == null ? void 0 : _q.componentConfig, + _ref46$Tile = _ref46.Tile, + _ref46$Tile2 = _ref46$Tile === void 0 ? { + styles: {} + } : _ref46$Tile, + defaultTone = _ref46$Tile2.defaultTone, + tileThemeStyles = _objectWithoutProperties(_ref46$Tile2, _excluded16); + var _ref47 = (_r = theme) == null ? void 0 : _r.componentConfig, + _ref47$Surface = _ref47.Surface, + _ref47$Surface2 = _ref47$Surface === void 0 ? { + styles: {} + } : _ref47$Surface, + defaultSurfaceTone = _ref47$Surface2.defaultSurfaceTone, + surfaceThemeStyles = _objectWithoutProperties(_ref47$Surface2, _excluded17); + var container = { + themeKeys: { + alpha: "alpha", + paddingYProgress: "paddingYProgress" + }, + base: { + width: 400, + height: 240, + padding: [40, 10], + // TODO support separate paddingX and paddingY values from theme, possibly formatter + paddingYProgress: theme.spacer.xl, + paddingYBetweenContent: theme.spacer.md, + borderRadius: theme.radius.md, + alpha: theme.alpha.primary + }, + modes: { + disabled: { + alpha: theme.alpha.inactive + } + }, + themeStyles: _objectSpread(_objectSpread({}, surfaceThemeStyles), tileThemeStyles) + }; + var insetBottom = { + themeKeys: {}, + base: { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + mountY: 1 + }, + themeStyles: tileThemeStyles + }; + var standardBottom = { + themeKeys: {}, + base: { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart" + }, + themeStyles: tileThemeStyles + }; + var logoContainer = { + themeKeys: {}, + base: { + width: theme.spacer.lg * 5, + height: theme.spacer.xxl + theme.spacer.md + }, + themeStyles: tileThemeStyles + }; + makeComponentStyles(container); + makeComponentStyles(insetBottom); + makeComponentStyles(standardBottom); + makeComponentStyles(logoContainer); + var fpsStyle = { + color: 255, + height: 150, + width: 330, + x: 1910, + y: 10, + mountX: 1, + alpha: 0.8, + zIndex: 100 + }; + var fpsLabel = { + x: 10, + fontSize: 22, + textColor: hexColor("#f6f6f6") + }; + var fpsValue = { + fontSize: 22, + textColor: hexColor("#f6f6f6") + }; + var _createSignal23 = createSignal(0), + _createSignal24 = _slicedToArray(_createSignal23, 2), + fps = _createSignal24[0], + setFps = _createSignal24[1]; + var _createSignal25 = createSignal(0), + _createSignal26 = _slicedToArray(_createSignal25, 2), + avgFps = _createSignal26[0], + setAvgFps = _createSignal26[1]; + var _createSignal27 = createSignal(99), + _createSignal28 = _slicedToArray(_createSignal27, 2), + minFps = _createSignal28[0], + setMinFps = _createSignal28[1]; + var _createSignal29 = createSignal(0), + _createSignal30 = _slicedToArray(_createSignal29, 2), + maxFps = _createSignal30[0], + setMaxFps = _createSignal30[1]; + var _createSignal31 = createSignal(0), + _createSignal32 = _slicedToArray(_createSignal31, 2), + isLoadedCount = _createSignal32[0], + setIsLoadedCount = _createSignal32[1]; + var _createSignal33 = createSignal(0), + _createSignal34 = _slicedToArray(_createSignal33, 2), + isLoadingCount = _createSignal34[0], + setIsLoadingCount = _createSignal34[1]; + var _createSignal35 = createSignal(0), + _createSignal36 = _slicedToArray(_createSignal35, 2), + isFailedCount = _createSignal36[0], + setIsFailedCount = _createSignal36[1]; + var count = 0; + var totalFps = 0; + var calcFps = fps2 => { + if (!fps2) return; + setFps(fps2); + setMinFps(prev => Math.min(fps2, prev)); + setMaxFps(prev => Math.max(fps2, prev)); + totalFps += fps2; + count++; + setAvgFps(Math.round(totalFps / count)); + }; + var calcPerformanceMetrics = stage => { + var isLoadedCount2 = 0; + var isLoadingCount2 = 0; + var isFailedCount2 = 0; + stage.txManager.textureIdCache.forEach((value, key2, map) => { + if (value.state === "loaded") { + isLoadedCount2++; + } + if (value.state === "loading") { + isLoadingCount2++; + } + if (value.state === "failed") { + isFailedCount2++; + } + }); + setIsLoadedCount(isLoadedCount2); + setIsLoadingCount(isLoadingCount2); + setIsFailedCount(isFailedCount2); + }; + function setupFPS(root) { + root.renderer.on("fpsUpdate", (target, fpsData) => { + var fps2 = typeof fpsData === "number" ? fpsData : fpsData.fps; + if (fps2 > 5) { + calcFps(fps2); + calcPerformanceMetrics(target.root.stage); + } + }); + } + var FPSCounter = props => { + return createComponent(View, mergeProps(props, { + style: fpsStyle, + get children() { + return [createComponent(View, { + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "FPS:" + }), createComponent(Text, { + style: fpsValue, + x: 90, + get children() { + return fps(); + } + })]; + } + }), createComponent(View, { + x: 160, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "AVG:" + }), createComponent(Text, { + style: fpsValue, + x: 100, + get children() { + return avgFps(); + } + })]; + } + }), createComponent(View, { + x: 0, + y: 20, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "MIN:" + }), createComponent(Text, { + style: fpsValue, + x: 90, + get children() { + return minFps(); + } + })]; + } + }), createComponent(View, { + x: 160, + y: 20, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "MAX:" + }), createComponent(Text, { + style: fpsValue, + x: 100, + get children() { + return maxFps(); + } + })]; + } + }), createComponent(View, { + x: 0, + y: 50, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "Loaded Textures Cnt:" + }), createComponent(Text, { + style: fpsLabel, + x: 270, + get children() { + return isLoadedCount(); + } + })]; + } + }), createComponent(View, { + x: 0, + y: 80, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "Loading Textures Cnt:" + }), createComponent(Text, { + style: fpsLabel, + x: 270, + get children() { + return isLoadingCount(); + } + })]; + } + }), createComponent(View, { + x: 0, + y: 110, + get children() { + return [createComponent(Text, { + style: fpsLabel, + children: "Failed Textures Cnt:" + }), createComponent(Text, { + style: fpsLabel, + x: 270, + get children() { + return isFailedCount(); + } + })]; + } + })]; + } + })); + }; + var styles$1 = { + Column: { + flexDirection: "column", + display: "flex", + width: 320, + height: 600, + y: 360, + gap: 20, + zIndex: 101, + transition: { + x: { + duration: 250, + easing: "ease-in-out" + } + }, + x: 8, + focus: { + x: theme.layout.marginX + } + }, + Gradient: { + zIndex: 99, + color: hexColor("#000000"), + src: "./assets/sidenav.png", + alpha: 0, + width: 1200, + height: 1080, + focus: { + alpha: 1 + }, + transition: { + alpha: true + } + }, + NavButton: { + zIndex: 102, + height: 70, + width: 100, + borderRadius: 8, + focus: { + color: hexColor("#424242") + }, + active: { + width: 328, + height: 70 + } + } + }; + var basePath = "/solid-demo-app/"; + var icons = [{ + name: "experiment", + width: 81, + height: 100, + x: 0, + y: 0 + }, { + name: "trending", + width: 100, + height: 56, + x: 81, + y: 0 + }, { + name: "tv", + width: 100, + height: 68, + x: 181, + y: 0 + }, { + name: "movie", + width: 94, + height: 100, + x: 282, + y: 0 + }]; + function Icon(props) { + var sprite = createSpriteMap(basePath + "assets/icons_white.png", icons); + return createComponent(View, mergeProps(props, { + get texture() { + return sprite[props.name]; + }, + get width() { + return sprite[props.name].props.width; + }, + get height() { + return sprite[props.name].props.height; + }, + get x() { + return (100 - (sprite[props.name].props.width || 0)) / 2; + }, + get y() { + return (100 - (sprite[props.name].props.height || 0)) / 2; + } + })); + } + function NavButton(props) { + return createComponent(View, mergeProps(props, { + forwardStates: true, + get style() { + return styles$1.NavButton; + }, + get children() { + return [createComponent(View, { + y: -16, + get children() { + return createComponent(Icon, { + scale: 0.5, + get name() { + return props.icon; + } + }); + } + }), createComponent(Text, { + style: { + fontSize: 38, + x: 116, + y: 18, + height: 50, + alpha: 0, + active: { + alpha: 1 + } + }, + get children() { + return props.children; + } + })]; + } + })); + } + function NavDrawer(props) { + var backdrop; + var navigate = useNavigate(); + function onFocus() { + backdrop.states.add("focus"); + this.children.forEach(c => c.states.add("active")); + this.children.selected.setFocus(); + } + function onBlur() { + backdrop.states.remove("focus"); + this.selected = 0; + this.children.forEach(c => c.states.remove("active")); + } + function handleNavigate(page) { + var isOnPage = useMatch(() => page); + if (isOnPage()) { + return props.focusPage(); + } + navigate(page); + } + return [createComponent(View, { + flexItem: false, + x: 40, + y: 30, + zIndex: 105, + get alpha() { + return props.showWidgets ? 1 : 0; + }, + get children() { + return [createComponent(Text, { + x: 80, + fontSize: 28, + color: 4143380036, + children: "Built With:" + }), createComponent(View, { + y: 22, + src: "./assets/solidWord.png", + width: 280, + height: 52 + })]; + } + }), createComponent(Column, mergeProps(props, { + onFocus, + onBlur, + get style() { + return styles$1.Column; + }, + scroll: "none", + get children() { + return [createComponent(NavButton, { + onEnter: () => handleNavigate("/browse/all"), + icon: "trending", + children: "Trending" + }), createComponent(NavButton, { + icon: "movie", + onEnter: () => handleNavigate("/browse/movie"), + children: "Movies" + }), createComponent(NavButton, { + icon: "tv", + onEnter: () => handleNavigate("/browse/tv"), + children: "TV" + }), createComponent(NavButton, { + icon: "experiment", + onEnter: () => handleNavigate("/examples"), + children: "Examples" + })]; + } + })), createComponent(View, { + ref(r$) { + var _ref$ = backdrop; + typeof _ref$ === "function" ? _ref$(r$) : backdrop = r$; + }, + get style() { + return styles$1.Gradient; + } + })]; + } + var App = props => { + useFocusManager({ + Announcer: ["a"], + Menu: ["m"], + Escape: ["Escape", 27], + Backspace: ["Backspace", 8], + Left: ["ArrowLeft", 37], + Right: ["ArrowRight", 39], + Up: ["ArrowUp", 38], + Down: ["ArrowDown", 40], + Enter: ["Enter", 13] + }); + var announcer = useAnnouncer(); + announcer.enabled = false; + var navigate = useNavigate(); + var navDrawer, lastFocused; + setupFPS({ + renderer + }); + function focusNavDrawer() { + if (navDrawer.states.has("focus")) { + return false; + } + lastFocused = activeElement(); + return navDrawer.setFocus(); + } + var _createSignal37 = createSignal(true), + _createSignal38 = _slicedToArray(_createSignal37, 2), + showWidgets = _createSignal38[0], + setShowWidgets = _createSignal38[1]; + var location = useLocation(); + var showOnPaths = ["/browse", "/entity"]; + createEffect(() => { + var currentPath = location.pathname; + var matchesPartial = showOnPaths.some(path => currentPath.startsWith(path)); + if (currentPath === "/") { + matchesPartial = true; + } + setShowWidgets(matchesPartial); + }); + return createComponent(View, { + ref(r$) { + var _ref$ = window.APP; + typeof _ref$ === "function" ? _ref$(r$) : window.APP = r$; + }, + onAnnouncer: () => announcer.enabled = !announcer.enabled, + onLast: () => history.back(), + onMenu: () => navigate("/"), + style: { + width: 1920, + height: 1080 + }, + onBackspace: focusNavDrawer, + onLeft: focusNavDrawer, + onRight: () => navDrawer.states.has("focus") && lastFocused.setFocus(), + get children() { + return [createComponent(Background, {}), createComponent(FPSCounter, { + mountX: 1, + x: 1910, + y: 10, + get alpha() { + return showWidgets() ? 1 : 0; + } + }), memo(() => props.children), createComponent(NavDrawer, { + ref(r$) { + var _ref$2 = navDrawer; + typeof _ref$2 === "function" ? _ref$2(r$) : navDrawer = r$; + }, + focusPage: () => lastFocused.setFocus(), + get showWidgets() { + return showWidgets(); + } + })]; + } + }); + }; + var styles = { + Page: { + width: 1920, + height: 1080 + }, + headlineText: { + width: 1200, + height: 240, + x: 360, + // lineHeight: 170, // TODO: Add back when lineHeight is supported + y: 455, + contain: "both", + fontSize: 66, + textAlign: "center" + }, + headlineSubText: { + width: 960, + height: 170, + // lineHeight: 170, // TODO: Add back when lineHeight is supported + x: 530, + y: 655, + contain: "both", + fontSize: 48, + textAlign: "center" + }, + itemsContainer: { + width: theme.layout.screenW, + height: 600, + y: 560, + x: 0, + zIndex: 2 + }, + Thumbnail: { + borderRadius: 16, + width: 185, + height: 278, + scale: 1, + zIndex: 2, + transition: { + scale: { + duration: 250, + easing: "ease-in-out" + } + }, + border: { + width: 0, + color: 0 + }, + focus: { + scale: 1.1, + border: { + color: 4294967142, + width: 8 + } + } + }, + FocusRing: { + borderRadius: 16, + width: 194, + height: 286, + y: -5, + x: -5, + zIndex: -1 + }, + FPS: { + color: 255, + height: 42, + width: 140, + x: 20, + y: 20, + zIndex: 100 + }, + FPSLabel: { + x: 10, + y: 0, + fontSize: 36, + textColor: hexColor("#ffffff") + }, + FPSValue: { + x: 90, + y: 0, + fontSize: 36, + textColor: hexColor("#ffffff") + }, + showHeadline: { + x: 70, + y: 20 + }, + headlineBlur: { + width: 1920, + height: 150, + x: 0, + y: 0, + zIndex: 14, + alpha: 0.9, + color: hexColor("#000000") + }, + RowTitle: { + height: 60, + width: 300, + marginBottom: -40, + fontSize: 36, + color: hexColor("#f0f0f0"), + zIndex: 2 + }, + Row: { + display: "flex", + justifyContent: "spaceBetween", + height: 300 + }, + Column: { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + gap: 64, + width: theme.layout.screenW - 2 * theme.layout.marginX, + x: theme.layout.marginX + theme.layout.gutterX, + y: 48, + transition: { + y: { + duration: 250, + easing: "ease-in-out" + } + }, + zIndex: 2 + }, + Rect: { + width: 250, + height: 100, + y: 10, + x: 300, + color: hexColor("#0000ff") + }, + peopleBio: _objectSpread(_objectSpread({}, theme.typography.body1), {}, { + fontFamily: "Ubuntu", + fontWeight: "normal", + contain: "both", + width: 780, + height: 340 + }) + }; + var Button = { + width: 120, + height: 40, + color: hexColor("#000000"), + borderRadius: 8, + border: { + width: 2, + color: hexColor("#3333ff") + }, + scale: 1, + focus: { + scale: 1.1, + border: { + width: 5, + color: hexColor("#333333") + } + }, + transition: { + scale: true, + color: true + } + }; + var TopBar = { + color: hexColor("#00A699"), + height: 8, + y: 2, + x: -4, + width: Button.width + 8 + }; + var ButtonText = { + fontSize: 12, + y: 12, + // lineHeight: Button.height, // TODO: Add back when lineHeight is supported + contain: "width", + textAlign: "center", + color: hexColor("#F6F6F9"), + height: Button.height, + width: Button.width + }; + var buttonStyles = { + container: Button, + topBar: TopBar, + text: ButtonText + }; + var MaterialButton = { + width: 386, + height: 136, + color: hexColor("#715cab"), + focus: { + color: hexColor("#5a39a2") + }, + disabled: { + color: hexColor("#291d43") + } + }; + var MaterialButtonText = { + fontSize: 32, + contain: "width", + textAlign: "center", + mountY: -0.35, + color: hexColor("#FFFFFF"), + height: MaterialButton.height, + width: MaterialButton.width, + // lineHeight: MaterialButton.height, // TODO: Add back when lineHeight is supported + focus: { + fontSize: 40 + }, + disabled: { + color: hexColor("#909090") + } + }; + function Thumbnail(props) { + return createComponent(View, mergeProps(props, { + get style() { + return styles.Thumbnail; + } + })); + } + function TileRow(props) { + var _splitProps = splitProps(props, ["items"]), + _splitProps2 = _slicedToArray(_splitProps, 2), + local = _splitProps2[0], + others = _splitProps2[1]; + return createComponent(Row, mergeProps(others, { + get style() { + return styles.Row; + }, + get children() { + return createComponent(For, { + get each() { + return local.items; + }, + children: item => createComponent(Thumbnail, item) + }); + } + })); + } + var API_KEY_V4 = "eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIyZDE4YjEwMTA0YjdiZTlkNjFiMWYwYjVlMGEwNzM2OCIsInN1YiI6IjYwZTVjMTdlNGNhNjc2MDA3NTA4Njc3MSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.D_nqH9kd-bhhWzeVsTDPYhHnsUaNAuyAa6YATmKHqsA"; + var API_BASE = "https://api.themoviedb.org/3"; + var tmdbConfig; + var baseImageUrl; + var basePosterSize = "w185"; + var defaultFetchParams = { + headers: { + "Content-Type": "application/json", + Authorization: "Bearer " + API_KEY_V4 + } + }; + function getImageUrl(path, posterSize = basePosterSize) { + return baseImageUrl + posterSize + path; + } + function get(path, params = {}) { + if (tmdbConfig) { + return _get(path, params); + } else { + return loadConfig().then(() => _get(path, params)); + } + } + function _get(path, params = {}) { + return fetch(API_BASE + path, _objectSpread(_objectSpread({}, defaultFetchParams), params)).then(r => r.json()); + } + function loadConfig() { + return _get("/configuration").then(data => { + var _data$images; + tmdbConfig = data; + baseImageUrl = (_data$images = data.images) === null || _data$images === void 0 ? void 0 : _data$images.secure_base_url; + return data; + }); + } + var api = { + get, + loadConfig + }; + function truncateString(str, maxLength) { + if (str.length > maxLength) { + return str.substring(0, maxLength - 3) + "..."; + } + return str; + } + function chunkArray(array, size = 7) { + var result = []; + for (var i = 0, j = array.length; i < j; i += size) { + result.push(array.slice(i, i + size)); + } + return result; + } + function convertItemsToTiles(items = []) { + return items.map(item => ({ + src: getImageUrl(item.poster_path || item.profile_path), + tileSrc: getImageUrl(item.backdrop_path || item.profile_path, "w300"), + backdrop: getImageUrl(item.backdrop_path, "w1280"), + href: `/entity/${item.media_type || "people"}/${item.id}`, + shortTitle: truncateString(item.title || item.name, 30), + title: item.title || item.name, + data: item, + entityInfo: { + type: item.media_type || "people", + id: item.id + }, + heroContent: { + title: item.title || item.name, + description: item.overview + } + })); + } + var cache = /* @__PURE__ */new Map(); + var leftoverTiles = /* @__PURE__ */new Map(); + function browseProvider(filter) { + return pageIndex => { + var url = `/trending/${filter}/week?page=${pageIndex}`; + if (cache.has(url)) { + return cache.get(url); + } + var result = api.get(url).then(trending => { + var results = trending.results.filter(r => !r.adult); + var tiles = (leftoverTiles.has(filter) ? leftoverTiles.get(filter) : []).concat(convertItemsToTiles(results)); + var chunks = chunkArray(tiles); + if (chunks[chunks.length - 1].length < 7) { + leftoverTiles.set(filter, chunks.pop()); + } else { + leftoverTiles.delete(filter); + } + return chunks; + }); + cache.set(url, result); + return result; + }; + } + function createInfiniteScroll(fetcher) { + var _createSignal39 = createSignal([]), + _createSignal40 = _slicedToArray(_createSignal39, 2), + pages = _createSignal40[0], + setPages = _createSignal40[1]; + var _createSignal41 = createSignal(1), + _createSignal42 = _slicedToArray(_createSignal41, 2), + page = _createSignal42[0], + setPage = _createSignal42[1]; + var _createSignal43 = createSignal(false), + _createSignal44 = _slicedToArray(_createSignal43, 2), + end = _createSignal44[0], + setEnd = _createSignal44[1]; + var _createResource = createResource(page, fetcher), + _createResource2 = _slicedToArray(_createResource, 1), + contents = _createResource2[0]; + createComputed(() => { + var content = contents(); + if (!content) return; + batch(() => { + if (content.length === 0) setEnd(true); + setPages(p => [...p, ...content]); + }); + }); + return { + pages, + page, + setPage, + setPages, + end, + setEnd + }; + } + var blockWidth = 900; + var ContentBlockStyle = { + display: "flex", + flexDirection: "column", + x: 50, + y: 100, + width: blockWidth, + height: 220, + gap: 16 + }; + var HeadlineStyles = _objectSpread(_objectSpread({}, theme.typography.display2), {}, { + fontFamily: "Ubuntu", + fontWeight: 700, + maxLines: 1, + width: blockWidth, + contain: "width" + }); + var Headline = props => createComponent(Text, mergeProps(props, { + style: HeadlineStyles + })); + var DescriptionStyles = _objectSpread(_objectSpread({}, theme.typography.body1), {}, { + fontFamily: "Ubuntu", + fontWeight: 400, + lineHeight: 32, + width: blockWidth, + maxLines: 3, + contain: "width" + }); + var BadgeStyle = { + fontSize: 16, + lineHeight: 20 + }; + var Description = props => createComponent(Text, mergeProps(props, { + style: DescriptionStyles, + get children() { + return props.children; + } + })); + var Badge = props => { + return (() => { + var _el$ = createElement("node"); + use(withPadding, _el$, () => [8, 13, 11, 13]); + spread(_el$, mergeProps(props, { + "style": { + color: "0x00000099", + borderRadius: 8, + border: { + width: 2, + color: "0xffffffff" + } + } + }), true); + insert(_el$, createComponent(Text, { + style: BadgeStyle, + get children() { + return props.children; + } + })); + return _el$; + })(); + }; + var MetaTextStyle = _objectSpread(_objectSpread({}, theme.typography.body2), {}, { + fontFamily: "Ubuntu", + fontWeight: 400 + }); + var Metadata = props => createComponent(View, { + style: { + display: "flex", + flexDirection: "row", + gap: 18, + width: blockWidth, + height: 48 + }, + get children() { + return [createComponent(View, { + y: -4, + src: "./assets/stars.png", + width: 188, + height: 31 + }), createComponent(View, { + y: -4, + flexItem: false, + clipping: true, + get width() { + return 188 * props.voteAverage / 10; + }, + height: 31, + get children() { + return createComponent(View, { + src: "./assets/stars-full.png", + width: 188, + height: 31 + }); + } + }), createComponent(Text, { + style: MetaTextStyle, + get children() { + return [memo(() => props.voteCount), " reviews"]; + } + }), createComponent(Text, { + style: MetaTextStyle, + get children() { + return props.metaText; + } + }), createComponent(For, { + get each() { + return props.badges; + }, + children: item => createComponent(Badge, { + y: -5, + children: item + }) + })]; + } + }); + var ContentBlock = props => createComponent(View, mergeProps(props, { + id: "contentBlock", + style: ContentBlockStyle, + get children() { + return [createComponent(Headline, { + get children() { + return props.title; + } + }), createComponent(Description, { + get children() { + return props.description; + } + }), createComponent(Show, { + get when() { + return props.voteCount; + }, + get children() { + return createComponent(Metadata, { + get metaText() { + return props.metaText; + }, + get badges() { + return props.badges; + }, + get voteCount() { + return props.voteCount; + }, + get voteAverage() { + return props.voteAverage; + } + }); + } + })]; + } + })); + function minutesToHMM(minutes) { + var hours = Math.floor(minutes / 60); + var remainingMinutes = minutes % 60; + return hours + "h " + (remainingMinutes < 10 ? "0" : "") + remainingMinutes + "min"; + } + function formatDate(dateString) { + var parts = dateString.split("-"); + return parts[1] + "/" + parts[2] + "/" + parts[0]; + } + function justYear(dateString) { + var parts = dateString.split("-"); + return parts[0]; + } + function getRecommendations({ + type, + id + }) { + return api.get(`/${type}/${id}/recommendations`).then(({ + results + }) => { + if (results.length) { + return convertItemsToTiles(results.slice(0, 7)); + } + return api.get(`/trending/${type}/week?page=1`).then(({ + results + }) => convertItemsToTiles(results.slice(0, 7))); + }); + } + function getCredits$1({ + type, + id + }) { + return api.get(`/${type}/${id}/credits`).then(({ + cast + }) => convertItemsToTiles(cast.slice(0, 7))); + } + function getInfo$1({ + type, + id + }) { + var rt = type === "movie" ? { + rtCrit: 86, + rtFan: 92 + } : {}; + return api.get(`/${type}/${id}`).then(data => _objectSpread({ + backgroundImage: getImageUrl(data.backdrop_path, "w1280"), + heroContent: { + title: data.title || data.name, + description: data.overview, + badges: ["HD", "CC"], + voteAverage: data.vote_average, + voteCount: data.vote_count, + metaText: type === "movie" ? minutesToHMM(data.runtime) + " " + formatDate(data.release_date) : `${justYear(data.first_air_date)} - ${justYear(data.last_air_date)}`, + reviews: rt + } + }, data)); + } + var Browse = () => { + var params = useParams(); + var _createSignal45 = createSignal(0), + _createSignal46 = _slicedToArray(_createSignal45, 2), + columnY = _createSignal46[0], + setcolumnY = _createSignal46[1]; + var _createSignal47 = createSignal(), + _createSignal48 = _slicedToArray(_createSignal47, 2), + entityInfo = _createSignal48[0], + setEntityInfo = _createSignal48[1]; + createResource(entityInfo, getInfo$1); + var _createSignal49 = createSignal({}), + _createSignal50 = _slicedToArray(_createSignal49, 2), + heroContent = _createSignal50[0], + setHeroContent = _createSignal50[1]; + var navigate = useNavigate(); + var isFirst = createSelector(() => { + return 0; + }); + var provider = createMemo(() => { + return createInfiniteScroll(browseProvider(params.filter || "all")); + }); + var delayedBackgrounds = debounce(img => setGlobalBackground(img), 400); + var delayedHero = debounce(content => setHeroContent(content), 200); + createEffect(on(activeElement, elm => { + if (elm.backdrop) { + delayedBackgrounds(elm.backdrop); + } + if (elm.heroContent) { + delayedHero(elm.heroContent); + } + }, { + defer: true + })); + function onRowFocus() { + var _this$children$select; + (_this$children$select = this.children.selected) === null || _this$children$select === void 0 || _this$children$select.setFocus(); + setcolumnY((this.y || 0) * -1 + 24); + var numPages = provider().pages().length; + if (numPages === 0 || this.parent.selected && this.parent.selected >= numPages - 2) { + provider().setPage(p => p + 1); + } + } + function onEnter() { + var entity = this.children.selected; + assertTruthy(entity && entity.href); + navigate(entity.href); + return true; + } + return createComponent(Show, { + get when() { + return provider().pages().length; + }, + get children() { + return [createComponent(ContentBlock, mergeProps({ + y: 360, + x: 162 + }, heroContent)), createComponent(View, { + clipping: true, + get style() { + return styles.itemsContainer; + }, + get children() { + return createComponent(Column, { + plinko: true, + announce: "All Trending - Week", + get y() { + return columnY(); + }, + get style() { + return styles.Column; + }, + get children() { + return createComponent(For, { + get each() { + return provider().pages(); + }, + children: (items, i) => createComponent(TileRow, { + get autofocus() { + return isFirst(i()); + }, + items, + width: 1620, + onFocus: onRowFocus, + onEnter + }) + }); + } + }); + } + })]; + } + }); + }; + var Portal = () => { + var navigate = useNavigate(); + var isFirst = createSelector(() => { + return 0; + }); + function onEnter() { + var entity = this.children.selected; + assertTruthy(entity && entity.id); + navigate("/" + entity.id); + } + var demos = [{ + title: "Flex Row", + id: "flex", + description: "Flex Row Implementation" + }, { + title: "Flex Column", + id: "flexcolumn", + description: "Flex Column Implementation" + }, { + title: "Flex Row Vertical Align", + id: "flexsize", + description: "Flex Row Vertical Align Implementation" + }, { + title: "Flex Column Vertical Align", + id: "flexcolumnsize", + description: "Flex Column Vertical Align Implementation" + }, { + title: "Buttons", + id: "buttons", + description: "Demo a few buttons" + }, { + title: "Text", + id: "text", + description: "Text layout with flexbox" + }, { + title: "Create Elements", + id: "create", + description: "Testing Show + children + inserting text" + }, { + title: "Viewport", + id: "viewport", + description: "Events going in and out of viewport" + }]; + function DemoTile(props) { + var Container = { + width: 370, + height: 320, + borderRadius: 6, + scale: 1, + color: 405488895, + transition: { + color: true, + scale: true + }, + focus: { + scale: 1.1, + color: 4294967295 + } + }; + var _createSignal51 = createSignal(4294967295), + _createSignal52 = _slicedToArray(_createSignal51, 2), + color = _createSignal52[0], + setColor = _createSignal52[1]; + return createComponent(View, mergeProps(props, { + onFocus: () => setColor(255), + onBlur: () => setColor(4294967295), + style: Container, + get children() { + return createComponent(View, { + x: 30, + get children() { + return [createComponent(Text, { + y: 30, + fontSize: 84, + get color() { + return color(); + }, + get children() { + return props.index; + } + }), createComponent(Text, { + y: 140, + fontSize: 42, + width: 340, + height: 42, + contain: "both", + get color() { + return color(); + }, + get children() { + return props.title; + } + }), createComponent(Text, { + y: 200, + fontSize: 28, + width: 330, + contain: "width", + get color() { + return color(); + }, + get children() { + return props.description; + } + })]; + } + }); + } + })); + } + var _createSignal53 = createSignal(140), + _createSignal54 = _slicedToArray(_createSignal53, 2), + rowX = _createSignal54[0], + setRowX = _createSignal54[1]; + function moveRow(row) { + setRowX(row.selected * -400 + 140); + } + return createComponent(View, { + colorTop: 1147903743, + colorBottom: 743406847, + get children() { + return [createComponent(View, { + x: 120, + get children() { + return [createComponent(View, { + src: "./assets/solidjs.png", + width: 101, + height: 90, + y: 40 + }), createComponent(Text, { + fontSize: 90, + x: 110, + y: 40, + children: "Examples" + }), createComponent(View, { + y: 140, + height: 1, + width: 1800, + color: 3906468351 + })]; + } + }), createComponent(Row, { + onSelectedChanged: moveRow, + onEnter, + transition: { + x: { + delay: 20, + duration: 300 + } + }, + get x() { + return rowX(); + }, + y: 300, + width: 4400, + get style() { + return styles.Row; + }, + justifyContent: "flexStart", + gap: 40, + get children() { + return createComponent(For, { + each: demos, + children: (demo, i) => createComponent(DemoTile, mergeProps({ + get autofocus() { + return isFirst(i()); + }, + get index() { + return i(); + } + }, demo)) + }); + } + })]; + } + }); + }; + var TextPage = () => { + var OverviewContainer = { + width: 900, + height: 500, + y: 350, + x: 150, + gap: 25, + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + color: hexColor("00000000") + }; + var SublineContainer = { + width: 900, + height: 36, + gap: 6, + display: "flex", + flexDirection: "row", + justifyContent: "flexStart", + color: hexColor("00000000") + }; + var Title = { + fontSize: 42 + }; + var Overview = { + width: OverviewContainer.width, + fontSize: 26, + contain: "width" + }; + var Subline = { + fontSize: 26 + }; + onMount(() => { + setGlobalBackground("#000000"); + }); + return createComponent(View, { + autofocus: true, + style: OverviewContainer, + get children() { + return [createComponent(Text, { + style: Title, + children: "Title of the Page" + }), createComponent(Text, { + style: Overview, + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel tempor tellus. Sed eu leo purus. Vestibulum sollicitudin eget tellus a varius. Phasellus est turpis, volutpat sed blandit sit amet, rutrum sit amet mauris. In dignissim elit orci, a sollicitudin ipsum faucibus et. Quisque vel quam rutrum, faucibus augue sed, scelerisque nunc." + }), createComponent(View, { + style: SublineContainer, + get children() { + return [createComponent(Text, { + style: Subline, + children: "Subline Text" + }), createComponent(View, { + width: 28, + height: 28, + src: "./assets/rt-popcorn.png" + }), createComponent(Text, { + style: Subline, + children: "More Text" + })]; + } + })]; + } + }); + }; + var CreatePage = () => { + var OverviewContainer = { + width: 900, + height: 500, + y: 50, + x: 150, + gap: 25, + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + color: hexColor("00000000") + }; + var SublineContainer = { + width: 900, + height: 36, + gap: 6, + display: "flex", + flexDirection: "row", + justifyContent: "flexStart", + color: hexColor("00000000") + }; + var Title = { + fontSize: 42 + }; + var Subline = { + fontSize: 26 + }; + var myBox, childRef; + onMount(() => { + setGlobalBackground("#000000"); + myBox.animate({ + x: 100 + }, { + duration: 2e3 + }).start(); + }); + var _createSignal55 = createSignal(), + _createSignal56 = _slicedToArray(_createSignal55, 2), + insertTest = _createSignal56[0], + setInsertTest = _createSignal56[1]; + var _createSignal57 = createSignal(), + _createSignal58 = _slicedToArray(_createSignal57, 2), + emptyTest = _createSignal58[0], + setEmptyTest = _createSignal58[1]; + setTimeout(() => { + var _childRef$getChildByI; + setInsertTest("- Inserted -"); + (_childRef$getChildByI = childRef.getChildById("child1")) === null || _childRef$getChildByI === void 0 || _childRef$getChildByI.animate({ + x: 600 + }, { + duration: 2e3 + }).start(); + }, 2e3); + var styleChild = { + width: 400, + height: 300, + // Solid blue + color: hexColor("#0000ff") + }; + var someOtherStyle = { + // pretty red + color: hexColor("#f54242"), + focus: { + // pretty blue + color: hexColor("#4287f5") + } + }; + function ChildTest(props) { + var resolved = children(() => props.children); + return createComponent(View, mergeProps(props, { + get style() { + return [someOtherStyle, props.style, [styleChild]]; + }, + get children() { + return [createComponent(View, { + id: "child1", + width: 100, + height: 100, + get color() { + return hexColor("#ff0000"); + }, + y: 25, + get children() { + return [memo(() => resolved()), createComponent(View, { + id: "subChild", + x: 150, + width: 100, + height: 100, + get color() { + return hexColor("#00ff00"); + } + }), createComponent(Text, { + get children() { + return props.title; + } + })]; + } + }), createComponent(View, { + width: 100, + height: 100, + get color() { + return hexColor("#ffff00"); + }, + y: 175, + get children() { + return resolved(); + } + })]; + } + })); + } + var borderStyles = { + borderLeft: { + width: 8, + color: 95598118 + }, + borderTop: { + width: 8, + color: 631422246 + }, + borderRight: { + width: 8, + color: 95598118 + }, + borderBottom: { + width: 8, + color: 3316790822 + } + }; + var childTestPassedStyles = { + // grey color + color: hexColor("#cccccc"), + focus: { + // black + color: hexColor("#000000") + } + }; + var childTestPassedStyles2 = { + // white color + color: hexColor("#ffffff"), + focus: { + // white something... + color: hexColor("#f6f6cc") + } + }; + function hasFocus(elm) { + return elm.states.has("focus"); + } + return createComponent(View, { + style: OverviewContainer, + get children() { + return [createComponent(Text, { + style: Title, + children: "Title of the Page" + }), createComponent(View, { + style: SublineContainer, + get children() { + return [createComponent(Text, { + get children() { + return emptyTest(); + } + }), createComponent(Text, { + style: Subline, + get children() { + return ["Sub ", memo(() => insertTest()), " Text"]; + } + }), createComponent(Show, { + get when() { + return insertTest(); + }, + get children() { + return createComponent(View, { + width: 28, + height: 28, + src: "./assets/rt-popcorn.png" + }); + } + }), createComponent(Text, { + style: Subline, + children: "More Text" + })]; + } + }), createComponent(ChildTest, { + autofocus: true, + ref(r$) { + var _ref$ = childRef; + typeof _ref$ === "function" ? _ref$(r$) : childRef = r$; + }, + style: [childTestPassedStyles2, childTestPassedStyles], + get children() { + return createComponent(Text, { + children: "Child Test" + }); + } + }), createComponent(View, { + ref(r$) { + var _ref$2 = myBox; + typeof _ref$2 === "function" ? _ref$2(r$) : myBox = r$; + }, + style: borderStyles, + width: 100, + height: 100, + get color() { + return hexColor("#00ff00"); + }, + x: 900, + y: 400, + get alpha() { + return hasFocus(myBox) ? 1 : 0.2; + } + })]; + } + }); + }; + var ViewportPage = () => { + var ball, invervalTimer; + var _createSignal59 = createSignal([]), + _createSignal60 = _slicedToArray(_createSignal59, 2), + ballStatus = _createSignal60[0], + setBallStatus = _createSignal60[1]; + var styleBall = { + width: 100, + height: 100, + x: -400, + y: -400, + rotation: 0, + borderRadius: 50, + color: hexColor("#4287f5"), + transition: { + x: { + duration: 1250, + easing: "linear" + }, + y: { + duration: 1250, + easing: "linear" + }, + rotation: { + duration: 1400, + easing: "ease-in-out" + } + } + }; + var Title = { + fontSize: 32, + x: 960, + y: 540, + mount: 0.5, + lineheight: 52 + }; + var randomIntBetween = (from, to) => Math.floor(Math.random() * (to - from + 1) + from); + onMount(() => { + setGlobalBackground("#000000"); + ball.x = (1920 - 100) / 2; + ball.y = (1080 - 100) / 2; + invervalTimer = setInterval(() => { + ball.rotation = randomIntBetween(-90, 90); + ball.x = randomIntBetween(-300, 2220); + ball.y = randomIntBetween(-300, 1380); + }, 2500); + }); + function logEvent(name, elm) { + setBallStatus(prev => { + return [...prev, name].slice(-4); + }); + console.log(name); + } + onCleanup(() => { + clearInterval(invervalTimer); + }); + return createComponent(View, { + get children() { + return [createComponent(Text, { + style: Title, + get children() { + return ballStatus().join("\n"); + } + }), createComponent(View, { + autofocus: true, + style: styleBall, + ref(r$) { + var _ref$ = ball; + typeof _ref$ === "function" ? _ref$(r$) : ball = r$; + }, + onEvents: [["inBounds", elm => logEvent("inBounds")], ["outOfBounds", elm => logEvent("outOfBounds")], ["inViewport", elm => logEvent("inViewport")], ["outOfViewport", elm => logEvent("outOfViewport")]] + })]; + } + }); + }; + var ButtonsPage = () => { + function onEnter(event, elm) { + this.states.toggle("disabled"); + } + var RowStyles = { + display: "flex", + justifyContent: "flexStart", + width: 1500, + height: 300, + color: hexColor("00000000"), + gap: 26, + y: 400 + }; + function Button(props) { + return createComponent(View, mergeProps(props, { + forwardStates: true, + get style() { + return buttonStyles.container; + }, + get children() { + return createComponent(Text, { + get style() { + return buttonStyles.text; + }, + get children() { + return props.children; + } + }); + } + })); + } + var Badge = props => { + return (() => { + var _el$ = createElement("node"); + use(withPadding, _el$, () => [10, 15]); + spread(_el$, mergeProps(props, { + get style() { + return { + color: hexColor("#000000be"), + borderRadius: 8, + border: { + width: 2, + color: hexColor("#ffffff") + } + }; + } + }), true); + insert(_el$, createComponent(Text, { + style: { + fontSize: 20 + // TODO: lineHeight is not supported by renderer yet + // lineHeight: 20, + }, + get children() { + return props.children; + } + })); + return _el$; + })(); + }; + return [createComponent(Row, { + x: 100, + y: 200, + gap: 5, + style: RowStyles, + get children() { + return [createComponent(Badge, { + children: "HD" + }), createComponent(Badge, { + children: "PG13" + }), createComponent(Badge, { + children: "NC17" + }), createComponent(Text, { + fontSize: 30, + children: "I like bananas" + }), createComponent(Badge, { + children: "DOLBY" + })]; + } + }), createComponent(Row, { + x: 100, + gap: 40, + style: RowStyles, + get children() { + return [createComponent(Button, { + autofocus: true, + onEnter, + children: "TV Shows" + }), createComponent(Button, { + states: { + active: true, + disabled: false + }, + children: "Movies" + }), createComponent(Button, { + states: "active", + children: "Sports" + }), createComponent(Button, { + states: "disabled", + children: "News" + })]; + } + })]; + }; + var FlexPage = () => { + var RowStyles = { + display: "flex", + justifyContent: "flexStart", + width: 1600, + height: 110, + color: hexColor("#4dabf5") + }; + var rowTitle = { + fontSize: 44, + marginTop: 25, + marginBottom: -20, + skipFocus: true + }; + function Block(props) { + var styles2 = { + width: 200, + height: 100, + y: 5, + color: 392801023 + }; + return createComponent(View, mergeProps(props, { + style: styles2 + })); + } + var _createSignal61 = createSignal(50), + _createSignal62 = _slicedToArray(_createSignal61, 2), + columnY = _createSignal62[0], + setColumnY = _createSignal62[1]; + function onFocus() { + var _this$children$select2; + (_this$children$select2 = this.children.selected) === null || _this$children$select2 === void 0 || _this$children$select2.setFocus(); + setColumnY(150 + (this.y || 0) * -1); + } + onMount(() => { + setGlobalBackground("#333333"); + }); + var gap = 50; + return createComponent(Column, { + x: 160, + get y() { + return columnY(); + }, + gap: 30, + height: 850, + get width() { + return RowStyles.width; + }, + get style() { + return styles.Column; + }, + get children() { + return [createComponent(Text, { + style: rowTitle, + children: "Flex Start" + }), createComponent(Row, { + gap, + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + autofocus: true + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex Start - Margin Left" + }), createComponent(Row, { + gap, + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + marginLeft: 100 + }), createComponent(Block, {}), createComponent(Block, { + marginLeft: 100 + }), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex End" + }), createComponent(Row, { + gap, + justifyContent: "flexEnd", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex End - Margin Right" + }), createComponent(Row, { + gap, + justifyContent: "flexEnd", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, { + marginRight: 100 + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, { + marginRight: 100 + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Center - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "center", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Space Between - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "spaceBetween", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Space Evenly - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "spaceEvenly", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + })]; + } + }); + }; + var FlexSizePage = () => { + var RowStyles = { + display: "flex", + justifyContent: "flexStart", + width: 1600, + height: 110, + color: hexColor("#4dabf5") + }; + var rowTitle = { + fontSize: 44, + marginTop: 25, + marginBottom: -20, + skipFocus: true + }; + function Block(props) { + var styles2 = { + width: 200, + height: 100, + y: 5, + color: 392801023 + }; + return createComponent(View, mergeProps(props, { + style: styles2 + })); + } + function randSize() { + return Math.floor(Math.random() * 91) + 10; + } + var _createSignal63 = createSignal(50), + _createSignal64 = _slicedToArray(_createSignal63, 2), + columnY = _createSignal64[0], + setColumnY = _createSignal64[1]; + function onFocus() { + var _this$children$select3; + (_this$children$select3 = this.children.selected) === null || _this$children$select3 === void 0 || _this$children$select3.setFocus(); + setColumnY(150 + (this.y || 0) * -1); + } + onMount(() => { + setGlobalBackground("#333333"); + }); + var gap = 50; + return createComponent(Column, { + x: 160, + get y() { + return columnY(); + }, + gap: 30, + height: 850, + get width() { + return RowStyles.width; + }, + get style() { + return styles.Column; + }, + get children() { + return [createComponent(Text, { + style: rowTitle, + children: "Flex Start - AlignItems: center" + }), createComponent(Row, { + alignItems: "center", + gap, + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + autofocus: true, + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex Start - Margin Left - AlignItems: flexStart" + }), createComponent(Row, { + gap, + alignItems: "flexStart", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + marginLeft: 100, + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + marginLeft: 100, + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex End - AlignItems: flexEnd" + }), createComponent(Row, { + gap, + justifyContent: "flexEnd", + alignItems: "flexEnd", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Flex End - Margin Right" + }), createComponent(Row, { + gap, + justifyContent: "flexEnd", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + marginRight: 100, + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + marginRight: 100, + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Center - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "center", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Space Between - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "spaceBetween", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + }), createComponent(Text, { + style: rowTitle, + children: "Space Evenly - No Margin Support" + }), createComponent(Row, { + gap, + justifyContent: "spaceEvenly", + style: RowStyles, + onFocus, + get children() { + return [createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + }), createComponent(Block, { + get height() { + return randSize(); + } + })]; + } + })]; + } + }); + }; + var FlexColumnPage$1 = () => { + var RowStyles = { + display: "flex", + justifyContent: "spaceEvenly", + width: 1920, + y: 100, + height: 880, + color: hexColor("00000000") + }; + var ColumnStyles = { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + color: hexColor("#4dabf5"), + height: 850, + width: 80 + }; + var rowTitle = { + fontSize: 44, + y: 20, + x: 150 + }; + function Block(props) { + var styles = { + width: randSize(), + height: 80, + x: 5, + color: hexColor("#1769aa") + }; + return createComponent(View, mergeProps(props, { + style: styles + })); + } + function randSize() { + return Math.floor(Math.random() * 61) + 10; + } + var _createSignal65 = createSignal(50), + _createSignal66 = _slicedToArray(_createSignal65, 2), + columnY = _createSignal66[0], + setColumnY = _createSignal66[1]; + function onFocus() { + var _this$children$select4; + (_this$children$select4 = this.children.selected) === null || _this$children$select4 === void 0 || _this$children$select4.setFocus(); + setColumnY(150 + (this.y || 0) * -1); + } + onMount(() => { + setGlobalBackground("#333333"); + }); + var gap = 50; + return [createComponent(Text, { + style: rowTitle, + children: "Start, MarginTop, End, MarginBottom, Center, Between, Evenly" + }), createComponent(Row, { + gap, + style: RowStyles, + onFocus, + get children() { + return [createComponent(Column, { + gap: 30, + style: ColumnStyles, + alignItems: "center", + get children() { + return [createComponent(Block, { + autofocus: true + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + style: ColumnStyles, + onFocus, + alignItems: "flexStart", + get children() { + return [createComponent(Block, { + marginTop: 100 + }), createComponent(Block, {}), createComponent(Block, { + marginTop: 100 + }), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + alignItems: "flexEnd", + justifyContent: "flexEnd", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "flexEnd", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, { + marginBottom: 100 + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, { + marginBottom: 100 + })]; + } + }), createComponent(Column, { + gap, + justifyContent: "center", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "spaceBetween", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "spaceEvenly", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + })]; + } + })]; + }; + var FlexColumnPage = () => { + var RowStyles = { + display: "flex", + justifyContent: "spaceEvenly", + width: 1920, + y: 100, + height: 880, + color: hexColor("00000000") + }; + var ColumnStyles = { + display: "flex", + flexDirection: "column", + justifyContent: "flexStart", + color: hexColor("#4dabf5"), + height: 850, + width: 60 + }; + var rowTitle = { + fontSize: 44, + y: 20, + x: 150 + }; + function Block(props) { + var styles = { + width: 50, + height: 80, + x: 5, + color: hexColor("#1769aa") + }; + return createComponent(View, mergeProps(props, { + style: styles + })); + } + var _createSignal67 = createSignal(50), + _createSignal68 = _slicedToArray(_createSignal67, 2), + columnY = _createSignal68[0], + setColumnY = _createSignal68[1]; + function onFocus() { + var _this$children$select5; + (_this$children$select5 = this.children.selected) === null || _this$children$select5 === void 0 || _this$children$select5.setFocus(); + setColumnY(150 + (this.y || 0) * -1); + } + onMount(() => { + setGlobalBackground("#333333"); + }); + var gap = 50; + return [createComponent(Text, { + style: rowTitle, + children: "Start, MarginTop, End, MarginBottom, Center, Between, Evenly" + }), createComponent(Row, { + gap, + style: RowStyles, + onFocus, + get children() { + return [createComponent(Column, { + gap: 30, + style: ColumnStyles, + get children() { + return [createComponent(Block, { + autofocus: true + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, { + marginTop: 100 + }), createComponent(Block, {}), createComponent(Block, { + marginTop: 100 + }), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "flexEnd", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "flexEnd", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, { + marginBottom: 100 + }), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, { + marginBottom: 100 + })]; + } + }), createComponent(Column, { + gap, + justifyContent: "center", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "spaceBetween", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + }), createComponent(Column, { + gap, + justifyContent: "spaceEvenly", + style: ColumnStyles, + onFocus, + get children() { + return [createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {}), createComponent(Block, {})]; + } + })]; + } + })]; + }; + var MaterialButtonsPage = () => { + function onEnter(event, elm) { + this.states.toggle("disabled"); + } + var RowStyles = { + display: "flex", + justifyContent: "flexStart", + width: 1500, + height: 300, + color: hexColor("00000000"), + gap: 26, + y: 400, + x: 100 + }; + var MaterialButton = { + width: 386, + height: 136, + color: "0x715cabff", + focus: { + color: "0x5a39a2ff" + }, + disabled: { + color: "0x291d43ff" + } + }; + var RoundedRectangle = ["RoundedRectangle", { + radius: 65 + }]; + function Button(props) { + return createComponent(View, mergeProps(props, { + forwardStates: true, + style: MaterialButton, + shader: RoundedRectangle, + get children() { + return createComponent(Text, { + style: MaterialButtonText, + get children() { + return props.children; + } + }); + } + })); + } + return createComponent(Row, { + style: RowStyles, + get children() { + return [createComponent(Button, { + autofocus: true, + onEnter, + children: "Focused" + }), createComponent(Button, { + states: { + active: true, + disabled: false + }, + children: "Normal" + }), createComponent(Button, { + states: "disabled", + children: "Disabled" + })]; + } + }); + }; + + // Documentation from Shaka player: + // https://shaka-player-demo.appspot.com/docs/api/tutorial-basic-usage.html + + var manifestUri = "https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd"; + function initApp() { + // Install built-in polyfills to patch browser incompatibilities. + shaka.polyfill.installAll(); + + // Check to see if the browser supports the basic APIs Shaka needs. + if (shaka.Player.isBrowserSupported()) { + // Everything looks good! + initPlayer(); + } else { + // This browser does not have the minimum set of APIs we need. + console.error("Browser not supported!"); + } + } + function initPlayer() { + return _initPlayer.apply(this, arguments); + } + function _initPlayer() { + _initPlayer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() { + var video, player; + return _regeneratorRuntime().wrap(function _callee13$(_context14) { + while (1) switch (_context14.prev = _context14.next) { + case 0: + // Create a Player instance. + video = document.getElementById("video"); + player = new shaka.Player(); + _context14.next = 4; + return player.attach(video); + case 4: + // Attach player to the window to make it easy to access in the JS console. + window.player = player; + + // Listen for error events. + player.addEventListener("error", onErrorEvent); + + // Try to load a manifest. + // This is an asynchronous process. + _context14.prev = 6; + _context14.next = 9; + return player.load(manifestUri); + case 9: + // This runs if the asynchronous load is successful. + console.log("The video has now been loaded!"); + _context14.next = 15; + break; + case 12: + _context14.prev = 12; + _context14.t0 = _context14["catch"](6); + // onError is executed if the asynchronous load fails. + onError(_context14.t0); + case 15: + case "end": + return _context14.stop(); + } + }, _callee13, null, [[6, 12]]); + })); + return _initPlayer.apply(this, arguments); + } + function onErrorEvent(event) { + // Extract the shaka.util.Error object from the event. + onError(event.detail); + } + function onError(error) { + // Log the error. + console.error("Error code", error.code, "object", error); + } + function playVideo() { + var video = document.getElementById("video"); + video.hidden = false; + // Needs delay from hidden to play in Chrome + setTimeout(() => video.play(), 50); + video.focus(); + return video; + } + function closeVideo() { + var video = document.getElementById("video"); + video.hidden = true; + video.pause(); + return video; + } + document.addEventListener("DOMContentLoaded", initApp); + var Entity = () => { + var params = useParams(); + var navigate = useNavigate(); + var _createResource3 = createResource(() => _objectSpread({}, params), getInfo$1), + _createResource4 = _slicedToArray(_createResource3, 1), + data = _createResource4[0]; + var _createResource5 = createResource(() => _objectSpread({}, params), getCredits$1), + _createResource6 = _slicedToArray(_createResource5, 1), + credits = _createResource6[0]; + var _createResource7 = createResource(() => _objectSpread({}, params), getRecommendations), + _createResource8 = _slicedToArray(_createResource7, 1), + recommendations = _createResource8[0]; + var _createSignal69 = createSignal(0), + _createSignal70 = _slicedToArray(_createSignal69, 2), + backdropAlpha = _createSignal70[0], + setBackdropAlpha = _createSignal70[1]; + createEffect(on(data, data2 => { + setGlobalBackground(data2.backgroundImage); + }, { + defer: true + })); + var columnY = 640; + var Backdrop = { + color: hexColor("#000000"), + alpha: 0, + width: 1900, + height: 890, + x: -160, + y: columnY, + borderRadius: 30 + }; + function onRowFocus() { + var _this$children$select6; + (_this$children$select6 = this.children.selected) === null || _this$children$select6 === void 0 || _this$children$select6.setFocus(); + columnRef.y = columnY; + backdropRef.y = columnY; + backdropRef.alpha = 0; + } + function onRowFocusAnimate() { + var _this$children$select7; + (_this$children$select7 = this.children.selected) === null || _this$children$select7 === void 0 || _this$children$select7.setFocus(); + columnRef.y = 200; + backdropRef.y = 160; + backdropRef.alpha = 0.9; + } + function onEnter() { + var entity = this.children.selected; + assertTruthy(entity && entity.href); + navigate(entity.href); + } + function onEscape() { + closeVideo(); + document.getElementsByTagName("canvas")[0].focus(); + entityActions.setFocus(); + setBackdropAlpha(0); + } + function onEnterTrailer() { + var video = playVideo(); + setActiveElement(video); + setBackdropAlpha(0.9); + } + var columnRef, backdropRef, entityActions; + return createComponent(Show, { + get when() { + return data(); + }, + keyed: true, + get children() { + return [createComponent(View, { + x: 170, + onUp: () => entityActions.setFocus(), + onEscape, + get children() { + return [createComponent(ContentBlock, mergeProps({ + y: 260 + }, () => data().heroContent)), createComponent(Row, { + ref(r$) { + var _ref$ = entityActions; + typeof _ref$ === "function" ? _ref$(r$) : entityActions = r$; + }, + y: 500, + scroll: "none", + height: 90, + width: 640, + gap: 40, + onDown: () => columnRef.setFocus(), + onEnter: onEnterTrailer, + get children() { + return [createComponent(Button$1, { + width: 300, + autofocus: true, + children: "Play" + }), createComponent(Button$1, { + width: 300, + children: "Resume" + })]; + } + }), createComponent(Column, { + ref(r$) { + var _ref$2 = columnRef; + typeof _ref$2 === "function" ? _ref$2(r$) : columnRef = r$; + }, + x: 0, + y: columnY, + get style() { + return styles.Column; + }, + zIndex: 5, + get children() { + return createComponent(Show, { + get when() { + return memo(() => !!recommendations())() && credits(); + }, + get children() { + return [createComponent(Text, { + skipFocus: true, + get style() { + return styles.RowTitle; + }, + children: "Recommendations" + }), createComponent(TileRow, { + onFocus: onRowFocus, + onEnter, + get items() { + return recommendations(); + }, + width: 1620 + }), createComponent(Text, { + skipFocus: true, + get style() { + return styles.RowTitle; + }, + children: "Cast and Crew" + }), createComponent(TileRow, { + onFocus: onRowFocusAnimate, + onEnter, + get items() { + return credits(); + }, + width: 1620 + })]; + } + }); + } + }), createComponent(View, { + ref(r$) { + var _ref$3 = backdropRef; + typeof _ref$3 === "function" ? _ref$3(r$) : backdropRef = r$; + }, + style: Backdrop, + transition: { + alpha: true, + y: true + } + })]; + } + }), createComponent(View, { + get alpha() { + return backdropAlpha(); + }, + get color() { + return hexColor("#000000"); + }, + zIndex: 200, + transition: { + alpha: true + } + })]; + } + }); + }; + function getCredits({ + id + }) { + return api.get(`/person/${id}/combined_credits`).then(({ + cast + }) => convertItemsToTiles(cast.slice(0, 7))); + } + function getInfo({ + id + }) { + return api.get(`/person/${id}`).then(data => _objectSpread({ + backgroundImage: getImageUrl(data.profile_path, "original"), + heroContent: { + title: data.title || data.name, + description: data.biography + } + }, data)); + } + var People = () => { + var params = useParams(); + var navigate = useNavigate(); + var _createResource9 = createResource(() => _objectSpread({}, params), getInfo), + _createResource10 = _slicedToArray(_createResource9, 1), + data = _createResource10[0]; + var _createResource11 = createResource(() => _objectSpread({}, params), getCredits), + _createResource12 = _slicedToArray(_createResource11, 1), + credits = _createResource12[0]; + var Backdrop = { + color: hexColor("#000000"), + alpha: 0.8, + width: 800, + height: 440, + x: 130, + y: 180, + borderRadius: 30 + }; + function onEnter() { + var entity = this.children.selected; + assertTruthy(entity && entity.href); + navigate(entity.href); + } + onMount(() => { + setGlobalBackground("#333333"); + }); + return createComponent(Show, { + get when() { + return data(); + }, + keyed: true, + get children() { + return [createComponent(View, { + get src() { + return data().backgroundImage; + }, + width: 400, + autosize: true, + y: 0, + x: 1800, + mountX: 1 + }), createComponent(View, { + x: 150, + y: 200, + width: 800, + gap: 24, + get style() { + return styles.Column; + }, + zIndex: 3, + get children() { + return [createComponent(Text, { + contain: "width", + fontFamily: "Ubuntu", + get style() { + return theme.typography.display2; + }, + get children() { + return data().name; + } + }), createComponent(Text, { + contain: "both", + get style() { + return styles.peopleBio; + }, + get children() { + return data().biography; + } + })]; + } + }), createComponent(View, { + style: Backdrop + }), createComponent(Column, { + y: 670, + x: 140, + get style() { + return styles.Column; + }, + scroll: "none", + get children() { + return createComponent(Show, { + get when() { + return credits(); + }, + get children() { + return [createComponent(Text, { + skipFocus: true, + get style() { + return styles.RowTitle; + }, + children: "Credits" + }), createComponent(TileRow, { + autofocus: true, + onEnter, + get items() { + return credits(); + } + })]; + } + }); + } + })]; + } + }); + }; + var NotFound = () => { + return (() => { + var _el$ = createElement("node"); + setProp(_el$, "style", { + width: 1920, + height: 1080, + color: 868483072 + }); + return _el$; + })(); + }; + var coreExtensionModuleUrl = new URL('AppCoreExtensions-legacy-BzG4a-Q5.js', module.meta.url).href; + config.debug = false; + config.animationsEnabled = true; + config.fontSettings.fontFamily = "Ubuntu"; + config.fontSettings.color = hexColor("#f6f6f6"); + config.fontSettings.fontSize = 32; + config.rendererOptions = { + coreExtensionModule: coreExtensionModuleUrl, + fpsUpdateInterval: 200, + enableInspector: true + // deviceLogicalPixelRatio: 1 + }; + render(() => createComponent(HashRouter, { + root: props => createComponent(App, props), + get children() { + return [createComponent(Route, { + path: "", + component: Browse + }), createComponent(Route, { + path: "examples", + component: Portal + }), createComponent(Route, { + path: "browse/:filter", + component: Browse + }), createComponent(Route, { + path: "text", + component: TextPage + }), createComponent(Route, { + path: "buttons", + component: ButtonsPage + }), createComponent(Route, { + path: "flex", + component: FlexPage + }), createComponent(Route, { + path: "create", + component: CreatePage + }), createComponent(Route, { + path: "viewport", + component: ViewportPage + }), createComponent(Route, { + path: "flexsize", + component: FlexSizePage + }), createComponent(Route, { + path: "flexcolumnsize", + component: FlexColumnPage$1 + }), createComponent(Route, { + path: "flexcolumn", + component: FlexColumnPage + }), createComponent(Route, { + path: "buttonsmaterial", + component: MaterialButtonsPage + }), createComponent(Route, { + path: "entity/people/:id", + component: People + }), createComponent(Route, { + path: "entity/:type/:id", + component: Entity + }), createComponent(Route, { + path: "*all", + component: NotFound + })]; + } + })); + } + }; + }); +})(); +//# sourceMappingURL=index-legacy-BoS85dc4.js.map diff --git a/assets/index-legacy-BoS85dc4.js.map b/assets/index-legacy-BoS85dc4.js.map new file mode 100644 index 0000000..d5ab229 --- /dev/null +++ b/assets/index-legacy-BoS85dc4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-legacy-BoS85dc4.js","sources":["../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js","../../../../../renderer/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js","../../../../../renderer/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js","../../../../../renderer/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js","../../../../../renderer/dist/src/main-api/Inspector.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js","../../../../../renderer/dist/src/core/text-rendering/renderers/TextRenderer.js","../../../../../renderer/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js","../../../../../renderer/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js","../../../../../renderer/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DefaultShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/DynamicShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/SdfShader.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js","../../../../../renderer/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js","../../../../../renderer/dist/src/core/CoreShaderManager.js","../../../../../renderer/dist/src/core/lib/ContextSpy.js","../../../../../renderer/dist/src/core/lib/textureCompression.js","../../../../../renderer/dist/src/core/textures/ImageTexture.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js","../../../../../renderer/dist/src/core/text-rendering/TrFontManager.js","../../../../../renderer/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js","../../../../../renderer/dist/src/render-drivers/utils.js","../../../../../renderer/dist/src/main-api/RendererMain.js","../../../../../renderer/dist/src/core/animations/CoreAnimation.js","../../../../../renderer/dist/src/core/animations/CoreAnimationController.js","../../../../../renderer/dist/src/core/lib/Matrix3d.js","../../../../../renderer/dist/src/core/lib/RenderCoords.js","../../../../../renderer/dist/src/core/CoreNode.js","../../../../../renderer/dist/src/render-drivers/main/MainOnlyNode.js","../../../../../renderer/dist/src/core/platform.js","../../../../../renderer/dist/src/core/animations/AnimationManager.js","../../../../../renderer/dist/src/core/lib/ImageWorker.js","../../../../../renderer/dist/src/core/textures/NoiseTexture.js","../../../../../renderer/dist/src/core/CoreTextureManager.js","../../../../../renderer/dist/src/core/TextureMemoryManager.js","../../../../../renderer/dist/src/core/Stage.js","../../../../../renderer/dist/src/core/CoreTextNode.js","../../../../../renderer/dist/src/render-drivers/main/MainOnlyTextNode.js","../../../../../renderer/dist/src/render-drivers/main/MainCoreDriver.js","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/dist/solid.js","../../../../../solid/src/core/lightningInit.ts","../../../../../solid/src/core/node/children.ts","../../../../../solid/src/config.ts","../../../../../solid/src/core/utils.ts","../../../../../solid/src/core/node/states.ts","../../../../../solid/src/core/flex.ts","../../../../../solid/src/core/activeElement.ts","../../../../../solid/src/core/node/index.ts","../../../../../solid/src/components/Text.tsx","../../../../../solid/src/components/View.tsx","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/universal/dist/universal.js","../../../../../solid/src/core/solidUniversal.ts","../../../../../solid/src/core/render.ts","../../../../../solid/src/utils.ts","../../../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/web/dist/web.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/lifecycle.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/utils.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routing.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/components.jsx","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/createRouter.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/data/action.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/data/events.js","../../../../node_modules/.pnpm/@solidjs+router@0.13.1_solid-js@1.8.16/node_modules/@solidjs/router/dist/routers/HashRouter.js","../../../../node_modules/.pnpm/@solid-primitives+utils@6.2.3_solid-js@1.8.16/node_modules/@solid-primitives/utils/dist/chunk/R5675YMU.js","../../../../node_modules/.pnpm/@solid-primitives+event-listener@2.3.3_solid-js@1.8.16/node_modules/@solid-primitives/event-listener/dist/index.js","../../../../node_modules/.pnpm/@solid-primitives+rootless@1.4.5_solid-js@1.8.16/node_modules/@solid-primitives/rootless/dist/index.js","../../../../node_modules/.pnpm/@solid-primitives+keyboard@1.2.8_solid-js@1.8.16/node_modules/@solid-primitives/keyboard/dist/index.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/utils.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/useFocusManager.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/withPadding.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/speech.js","../../../../node_modules/.pnpm/@solid-primitives+scheduled@1.4.3_solid-js@1.8.16/node_modules/@solid-primitives/scheduled/dist/index.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/announcer.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/announcer/index.js","../../../../node_modules/.pnpm/@lightningjs+solid-primitives@0.6.4_@lightningjs+renderer@0.8.2_@lightningjs+solid@0.15.6_solid-js@1.8.16/node_modules/@lightningjs/solid-primitives/dist/packages/createSpriteMap.js","../../src/state.ts","../../../../node_modules/.pnpm/@lightningjs+l3-ui-theme-base@0.3.1/node_modules/@lightningjs/l3-ui-theme-base/theme.js","../../src/components/Background.tsx","../../../../node_modules/.pnpm/@lightningjs+solid-ui@0.12.1_@babel+core@7.24.4_@lightningjs+renderer@0.8.2_@lightningjs+soli_l6qk66ywnsrdb5zvon2uxgrjiy/node_modules/@lightningjs/solid-ui/dist/index.js","../../src/components/NavDrawer/NavDrawer.styles.ts","../../src/components/Icon.tsx","../../src/components/NavDrawer/NavDrawer.tsx","../../src/pages/App.tsx","../../src/styles.ts","../../src/components/index.tsx","../../src/api/key.ts","../../src/api/index.ts","../../src/api/formatters/ItemFormatter.ts","../../src/api/providers/browse.ts","../../src/components/pagination.ts","../../src/components/ContentBlock.tsx","../../src/api/providers/entity.js","../../src/pages/Browse.tsx","../../src/pages/Portal.tsx","../../src/pages/Text.tsx","../../src/pages/Create.tsx","../../src/pages/Viewport.tsx","../../src/pages/Buttons.tsx","../../src/pages/Flex.tsx","../../src/pages/FlexSize.tsx","../../src/pages/FlexColumnSize.tsx","../../src/pages/FlexColumn.tsx","../../src/pages/ButtonsMaterial.tsx","../../src/video.js","../../src/pages/Entity.tsx","../../src/api/providers/people.js","../../src/pages/People.tsx","../../src/pages/NotFound.tsx","../../AppCoreExtensions.js?importChunkUrl","../../src/index.tsx"],"sourcesContent":["/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Reversible Generator Wrapper Class\n/**\n * Generator function that yields each Unicode code point in the given string.\n */\nexport function* getUnicodeCodepoints(text, start = 0) {\n let i = start;\n while (i < text.length) {\n const codePoint = text.codePointAt(i);\n if (codePoint === undefined) {\n throw new Error('Invalid Unicode code point');\n }\n yield codePoint;\n i += codePoint <= 0xffff ? 1 : 2;\n }\n}\n//# sourceMappingURL=getUnicodeCodepoints.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Texture Usage Tracker for Usage Based Texture Garbage Collection\n */\nexport class TextureUsageTracker {\n releaseCallback;\n constructor(releaseCallback) {\n this.releaseCallback = releaseCallback;\n }\n}\n//# sourceMappingURL=TextureUsageTracker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { TextureUsageTracker } from './TextureUsageTracker.js';\n/**\n * Usage-based Texture Garbage Collection Registry\n */\nexport class ManualCountTextureUsageTracker extends TextureUsageTracker {\n textureMap = new Map();\n zeroReferenceTextureSet = new Set();\n options;\n constructor(releaseCallback, options) {\n super(releaseCallback);\n this.options = {\n textureCleanupIntervalMs: options.textureCleanupIntervalMs ?? 10000,\n textureCleanupAgeThreadholdMs: options.textureCleanupAgeThreadholdMs ?? 60000,\n };\n // Periodically check for textures that are no longer referenced by any\n // Nodes and notify RendererMain to release them.\n setInterval(() => {\n const now = Date.now();\n const thresholdMs = this.options.textureCleanupAgeThreadholdMs;\n for (const textureRefInfo of this.zeroReferenceTextureSet) {\n if (now - textureRefInfo.lastUpdate > thresholdMs) {\n this.releaseCallback(textureRefInfo.id);\n this.textureMap.delete(textureRefInfo.id);\n this.zeroReferenceTextureSet.delete(textureRefInfo);\n }\n }\n }, this.options.textureCleanupIntervalMs);\n }\n registerTexture(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n if (!this.textureMap.has(textureId)) {\n const textureRefInfo = {\n id: textureId,\n nodeRefCount: 0,\n lastUpdate: Date.now(),\n };\n this.textureMap.set(textureId, textureRefInfo);\n this.zeroReferenceTextureSet.add(textureRefInfo);\n }\n }\n incrementTextureRefCount(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n let textureRefInfo = this.textureMap.get(textureId);\n if (!textureRefInfo) {\n // Texture has not been registered yet, so register it now.\n // This may happen if the TextureRef was cleaned up from the registry\n // but was still alive in memory and eventually re-used.\n this.registerTexture(texture);\n textureRefInfo = this.textureMap.get(textureId);\n }\n assertTruthy(textureRefInfo, 'Texture must have been registered');\n if (texture.txType === 'SubTexture') {\n // If this is a SubTexture, then increment the reference count of the\n // parent texture as well.\n this.incrementTextureRefCount(texture.props.texture);\n }\n textureRefInfo.nodeRefCount++;\n textureRefInfo.lastUpdate = Date.now();\n if (this.zeroReferenceTextureSet.has(textureRefInfo)) {\n this.zeroReferenceTextureSet.delete(textureRefInfo);\n }\n }\n decrementTextureRefCount(texture) {\n const textureId = texture.options?.id;\n assertTruthy(textureId, 'Texture must have an id to be registered');\n const textureRefInfo = this.textureMap.get(textureId);\n assertTruthy(textureRefInfo, 'Texture must have been registered');\n textureRefInfo.nodeRefCount--;\n textureRefInfo.lastUpdate = Date.now();\n if (textureRefInfo.nodeRefCount === 0) {\n this.zeroReferenceTextureSet.add(textureRefInfo);\n }\n if (texture.txType === 'SubTexture') {\n // If this is a SubTexture, then decrement the reference count of the\n // parent texture as well.\n this.decrementTextureRefCount(texture.props.texture);\n }\n }\n}\n//# sourceMappingURL=ManualCountTextureUsageTracker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { TextureUsageTracker } from './TextureUsageTracker.js';\nexport class FinalizationRegistryTextureUsageTracker extends TextureUsageTracker {\n registry;\n constructor(releaseCallback) {\n super(releaseCallback);\n this.registry = new FinalizationRegistry(releaseCallback);\n }\n registerTexture(texture) {\n assertTruthy(texture.options?.id, 'Texture must have an ID to be registered');\n this.registry.register(texture, texture.options?.id);\n }\n incrementTextureRefCount() {\n // No-op for FinalizationRegistry\n }\n decrementTextureRefCount() {\n // No-op for FinalizationRegistry\n }\n}\n//# sourceMappingURL=FinalizationRegistryTextureUsageTracker.js.map","import {} from './RendererMain.js';\nimport { isProductionEnvironment } from '../utils.js';\nconst stylePropertyMap = {\n alpha: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'opacity', value: `${v}` };\n },\n x: (x) => {\n return { prop: 'left', value: `${x}px` };\n },\n y: (y) => {\n return { prop: 'top', value: `${y}px` };\n },\n width: (w) => {\n if (w === 0) {\n return null;\n }\n return { prop: 'width', value: `${w}px` };\n },\n height: (h) => {\n if (h === 0) {\n return null;\n }\n return { prop: 'height', value: `${h}px` };\n },\n zIndex: () => 'zIndex',\n fontFamily: () => 'font-family',\n fontSize: () => 'font-size',\n fontStyle: () => 'font-style',\n fontWeight: () => 'font-weight',\n fontStretch: () => 'font-stretch',\n lineHeight: () => 'line-height',\n letterSpacing: () => 'letter-spacing',\n textAlign: () => 'text-align',\n overflowSuffix: () => 'overflow-suffix',\n maxLines: () => 'max-lines',\n contain: () => 'contain',\n verticalAlign: () => 'vertical-align',\n clipping: (v) => {\n if (v === false) {\n return null;\n }\n return { prop: 'overflow', value: v ? 'hidden' : 'visible' };\n },\n rotation: (v) => {\n if (v === 0) {\n return null;\n }\n return { prop: 'transform', value: `rotate(${v}rad)` };\n },\n scale: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scale(${v})` };\n },\n scaleX: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scaleX(${v})` };\n },\n scaleY: (v) => {\n if (v === 1) {\n return null;\n }\n return { prop: 'transform', value: `scaleY(${v})` };\n },\n color: (v) => {\n if (v === 0) {\n return null;\n }\n return { prop: 'color', value: convertColorToRgba(v) };\n },\n};\nconst convertColorToRgba = (color) => {\n const a = (color & 0xff) / 255;\n const b = (color >> 8) & 0xff;\n const g = (color >> 16) & 0xff;\n const r = (color >> 24) & 0xff;\n return `rgba(${r},${g},${b},${a})`;\n};\nconst domPropertyMap = {\n id: 'id',\n};\nconst gradientColorPropertyMap = [\n 'colorTop',\n 'colorBottom',\n 'colorLeft',\n 'colorRight',\n 'colorTl',\n 'colorTr',\n 'colorBl',\n 'colorBr',\n];\nexport class Inspector {\n root = null;\n canvas = null;\n height = 1080;\n width = 1920;\n scaleX = 1;\n scaleY = 1;\n constructor(canvas, settings) {\n if (isProductionEnvironment())\n return;\n if (!settings) {\n throw new Error('settings is required');\n }\n // calc dimensions based on the devicePixelRatio\n this.height = Math.ceil(settings.appHeight ?? 1080 / (settings.deviceLogicalPixelRatio ?? 1));\n this.width = Math.ceil(settings.appWidth ?? 1900 / (settings.deviceLogicalPixelRatio ?? 1));\n this.scaleX = settings.deviceLogicalPixelRatio ?? 1;\n this.scaleY = settings.deviceLogicalPixelRatio ?? 1;\n this.canvas = canvas;\n this.root = document.createElement('div');\n this.setRootPosition();\n document.body.appendChild(this.root);\n //listen for changes on canvas\n const mutationObserver = new MutationObserver(this.setRootPosition.bind(this));\n mutationObserver.observe(canvas, {\n attributes: true,\n childList: false,\n subtree: false,\n });\n // Create a ResizeObserver to watch for changes in the element's size\n const resizeObserver = new ResizeObserver(this.setRootPosition.bind(this));\n resizeObserver.observe(canvas);\n //listen for changes on window\n window.addEventListener('resize', this.setRootPosition.bind(this));\n console.warn('Inspector is enabled, this will impact performance');\n }\n setRootPosition() {\n if (this.root === null || this.canvas === null) {\n return;\n }\n // get the world position of the canvas object, so we can match the inspector to it\n const rect = this.canvas.getBoundingClientRect();\n const top = document.documentElement.scrollTop + rect.top;\n const left = document.documentElement.scrollLeft + rect.left;\n this.root.id = 'root';\n this.root.style.left = `${left}px`;\n this.root.style.top = `${top}px`;\n this.root.style.width = `${this.width}px`;\n this.root.style.height = `${this.height}px`;\n this.root.style.position = 'absolute';\n this.root.style.transformOrigin = '0 0 0';\n this.root.style.transform = `scale(${this.scaleX}, ${this.scaleY})`;\n this.root.style.overflow = 'hidden';\n this.root.style.zIndex = '65534';\n }\n createDiv(node, properties) {\n const div = document.createElement('div');\n div.style.position = 'absolute';\n div.id = node.id.toString();\n // set initial properties\n for (const key in properties) {\n this.updateNodeProperty(div, \n // really typescript? really?\n key, properties[key]);\n }\n return div;\n }\n createNode(driver, properties) {\n const node = driver.createNode(properties);\n const div = this.createDiv(node, properties);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n div.node = node;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n node.div = div;\n return this.createProxy(node, div);\n }\n createTextNode(driver, properties) {\n const node = driver.createTextNode(properties);\n const div = this.createDiv(node, properties);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n div.node = node;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n node.div = div;\n return this.createProxy(node, div);\n }\n createProxy(node, div) {\n return new Proxy(node, {\n set: (target, property, value) => {\n this.updateNodeProperty(div, property, value);\n return Reflect.set(target, property, value);\n },\n get: (target, property, receiver) => {\n if (property === 'destroy') {\n this.destroyNode(target);\n }\n if (property === 'animate') {\n return (props, settings) => {\n const anim = target.animate(props, settings);\n // Trap the animate start function so we can update the inspector accordingly\n return new Proxy(anim, {\n get: (target, property, receiver) => {\n if (property === 'start') {\n this.animateNode(div, node, props, settings);\n }\n return Reflect.get(target, property, receiver);\n },\n });\n };\n }\n return Reflect.get(target, property, receiver);\n },\n });\n }\n destroyNode(node) {\n const div = document.getElementById(node.id.toString());\n div?.remove();\n }\n updateNodeProperty(div, property, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value) {\n if (this.root === null || value === undefined || value === null) {\n return;\n }\n /**\n * Special case for parent property\n */\n if (property === 'parent') {\n const parentId = value.id;\n // only way to detect if the parent is the root node\n // if you are reading this and have a better way, please let me know\n if (parentId === 1) {\n this.root.appendChild(div);\n return;\n }\n const parent = document.getElementById(parentId.toString());\n parent?.appendChild(div);\n return;\n }\n // special case for text\n if (property === 'text') {\n div.innerHTML = String(value);\n // hide text because we can't render SDF fonts\n // it would look weird and obstruct the WebGL rendering\n div.style.visibility = 'hidden';\n return;\n }\n // special case for images\n // we're not setting any CSS properties to avoid images getting loaded twice\n // as the renderer will handle the loading of the image. Setting it to `data-src`\n if (property === 'src' && value) {\n div.setAttribute(`data-src`, String(value));\n return;\n }\n // special case for color gradients (normal colors are handled by the stylePropertyMap)\n // FIXME the renderer seems to return the same number for all colors\n // if (gradientColorPropertyMap.includes(property as string)) {\n // const color = convertColorToRgba(value as number);\n // div.setAttribute(`data-${property}`, color);\n // return;\n // }\n // CSS mappable attribute\n if (stylePropertyMap[property]) {\n const mappedStyleResponse = stylePropertyMap[property]?.(value);\n if (mappedStyleResponse === null) {\n return;\n }\n if (typeof mappedStyleResponse === 'string') {\n div.style.setProperty(mappedStyleResponse, String(value));\n return;\n }\n if (typeof mappedStyleResponse === 'object') {\n div.style.setProperty(mappedStyleResponse.prop, mappedStyleResponse.value);\n }\n return;\n }\n // DOM properties\n if (domPropertyMap[property]) {\n div.setAttribute(String(stylePropertyMap[property]), String(value));\n return;\n }\n // custom data properties\n if (property === 'data') {\n for (const key in value) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n div.setAttribute(`data-${key}`, String(value[key]));\n }\n return;\n }\n }\n // simple animation handler\n animateNode(div, node, props, settings) {\n const { duration = 1000, delay = 0,\n // easing = 'linear',\n // repeat = 0,\n // loop = false,\n // stopMethod = false,\n } = settings;\n const { x, y, width, height, alpha = 1, rotation = 0, scale = 1, color, } = props;\n // ignoring loops and repeats for now, as that might be a bit too much for the inspector\n function animate() {\n setTimeout(() => {\n div.style.top = `${y}px`;\n div.style.left = `${x}px`;\n div.style.width = `${width}px`;\n div.style.height = `${height}px`;\n div.style.opacity = `${alpha}`;\n div.style.rotate = `${rotation}rad`;\n div.style.scale = `${scale}`;\n div.style.color = convertColorToRgba(color);\n }, duration);\n }\n setTimeout(animate, delay);\n }\n}\n//# sourceMappingURL=Inspector.js.map","export class ShaderEffect {\n priority = 1;\n name = '';\n ref;\n target;\n passParameters = '';\n declaredUniforms = '';\n uniformInfo = {};\n static uniforms = {};\n static methods;\n static onShaderMask;\n static onColorize;\n static onEffectMask;\n static getEffectKey(props) {\n return '';\n }\n static getMethodParameters(uniforms, props) {\n const res = [];\n for (const u in uniforms) {\n const uni = uniforms[u];\n let define = '';\n if (uni.size) {\n define = `[${uni.size(props)}]`;\n }\n res.push(`${uni.type} ${u}${define}`);\n }\n return res.join(',');\n }\n constructor(options) {\n const { ref, target, props = {} } = options;\n this.ref = ref;\n this.target = target;\n const uniformInfo = {};\n const passParameters = [];\n let declaredUniforms = '';\n const uniforms = this.constructor.uniforms || {};\n for (const u in uniforms) {\n const unif = uniforms[u];\n const uniType = unif.type;\n //make unique uniform name\n const uniformName = `${ref}_${u}`;\n let define = '';\n if (unif.size) {\n define = `[${unif.size(props)}]`;\n }\n passParameters.push(uniformName);\n declaredUniforms += `uniform ${uniType} ${uniformName}${define};`;\n uniformInfo[u] = { name: uniformName, uniform: uniforms[u].method };\n }\n this.passParameters = passParameters.join(',');\n this.declaredUniforms = declaredUniforms;\n this.uniformInfo = uniformInfo;\n }\n static resolveDefaults(props) {\n return {};\n }\n static makeEffectKey(props) {\n return false;\n }\n}\n//# sourceMappingURL=ShaderEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst trPropSetterDefaults = {\n x: (state, value) => {\n state.props.x = value;\n },\n y: (state, value) => {\n state.props.y = value;\n },\n width: (state, value) => {\n state.props.width = value;\n },\n height: (state, value) => {\n state.props.height = value;\n },\n color: (state, value) => {\n state.props.color = value;\n },\n zIndex: (state, value) => {\n state.props.zIndex = value;\n },\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n },\n text: (state, value) => {\n state.props.text = value;\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n },\n contain: (state, value) => {\n state.props.contain = value;\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n },\n scrollable: (state, value) => {\n state.props.scrollable = value;\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n },\n debug: (state, value) => {\n state.props.debug = value;\n },\n};\nexport class TextRenderer {\n stage;\n set;\n constructor(stage) {\n this.stage = stage;\n const propSetters = {\n ...trPropSetterDefaults,\n ...this.getPropertySetters(),\n };\n // For each prop setter add a wrapper method that checks if the prop is\n // different before calling the setter\n this.set = Object.freeze(Object.fromEntries(Object.entries(propSetters).map(([key, setter]) => {\n return [\n key,\n (state, value) => {\n if (state.props[key] !== value) {\n setter(state, value);\n // Assume any prop change will require a render\n // This is required because otherwise a paused RAF will result\n // in renders when text props are changed.\n this.stage.requestRender();\n }\n },\n ];\n })));\n }\n setStatus(state, status, error) {\n // Don't emit the same status twice\n if (state.status === status) {\n return;\n }\n state.status = status;\n state.emitter.emit(status, error);\n }\n /**\n * Allows the CoreTextNode to communicate changes to the isRenderable state of\n * the itself.\n *\n * @param state\n * @param renderable\n */\n setIsRenderable(state, renderable) {\n state.isRenderable = renderable;\n }\n /**\n * Destroy/Clean up the state object\n *\n * @remarks\n * Opposite of createState(). Frees any event listeners / resources held by\n * the state that may not reliably get garbage collected.\n *\n * @param state\n */\n destroyState(state) {\n const stateEvents = ['loading', 'loaded', 'failed'];\n // Remove the old event listeners from previous state obj there was one\n stateEvents.forEach((eventName) => {\n state.emitter.off(eventName);\n });\n }\n /**\n * Schedule a state update via queueMicrotask\n *\n * @remarks\n * This method is used to schedule a state update via queueMicrotask. This\n * method should be called whenever a state update is needed, and it will\n * ensure that the state is only updated once per microtask.\n * @param state\n * @returns\n */\n scheduleUpdateState(state) {\n if (state.updateScheduled) {\n return;\n }\n state.updateScheduled = true;\n queueMicrotask(() => {\n state.updateScheduled = false;\n this.updateState(state);\n });\n }\n}\n//# sourceMappingURL=TextRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TrFontFace } from './TrFontFace.js';\nexport class WebTrFontFace extends TrFontFace {\n fontFace;\n fontUrl;\n constructor(fontFamily, descriptors, fontUrl) {\n super(fontFamily, descriptors);\n // Filter out parentheses from fontUrl\n const fontUrlWithoutParentheses = fontUrl.replace(/\\(|\\)/g, '');\n // Defaults for descriptors resolved in the super constructor\n const determinedDescriptors = this.descriptors;\n // Convert TrFontFaceDescriptors to CSS FontFaceDescriptors\n const cssDescriptors = {\n style: determinedDescriptors.style,\n weight: typeof determinedDescriptors.weight === 'number'\n ? `${determinedDescriptors.weight}`\n : determinedDescriptors.weight,\n stretch: determinedDescriptors.stretch,\n unicodeRange: determinedDescriptors.unicodeRange,\n variant: determinedDescriptors.variant,\n featureSettings: determinedDescriptors.featureSettings,\n display: determinedDescriptors.display,\n };\n const fontFace = new FontFace(fontFamily, `url(${fontUrlWithoutParentheses})`, cssDescriptors);\n fontFace\n .load()\n .then(() => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.loaded = true;\n this.emit('loaded');\n })\n .catch(console.error);\n this.fontFace = fontFace;\n this.fontUrl = fontUrl;\n }\n}\n//# sourceMappingURL=WebTrFontFace.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { getRgbaString } from '../../lib/utils.js';\nconst MAX_TEXTURE_DIMENSION = 2048;\n/**\n * Calculate height for the canvas\n *\n * @param textBaseline\n * @param fontSize\n * @param lineHeight\n * @param numLines\n * @param offsetY\n * @returns\n */\nfunction calcHeight(textBaseline, fontSize, lineHeight, numLines, offsetY) {\n const baselineOffset = textBaseline !== 'bottom' ? 0.5 * fontSize : 0;\n return (lineHeight * (numLines - 1) +\n baselineOffset +\n Math.max(lineHeight, fontSize) +\n (offsetY || 0));\n}\nexport class LightningTextTextureRenderer {\n _canvas;\n _context;\n _settings;\n renderInfo;\n constructor(canvas, context) {\n this._canvas = canvas;\n this._context = context;\n this._settings = this.mergeDefaults({});\n }\n set settings(v) {\n this._settings = this.mergeDefaults(v);\n }\n get settings() {\n return this._settings;\n }\n getPrecision() {\n return this._settings.precision;\n }\n setFontProperties() {\n this._context.font = this._getFontSetting();\n this._context.textBaseline = this._settings.textBaseline;\n }\n _getFontSetting() {\n const ff = [this._settings.fontFace];\n const ffs = [];\n for (let i = 0, n = ff.length; i < n; i++) {\n if (ff[i] === 'serif' || ff[i] === 'sans-serif') {\n ffs.push(ff[i]);\n }\n else {\n ffs.push(`\"${ff[i]}\"`);\n }\n }\n return `${this._settings.fontStyle} ${this._settings.fontSize * this.getPrecision()}px ${ffs.join(',')}`;\n }\n _load() {\n if (true && document.fonts) {\n const fontSetting = this._getFontSetting();\n try {\n if (!document.fonts.check(fontSetting, this._settings.text)) {\n // Use a promise that waits for loading.\n return document.fonts\n .load(fontSetting, this._settings.text)\n .catch((err) => {\n // Just load the fallback font.\n console.warn('[Lightning] Font load error', err, fontSetting);\n })\n .then(() => {\n if (!document.fonts.check(fontSetting, this._settings.text)) {\n console.warn('[Lightning] Font not found', fontSetting);\n }\n });\n }\n }\n catch (e) {\n console.warn(\"[Lightning] Can't check font loading for \" + fontSetting);\n }\n }\n }\n calculateRenderInfo() {\n const renderInfo = {};\n const precision = this.getPrecision();\n const paddingLeft = this._settings.paddingLeft * precision;\n const paddingRight = this._settings.paddingRight * precision;\n const fontSize = this._settings.fontSize * precision;\n let offsetY = this._settings.offsetY === null\n ? null\n : this._settings.offsetY * precision;\n let lineHeight = (this._settings.lineHeight || fontSize) * precision;\n const w = this._settings.w * precision;\n const h = this._settings.h * precision;\n let wordWrapWidth = this._settings.wordWrapWidth * precision;\n const cutSx = this._settings.cutSx * precision;\n const cutEx = this._settings.cutEx * precision;\n const cutSy = this._settings.cutSy * precision;\n const cutEy = this._settings.cutEy * precision;\n const letterSpacing = (this._settings.letterSpacing || 0) * precision;\n const textIndent = this._settings.textIndent * precision;\n // Set font properties.\n this.setFontProperties();\n // Total width.\n let width = w || 2048 / this.getPrecision();\n // Inner width.\n let innerWidth = width - paddingLeft;\n if (innerWidth < 10) {\n width += 10 - innerWidth;\n innerWidth = 10;\n }\n if (!wordWrapWidth) {\n wordWrapWidth = innerWidth;\n }\n // Text overflow\n if (this._settings.textOverflow && !this._settings.wordWrap) {\n let suffix;\n switch (this._settings.textOverflow) {\n case 'clip':\n suffix = '';\n break;\n case 'ellipsis':\n suffix = this._settings.overflowSuffix;\n break;\n default:\n suffix = this._settings.textOverflow;\n }\n this._settings.text = this.wrapWord(this._settings.text, wordWrapWidth - textIndent, suffix);\n }\n // word wrap\n // preserve original text\n let linesInfo;\n if (this._settings.wordWrap) {\n linesInfo = this.wrapText(this._settings.text, wordWrapWidth, letterSpacing, textIndent);\n }\n else {\n linesInfo = { l: this._settings.text.split(/(?:\\r\\n|\\r|\\n)/), n: [] };\n const n = linesInfo.l.length;\n for (let i = 0; i < n - 1; i++) {\n linesInfo.n.push(i);\n }\n }\n let lines = linesInfo.l;\n if (this._settings.maxLines && lines.length > this._settings.maxLines) {\n const usedLines = lines.slice(0, this._settings.maxLines);\n let otherLines = null;\n if (this._settings.overflowSuffix) {\n // Wrap again with max lines suffix enabled.\n const w = this._settings.overflowSuffix\n ? this.measureText(this._settings.overflowSuffix)\n : 0;\n const al = this.wrapText(usedLines[usedLines.length - 1], wordWrapWidth - w, letterSpacing, textIndent);\n usedLines[usedLines.length - 1] = `${al.l[0]}${this._settings.overflowSuffix}`;\n otherLines = [al.l.length > 1 ? al.l[1] : ''];\n }\n else {\n otherLines = [''];\n }\n // Re-assemble the remaining text.\n let i;\n const n = lines.length;\n let j = 0;\n const m = linesInfo.n.length;\n for (i = this._settings.maxLines; i < n; i++) {\n otherLines[j] += `${otherLines[j] ? ' ' : ''}${lines[i]}`;\n if (i + 1 < m && linesInfo.n[i + 1]) {\n j++;\n }\n }\n renderInfo.remainingText = otherLines.join('\\n');\n renderInfo.moreTextLines = true;\n lines = usedLines;\n }\n else {\n renderInfo.moreTextLines = false;\n renderInfo.remainingText = '';\n }\n // calculate text width\n let maxLineWidth = 0;\n const lineWidths = [];\n for (let i = 0; i < lines.length; i++) {\n const lineWidth = this.measureText(lines[i], letterSpacing) + (i === 0 ? textIndent : 0);\n lineWidths.push(lineWidth);\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n renderInfo.lineWidths = lineWidths;\n if (!w) {\n // Auto-set width to max text length.\n width = maxLineWidth + paddingLeft + paddingRight;\n innerWidth = maxLineWidth;\n }\n // calculate text height\n lineHeight = lineHeight || fontSize;\n let height;\n if (h) {\n height = h;\n }\n else {\n height = calcHeight(this._settings.textBaseline, fontSize, lineHeight, lines.length, offsetY);\n }\n if (offsetY === null) {\n offsetY = fontSize;\n }\n renderInfo.w = width;\n renderInfo.h = height;\n renderInfo.lines = lines;\n renderInfo.precision = precision;\n if (!width) {\n // To prevent canvas errors.\n width = 1;\n }\n if (!height) {\n // To prevent canvas errors.\n height = 1;\n }\n if (cutSx || cutEx) {\n width = Math.min(width, cutEx - cutSx);\n }\n if (cutSy || cutEy) {\n height = Math.min(height, cutEy - cutSy);\n }\n renderInfo.width = width;\n renderInfo.innerWidth = innerWidth;\n renderInfo.height = height;\n renderInfo.fontSize = fontSize;\n renderInfo.cutSx = cutSx;\n renderInfo.cutSy = cutSy;\n renderInfo.cutEx = cutEx;\n renderInfo.cutEy = cutEy;\n renderInfo.lineHeight = lineHeight;\n renderInfo.lineWidths = lineWidths;\n renderInfo.offsetY = offsetY;\n renderInfo.paddingLeft = paddingLeft;\n renderInfo.paddingRight = paddingRight;\n renderInfo.letterSpacing = letterSpacing;\n renderInfo.textIndent = textIndent;\n return renderInfo;\n }\n draw(renderInfo, linesOverride) {\n const precision = this.getPrecision();\n // Allow lines to be overriden for partial rendering.\n const lines = linesOverride?.lines || renderInfo.lines;\n const lineWidths = linesOverride?.lineWidths || renderInfo.lineWidths;\n const height = linesOverride\n ? calcHeight(this._settings.textBaseline, renderInfo.fontSize, renderInfo.lineHeight, linesOverride.lines.length, this._settings.offsetY === null\n ? null\n : this._settings.offsetY * precision)\n : renderInfo.height;\n // Add extra margin to prevent issue with clipped text when scaling.\n this._canvas.width = Math.min(Math.ceil(renderInfo.width + this._settings.textRenderIssueMargin), MAX_TEXTURE_DIMENSION);\n this._canvas.height = Math.min(Math.ceil(height), MAX_TEXTURE_DIMENSION);\n // Canvas context has been reset.\n this.setFontProperties();\n if (renderInfo.fontSize >= 128) {\n // WpeWebKit bug: must force compositing because cairo-traps-compositor will not work with text first.\n this._context.globalAlpha = 0.01;\n this._context.fillRect(0, 0, 0.01, 0.01);\n this._context.globalAlpha = 1.0;\n }\n if (renderInfo.cutSx || renderInfo.cutSy) {\n this._context.translate(-renderInfo.cutSx, -renderInfo.cutSy);\n }\n let linePositionX;\n let linePositionY;\n const drawLines = [];\n // Draw lines line by line.\n for (let i = 0, n = lines.length; i < n; i++) {\n linePositionX = i === 0 ? renderInfo.textIndent : 0;\n // By default, text is aligned to top\n linePositionY = i * renderInfo.lineHeight + renderInfo.offsetY;\n if (this._settings.verticalAlign == 'middle') {\n linePositionY += (renderInfo.lineHeight - renderInfo.fontSize) / 2;\n }\n else if (this._settings.verticalAlign == 'bottom') {\n linePositionY += renderInfo.lineHeight - renderInfo.fontSize;\n }\n if (this._settings.textAlign === 'right') {\n linePositionX += renderInfo.innerWidth - lineWidths[i];\n }\n else if (this._settings.textAlign === 'center') {\n linePositionX += (renderInfo.innerWidth - lineWidths[i]) / 2;\n }\n linePositionX += renderInfo.paddingLeft;\n drawLines.push({\n text: lines[i],\n x: linePositionX,\n y: linePositionY,\n w: lineWidths[i],\n });\n }\n // Highlight.\n if (this._settings.highlight) {\n const color = this._settings.highlightColor;\n const hlHeight = this._settings.highlightHeight * precision || renderInfo.fontSize * 1.5;\n const offset = this._settings.highlightOffset * precision;\n const hlPaddingLeft = this._settings.highlightPaddingLeft !== null\n ? this._settings.highlightPaddingLeft * precision\n : renderInfo.paddingLeft;\n const hlPaddingRight = this._settings.highlightPaddingRight !== null\n ? this._settings.highlightPaddingRight * precision\n : renderInfo.paddingRight;\n this._context.fillStyle = getRgbaString(color);\n for (let i = 0; i < drawLines.length; i++) {\n const drawLine = drawLines[i];\n this._context.fillRect(drawLine.x - hlPaddingLeft, drawLine.y - renderInfo.offsetY + offset, drawLine.w + hlPaddingRight + hlPaddingLeft, hlHeight);\n }\n }\n // Text shadow.\n let prevShadowSettings = null;\n if (this._settings.shadow) {\n prevShadowSettings = [\n this._context.shadowColor,\n this._context.shadowOffsetX,\n this._context.shadowOffsetY,\n this._context.shadowBlur,\n ];\n this._context.shadowColor = getRgbaString(this._settings.shadowColor);\n this._context.shadowOffsetX = this._settings.shadowOffsetX * precision;\n this._context.shadowOffsetY = this._settings.shadowOffsetY * precision;\n this._context.shadowBlur = this._settings.shadowBlur * precision;\n }\n this._context.fillStyle = getRgbaString(this._settings.textColor);\n for (let i = 0, n = drawLines.length; i < n; i++) {\n const drawLine = drawLines[i];\n if (renderInfo.letterSpacing === 0) {\n this._context.fillText(drawLine.text, drawLine.x, drawLine.y);\n }\n else {\n const textSplit = drawLine.text.split('');\n let x = drawLine.x;\n for (let i = 0, j = textSplit.length; i < j; i++) {\n this._context.fillText(textSplit[i], x, drawLine.y);\n x += this.measureText(textSplit[i], renderInfo.letterSpacing);\n }\n }\n }\n if (prevShadowSettings) {\n this._context.shadowColor = prevShadowSettings[0];\n this._context.shadowOffsetX = prevShadowSettings[1];\n this._context.shadowOffsetY = prevShadowSettings[2];\n this._context.shadowBlur = prevShadowSettings[3];\n }\n if (renderInfo.cutSx || renderInfo.cutSy) {\n this._context.translate(renderInfo.cutSx, renderInfo.cutSy);\n }\n this.renderInfo = renderInfo;\n }\n wrapWord(word, wordWrapWidth, suffix) {\n const suffixWidth = this._context.measureText(suffix).width;\n const wordLen = word.length;\n const wordWidth = this._context.measureText(word).width;\n /* If word fits wrapWidth, do nothing */\n if (wordWidth <= wordWrapWidth) {\n return word;\n }\n /* Make initial guess for text cuttoff */\n let cutoffIndex = Math.floor((wordWrapWidth * wordLen) / wordWidth);\n let truncWordWidth = this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n /* In case guess was overestimated, shrink it letter by letter. */\n if (truncWordWidth > wordWrapWidth) {\n while (cutoffIndex > 0) {\n truncWordWidth =\n this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n if (truncWordWidth > wordWrapWidth) {\n cutoffIndex -= 1;\n }\n else {\n break;\n }\n }\n /* In case guess was underestimated, extend it letter by letter. */\n }\n else {\n while (cutoffIndex < wordLen) {\n truncWordWidth =\n this._context.measureText(word.substring(0, cutoffIndex)).width +\n suffixWidth;\n if (truncWordWidth < wordWrapWidth) {\n cutoffIndex += 1;\n }\n else {\n // Finally, when bound is crossed, retract last letter.\n cutoffIndex -= 1;\n break;\n }\n }\n }\n /* If wrapWidth is too short to even contain suffix alone, return empty string */\n return (word.substring(0, cutoffIndex) +\n (wordWrapWidth >= suffixWidth ? suffix : ''));\n }\n /**\n * Applies newlines to a string to have it optimally fit into the horizontal\n * bounds set by the Text object's wordWrapWidth property.\n */\n wrapText(text, wordWrapWidth, letterSpacing, indent = 0) {\n // Greedy wrapping algorithm that will wrap words as the line grows longer.\n // than its horizontal bounds.\n const lines = text.split(/\\r?\\n/g);\n let allLines = [];\n const realNewlines = [];\n for (let i = 0; i < lines.length; i++) {\n const resultLines = [];\n let result = '';\n let spaceLeft = wordWrapWidth - indent;\n const words = lines[i].split(' ');\n for (let j = 0; j < words.length; j++) {\n const wordWidth = this.measureText(words[j], letterSpacing);\n const wordWidthWithSpace = wordWidth + this.measureText(' ', letterSpacing);\n if (j === 0 || wordWidthWithSpace > spaceLeft) {\n // Skip printing the newline if it's the first word of the line that is.\n // greater than the word wrap width.\n if (j > 0) {\n resultLines.push(result);\n result = '';\n }\n result += words[j];\n spaceLeft = wordWrapWidth - wordWidth - (j === 0 ? indent : 0);\n }\n else {\n spaceLeft -= wordWidthWithSpace;\n result += ` ${words[j]}`;\n }\n }\n resultLines.push(result);\n result = '';\n allLines = allLines.concat(resultLines);\n if (i < lines.length - 1) {\n realNewlines.push(allLines.length);\n }\n }\n return { l: allLines, n: realNewlines };\n }\n measureText(word, space = 0) {\n if (!space) {\n return this._context.measureText(word).width;\n }\n return word.split('').reduce((acc, char) => {\n return acc + this._context.measureText(char).width + space;\n }, 0);\n }\n mergeDefaults(settings) {\n return {\n text: '',\n w: 0,\n h: 0,\n fontStyle: 'normal',\n fontSize: 40,\n fontFace: null,\n wordWrap: true,\n wordWrapWidth: 0,\n wordBreak: false,\n textOverflow: '',\n lineHeight: null,\n textBaseline: 'alphabetic',\n textAlign: 'left',\n verticalAlign: 'top',\n offsetY: null,\n maxLines: 0,\n overflowSuffix: '...',\n textColor: [1.0, 1.0, 1.0, 1.0],\n paddingLeft: 0,\n paddingRight: 0,\n shadow: false,\n shadowColor: [0.0, 0.0, 0.0, 1.0],\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowBlur: 5,\n highlight: false,\n highlightHeight: 0,\n highlightColor: [0.0, 0.0, 0.0, 1.0],\n highlightOffset: 0,\n highlightPaddingLeft: 0,\n highlightPaddingRight: 0,\n letterSpacing: 0,\n textIndent: 0,\n cutSx: 0,\n cutEx: 0,\n cutSy: 0,\n cutEy: 0,\n advancedRenderer: false,\n fontBaselineRatio: 0,\n precision: 1,\n textRenderIssueMargin: 0,\n ...settings,\n };\n }\n}\n//# sourceMappingURL=LightningTextTextureRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from '../../../common/EventEmitter.js';\nimport { assertTruthy, mergeColorAlphaPremultiplied } from '../../../utils.js';\nimport { intersectRect, intersectBound, getNormalizedRgbaComponents, getNormalizedAlphaComponent, createBound, } from '../../lib/utils.js';\nimport { WebTrFontFace } from '../font-face-types/WebTrFontFace.js';\nimport { LightningTextTextureRenderer, } from './LightningTextTextureRenderer.js';\nimport { TextRenderer, } from './TextRenderer.js';\nconst resolvedGlobal = typeof self === 'undefined' ? globalThis : self;\n/**\n * Global font set regardless of if run in the main thread or a web worker\n */\nconst globalFontSet = (resolvedGlobal.document?.fonts ||\n resolvedGlobal.fonts);\nfunction getFontCssString(props) {\n const { fontFamily, fontStyle, fontWeight, fontStretch, fontSize } = props;\n return [fontStyle, fontWeight, fontStretch, `${fontSize}px`, fontFamily].join(' ');\n}\n/**\n * Ephemeral bounds object used for intersection calculations\n *\n * @remarks\n * Used to avoid creating a new object every time we need to intersect\n * element bounds.\n */\nconst tmpElementBounds = createBound(0, 0, 0, 0);\nexport class CanvasTextRenderer extends TextRenderer {\n canvas;\n context;\n rendererBounds;\n constructor(stage) {\n super(stage);\n if (typeof OffscreenCanvas !== 'undefined') {\n this.canvas = new OffscreenCanvas(0, 0);\n }\n else {\n this.canvas = document.createElement('canvas');\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n let context = this.canvas.getContext('2d');\n if (!context) {\n // A browser may appear to support OffscreenCanvas but not actually support the Canvas '2d' context\n // Here we try getting the context again after falling back to an HTMLCanvasElement.\n // See: https://github.com/lightning-js/renderer/issues/26#issuecomment-1750438486\n this.canvas = document.createElement('canvas');\n context = this.canvas.getContext('2d');\n }\n assertTruthy(context);\n this.context = context;\n this.rendererBounds = {\n x1: 0,\n y1: 0,\n x2: this.stage.options.appWidth,\n y2: this.stage.options.appHeight,\n };\n }\n //#region Overrides\n getPropertySetters() {\n return {\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n state.fontInfo = undefined;\n this.invalidateLayoutCache(state);\n },\n text: (state, value) => {\n state.props.text = value;\n this.invalidateLayoutCache(state);\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n this.invalidateLayoutCache(state);\n },\n color: (state, value) => {\n state.props.color = value;\n this.invalidateLayoutCache(state);\n },\n x: (state, value) => {\n state.props.x = value;\n this.invalidateVisibleWindowCache(state);\n },\n y: (state, value) => {\n state.props.y = value;\n this.invalidateVisibleWindowCache(state);\n },\n contain: (state, value) => {\n state.props.contain = value;\n this.invalidateLayoutCache(state);\n },\n width: (state, value) => {\n state.props.width = value;\n // Only invalidate layout cache if we're containing in the horizontal direction\n if (state.props.contain !== 'none') {\n this.invalidateLayoutCache(state);\n }\n },\n height: (state, value) => {\n state.props.height = value;\n // Only invalidate layout cache if we're containing in the vertical direction\n if (state.props.contain === 'both') {\n this.invalidateLayoutCache(state);\n }\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n this.invalidateLayoutCache(state);\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n this.invalidateLayoutCache(state);\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n this.invalidateLayoutCache(state);\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n this.invalidateLayoutCache(state);\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n this.invalidateLayoutCache(state);\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n this.invalidateLayoutCache(state);\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n this.invalidateLayoutCache(state);\n },\n // debug: (state, value) => {\n // state.props.debug = value;\n // },\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n canRenderFont(props) {\n // The canvas renderer can render any font because it automatically\n // falls back to system fonts. The CanvasTextRenderer should be\n // checked last if other renderers are preferred.\n return true;\n }\n isFontFaceSupported(fontFace) {\n return fontFace instanceof WebTrFontFace;\n }\n addFontFace(fontFace) {\n // Make sure the font face is an Canvas font face (it should have already passed\n // the `isFontFaceSupported` check)\n assertTruthy(fontFace instanceof WebTrFontFace);\n // We simply add the font face to the document\n // @ts-expect-error `add()` method should be available from a FontFaceSet\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n globalFontSet.add(fontFace.fontFace);\n }\n createState(props) {\n return {\n props,\n status: 'initialState',\n updateScheduled: false,\n emitter: new EventEmitter(),\n canvasPages: undefined,\n lightning2TextRenderer: new LightningTextTextureRenderer(this.canvas, this.context),\n renderWindow: undefined,\n visibleWindow: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n valid: false,\n },\n renderInfo: undefined,\n forceFullLayoutCalc: false,\n textW: 0,\n textH: 0,\n fontInfo: undefined,\n fontFaceLoadedHandler: undefined,\n isRenderable: false,\n debugData: {\n updateCount: 0,\n layoutCount: 0,\n drawCount: 0,\n lastLayoutNumCharacters: 0,\n layoutSum: 0,\n drawSum: 0,\n bufferSize: 0,\n },\n };\n }\n updateState(state) {\n // On the first update call we need to set the status to loading\n if (state.status === 'initialState') {\n this.setStatus(state, 'loading');\n }\n // If fontInfo is invalid, we need to establish it\n if (!state.fontInfo) {\n const cssString = getFontCssString(state.props);\n state.fontInfo = {\n cssString: cssString,\n // TODO: For efficiency we would use this here but it's not reliable on WPE -> document.fonts.check(cssString),\n loaded: false,\n };\n // If font is not loaded, set up a handler to update the font info when the font loads\n if (!state.fontInfo.loaded) {\n globalFontSet\n .load(cssString)\n .then(this.onFontLoaded.bind(this, state, cssString))\n .catch(this.onFontLoadError.bind(this, state, cssString));\n return;\n }\n }\n // If we're waiting for a font face to load, don't render anything\n if (!state.fontInfo.loaded) {\n return;\n }\n if (!state.renderInfo) {\n const maxLines = state.props.maxLines;\n const containedMaxLines = state.props.contain === 'both'\n ? Math.floor((state.props.height - state.props.offsetY) /\n state.props.lineHeight)\n : 0;\n const calcMaxLines = containedMaxLines > 0 && maxLines > 0\n ? Math.min(containedMaxLines, maxLines)\n : Math.max(containedMaxLines, maxLines);\n state.lightning2TextRenderer.settings = {\n text: state.props.text,\n textAlign: state.props.textAlign,\n fontFace: state.props.fontFamily,\n fontSize: state.props.fontSize,\n fontStyle: [\n state.props.fontStretch,\n state.props.fontStyle,\n state.props.fontWeight,\n ].join(' '),\n textColor: getNormalizedRgbaComponents(state.props.color),\n offsetY: state.props.fontSize + state.props.offsetY,\n wordWrap: state.props.contain !== 'none',\n wordWrapWidth: state.props.contain === 'none' ? undefined : state.props.width,\n letterSpacing: state.props.letterSpacing,\n lineHeight: state.props.lineHeight,\n maxLines: calcMaxLines,\n textBaseline: state.props.textBaseline,\n verticalAlign: state.props.verticalAlign,\n overflowSuffix: state.props.overflowSuffix,\n };\n // const renderInfoCalculateTime = performance.now();\n state.renderInfo = state.lightning2TextRenderer.calculateRenderInfo();\n // console.log(\n // 'Render info calculated in',\n // performance.now() - renderInfoCalculateTime,\n // 'ms',\n // );\n state.textH = state.renderInfo.lineHeight * state.renderInfo.lines.length;\n state.textW = state.renderInfo.width;\n // Invalidate renderWindow because the renderInfo changed\n state.renderWindow = undefined;\n }\n const { x, y, width, height, scrollY, contain } = state.props;\n const { visibleWindow } = state;\n let { renderWindow, canvasPages } = state;\n if (!visibleWindow.valid) {\n // Figure out whats actually in the bounds of the renderer/canvas (visibleWindow)\n const elementBounds = createBound(x, y, contain !== 'none' ? x + width : Infinity, contain === 'both' ? y + height : Infinity, tmpElementBounds);\n /**\n * Area that is visible on the screen.\n */\n intersectBound(this.rendererBounds, elementBounds, visibleWindow);\n visibleWindow.valid = true;\n }\n const visibleWindowHeight = visibleWindow.y2 - visibleWindow.y1;\n const maxLinesPerCanvasPage = Math.ceil(visibleWindowHeight / state.renderInfo.lineHeight);\n if (visibleWindowHeight === 0) {\n // Nothing to render. Clear any canvasPages and existing renderWindow\n // Return early.\n canvasPages = undefined;\n renderWindow = undefined;\n this.setStatus(state, 'loaded');\n return;\n }\n else if (renderWindow && canvasPages) {\n // Return early if we're still viewing inside the established render window\n // No need to re-render what we've already rendered\n const renderWindowScreenX1 = x + renderWindow.x1;\n const renderWindowScreenY1 = y - scrollY + renderWindow.y1;\n const renderWindowScreenX2 = x + renderWindow.x2;\n const renderWindowScreenY2 = y - scrollY + renderWindow.y2;\n if (renderWindowScreenX1 <= visibleWindow.x1 &&\n renderWindowScreenX2 >= visibleWindow.x2 &&\n renderWindowScreenY1 <= visibleWindow.y1 &&\n renderWindowScreenY2 >= visibleWindow.y2) {\n this.setStatus(state, 'loaded');\n return;\n }\n if (renderWindowScreenY2 < visibleWindow.y2) {\n // We've scrolled up, so we need to render the next page\n renderWindow.y1 += maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n renderWindow.y2 += maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n canvasPages.push(canvasPages.shift());\n canvasPages[2].lineNumStart =\n canvasPages[1].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[2].lineNumEnd =\n canvasPages[2].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[2].valid = false;\n }\n else if (renderWindowScreenY1 > visibleWindow.y1) {\n // We've scrolled down, so we need to render the previous page\n renderWindow.y1 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n renderWindow.y2 -= maxLinesPerCanvasPage * state.renderInfo.lineHeight;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n canvasPages.unshift(canvasPages.pop());\n canvasPages[0].lineNumStart =\n canvasPages[1].lineNumStart - maxLinesPerCanvasPage;\n canvasPages[0].lineNumEnd =\n canvasPages[0].lineNumStart + maxLinesPerCanvasPage;\n canvasPages[0].valid = false;\n }\n }\n else {\n const pageHeight = state.renderInfo.lineHeight * maxLinesPerCanvasPage;\n const page1Block = Math.ceil(scrollY / pageHeight);\n const page1LineStart = page1Block * maxLinesPerCanvasPage;\n const page0LineStart = page1LineStart - maxLinesPerCanvasPage;\n const page2LineStart = page1LineStart + maxLinesPerCanvasPage;\n // We haven't rendered anything yet, so we need to render the first page\n // If canvasPages already exist, let's re-use the textures\n canvasPages = [\n {\n texture: canvasPages?.[0].texture,\n lineNumStart: page0LineStart,\n lineNumEnd: page0LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n {\n texture: canvasPages?.[1].texture,\n lineNumStart: page1LineStart,\n lineNumEnd: page1LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n {\n texture: canvasPages?.[2].texture,\n lineNumStart: page2LineStart,\n lineNumEnd: page2LineStart + maxLinesPerCanvasPage,\n valid: false,\n },\n ];\n state.canvasPages = canvasPages;\n const scrollYNearestPage = page1Block * pageHeight;\n renderWindow = {\n x1: 0,\n y1: scrollYNearestPage - pageHeight,\n x2: width,\n y2: scrollYNearestPage + pageHeight * 2,\n };\n }\n state.renderWindow = renderWindow;\n const pageDrawTime = performance.now();\n for (const pageInfo of canvasPages) {\n if (pageInfo.valid)\n continue;\n if (pageInfo.lineNumStart < 0) {\n pageInfo.texture?.setRenderableOwner(state, false);\n pageInfo.texture = this.stage.txManager.loadTexture('ImageTexture', {\n src: '',\n });\n pageInfo.texture.setRenderableOwner(state, state.isRenderable);\n pageInfo.valid = true;\n continue;\n }\n state.lightning2TextRenderer.draw(state.renderInfo, {\n lines: state.renderInfo.lines.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd),\n lineWidths: state.renderInfo.lineWidths.slice(pageInfo.lineNumStart, pageInfo.lineNumEnd),\n });\n if (!(this.canvas.width === 0 || this.canvas.height === 0)) {\n pageInfo.texture?.setRenderableOwner(state, false);\n pageInfo.texture = this.stage.txManager.loadTexture('ImageTexture', {\n src: this.context.getImageData(0, 0, this.canvas.width, this.canvas.height),\n }, {\n preload: true,\n });\n pageInfo.texture.setRenderableOwner(state, state.isRenderable);\n }\n pageInfo.valid = true;\n }\n // console.log('pageDrawTime', performance.now() - pageDrawTime, 'ms');\n // Report final status\n this.setStatus(state, 'loaded');\n }\n renderQuads(state, transform, clippingRect, alpha) {\n const { stage } = this;\n const { canvasPages, textW = 0, textH = 0, renderWindow } = state;\n if (!canvasPages || !renderWindow)\n return;\n const { x, y, scrollY, contain, width, height /*, debug*/ } = state.props;\n const elementRect = {\n x: x,\n y: y,\n width: contain !== 'none' ? width : textW,\n height: contain === 'both' ? height : textH,\n };\n const visibleRect = intersectRect({\n x: 0,\n y: 0,\n width: stage.options.appWidth,\n height: stage.options.appHeight,\n }, elementRect);\n // if (!debug.disableScissor) {\n // renderer.enableScissor(\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n assertTruthy(canvasPages, 'canvasPages is not defined');\n assertTruthy(renderWindow, 'renderWindow is not defined');\n const renderWindowHeight = renderWindow.y2 - renderWindow.y1;\n const pageSize = renderWindowHeight / 3.0;\n const { zIndex, color } = state.props;\n // Color alpha of text is not properly rendered to the Canvas texture, so we\n // need to apply it here.\n const combinedAlpha = alpha * getNormalizedAlphaComponent(color);\n const quadColor = mergeColorAlphaPremultiplied(0xffffffff, combinedAlpha);\n if (canvasPages[0].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[0].texture?.dimensions?.width || 0,\n height: canvasPages[0].texture?.dimensions?.height || 0,\n texture: canvasPages[0].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n if (canvasPages[1].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[1].texture?.dimensions?.width || 0,\n height: canvasPages[1].texture?.dimensions?.height || 0,\n texture: canvasPages[1].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1 + pageSize,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n if (canvasPages[2].valid) {\n this.stage.renderer.addQuad({\n alpha: combinedAlpha,\n clippingRect,\n colorBl: quadColor,\n colorBr: quadColor,\n colorTl: quadColor,\n colorTr: quadColor,\n width: canvasPages[2].texture?.dimensions?.width || 0,\n height: canvasPages[2].texture?.dimensions?.height || 0,\n texture: canvasPages[2].texture,\n textureOptions: {},\n shader: null,\n shaderProps: null,\n zIndex,\n tx: transform.tx,\n ty: transform.ty - scrollY + renderWindow.y1 + pageSize + pageSize,\n ta: transform.ta,\n tb: transform.tb,\n tc: transform.tc,\n td: transform.td,\n });\n }\n // renderer.disableScissor();\n // if (debug.showElementRect) {\n // this.renderer.drawBorder(\n // Colors.Blue,\n // elementRect.x,\n // elementRect.y,\n // elementRect.w,\n // elementRect.h,\n // );\n // }\n // if (debug.showVisibleRect) {\n // this.renderer.drawBorder(\n // Colors.Green,\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // if (debug.showRenderWindow && renderWindow) {\n // this.renderer.drawBorder(\n // Colors.Red,\n // x + renderWindow.x1,\n // y + renderWindow.y1 - scrollY,\n // x + renderWindow.x2 - (x + renderWindow.x1),\n // y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY),\n // );\n // }\n }\n setIsRenderable(state, renderable) {\n super.setIsRenderable(state, renderable);\n // Set state object owner from any canvas page textures\n state.canvasPages?.forEach((pageInfo) => {\n pageInfo.texture?.setRenderableOwner(state, renderable);\n });\n }\n destroyState(state) {\n // Remove state object owner from any canvas page textures\n state.canvasPages?.forEach((pageInfo) => {\n pageInfo.texture?.setRenderableOwner(state, false);\n });\n }\n //#endregion Overrides\n /**\n * Invalidate the visible window stored in the state. This will cause a new\n * visible window to be calculated on the next update.\n *\n * @param state\n */\n invalidateVisibleWindowCache(state) {\n state.visibleWindow.valid = false;\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n /**\n * Invalidate the layout cache stored in the state. This will cause the text\n * to be re-layed out on the next update.\n *\n * @remarks\n * This also invalidates the visible window cache.\n *\n * @param state\n */\n invalidateLayoutCache(state) {\n state.renderInfo = undefined;\n state.visibleWindow.valid = false;\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n onFontLoaded(state, cssString) {\n if (cssString !== state.fontInfo?.cssString || !state.fontInfo) {\n return;\n }\n state.fontInfo.loaded = true;\n this.scheduleUpdateState(state);\n }\n onFontLoadError(state, cssString, error) {\n if (cssString !== state.fontInfo?.cssString || !state.fontInfo) {\n return;\n }\n // Font didn't actually load, but we'll log the error and mark it as loaded\n // because the browser can still render with a fallback font.\n state.fontInfo.loaded = true;\n console.error(`CanvasTextRenderer: Error loading font '${state.fontInfo.cssString}'`, error);\n this.scheduleUpdateState(state);\n }\n}\n//# sourceMappingURL=CanvasTextRenderer.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\nexport class DefaultShader extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2fv' },\n ],\n });\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio;\n vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);\n\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);\n gl_Position.y = -sign(screenSpace.y) * gl_Position.y;\n }\n `,\n fragment: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate);\n gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoordinate);\n }\n `,\n };\n}\n//# sourceMappingURL=DefaultShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\n// import type { Texture } from '../textures/Texture';\nexport class DefaultShaderBatched extends WebGlCoreShader {\n supportsIndexedTextures = true;\n constructor(renderer) {\n super({\n renderer,\n attributes: [\n 'a_position',\n 'a_textureCoordinate',\n 'a_color',\n 'a_textureIndex',\n ],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_textures[0]', uniform: 'uniform1iv' },\n ],\n });\n }\n bindTextures(texture) {\n const { renderer, glw } = this;\n if (texture.length > renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS) {\n throw new Error(`DefaultShaderBatched: Cannot bind more than ${renderer.system.parameters.MAX_VERTEX_TEXTURE_IMAGE_UNITS} textures`);\n }\n texture.forEach((t, i) => {\n glw.activeTexture(i);\n glw.bindTexture(t.ctxTexture);\n });\n const samplers = Array.from(Array(texture.length).keys());\n this.setUniform('u_textures[0]', samplers);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `,\n fragment: (textureUnits) => `\n #define txUnits ${textureUnits}\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform sampler2D u_image;\n uniform sampler2D u_textures[txUnits];\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n vec4 sampleFromTexture(sampler2D textures[${textureUnits}], int idx, vec2 uv) {\n ${Array.from(Array(textureUnits).keys())\n .map((idx) => `\n ${idx !== 0 ? 'else ' : ''}if (idx == ${idx}) {\n return texture2D(textures[${idx}], uv);\n }\n `)\n .join('')}\n return texture2D(textures[0], uv);\n }\n\n void main(){\n gl_FragColor = vec4(v_color) * sampleFromTexture(u_textures, int(v_textureIndex), v_textureCoordinate);\n }\n `,\n };\n}\n//# sourceMappingURL=DefaultShaderBatched.js.map","import { WebGlCoreShader, } from '../WebGlCoreShader.js';\nimport { ShaderEffect } from './effects/ShaderEffect.js';\nimport memize from 'memize';\nconst effectCache = new Map();\nconst getResolvedEffect = (effects, effectContructors) => {\n const key = JSON.stringify(effects);\n if (effectCache.has(key)) {\n return effectCache.get(key);\n }\n const value = (effects ?? []).map((effect) => ({\n type: effect.type,\n props: effectContructors[effect.type].resolveDefaults((effect.props || {})),\n }));\n effectCache.set(key, value);\n return value;\n};\nexport class DynamicShader extends WebGlCoreShader {\n effects = [];\n constructor(renderer, props, effectContructors) {\n const shader = DynamicShader.createShader(props, effectContructors);\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2fv' },\n { name: 'u_dimensions', uniform: 'uniform2fv' },\n { name: 'u_alpha', uniform: 'uniform1f' },\n ...shader.uniforms,\n ],\n shaderSources: {\n vertex: shader.vertex,\n fragment: shader.fragment,\n },\n });\n this.effects = shader.effects;\n this.calculateProps = memize(this.calculateProps.bind(this));\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n calculateProps(effects) {\n const regEffects = this.renderer.shManager.getRegisteredEffects();\n const results = [];\n effects?.forEach((eff, index) => {\n const effect = this.effects[index];\n const fxClass = regEffects[effect.name];\n const props = eff.props ?? {};\n const uniInfo = effect.uniformInfo;\n Object.keys(props).forEach((p) => {\n const fxProp = fxClass.uniforms[p];\n const propInfo = uniInfo[p];\n let value = fxProp.validator\n ? fxProp.validator(props[p], props)\n : props[p];\n if (Array.isArray(value)) {\n value = new Float32Array(value);\n }\n results.push({ name: propInfo.name, value });\n });\n });\n return results;\n }\n bindProps(props) {\n const results = this.calculateProps(props.effects);\n results.forEach((r) => {\n this.setUniform(r.name, r.value);\n });\n }\n canBatchShaderProps(propsA, propsB) {\n if (propsA.$dimensions.width !== propsB.$dimensions.width ||\n propsA.$dimensions.height !== propsB.$dimensions.height ||\n propsA.effects.length !== propsB.effects.length) {\n return false;\n }\n const propsEffectsLen = propsA.effects.length;\n let i = 0;\n for (; i < propsEffectsLen; i++) {\n const effectA = propsA.effects[i];\n const effectB = propsB.effects[i];\n if (effectA.type !== effectB.type) {\n return false;\n }\n for (const key in effectA.props) {\n if ((effectB.props && !effectB.props[key]) ||\n effectA.props[key] !== effectB.props[key]) {\n return false;\n }\n }\n }\n return true;\n }\n static createShader(props, effectContructors) {\n //counts duplicate effects\n const effectNameCount = {};\n const methods = {};\n let declareUniforms = '';\n const uniforms = [];\n const uFx = [];\n const effects = props.effects.map((effect) => {\n const baseClass = effectContructors[effect.type];\n const key = baseClass.getEffectKey(effect.props || {});\n effectNameCount[key] = effectNameCount[key] ? ++effectNameCount[key] : 1;\n const nr = effectNameCount[key];\n if (nr === 1) {\n uFx.push({ key, type: effect.type, props: effect.props });\n }\n //initialize new effect class;\n const fxClass = new baseClass({\n ref: `${key}${nr === 1 ? '' : nr}`,\n target: key,\n props: effect.props,\n });\n declareUniforms += fxClass.declaredUniforms;\n uniforms.push(...Object.values(fxClass.uniformInfo));\n return fxClass;\n });\n //build source\n let effectMethods = '';\n uFx?.forEach((fx) => {\n const fxClass = effectContructors[fx.type];\n const fxProps = fxClass.resolveDefaults((fx.props ?? {}));\n const remap = [];\n for (const m in fxClass.methods) {\n let cm = m;\n const fxMethod = fxClass.methods[m];\n if (methods[m] && methods[m] !== fxMethod) {\n cm = DynamicShader.resolveMethodDuplicate(m, fxMethod, methods);\n }\n methods[cm] = fxMethod.replace('function', cm);\n remap.push({ m, cm });\n }\n let onShaderMask = fxClass.onShaderMask instanceof Function\n ? fxClass.onShaderMask(fxProps)\n : fxClass.onShaderMask;\n let onColorize = fxClass.onColorize instanceof Function\n ? fxClass.onColorize(fxProps)\n : fxClass.onColorize;\n let onEffectMask = fxClass.onEffectMask instanceof Function\n ? fxClass.onEffectMask(fxProps)\n : fxClass.onEffectMask;\n remap.forEach((r) => {\n const { m, cm } = r;\n const reg = new RegExp(`\\\\$${m}`, 'g');\n if (onShaderMask) {\n onShaderMask = onShaderMask.replace(reg, cm);\n }\n if (onColorize) {\n onColorize = onColorize.replace(reg, cm);\n }\n if (onEffectMask) {\n onEffectMask = onEffectMask.replace(reg, cm);\n }\n });\n const methodParameters = fxClass.getMethodParameters(fxClass.uniforms, fxProps);\n const pm = methodParameters.length > 0 ? `, ${methodParameters}` : '';\n if (onShaderMask) {\n effectMethods += `\n float fx_${fx.key}_onShaderMask(float shaderMask ${pm}) {\n ${onShaderMask}\n }\n `;\n }\n if (onColorize) {\n effectMethods += `\n vec4 fx_${fx.key}_onColorize(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {\n ${onColorize}\n }\n `;\n }\n if (onEffectMask) {\n effectMethods += `\n vec4 fx_${fx.key}_onEffectMask(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {\n ${onEffectMask}\n }\n `;\n }\n });\n let sharedMethods = '';\n for (const m in methods) {\n sharedMethods += methods[m];\n }\n //fill main functions\n let currentMask = `mix(shaderColor, maskColor, clamp(-(lng_DefaultMask), 0.0, 1.0))`;\n let drawEffects = `\n\n `;\n for (let i = 0; i < effects.length; i++) {\n const current = effects[i];\n const pm = current.passParameters.length > 0 ? `, ${current.passParameters}` : '';\n const currentClass = effectContructors[current.name];\n if (currentClass.onShaderMask) {\n drawEffects += `\n shaderMask = fx_${current.target}_onShaderMask(shaderMask ${pm});\n `;\n }\n if (currentClass.onColorize) {\n drawEffects += `\n maskColor = fx_${current.target}_onColorize(shaderMask, maskColor, shaderColor${pm});\n `;\n }\n if (currentClass.onEffectMask) {\n currentMask = `fx_${current.target}_onEffectMask(shaderMask, maskColor, shaderColor${pm})`;\n }\n const next = effects[i + 1];\n if (next === undefined ||\n effectContructors[next.name].onEffectMask) {\n drawEffects += `\n shaderColor = ${currentMask};\n `;\n }\n }\n return {\n effects,\n uniforms,\n fragment: DynamicShader.fragment(declareUniforms, sharedMethods, effectMethods, drawEffects),\n vertex: DynamicShader.vertex(),\n };\n }\n static resolveMethodDuplicate(key, effectMethod, methodCollection, increment = 0) {\n const m = key + (increment > 0 ? increment : '');\n if (methodCollection[m] && methodCollection[m] !== effectMethod) {\n return this.resolveMethodDuplicate(key, effectMethod, methodCollection, ++increment);\n }\n return m;\n }\n static resolveDefaults(props, effectContructors) {\n return {\n effects: getResolvedEffect(props.effects, effectContructors),\n $dimensions: {\n width: 0,\n height: 0,\n },\n $alpha: 0,\n };\n }\n static makeCacheKey(props, effectContructors) {\n let fx = '';\n props.effects?.forEach((effect) => {\n const baseClass = effectContructors[effect.type];\n const key = baseClass.getEffectKey(effect.props || {});\n fx += `,${key}`;\n });\n return `DynamicShader${fx}`;\n }\n static z$__type__Props;\n static vertex = () => `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_textureCoordinate;\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n varying float v_textureIndex;\n\n void main(){\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n v_textureIndex = a_textureIndex;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `;\n static fragment = (uniforms, methods, effectMethods, drawEffects) => `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n #define PI 3.14159265359\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_alpha;\n uniform float u_radius;\n uniform sampler2D u_texture;\n uniform float u_pixelRatio;\n\n ${uniforms}\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n ${methods}\n\n ${effectMethods}\n\n void main() {\n vec2 p = v_textureCoordinate.xy * u_dimensions - u_dimensions * 0.5;\n vec2 d = abs(p) - (u_dimensions) * 0.5;\n float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n\n vec4 shaderColor = vec4(0.0);\n float shaderMask = lng_DefaultMask;\n\n vec4 maskColor = texture2D(u_texture, v_textureCoordinate) * v_color;\n\n shaderColor = mix(shaderColor, maskColor, clamp(-(lng_DefaultMask + 0.5), 0.0, 1.0));\n\n ${drawEffects}\n\n gl_FragColor = shaderColor * u_alpha;\n }\n `;\n}\n//# sourceMappingURL=DynamicShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebGlCoreShader, } from '../WebGlCoreShader.js';\n/**\n * Similar to the {@link DefaultShader} but cuts out 4 rounded rectangle corners\n * as defined by the specified corner {@link RoundedRectangleProps.radius}\n */\nexport class RoundedRectangle extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate', 'a_color'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2f' },\n { name: 'u_dimensions', uniform: 'uniform2fv' },\n { name: 'u_radius', uniform: 'uniform1f' },\n ],\n });\n }\n static z$__type__Props;\n static resolveDefaults(props) {\n return {\n radius: props.radius || 10,\n $dimensions: {\n width: 0,\n height: 0,\n },\n };\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n bindProps(props) {\n this.setUniform('u_radius', props.radius);\n }\n canBatchShaderProps(propsA, propsB) {\n return (propsA.radius === propsB.radius &&\n propsA.$dimensions.width === propsB.$dimensions.width &&\n propsA.$dimensions.height === propsB.$dimensions.height);\n }\n static shaderSources = {\n vertex: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n attribute vec4 a_color;\n attribute float a_textureIndex;\n attribute float a_depth;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio / u_resolution;\n vec2 zero_two = normalized * 2.0;\n vec2 clip_space = zero_two - 1.0;\n\n // pass to fragment\n v_color = a_color;\n v_textureCoordinate = a_textureCoordinate;\n\n // flip y\n gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);\n }\n `,\n fragment: `\n # ifdef GL_FRAGMENT_PRESICISON_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n uniform vec2 u_resolution;\n uniform vec2 u_dimensions;\n uniform float u_radius;\n uniform sampler2D u_texture;\n\n varying vec4 v_color;\n varying vec2 v_textureCoordinate;\n\n float boxDist(vec2 p, vec2 size, float radius){\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n\n float fillMask(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n\n void main() {\n vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color;\n vec2 halfDimensions = u_dimensions * 0.5;\n\n float d = boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);\n gl_FragColor = mix(vec4(0.0), color, fillMask(d));\n }\n `,\n };\n}\n//# sourceMappingURL=RoundedRectangle.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../lib/utils.js';\nimport { WebGlCoreShader } from '../WebGlCoreShader.js';\nconst IDENTITY_MATRIX_3x3 = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n/**\n * SdfShader supports multi-channel and single-channel signed distance field textures.\n *\n * @remarks\n * This Shader is used by the {@link SdfTextRenderer}. Do not use thie Shader\n * directly. Instead create a Text Node and assign a SDF font family to it.\n *\n * @internalRemarks\n * The only thing this shader does to support multi-channel SDFs is to\n * add a median function to the fragment shader. If this one function call\n * ends up being a performance bottleneck we can always look at ways to\n * remove it.\n */\nexport class SdfShader extends WebGlCoreShader {\n constructor(renderer) {\n super({\n renderer,\n attributes: ['a_position', 'a_textureCoordinate'],\n uniforms: [\n { name: 'u_resolution', uniform: 'uniform2fv' },\n { name: 'u_transform', uniform: 'uniformMatrix3fv' },\n { name: 'u_scrollY', uniform: 'uniform1f' },\n { name: 'u_pixelRatio', uniform: 'uniform1f' },\n { name: 'u_texture', uniform: 'uniform2f' },\n { name: 'u_color', uniform: 'uniform4fv' },\n { name: 'u_size', uniform: 'uniform1f' },\n { name: 'u_distanceRange', uniform: 'uniform1f' },\n { name: 'u_debug', uniform: 'uniform1i' },\n ],\n });\n }\n bindTextures(textures) {\n const { glw } = this;\n glw.activeTexture(0);\n glw.bindTexture(textures[0].ctxTexture);\n }\n bindProps(props) {\n const resolvedProps = SdfShader.resolveDefaults(props);\n for (const key in resolvedProps) {\n if (key === 'transform') {\n this.setUniform('u_transform', false, resolvedProps[key]);\n }\n else if (key === 'scrollY') {\n this.setUniform('u_scrollY', resolvedProps[key]);\n }\n else if (key === 'color') {\n const components = getNormalizedRgbaComponents(resolvedProps.color);\n this.setUniform('u_color', components);\n }\n else if (key === 'size') {\n this.setUniform('u_size', resolvedProps[key]);\n }\n else if (key === 'distanceRange') {\n this.setUniform('u_distanceRange', resolvedProps[key]);\n }\n else if (key === 'debug') {\n this.setUniform('u_debug', resolvedProps[key] ? 1.0 : 0.0);\n }\n }\n }\n static resolveDefaults(props = {}) {\n return {\n transform: props.transform ?? IDENTITY_MATRIX_3x3,\n scrollY: props.scrollY ?? 0,\n color: props.color ?? 0xffffffff,\n size: props.size ?? 16,\n distanceRange: props.distanceRange ?? 1.0,\n debug: props.debug ?? false,\n };\n }\n static shaderSources = {\n vertex: `\n // an attribute is an input (in) to a vertex shader.\n // It will receive data from a buffer\n attribute vec2 a_position;\n attribute vec2 a_textureCoordinate;\n\n uniform vec2 u_resolution;\n uniform mat3 u_transform;\n uniform float u_scrollY;\n uniform float u_pixelRatio;\n uniform float u_size;\n\n varying vec2 v_texcoord;\n\n void main() {\n vec2 scrolledPosition = a_position * u_size - vec2(0, u_scrollY);\n vec2 transformedPosition = (u_transform * vec3(scrolledPosition, 1)).xy;\n\n // Calculate screen space with pixel ratio\n vec2 screenSpace = (transformedPosition * u_pixelRatio / u_resolution * 2.0 - 1.0) * vec2(1, -1);\n\n gl_Position = vec4(screenSpace, 0.0, 1.0);\n v_texcoord = a_textureCoordinate;\n\n }\n `,\n fragment: `\n precision highp float;\n\n uniform vec4 u_color;\n uniform sampler2D u_texture;\n uniform float u_distanceRange;\n uniform float u_pixelRatio;\n uniform int u_debug;\n\n varying vec2 v_texcoord;\n\n float median(float r, float g, float b) {\n return max(min(r, g), min(max(r, g), b));\n }\n\n void main() {\n vec3 sample = texture2D(u_texture, v_texcoord).rgb;\n if (u_debug == 1) {\n gl_FragColor = vec4(sample.r, sample.g, sample.b, 1.0);\n return;\n }\n float scaledDistRange = u_distanceRange * u_pixelRatio;\n float sigDist = scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);\n float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_color.a;\n\n // Build the final color.\n // IMPORTANT: We must premultiply the color by the alpha value before returning it.\n gl_FragColor = vec4(u_color.r * opacity, u_color.g * opacity, u_color.b * opacity, opacity);\n }\n `,\n };\n}\n//# sourceMappingURL=SdfShader.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Masks the current maskcolor with rounded corners similar to {@link RoundedRectangle}\n */\nexport class RadiusEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radius';\n static getEffectKey() {\n return `radius`;\n }\n static uniforms = {\n radius: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n boxDist: `\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n `,\n };\n static resolveDefaults(props) {\n return {\n radius: props.radius ?? 10,\n };\n }\n static onShaderMask = `\n vec2 halfDimensions = u_dimensions * 0.5;\n float r = radius[0] * step(v_textureCoordinate.x, 0.5) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[1] * step(0.5, v_textureCoordinate.x) * step(v_textureCoordinate.y, 0.5);\n r = r + radius[2] * step(0.5, v_textureCoordinate.x) * step(0.5, v_textureCoordinate.y);\n r = r + radius[3] * step(v_textureCoordinate.x, 0.5) * step(0.5, v_textureCoordinate.y);\n return $boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions, r);\n `;\n static onEffectMask = `\n return mix(vec4(0.0), maskColor, $fillMask(shaderMask));\n `;\n}\n//# sourceMappingURL=RadiusEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderEffect renders a border along all edges of an element\n */\nexport class BorderEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'border';\n static getEffectKey() {\n return `border`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static onEffectMask = `\n float mask = clamp(shaderMask + width, 0.0, 1.0) - clamp(shaderMask, 0.0, 1.0);\n return mix(shaderColor, mix(shaderColor, maskColor, maskColor.a), mask);\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Linear Gradient effect over a effect mask\n */\nexport class LinearGradientEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'linearGradient';\n static getEffectKey(props) {\n return `linearGradient${props.colors.length}`;\n }\n static resolveDefaults(props) {\n const colors = props.colors ?? [0xff000000, 0xffffffff];\n let stops = props.stops || [];\n if (stops.length === 0 || stops.length !== colors.length) {\n const colorsL = colors.length;\n let i = 0;\n const tmp = stops;\n for (; i < colorsL; i++) {\n if (stops[i]) {\n tmp[i] = stops[i];\n if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {\n tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;\n }\n }\n else {\n tmp[i] = i * (1 / (colors.length - 1));\n }\n }\n stops = tmp;\n }\n return {\n colors,\n stops,\n angle: props.angle ?? 0,\n };\n }\n static uniforms = {\n angle: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n colors: {\n value: 0xffffffff,\n validator: (rgbas) => {\n const cols = rgbas.map((rgbas) => getNormalizedRgbaComponents(rgbas));\n return cols.reduce((acc, val) => acc.concat(val), []);\n },\n size: (props) => props.colors.length,\n method: 'uniform4fv',\n type: 'vec4',\n },\n stops: {\n value: [],\n size: (props) => props.colors.length,\n method: 'uniform1fv',\n type: 'float',\n },\n };\n static methods = {\n fromLinear: `\n vec4 function(vec4 linearRGB) {\n vec4 higher = vec4(1.055)*pow(linearRGB, vec4(1.0/2.4)) - vec4(0.055);\n vec4 lower = linearRGB * vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n `,\n toLinear: `\n vec4 function(vec4 sRGB) {\n vec4 higher = pow((sRGB + vec4(0.055))/vec4(1.055), vec4(2.4));\n vec4 lower = sRGB/vec4(12.92);\n return mix(higher, lower, 1.0);\n }\n `,\n calcPoint: `\n vec2 function(float d, float angle) {\n return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);\n }\n `,\n };\n static ColorLoop = (amount) => {\n let loop = '';\n for (let i = 2; i < amount; i++) {\n loop += `colorOut = mix(colorOut, colors[${i}], clamp((dist - stops[${i - 1}]) / (stops[${i}] - stops[${i - 1}]), 0.0, 1.0));`;\n }\n return loop;\n };\n static onColorize = (props) => {\n const colors = props.colors.length || 1;\n return `\n float a = angle - (PI / 180.0 * 90.0);\n float lineDist = abs(u_dimensions.x * cos(a)) + abs(u_dimensions.y * sin(a));\n vec2 f = $calcPoint(lineDist * 0.5, a);\n vec2 t = $calcPoint(lineDist * 0.5, a + PI);\n vec2 gradVec = t - f;\n float dist = dot(v_textureCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = $fromLinear(mix($toLinear(colors[0]), $toLinear(colors[1]), stopCalc));\n ${this.ColorLoop(colors)}\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n `;\n };\n}\n//# sourceMappingURL=LinearGradientEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Grayscale effect grayscales the color values of the current mask color\n */\nexport class GrayscaleEffect extends ShaderEffect {\n name = 'grayscale';\n static getEffectKey() {\n return `grayscale`;\n }\n static resolveDefaults(props) {\n return {\n amount: props.amount ?? 1,\n };\n }\n static uniforms = {\n amount: {\n value: 1,\n method: 'uniform1f',\n type: 'float',\n },\n };\n static onColorize = `\n float grayness = 0.2 * maskColor.r + 0.6 * maskColor.g + 0.2 * maskColor.b;\n return vec4(amount * vec3(grayness) + (1.0 - amount) * maskColor.rgb, maskColor.a);\n `;\n}\n//# sourceMappingURL=GrayscaleEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the right side of an element\n */\nexport class BorderRightEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderRight';\n static getEffectKey() {\n return `borderRight`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderRightEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the top side of an element\n */\nexport class BorderTopEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderTop';\n static getEffectKey() {\n return `borderTop`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(0.0, width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderTopEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the bottom side of an element\n */\nexport class BorderBottomEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderBottom';\n static getEffectKey() {\n return `borderBottom`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(0.0, u_dimensions.y - width * 0.5);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderBottomEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The BorderBottomEffect renders a border on the left of an element\n */\nexport class BorderLeftEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'borderLeft';\n static getEffectKey() {\n return `borderLeft`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n rectDist: `\n float function(vec2 p, vec2 size) {\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n `,\n };\n static onEffectMask = `\n vec2 pos = vec2(width * 0.5, 0.0);\n float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));\n return mix(shaderColor, maskColor, $fillMask(mask));\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=BorderLeftEffect.js.map","import { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Renders a Glitch effect using the incoming texture\n */\nexport class GlitchEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'glitch';\n static getEffectKey(props) {\n return `glitch`;\n }\n static resolveDefaults(props) {\n return {\n amplitude: props.amplitude ?? 0.2,\n narrowness: props.narrowness ?? 4.0,\n blockiness: props.blockiness ?? 2.0,\n minimizer: props.minimizer ?? 8.0,\n time: props.time ?? Date.now(),\n };\n }\n static uniforms = {\n amplitude: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n narrowness: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n blockiness: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n minimizer: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n time: {\n value: 0,\n method: 'uniform1f',\n validator: (value) => {\n return (Date.now() - value) % 1000;\n },\n type: 'float',\n },\n };\n static methods = {\n rand: `\n float function(vec2 p, float time) {\n float t = floor(time * 20.) / 10.;\n return fract(sin(dot(p, vec2(t * 12.9898, t * 78.233))) * 43758.5453);\n }\n `,\n noise: `\n float function(vec2 uv, float blockiness, float time) {\n vec2 lv = fract(uv);\n vec2 id = floor(uv);\n\n float n1 = rand(id, time);\n float n2 = rand(id+vec2(1,0), time);\n float n3 = rand(id+vec2(0,1), time);\n float n4 = rand(id+vec2(1,1), time);\n vec2 u = smoothstep(0.0, 1.0 + blockiness, lv);\n return mix(mix(n1, n2, u.x), mix(n3, n4, u.x), u.y);\n }\n `,\n fbm: `\n float function(vec2 uv, int count, float blockiness, float complexity, float time) {\n float val = 0.0;\n float amp = 0.5;\n const int MAX_ITERATIONS = 10;\n\n for(int i = 0; i < MAX_ITERATIONS; i++) {\n if(i >= count) {break;}\n val += amp * noise(uv, blockiness, time);\n amp *= 0.5;\n uv *= complexity;\n }\n return val;\n }\n `,\n };\n static onColorize = `\n vec2 uv = v_textureCoordinate.xy;\n float aspect = u_dimensions.x / u_dimensions.y;\n vec2 a = vec2(uv.x * aspect , uv.y);\n vec2 uv2 = vec2(a.x / u_dimensions.x, exp(a.y));\n\n float shift = amplitude * pow($fbm(uv2, 4, blockiness, narrowness, time), minimizer);\n float colR = texture2D(u_texture, vec2(uv.x + shift, uv.y)).r * (1. - shift);\n float colG = texture2D(u_texture, vec2(uv.x - shift, uv.y)).g * (1. - shift);\n float colB = texture2D(u_texture, vec2(uv.x - shift, uv.y)).b * (1. - shift);\n\n vec3 f = vec3(colR, colG, colB);\n return vec4(f, texture2D(u_texture, vec2(uv.x - shift, uv.y)).a);\n `;\n}\n//# sourceMappingURL=GlitchEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\nexport class FadeOutEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'fadeOut';\n static getEffectKey() {\n return `fadeOut`;\n }\n static uniforms = {\n fade: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static resolveDefaults(props) {\n return {\n fade: props.fade ?? 10,\n };\n }\n static onColorize = `\n vec2 point = v_textureCoordinate.xy * u_dimensions.xy;\n vec2 pos1;\n vec2 pos2;\n vec2 d;\n float c;\n vec4 result = maskColor;\n\n\n if(fade[0] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x, point.y + fade[0]);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[1] > 0.0) {\n pos1 = vec2(point.x - u_dimensions.x - fade[1], v_textureCoordinate.y);\n pos2 = vec2(point.x - u_dimensions.x, v_textureCoordinate.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[2] > 0.0) {\n pos1 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y - fade[2]);\n pos2 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y);\n d = pos1 - pos2;\n c = dot(pos2, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n if(fade[3] > 0.0) {\n pos1 = vec2(point.x, point.y);\n pos2 = vec2(point.x + fade[3], point.y);\n d = pos2 - pos1;\n c = dot(pos1, d) / dot(d, d);\n result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));\n }\n\n return result;\n `;\n}\n//# sourceMappingURL=FadeOutEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\nexport class RadialGradientEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radialGradient';\n static getEffectKey(props) {\n return `radialGradient${props.colors.length}`;\n }\n static resolveDefaults(props) {\n const colors = props.colors ?? [0xff000000, 0xffffffff];\n let stops = props.stops || [];\n if (stops.length === 0 || stops.length !== colors.length) {\n const colorsL = colors.length;\n let i = 0;\n const tmp = stops;\n for (; i < colorsL; i++) {\n if (stops[i]) {\n tmp[i] = stops[i];\n if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {\n tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;\n }\n }\n else {\n tmp[i] = i * (1 / (colors.length - 1));\n }\n }\n stops = tmp;\n }\n return {\n colors,\n stops,\n width: props.width ?? 0,\n height: props.height ?? props.width ?? 0,\n pivot: props.pivot ?? [0.5, 0.5],\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n height: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n pivot: {\n value: [0.5, 0.5],\n method: 'uniform2fv',\n type: 'vec2',\n },\n colors: {\n value: 0xffffffff,\n validator: (rgbas) => {\n const cols = rgbas.map((rgbas) => getNormalizedRgbaComponents(rgbas));\n return cols.reduce((acc, val) => acc.concat(val), []);\n },\n size: (props) => props.colors.length,\n method: 'uniform4fv',\n type: 'vec4',\n },\n stops: {\n value: [],\n size: (props) => props.colors.length,\n method: 'uniform1fv',\n type: 'float',\n },\n };\n static ColorLoop = (amount) => {\n let loop = '';\n for (let i = 2; i < amount; i++) {\n loop += `colorOut = mix(colorOut, colors[${i}], clamp((dist - stops[${i - 1}]) / (stops[${i}] - stops[${i - 1}]), 0.0, 1.0));`;\n }\n return loop;\n };\n static onColorize = (props) => {\n const colors = props.colors.length || 1;\n return `\n vec2 point = v_textureCoordinate.xy * u_dimensions;\n vec2 projection = vec2(pivot.x * u_dimensions.x, pivot.y * u_dimensions.y);\n\n float dist = length((point - projection) / vec2(width, height));\n\n float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);\n vec4 colorOut = mix(colors[0], colors[1], stopCalc);\n ${this.ColorLoop(colors)}\n return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));\n `;\n };\n}\n//# sourceMappingURL=RadialGradientEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNormalizedRgbaComponents } from '../../../../lib/utils.js';\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * The RadialProgressEffect renders a border along all edges of an element\n */\nexport class RadialProgressEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'radialProgress';\n static getEffectKey() {\n return `radialProgress`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 10,\n progress: props.progress ?? 0.5,\n offset: props.offset ?? 0,\n range: props.range ?? Math.PI * 2,\n rounded: props.rounded ?? false,\n radius: props.radius ?? 1,\n color: props.color ?? 0xffffffff,\n };\n }\n static uniforms = {\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n progress: {\n value: 0.5,\n method: 'uniform1f',\n type: 'float',\n },\n offset: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n range: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n rounded: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n validator: (value) => {\n return value ? 1 : 0;\n },\n },\n radius: {\n value: 1,\n method: 'uniform1f',\n type: 'float',\n },\n color: {\n value: 0xffffffff,\n validator: (rgba) => getNormalizedRgbaComponents(rgba),\n method: 'uniform4fv',\n type: 'vec4',\n },\n };\n static methods = {\n rotateUV: `\n vec2 function(vec2 uv, float d) {\n float s = sin(d);\n float c = cos(d);\n mat2 rotMatrix = mat2(c, -s, s, c);\n return uv * rotMatrix;\n }\n `,\n drawDot: `\n float function(vec2 uv, vec2 p, float r) {\n uv += p;\n float circle = length(uv) - r;\n return clamp(-circle, 0.0, 1.0);\n }\n `,\n };\n static onEffectMask = `\n float outerRadius = radius * u_dimensions.y * 0.5;\n\n float endAngle = range * progress - 0.0005;\n\n vec2 uv = v_textureCoordinate.xy * u_dimensions.xy - u_dimensions * 0.5;\n\n uv = $rotateUV(uv, -(offset));\n float linewidth = width * u_pixelRatio;\n float circle = length(uv) - (outerRadius - linewidth) ;\n circle = abs(circle) - linewidth;\n circle = clamp(-circle, 0.0, 1.0);\n\n float angle = (atan(uv.x, -uv.y) / 3.14159265359 * 0.5);\n float p = endAngle / (PI * 2.);\n\n circle *= step(fract(angle), fract(p));\n\n circle = rounded < 1. ? circle : max(circle, $drawDot(uv, vec2(0, outerRadius - linewidth), linewidth));\n circle = rounded < 1. ? circle : max(circle, $drawDot($rotateUV(uv, -(endAngle)), vec2(0, outerRadius - linewidth), linewidth));\n\n return mix(shaderColor, maskColor, circle);\n `;\n static onColorize = `\n return color;\n `;\n}\n//# sourceMappingURL=RadialProgressEffect.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ShaderEffect, } from './ShaderEffect.js';\n/**\n * Masks the current maskcolor a holepunch effect with rounded corners similar to {@link RoundedRectangle}\n */\nexport class HolePunchEffect extends ShaderEffect {\n static z$__type__Props;\n name = 'holePunch';\n static getEffectKey() {\n return `holePunch`;\n }\n static uniforms = {\n x: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n y: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n width: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n height: {\n value: 0,\n method: 'uniform1f',\n type: 'float',\n },\n radius: {\n value: 0,\n method: 'uniform4fv',\n type: 'vec4',\n validator: (value) => {\n let r = value;\n if (Array.isArray(r)) {\n if (r.length === 2) {\n r = [r[0], r[1], r[0], r[1]];\n }\n else if (r.length === 3) {\n r = [r[0], r[1], r[2], r[0]];\n }\n else if (r.length !== 4) {\n r = [r[0], r[0], r[0], r[0]];\n }\n }\n else if (typeof r === 'number') {\n r = [r, r, r, r];\n }\n return r;\n },\n },\n };\n static resolveDefaults(props) {\n return {\n x: props.x || 0,\n y: props.y || 0,\n width: props.width || 50,\n height: props.height || 50,\n radius: props.radius ?? 0,\n };\n }\n static methods = {\n fillMask: `\n float function(float dist) {\n return clamp(-dist, 0.0, 1.0);\n }\n `,\n boxDist: `\n float function(vec2 p, vec2 size, float radius) {\n size -= vec2(radius);\n vec2 d = abs(p) - size;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n }\n `,\n };\n static onShaderMask = `\n vec2 halfDimensions = u_dimensions * 0.5;\n vec2 size = vec2(width, height) * 0.5;\n vec2 basePos = v_textureCoordinate.xy * u_dimensions.xy - vec2(x, y);\n vec2 pos = basePos - size;\n float r = radius[0] * step(pos.x, 0.5) * step(pos.y, 0.5);\n r = r + radius[1] * step(0.5, pos.x) * step(pos.y, 0.5);\n r = r + radius[2] * step(0.5, pos.x) * step(0.5, pos.y);\n r = r + radius[3] * step(pos.x, 0.5) * step(0.5, pos.y);\n return $boxDist(pos, size, r);\n `;\n static onEffectMask = `\n return mix(maskColor, vec4(0.0), $fillMask(shaderMask));\n `;\n}\n//# sourceMappingURL=HolePunchEffect.js.map","import { DefaultShader } from './renderers/webgl/shaders/DefaultShader.js';\nimport { DefaultShaderBatched } from './renderers/webgl/shaders/DefaultShaderBatched.js';\nimport { DynamicShader, } from './renderers/webgl/shaders/DynamicShader.js';\nimport { RoundedRectangle } from './renderers/webgl/shaders/RoundedRectangle.js';\nimport { SdfShader } from './renderers/webgl/shaders/SdfShader.js';\nimport { RadiusEffect } from './renderers/webgl/shaders/effects/RadiusEffect.js';\nimport { BorderEffect } from './renderers/webgl/shaders/effects/BorderEffect.js';\nimport { LinearGradientEffect, } from './renderers/webgl/shaders/effects/LinearGradientEffect.js';\nimport { GrayscaleEffect, } from './renderers/webgl/shaders/effects/GrayscaleEffect.js';\nimport { BorderRightEffect } from './renderers/webgl/shaders/effects/BorderRightEffect.js';\nimport { BorderTopEffect } from './renderers/webgl/shaders/effects/BorderTopEffect.js';\nimport { BorderBottomEffect } from './renderers/webgl/shaders/effects/BorderBottomEffect.js';\nimport { BorderLeftEffect } from './renderers/webgl/shaders/effects/BorderLeftEffect.js';\nimport { GlitchEffect, } from './renderers/webgl/shaders/effects/GlitchEffect.js';\nimport { FadeOutEffect, } from './renderers/webgl/shaders/effects/FadeOutEffect.js';\nimport { RadialGradientEffect, } from './renderers/webgl/shaders/effects/RadialGradientEffect.js';\nimport { RadialProgressEffect, } from './renderers/webgl/shaders/effects/RadialProgressEffect.js';\nimport { HolePunchEffect } from './renderers/webgl/shaders/effects/HolePunchEffect.js';\nexport class CoreShaderManager {\n shCache = new Map();\n shConstructors = {};\n attachedShader = null;\n effectConstructors = {};\n renderer;\n constructor() {\n this.registerShaderType('DefaultShader', DefaultShader);\n this.registerShaderType('DefaultShaderBatched', DefaultShaderBatched);\n this.registerShaderType('RoundedRectangle', RoundedRectangle);\n this.registerShaderType('DynamicShader', DynamicShader);\n this.registerShaderType('SdfShader', SdfShader);\n this.registerEffectType('border', BorderEffect);\n this.registerEffectType('borderBottom', BorderBottomEffect);\n this.registerEffectType('borderLeft', BorderLeftEffect);\n this.registerEffectType('borderRight', BorderRightEffect);\n this.registerEffectType('borderTop', BorderTopEffect);\n this.registerEffectType('fadeOut', FadeOutEffect);\n this.registerEffectType('linearGradient', LinearGradientEffect);\n this.registerEffectType('radialGradient', RadialGradientEffect);\n this.registerEffectType('grayscale', GrayscaleEffect);\n this.registerEffectType('glitch', GlitchEffect);\n this.registerEffectType('radius', RadiusEffect);\n this.registerEffectType('radialProgress', RadialProgressEffect);\n this.registerEffectType('holePunch', HolePunchEffect);\n }\n registerShaderType(shType, shClass) {\n this.shConstructors[shType] = shClass;\n }\n registerEffectType(effectType, effectClass) {\n this.effectConstructors[effectType] = effectClass;\n }\n getRegisteredEffects() {\n return this.effectConstructors;\n }\n getRegisteredShaders() {\n return this.shConstructors;\n }\n loadShader(shType, props) {\n if (!this.renderer) {\n throw new Error(`Renderer is not been defined`);\n }\n const ShaderClass = this.shConstructors[shType];\n if (!ShaderClass) {\n throw new Error(`Shader type \"${shType}\" is not registered`);\n }\n if (shType === 'DynamicShader') {\n return this.loadDynamicShader(props);\n }\n const resolvedProps = ShaderClass.resolveDefaults(props);\n const cacheKey = ShaderClass.makeCacheKey(resolvedProps) || ShaderClass.name;\n if (cacheKey && this.shCache.has(cacheKey)) {\n return {\n shader: this.shCache.get(cacheKey),\n props: resolvedProps,\n };\n }\n // @ts-expect-error ShaderClass WILL accept a Renderer\n const shader = new ShaderClass(this.renderer, props);\n if (cacheKey) {\n this.shCache.set(cacheKey, shader);\n }\n return {\n shader,\n props: resolvedProps,\n };\n }\n loadDynamicShader(props) {\n if (!this.renderer) {\n throw new Error(`Renderer is not been defined`);\n }\n const resolvedProps = DynamicShader.resolveDefaults(props, this.effectConstructors);\n const cacheKey = DynamicShader.makeCacheKey(resolvedProps, this.effectConstructors);\n if (cacheKey && this.shCache.has(cacheKey)) {\n return {\n shader: this.shCache.get(cacheKey),\n props: resolvedProps,\n };\n }\n const shader = new DynamicShader(this.renderer, props, this.effectConstructors);\n if (cacheKey) {\n this.shCache.set(cacheKey, shader);\n }\n return {\n shader: shader,\n props: resolvedProps,\n };\n }\n useShader(shader) {\n if (this.attachedShader === shader) {\n return;\n }\n if (this.attachedShader) {\n this.attachedShader.detach();\n }\n shader.attach();\n this.attachedShader = shader;\n }\n}\n//# sourceMappingURL=CoreShaderManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class that keeps track of the invocations of Context methods when\n * the `enableContextSpy` renderer option is enabled.\n */\nexport class ContextSpy {\n data = {};\n reset() {\n this.data = {};\n }\n increment(name) {\n if (!this.data[name]) {\n this.data[name] = 0;\n }\n this.data[name]++;\n }\n getData() {\n return { ...this.data };\n }\n}\n//# sourceMappingURL=ContextSpy.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {} from '../textures/Texture.js';\n/**\n * Tests if the given location is a compressed texture container\n * @param url\n * @remarks\n * This function is used to determine if the given image url is a compressed\n * and only supports the following extensions: .ktx and .pvr\n * @returns\n */\nexport function isCompressedTextureContainer(url) {\n return /\\.(ktx|pvr)$/.test(url);\n}\n/**\n * Loads a compressed texture container\n * @param url\n * @returns\n */\nexport const loadCompressedTexture = async (url) => {\n const response = await fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n if (url.indexOf('.ktx') !== -1) {\n return loadKTXData(arrayBuffer);\n }\n return loadPVRData(arrayBuffer);\n};\n/**\n * Loads a KTX texture container and returns the texture data\n * @param buffer\n * @returns\n */\nconst loadKTXData = async (buffer) => {\n const view = new DataView(buffer);\n const littleEndian = view.getUint32(12) === 16909060 ? true : false;\n const mipmaps = [];\n const data = {\n glInternalFormat: view.getUint32(28, littleEndian),\n pixelWidth: view.getUint32(36, littleEndian),\n pixelHeight: view.getUint32(40, littleEndian),\n numberOfMipmapLevels: view.getUint32(56, littleEndian),\n bytesOfKeyValueData: view.getUint32(60, littleEndian),\n };\n let offset = 64;\n // Key Value Pairs of data start at byte offset 64\n // But the only known kvp is the API version, so skipping parsing.\n offset += data.bytesOfKeyValueData;\n for (let i = 0; i < data.numberOfMipmapLevels; i++) {\n const imageSize = view.getUint32(offset);\n offset += 4;\n mipmaps.push(view.buffer.slice(offset, imageSize));\n offset += imageSize;\n }\n return {\n data: {\n glInternalFormat: data.glInternalFormat,\n mipmaps,\n width: data.pixelWidth || 0,\n height: data.pixelHeight || 0,\n type: 'ktx',\n },\n premultiplyAlpha: false,\n };\n};\n/**\n * Loads a PVR texture container and returns the texture data\n * @param buffer\n * @returns\n */\nconst loadPVRData = async (buffer) => {\n // pvr header length in 32 bits\n const pvrHeaderLength = 13;\n // for now only we only support: COMPRESSED_RGB_ETC1_WEBGL\n const pvrFormatEtc1 = 0x8d64;\n const pvrWidth = 7;\n const pvrHeight = 6;\n const pvrMipmapCount = 11;\n const pvrMetadata = 12;\n const arrayBuffer = buffer;\n const header = new Int32Array(arrayBuffer, 0, pvrHeaderLength);\n // @ts-expect-error Object possibly undefined\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n const dataOffset = header[pvrMetadata] + 52;\n const pvrtcData = new Uint8Array(arrayBuffer, dataOffset);\n const mipmaps = [];\n const data = {\n pixelWidth: header[pvrWidth],\n pixelHeight: header[pvrHeight],\n numberOfMipmapLevels: header[pvrMipmapCount] || 0,\n };\n let offset = 0;\n let width = data.pixelWidth || 0;\n let height = data.pixelHeight || 0;\n for (let i = 0; i < data.numberOfMipmapLevels; i++) {\n const level = ((width + 3) >> 2) * ((height + 3) >> 2) * 8;\n const view = new Uint8Array(arrayBuffer, pvrtcData.byteOffset + offset, level);\n mipmaps.push(view);\n offset += level;\n width = width >> 1;\n height = height >> 1;\n }\n return {\n data: {\n glInternalFormat: pvrFormatEtc1,\n mipmaps: mipmaps,\n width: data.pixelWidth || 0,\n height: data.pixelHeight || 0,\n type: 'pvr',\n },\n premultiplyAlpha: false,\n };\n};\n//# sourceMappingURL=textureCompression.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\nimport { isCompressedTextureContainer, loadCompressedTexture, } from '../lib/textureCompression.js';\n/**\n * Texture consisting of an image loaded from a URL\n *\n * @remarks\n * The ImageTexture's {@link ImageTextureProps.src} prop defines the image URL\n * to be downloaded.\n *\n * By default, the texture's alpha values will be premultiplied into its color\n * values which is generally the desired setting before they are sent to the\n * texture's associated {@link Shader}. However, in special cases you may want\n * the Shader to receive straight (non-premultiplied) values. In that case you\n * can disable the default behavior by setting the\n * {@link ImageTextureProps.premultiplyAlpha} prop to `false`.\n */\nexport class ImageTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = ImageTexture.resolveDefaults(props);\n }\n hasAlphaChannel(mimeType) {\n return mimeType.indexOf('image/png') !== -1;\n }\n async getTextureData() {\n const { src, premultiplyAlpha } = this.props;\n if (!src) {\n return {\n data: null,\n };\n }\n if (src instanceof ImageData) {\n return {\n data: src,\n premultiplyAlpha,\n };\n }\n // Handle compressed textures\n if (isCompressedTextureContainer(src)) {\n return loadCompressedTexture(src);\n }\n if (this.txManager.imageWorkerManager) {\n return await this.txManager.imageWorkerManager.getImage(src, premultiplyAlpha);\n }\n else if (this.txManager.hasCreateImageBitmap) {\n const response = await fetch(src);\n const blob = await response.blob();\n const hasAlphaChannel = premultiplyAlpha ?? this.hasAlphaChannel(blob.type);\n return {\n data: await createImageBitmap(blob, {\n premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',\n colorSpaceConversion: 'none',\n imageOrientation: 'none',\n }),\n premultiplyAlpha: hasAlphaChannel,\n };\n }\n else {\n const img = new Image();\n if (!(src.substr(0, 5) == \"data:\")) {\n // Base64.\n img.crossOrigin = \"Anonymous\";\n }\n img.src = src;\n await new Promise((resolve, reject) => {\n img.onload = () => resolve();\n img.onerror = () => reject(new Error(`Failed to load image`));\n }).catch((e) => {\n console.error(e);\n });\n return {\n data: img,\n premultiplyAlpha: premultiplyAlpha ?? true,\n };\n }\n }\n static makeCacheKey(props) {\n const resolvedProps = ImageTexture.resolveDefaults(props);\n // ImageTextures sourced by ImageData are non-cacheable\n if (resolvedProps.src instanceof ImageData) {\n return false;\n }\n return `ImageTexture,${resolvedProps.src},${resolvedProps.premultiplyAlpha}`;\n }\n static resolveDefaults(props) {\n return {\n src: props.src ?? '',\n premultiplyAlpha: props.premultiplyAlpha ?? true, // null,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=ImageTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Number of floating point numbers that represent a single glyph in the SDF vertex buffer.\n *\n * @remarks\n * The vertex buffer contains:\n * - 6 vertex positions\n * - 6 texture coordinates\n * - = 12 positions/coordinates per glyph\n *\n * Each vertex position and texture coordinate consist of 2 floating point numbers (x/y).\n * So there are 12 * 2 = 24 floating point numbers that make up a single glyph.\n */\nexport const FLOATS_PER_GLYPH = 24;\n//# sourceMappingURL=constants.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Gets the start conditions for the layout loop.\n *\n * @remarks\n * Returns `undefined` if the layout loop should not be run.\n *\n * @param fontSize\n * @param fontSizeRatio\n * @param sdfLineHeight\n * @param renderWindow\n * @param lineCache\n * @param textH\n * @returns\n */\nexport function getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH) {\n // State variables\n const startLineIndex = Math.min(Math.max(renderWindow.firstLineIdx, 0), lineCache.length);\n // TODO: (fontSize / 6.4286 / fontSizeRatio) Adding this to the startY helps the text line up better with Canvas rendered text\n const sdfStartX = 0;\n let sdfVerticalAlignYOffset = 0;\n if (verticalAlign === 'middle') {\n sdfVerticalAlignYOffset = (sdfLineHeight - sdfFontSize) / 2;\n }\n else if (verticalAlign === 'bottom') {\n sdfVerticalAlignYOffset = sdfLineHeight - sdfFontSize;\n }\n const sdfOffsetY = offsetY / fontSizeRatio;\n const sdfStartY = sdfOffsetY + startLineIndex * sdfLineHeight + sdfVerticalAlignYOffset; // TODO: Figure out what determines the initial y offset of text.\n // Don't attempt to render anything if we know we're starting past the established end of the text\n if (textH && sdfStartY >= textH / fontSizeRatio) {\n return;\n }\n return {\n sdfX: sdfStartX,\n sdfY: sdfStartY,\n lineIndex: startLineIndex,\n };\n}\n//# sourceMappingURL=getStartConditions.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A wrapper Generator class that makes a generator peekable.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class PeekableIterator {\n iterator;\n peekBuffer = [];\n _lastIndex;\n constructor(iterator, indexBase = 0) {\n this.iterator = iterator;\n this.iterator = iterator;\n this._lastIndex = indexBase - 1;\n this.peekBuffer = [];\n }\n next() {\n const nextResult = this.peekBuffer.length > 0\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.peekBuffer.pop()\n : this.iterator.next();\n if (nextResult.done) {\n this._lastIndex = -1;\n }\n else {\n this._lastIndex++;\n }\n return nextResult;\n }\n peek() {\n if (this.peekBuffer.length > 0) {\n // We know that the buffer is not empty, so we can safely use the\n // non-null assertion operator\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.peekBuffer[0];\n }\n const result = this.iterator.next();\n this.peekBuffer.push(result);\n return result;\n }\n get lastIndex() {\n return this._lastIndex;\n }\n}\n//# sourceMappingURL=PeekableGenerator.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { PeekableIterator } from './PeekableGenerator.js';\nimport { getUnicodeCodepoints } from './getUnicodeCodepoints.js';\n/**\n * Measures a single-line of text width ignoring any unmapped glyphs including line breaks\n *\n * @param text\n * @param shaperProps\n * @param shaper\n * @returns\n */\nexport function measureText(text, shaperProps, shaper) {\n const glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, 0), 0));\n let width = 0;\n for (const glyph of glyphs) {\n if (glyph.mapped) {\n width += glyph.xAdvance;\n }\n }\n return width;\n}\n//# sourceMappingURL=measureText.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../../../../utils.js';\nimport { PeekableIterator } from './PeekableGenerator.js';\nimport { getUnicodeCodepoints } from './getUnicodeCodepoints.js';\nimport { measureText } from './measureText.js';\nexport function layoutText(curLineIndex, startX, startY, text, textAlign, width, height, fontSize, lineHeight, letterSpacing, \n/**\n * Mutated\n */\nvertexBuffer, contain, \n/**\n * Mutated\n */\nlineCache, rwSdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines) {\n assertTruthy(trFontFace, 'Font face must be loaded');\n assertTruthy(trFontFace.loaded, 'Font face must be loaded');\n assertTruthy(trFontFace.data, 'Font face must be loaded');\n assertTruthy(trFontFace.shaper, 'Font face must be loaded');\n // Regardless of fontSize (or other scaling properties), we layout the vertices of each glyph\n // using the fixed coordinate space determined by font size used to produce the atlas.\n // Scaling for display is handled by shader uniforms inexpensively.\n // So we have:\n // - vertex space: the space in which the vertices of each glyph are laid out\n // - screen space: the screen pixel space\n // Input properties such as x, y, w, fontSize, letterSpacing, etc. are all expressed in screen space.\n // We convert these to the vertex space by dividing them the `fontSizeRatio` factor.\n /**\n * See above\n */\n const fontSizeRatio = fontSize / trFontFace.data.info.size;\n /**\n * `lineHeight` in vertex coordinates\n */\n const vertexLineHeight = lineHeight / fontSizeRatio;\n /**\n * `w` in vertex coordinates\n */\n const vertexW = width / fontSizeRatio;\n /**\n * `letterSpacing` in vertex coordinates\n */\n const vertexLSpacing = letterSpacing / fontSizeRatio;\n const startingLineCacheEntry = lineCache[curLineIndex];\n const startingCodepointIndex = startingLineCacheEntry?.codepointIndex || 0;\n const startingMaxX = startingLineCacheEntry?.maxX || 0;\n const startingMaxY = startingLineCacheEntry?.maxY || 0;\n let maxX = startingMaxX;\n let maxY = startingMaxY;\n let curX = startX;\n let curY = startY;\n let bufferOffset = 0;\n /**\n * Buffer offset to last word boundry. This is -1 when we aren't in a word boundry.\n */\n const lastWord = {\n codepointIndex: -1,\n bufferOffset: -1,\n xStart: -1,\n };\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const shaper = trFontFace.shaper;\n const shaperProps = {\n letterSpacing: vertexLSpacing,\n };\n // Get glyphs\n let glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, startingCodepointIndex), startingCodepointIndex));\n let glyphResult;\n let curLineBufferStart = -1;\n const bufferLineInfos = [];\n const vertexTruncateHeight = height / fontSizeRatio;\n const overflowSuffVertexWidth = measureText(overflowSuffix, shaperProps, shaper);\n // Line-by-line layout\n let moreLines = true;\n while (moreLines) {\n const nextLineWillFit = (maxLines === 0 || curLineIndex + 1 < maxLines) &&\n (contain !== 'both' ||\n scrollable ||\n curY + vertexLineHeight + trFontFace.maxCharHeight <=\n vertexTruncateHeight);\n const lineVertexW = nextLineWillFit\n ? vertexW\n : vertexW - overflowSuffVertexWidth;\n /**\n * Vertex X position to the beginning of the last word boundary. This becomes -1 when we start traversing a word.\n */\n let xStartLastWordBoundary = 0;\n const lineIsBelowWindowTop = curY + vertexLineHeight >= rwSdf.y1;\n const lineIsAboveWindowBottom = curY <= rwSdf.y2;\n const lineIsWithinWindow = lineIsBelowWindowTop && lineIsAboveWindowBottom;\n // Layout glyphs in this line\n // Any break statements in this while loop will trigger a line break\n while ((glyphResult = glyphs.next()) && !glyphResult.done) {\n const glyph = glyphResult.value;\n if (curLineIndex === lineCache.length) {\n lineCache.push({\n codepointIndex: glyph.cluster,\n maxY,\n maxX,\n });\n }\n else if (curLineIndex > lineCache.length) {\n throw new Error('Unexpected lineCache length');\n }\n // If we encounter a word boundary (white space or newline) we invalidate\n // the lastWord and set the xStartLastWordBoundary if we haven't already.\n if (glyph.codepoint === 32 || glyph.codepoint === 10) {\n if (lastWord.codepointIndex !== -1) {\n lastWord.codepointIndex = -1;\n xStartLastWordBoundary = curX;\n }\n }\n else if (lastWord.codepointIndex === -1) {\n lastWord.codepointIndex = glyph.cluster;\n lastWord.bufferOffset = bufferOffset;\n lastWord.xStart = xStartLastWordBoundary;\n }\n if (glyph.mapped) {\n // Mapped glyph\n const charEndX = curX + glyph.xOffset + glyph.width;\n // Word wrap check\n if (\n // We are containing the text\n contain !== 'none' &&\n // The current glyph reaches outside the contained width\n charEndX >= lineVertexW &&\n // There is a last word that we can break to the next line\n lastWord.codepointIndex !== -1 &&\n // Prevents infinite loop when a single word is longer than the width\n lastWord.xStart > 0) {\n // The current word is about to go off the edge of the container width\n // Reinitialize the iterator starting at the last word\n // and proceeding to the next line\n if (nextLineWillFit) {\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, lastWord.codepointIndex), lastWord.codepointIndex));\n bufferOffset = lastWord.bufferOffset;\n break;\n }\n else {\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0));\n curX = lastWord.xStart;\n bufferOffset = lastWord.bufferOffset;\n // HACK: For the rest of the line when inserting the overflow suffix,\n // set contain = 'none' to prevent an infinite loop.\n contain = 'none';\n }\n }\n else {\n // This glyph fits, so we can add it to the buffer\n const quadX = curX + glyph.xOffset;\n const quadY = curY + glyph.yOffset;\n // Only add to buffer for rendering if the line is within the render window\n if (lineIsWithinWindow) {\n if (curLineBufferStart === -1) {\n curLineBufferStart = bufferOffset;\n }\n const atlasEntry = trFontFace.getAtlasEntry(glyph.glyphId);\n // Add texture coordinates\n const u = atlasEntry.x / trFontFace.data.common.scaleW;\n const v = atlasEntry.y / trFontFace.data.common.scaleH;\n const uvWidth = atlasEntry.width / trFontFace.data.common.scaleW;\n const uvHeight = atlasEntry.height / trFontFace.data.common.scaleH;\n // TODO: (Performance) We can optimize this by using ELEMENT_ARRAY_BUFFER\n // eliminating the need to duplicate vertices\n // Top-left\n vertexBuffer[bufferOffset++] = quadX;\n vertexBuffer[bufferOffset++] = quadY;\n vertexBuffer[bufferOffset++] = u;\n vertexBuffer[bufferOffset++] = v;\n // Top-right\n vertexBuffer[bufferOffset++] = quadX + glyph.width;\n vertexBuffer[bufferOffset++] = quadY;\n vertexBuffer[bufferOffset++] = u + uvWidth;\n vertexBuffer[bufferOffset++] = v;\n // Bottom-left\n vertexBuffer[bufferOffset++] = quadX;\n vertexBuffer[bufferOffset++] = quadY + glyph.height;\n vertexBuffer[bufferOffset++] = u;\n vertexBuffer[bufferOffset++] = v + uvHeight;\n // Bottom-right\n vertexBuffer[bufferOffset++] = quadX + glyph.width;\n vertexBuffer[bufferOffset++] = quadY + glyph.height;\n vertexBuffer[bufferOffset++] = u + uvWidth;\n vertexBuffer[bufferOffset++] = v + uvHeight;\n }\n maxY = Math.max(maxY, quadY + glyph.height);\n maxX = Math.max(maxX, quadX + glyph.width);\n curX += glyph.xAdvance;\n }\n }\n else {\n // Unmapped character\n // Handle newlines\n if (glyph.codepoint === 10) {\n if (nextLineWillFit) {\n // The whole line fit, so we can break to the next line\n break;\n }\n else {\n // The whole line won't fit, so we need to add the overflow suffix\n glyphs = shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0));\n // HACK: For the rest of the line when inserting the overflow suffix,\n // set contain = 'none' to prevent an infinite loop.\n contain = 'none';\n }\n }\n }\n }\n // Prepare for the next line...\n if (curLineBufferStart !== -1) {\n bufferLineInfos.push({\n bufferStart: curLineBufferStart,\n bufferEnd: bufferOffset,\n });\n curLineBufferStart = -1;\n }\n curX = 0;\n curY += vertexLineHeight;\n curLineIndex++;\n lastWord.codepointIndex = -1;\n xStartLastWordBoundary = 0;\n // Figure out if there are any more lines to render...\n if (!forceFullLayoutCalc && contain === 'both' && curY > rwSdf.y2) {\n // Stop layout calculation early (for performance purposes) if:\n // - We're not forcing a full layout calculation (for width/height calculation)\n // - ...and we're containing the text vertically+horizontally (contain === 'both')\n // - ...and we have a render window\n // - ...and the next line is below the bottom of the render window\n moreLines = false;\n }\n else if (glyphResult && glyphResult.done) {\n // If we've reached the end of the text, we know we're done\n moreLines = false;\n }\n else if (!nextLineWillFit) {\n // If we're contained vertically+horizontally (contain === 'both')\n // but not scrollable and the next line won't fit, we're done.\n moreLines = false;\n }\n }\n // Use textAlign to determine if we need to adjust the x position of the text\n // in the buffer line by line\n if (textAlign === 'center') {\n const vertexTextW = contain === 'none' ? maxX : vertexW;\n for (let i = 0; i < bufferLineInfos.length; i++) {\n const line = bufferLineInfos[i];\n // - 4 = the x position of a rightmost vertex\n const lineWidth = \n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n vertexBuffer[line.bufferEnd - 4] - vertexBuffer[line.bufferStart];\n const xOffset = (vertexTextW - lineWidth) / 2;\n for (let j = line.bufferStart; j < line.bufferEnd; j += 4) {\n vertexBuffer[j] += xOffset;\n }\n }\n }\n else if (textAlign === 'right') {\n const vertexTextW = contain === 'none' ? maxX : vertexW;\n for (let i = 0; i < bufferLineInfos.length; i++) {\n const line = bufferLineInfos[i];\n const lineWidth = line.bufferEnd === line.bufferStart\n ? 0\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n vertexBuffer[line.bufferEnd - 4] - vertexBuffer[line.bufferStart];\n const xOffset = vertexTextW - lineWidth;\n for (let j = line.bufferStart; j < line.bufferEnd; j += 4) {\n vertexBuffer[j] += xOffset;\n }\n }\n }\n assertTruthy(glyphResult);\n return {\n bufferNumFloats: bufferOffset,\n bufferNumQuads: bufferOffset / 16,\n layoutNumCharacters: glyphResult.done\n ? text.length - startingCodepointIndex\n : glyphResult.value.cluster - startingCodepointIndex + 1,\n fullyProcessed: !!glyphResult.done,\n maxX,\n maxY,\n };\n}\n//# sourceMappingURL=layoutText.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Round up to the nearest multiple of the given number.\n *\n * @param value\n * @param multiple\n * @returns\n */\nexport function roundUpToMultiple(value, multiple) {\n return Math.ceil(value / multiple) * multiple;\n}\n/**\n * Round down to the nearest multiple of the given number.\n *\n * @param value\n * @param multiple\n * @returns\n */\nexport function roundDownToMultiple(value, multiple) {\n return Math.floor(value / multiple) * multiple;\n}\n//# sourceMappingURL=util.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { isBoundPositive } from '../../../../lib/utils.js';\nimport { roundDownToMultiple, roundUpToMultiple } from './util.js';\n/**\n * Create a render window from the given parameters.\n *\n * @remarks\n * The render window is a rectangle that defines the area of the text that\n * should be rendered. It is used to skip rendering parts of the text that\n * are outside of the render window. The render window is relative to the\n * text's top left corner of the overrall text.\n *\n * @param x The x coordinate of the text element's top left corner relative to the screen.\n * @param y The y coordinate of the text element's top left corner relative to the screen.\n * @param scrollY The amount of pixels to scroll the text vertically.\n * @param lineHeight The number of extra lines to render above and below the visible window.\n * @param visibleWindow The visible window of the text element relative to the screen\n * @returns\n */\nexport function setRenderWindow(outRenderWindow, x, y, scrollY, lineHeight, bufferMargin, visibleWindow, fontSizeRatio) {\n const { screen, sdf } = outRenderWindow;\n if (!isBoundPositive(visibleWindow)) {\n screen.x1 = 0;\n screen.y1 = 0;\n screen.x2 = 0;\n screen.y2 = 0;\n sdf.x1 = 0;\n sdf.y1 = 0;\n sdf.x2 = 0;\n sdf.y2 = 0;\n outRenderWindow.numLines = 0;\n outRenderWindow.firstLineIdx = 0;\n }\n else {\n const x1 = visibleWindow.x1 - x;\n const x2 = x1 + (visibleWindow.x2 - visibleWindow.x1);\n const y1Base = visibleWindow.y1 - y + scrollY;\n const y1 = roundDownToMultiple(y1Base - bufferMargin, lineHeight || 1);\n const y2 = roundUpToMultiple(y1Base + (visibleWindow.y2 - visibleWindow.y1) + bufferMargin, lineHeight || 1);\n screen.x1 = x1;\n screen.y1 = y1;\n screen.x2 = x2;\n screen.y2 = y2;\n sdf.x1 = x1 / fontSizeRatio;\n sdf.y1 = y1 / fontSizeRatio;\n sdf.x2 = x2 / fontSizeRatio;\n sdf.y2 = y2 / fontSizeRatio;\n outRenderWindow.numLines = Math.ceil((y2 - y1) / lineHeight);\n outRenderWindow.firstLineIdx = lineHeight ? Math.floor(y1 / lineHeight) : 0;\n }\n outRenderWindow.valid = true;\n}\n//# sourceMappingURL=setRenderWindow.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport memize from 'memize';\nconst weightConversions = {\n normal: 400,\n bold: 700,\n bolder: 900,\n lighter: 100,\n};\nconst fontWeightToNumber = (weight) => {\n if (typeof weight === 'number') {\n return weight;\n }\n return weightConversions[weight] || 400;\n};\nfunction rawResolveFontToUse(familyMapsByPriority, family, weightIn, style, stretch) {\n let weight = fontWeightToNumber(weightIn);\n for (const fontFamiles of familyMapsByPriority) {\n const fontFaces = fontFamiles[family];\n if (!fontFaces) {\n continue;\n }\n if (fontFaces.size === 1) {\n // No Exact match found, find nearest weight match\n console.warn(`TrFontManager: Only one font face found for family: '${family}' - will be used for all weights and styles`);\n return fontFaces.values().next().value;\n }\n const weightMap = new Map();\n for (const fontFace of fontFaces) {\n const fontFamilyWeight = fontWeightToNumber(fontFace.descriptors.weight);\n if (fontFamilyWeight === weight &&\n fontFace.descriptors.style === style &&\n fontFace.descriptors.stretch === stretch) {\n return fontFace;\n }\n weightMap.set(fontFamilyWeight, fontFace);\n }\n // No Exact match found, find nearest weight match\n const msg = `TrFontManager: No exact match: '${family} Weight: ${weight} Style: ${style} Stretch: ${stretch}'`;\n console.error(msg);\n // Follow the CSS font-weight algorithm to find the nearest weight match\n // https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/#font-matching-algorithm\n if (weight === 400 && weightMap.has(500)) {\n return weightMap.get(500);\n }\n if (weight === 500 && weightMap.has(400)) {\n return weightMap.get(400);\n }\n if (weight < 400) {\n while (weight > 0) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight -= 100;\n }\n // reset back for the next loop\n weight = 600;\n }\n while (weight < 1000) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight += 100;\n }\n // finally check lower again\n weight = 500;\n while (weight > 0) {\n if (weightMap.has(weight)) {\n return weightMap.get(weight);\n }\n weight -= 100;\n }\n }\n return;\n}\nconst resolveFontToUse = memize(rawResolveFontToUse);\nexport class TrFontManager {\n textRenderers;\n constructor(textRenderers) {\n this.textRenderers = textRenderers;\n // Intentionally left blank\n }\n addFontFace(font) {\n // All the font face to all of the text renderers that support it\n for (const trId in this.textRenderers) {\n const tr = this.textRenderers[trId];\n if (tr && tr.isFontFaceSupported(font)) {\n tr.addFontFace(font);\n }\n }\n }\n /**\n * Utility method to resolve a single font face from a list of prioritized family maps based on\n * a set of font properties.\n *\n * @remarks\n * These are to be used by a text renderer to resolve a font face if needed.\n *\n * @param familyMapsByPriority\n * @param props\n * @returns\n */\n static resolveFontFace(familyMapsByPriority, props) {\n const { fontFamily, fontWeight, fontStyle, fontStretch } = props;\n return resolveFontToUse(familyMapsByPriority, fontFamily, fontWeight, fontStyle, fontStretch);\n }\n}\n//# sourceMappingURL=TrFontManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createBound, intersectRect, copyRect, boundsOverlap, convertBoundToRect, } from '../../../lib/utils.js';\nimport { TextRenderer, } from '../TextRenderer.js';\nimport { SdfTrFontFace } from '../../font-face-types/SdfTrFontFace/SdfTrFontFace.js';\nimport { FLOATS_PER_GLYPH } from './internal/constants.js';\nimport { getStartConditions } from './internal/getStartConditions.js';\nimport { layoutText } from './internal/layoutText.js';\nimport { setRenderWindow, } from './internal/setRenderWindow.js';\nimport { TrFontManager } from '../../TrFontManager.js';\nimport { assertTruthy, mergeColorAlpha } from '../../../../utils.js';\nimport { WebGlCoreRenderOp } from '../../../renderers/webgl/WebGlCoreRenderOp.js';\nimport { BufferCollection } from '../../../renderers/webgl/internal/BufferCollection.js';\nimport { EventEmitter } from '../../../../common/EventEmitter.js';\n/**\n * Ephemeral rect object used for calculations\n */\nconst tmpRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n};\n/**\n * Singleton class for rendering text using signed distance fields.\n *\n * @remarks\n * SdfTextRenderer supports both single-channel and multi-channel signed distance fields.\n */\nexport class SdfTextRenderer extends TextRenderer {\n /**\n * Map of font family names to a set of font faces.\n */\n ssdfFontFamilies = {};\n msdfFontFamilies = {};\n fontFamilyArray = [\n this.ssdfFontFamilies,\n this.msdfFontFamilies,\n ];\n sdfShader;\n rendererBounds;\n constructor(stage) {\n super(stage);\n this.sdfShader = this.stage.shManager.loadShader('SdfShader').shader;\n this.rendererBounds = {\n x1: 0,\n y1: 0,\n x2: this.stage.options.appWidth,\n y2: this.stage.options.appHeight,\n };\n }\n //#region Overrides\n getPropertySetters() {\n return {\n fontFamily: (state, value) => {\n state.props.fontFamily = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontWeight: (state, value) => {\n state.props.fontWeight = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontStyle: (state, value) => {\n state.props.fontStyle = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontStretch: (state, value) => {\n state.props.fontStretch = value;\n this.releaseFontFace(state);\n this.invalidateLayoutCache(state);\n },\n fontSize: (state, value) => {\n state.props.fontSize = value;\n this.invalidateLayoutCache(state);\n },\n text: (state, value) => {\n state.props.text = value;\n this.invalidateLayoutCache(state);\n },\n textAlign: (state, value) => {\n state.props.textAlign = value;\n this.invalidateLayoutCache(state);\n },\n color: (state, value) => {\n state.props.color = value;\n },\n x: (state, value) => {\n state.props.x = value;\n if (state.elementBounds.valid) {\n this.setElementBoundsX(state);\n // Only schedule an update if the text is not already rendered\n // (renderWindow is invalid) and the element possibly overlaps the screen\n // This is to avoid unnecessary updates when we know text is off-screen\n if (!state.renderWindow.valid &&\n boundsOverlap(state.elementBounds, this.rendererBounds)) {\n this.scheduleUpdateState(state);\n }\n }\n },\n y: (state, value) => {\n state.props.y = value;\n if (state.elementBounds.valid) {\n this.setElementBoundsY(state);\n // See x() for explanation\n if (!state.renderWindow.valid &&\n boundsOverlap(state.elementBounds, this.rendererBounds)) {\n this.scheduleUpdateState(state);\n }\n }\n },\n contain: (state, value) => {\n state.props.contain = value;\n this.invalidateLayoutCache(state);\n },\n width: (state, value) => {\n state.props.width = value;\n // Only invalidate layout cache if we're containing in the horizontal direction\n if (state.props.contain !== 'none') {\n this.invalidateLayoutCache(state);\n }\n },\n height: (state, value) => {\n state.props.height = value;\n // Only invalidate layout cache if we're containing in the vertical direction\n if (state.props.contain === 'both') {\n this.invalidateLayoutCache(state);\n }\n },\n offsetY: (state, value) => {\n state.props.offsetY = value;\n this.invalidateLayoutCache(state);\n },\n scrollable: (state, value) => {\n state.props.scrollable = value;\n this.invalidateLayoutCache(state);\n },\n scrollY: (state, value) => {\n state.props.scrollY = value;\n // Scrolling doesn't need to invalidate any caches, but it does need to\n // schedule an update\n this.scheduleUpdateState(state);\n },\n letterSpacing: (state, value) => {\n state.props.letterSpacing = value;\n this.invalidateLayoutCache(state);\n },\n lineHeight: (state, value) => {\n state.props.lineHeight = value;\n this.invalidateLayoutCache(state);\n },\n maxLines: (state, value) => {\n state.props.maxLines = value;\n this.invalidateLayoutCache(state);\n },\n textBaseline: (state, value) => {\n state.props.textBaseline = value;\n this.invalidateLayoutCache(state);\n },\n verticalAlign: (state, value) => {\n state.props.verticalAlign = value;\n this.invalidateLayoutCache(state);\n },\n overflowSuffix: (state, value) => {\n state.props.overflowSuffix = value;\n this.invalidateLayoutCache(state);\n },\n debug: (state, value) => {\n state.props.debug = value;\n },\n };\n }\n canRenderFont(props) {\n // TODO: Support matching on font stretch, weight and style (if/when needed)\n // For now we just match on the font family name\n // '$$SDF_FAILURE_TEST$$' is used to test the 'failure' event coming from text\n const { fontFamily } = props;\n return (fontFamily in this.ssdfFontFamilies ||\n fontFamily in this.msdfFontFamilies ||\n fontFamily === '$$SDF_FAILURE_TEST$$');\n }\n isFontFaceSupported(fontFace) {\n return fontFace instanceof SdfTrFontFace;\n }\n addFontFace(fontFace) {\n // Make sure the font face is an SDF font face (it should have already passed\n // the `isFontFaceSupported` check)\n assertTruthy(fontFace instanceof SdfTrFontFace);\n const familyName = fontFace.fontFamily;\n const fontFamiles = fontFace.type === 'ssdf'\n ? this.ssdfFontFamilies\n : fontFace.type === 'msdf'\n ? this.msdfFontFamilies\n : undefined;\n if (!fontFamiles) {\n console.warn(`Invalid font face type: ${fontFace.type}`);\n return;\n }\n let faceSet = fontFamiles[familyName];\n if (!faceSet) {\n faceSet = new Set();\n fontFamiles[familyName] = faceSet;\n }\n faceSet.add(fontFace);\n }\n createState(props) {\n return {\n props,\n status: 'initialState',\n updateScheduled: false,\n emitter: new EventEmitter(),\n lineCache: [],\n forceFullLayoutCalc: false,\n renderWindow: {\n screen: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n },\n sdf: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n },\n firstLineIdx: 0,\n numLines: 0,\n valid: false,\n },\n elementBounds: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n valid: false,\n },\n clippingRect: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n },\n bufferNumFloats: 0,\n bufferNumQuads: 0,\n vertexBuffer: undefined,\n webGlBuffers: null,\n bufferUploaded: false,\n textH: undefined,\n textW: undefined,\n distanceRange: 0,\n trFontFace: undefined,\n isRenderable: false,\n debugData: {\n updateCount: 0,\n layoutCount: 0,\n lastLayoutNumCharacters: 0,\n layoutSum: 0,\n drawSum: 0,\n drawCount: 0,\n bufferSize: 0,\n },\n };\n }\n updateState(state) {\n let { trFontFace } = state;\n const { textH, lineCache, debugData, forceFullLayoutCalc } = state;\n debugData.updateCount++;\n // On the first update call we need to set the status to loading\n if (state.status === 'initialState') {\n this.setStatus(state, 'loading');\n }\n // Resolve font face if we haven't yet\n if (!trFontFace) {\n trFontFace = this.resolveFontFace(state.props);\n state.trFontFace = trFontFace;\n if (!trFontFace) {\n const msg = `SdfTextRenderer: Could not resolve font face for family: '${state.props.fontFamily}'`;\n console.error(msg);\n this.setStatus(state, 'failed', new Error(msg));\n return;\n }\n trFontFace.texture.setRenderableOwner(state, state.isRenderable);\n }\n // If the font hasn't been loaded yet, stop here.\n // Listen for the 'loaded' event and forward fontLoaded event\n if (!trFontFace.loaded) {\n trFontFace.once('loaded', () => {\n this.scheduleUpdateState(state);\n });\n return;\n }\n // If the font is loaded then so should the data\n assertTruthy(trFontFace.data, 'Font face data should be loaded');\n const { text, fontSize, x, y, contain, width, height, lineHeight, verticalAlign, scrollable, overflowSuffix, maxLines, } = state.props;\n // scrollY only has an effect when contain === 'both' and scrollable === true\n const scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0;\n const { renderWindow } = state;\n /**\n * The font size of the SDF font face (the basis for SDF space units)\n */\n const sdfFontSize = trFontFace.data.info.size;\n /**\n * Divide screen space units by this to get the SDF space units\n * Mulitple SDF space units by this to get screen space units\n */\n const fontSizeRatio = fontSize / sdfFontSize;\n // Needed in renderWindow calculation\n const sdfLineHeight = lineHeight / fontSizeRatio;\n state.distanceRange =\n fontSizeRatio * trFontFace.data.distanceField.distanceRange;\n // Allocate buffers if needed\n const neededLength = text.length * FLOATS_PER_GLYPH;\n let vertexBuffer = state.vertexBuffer;\n if (!vertexBuffer || vertexBuffer.length < neededLength) {\n vertexBuffer = new Float32Array(neededLength * 2);\n }\n const elementBounds = state.elementBounds;\n if (!elementBounds.valid) {\n this.setElementBoundsX(state);\n this.setElementBoundsY(state);\n elementBounds.valid = true;\n }\n // Return early if we're still viewing inside the established render window\n // No need to re-render what we've already rendered\n // (Only if there's an established renderWindow and we're not suppressing early exit)\n if (!forceFullLayoutCalc && renderWindow.valid) {\n const rwScreen = renderWindow.screen;\n if (x + rwScreen.x1 <= elementBounds.x1 &&\n x + rwScreen.x2 >= elementBounds.x2 &&\n y - scrollY + rwScreen.y1 <= elementBounds.y1 &&\n y - scrollY + rwScreen.y2 >= elementBounds.y2) {\n this.setStatus(state, 'loaded');\n return;\n }\n // Otherwise invalidate the renderWindow so it can be redone\n renderWindow.valid = false;\n this.setStatus(state, 'loading');\n }\n const { offsetY, textAlign } = state.props;\n // Create a new renderWindow if needed\n if (!renderWindow.valid) {\n const isPossiblyOnScreen = boundsOverlap(elementBounds, this.rendererBounds);\n if (!isPossiblyOnScreen) {\n // If the element is not possibly on screen, we can skip the layout and rendering completely\n return;\n }\n setRenderWindow(renderWindow, x, y, scrollY, lineHeight, contain === 'both' ? elementBounds.y2 - elementBounds.y1 : 0, elementBounds, fontSizeRatio);\n // console.log('newRenderWindow', renderWindow);\n }\n const start = getStartConditions(sdfFontSize, sdfLineHeight, lineHeight, verticalAlign, offsetY, fontSizeRatio, renderWindow, lineCache, textH);\n if (!start) {\n // Nothing to render, return early, but still mark as loaded (since the text is just scrolled\n // out of view)\n this.setStatus(state, 'loaded');\n return;\n }\n const { letterSpacing } = state.props;\n const out2 = layoutText(start.lineIndex, start.sdfX, start.sdfY, text, textAlign, width, height, fontSize, lineHeight, letterSpacing, vertexBuffer, contain, lineCache, renderWindow.sdf, trFontFace, forceFullLayoutCalc, scrollable, overflowSuffix, maxLines);\n state.bufferUploaded = false;\n state.bufferNumFloats = out2.bufferNumFloats;\n state.bufferNumQuads = out2.bufferNumQuads;\n state.vertexBuffer = vertexBuffer;\n state.renderWindow = renderWindow;\n debugData.lastLayoutNumCharacters = out2.layoutNumCharacters;\n debugData.bufferSize = vertexBuffer.byteLength;\n // If we didn't exit early, we know we have completely computed w/h\n if (out2.fullyProcessed) {\n state.textW = out2.maxX * fontSizeRatio;\n state.textH = out2.maxY * fontSizeRatio;\n }\n // if (state.props.debug.printLayoutTime) {\n // debugData.layoutSum += performance.now() - updateStartTime;\n // debugData.layoutCount++;\n // }\n this.setStatus(state, 'loaded');\n }\n renderQuads(state, transform, clippingRect, alpha, parentHasRenderTexture, framebufferDimensions) {\n if (!state.vertexBuffer) {\n // Nothing to draw\n return;\n }\n const { renderer } = this.stage;\n const { fontSize, color, contain, scrollable, zIndex, debug } = state.props;\n // scrollY only has an effect when contain === 'both' and scrollable === true\n const scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0;\n const { textW = 0, textH = 0, distanceRange, vertexBuffer, bufferUploaded, trFontFace, elementBounds, } = state;\n let { webGlBuffers } = state;\n if (!webGlBuffers) {\n const glw = renderer.glw;\n const stride = 4 * Float32Array.BYTES_PER_ELEMENT;\n const webGlBuffer = glw.createBuffer();\n assertTruthy(webGlBuffer);\n state.webGlBuffers = new BufferCollection([\n {\n buffer: webGlBuffer,\n attributes: {\n a_position: {\n name: 'a_position',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 0, // start at the beginning of the buffer\n },\n a_textureCoordinate: {\n name: 'a_textureCoordinate',\n size: 2,\n type: glw.FLOAT,\n normalized: false,\n stride,\n offset: 2 * Float32Array.BYTES_PER_ELEMENT,\n },\n },\n },\n ]);\n state.bufferUploaded = false;\n assertTruthy(state.webGlBuffers);\n webGlBuffers = state.webGlBuffers;\n }\n if (!bufferUploaded) {\n const glw = renderer.glw;\n const buffer = webGlBuffers?.getBuffer('a_textureCoordinate') ?? null;\n glw.arrayBufferData(buffer, vertexBuffer, glw.STATIC_DRAW);\n state.bufferUploaded = true;\n }\n assertTruthy(trFontFace);\n if (scrollable && contain === 'both') {\n assertTruthy(elementBounds.valid);\n const elementRect = convertBoundToRect(elementBounds, tmpRect);\n if (clippingRect.valid) {\n state.clippingRect.valid = true;\n clippingRect = intersectRect(clippingRect, elementRect, state.clippingRect);\n }\n else {\n state.clippingRect.valid = true;\n clippingRect = copyRect(elementRect, state.clippingRect);\n }\n }\n const renderOp = new WebGlCoreRenderOp(renderer.glw, renderer.options, webGlBuffers, this.sdfShader, {\n transform: transform.data,\n // IMPORTANT: The SDF Shader expects the color NOT to be premultiplied\n // for the best blending results. Which is why we use `mergeColorAlpha`\n // instead of `mergeColorAlphaPremultiplied` here.\n color: mergeColorAlpha(color, alpha),\n size: fontSize / (trFontFace.data?.info.size || 0),\n scrollY,\n distanceRange,\n debug: debug.sdfShaderDebug,\n }, alpha, clippingRect, { height: textH, width: textW }, 0, zIndex, false, parentHasRenderTexture, framebufferDimensions);\n const texture = state.trFontFace?.texture;\n assertTruthy(texture);\n const ctxTexture = this.stage.txManager.getCtxTexture(texture);\n renderOp.addTexture(ctxTexture);\n renderOp.length = state.bufferNumFloats;\n renderOp.numQuads = state.bufferNumQuads;\n renderer.addRenderOp(renderOp);\n // if (!debug.disableScissor) {\n // renderer.enableScissor(\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // Draw the arrays\n // gl.drawArrays(\n // gl.TRIANGLES, // Primitive type\n // 0,\n // bufferNumVertices, // Number of verticies\n // );\n // renderer.disableScissor();\n // if (debug.showElementRect) {\n // this.renderer.drawBorder(\n // Colors.Blue,\n // elementRect.x,\n // elementRect.y,\n // elementRect.w,\n // elementRect.h,\n // );\n // }\n // if (debug.showVisibleRect) {\n // this.renderer.drawBorder(\n // Colors.Green,\n // visibleRect.x,\n // visibleRect.y,\n // visibleRect.w,\n // visibleRect.h,\n // );\n // }\n // if (debug.showRenderWindow && renderWindow) {\n // this.renderer.drawBorder(\n // Colors.Red,\n // x + renderWindow.x1,\n // y + renderWindow.y1 - scrollY,\n // x + renderWindow.x2 - (x + renderWindow.x1),\n // y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY),\n // );\n // }\n // if (debug.printLayoutTime) {\n // debugData.drawSum += performance.now() - drawStartTime;\n // debugData.drawCount++;\n // }\n }\n setIsRenderable(state, renderable) {\n super.setIsRenderable(state, renderable);\n state.trFontFace?.texture.setRenderableOwner(state, renderable);\n }\n destroyState(state) {\n super.destroyState(state);\n // If there's a Font Face assigned we must free the owner relation to its texture\n state.trFontFace?.texture.setRenderableOwner(state, false);\n }\n //#endregion Overrides\n resolveFontFace(props) {\n return TrFontManager.resolveFontFace(this.fontFamilyArray, props);\n }\n /**\n * Release the loaded SDF font face\n *\n * @param state\n */\n releaseFontFace(state) {\n if (state.trFontFace) {\n state.trFontFace.texture.setRenderableOwner(state, false);\n state.trFontFace = undefined;\n }\n }\n /**\n * Invalidate the layout cache stored in the state. This will cause the text\n * to be re-layed out on the next update.\n *\n * @remarks\n * This also invalidates the visible window cache.\n *\n * @param state\n */\n invalidateLayoutCache(state) {\n state.renderWindow.valid = false;\n state.elementBounds.valid = false;\n state.textH = undefined;\n state.textW = undefined;\n state.lineCache = [];\n this.setStatus(state, 'loading');\n this.scheduleUpdateState(state);\n }\n setElementBoundsX(state) {\n const { x, contain, width } = state.props;\n const { elementBounds } = state;\n elementBounds.x1 = x;\n elementBounds.x2 = contain !== 'none' ? x + width : Infinity;\n }\n setElementBoundsY(state) {\n const { y, contain, height } = state.props;\n const { elementBounds } = state;\n elementBounds.y1 = y;\n elementBounds.y2 = contain === 'both' ? y + height : Infinity;\n }\n}\n//# sourceMappingURL=SdfTextRenderer.js.map","import { CoreExtension } from '../../exports/core-api.js';\n/**\n * Type guard that checks if a Class extends CoreExtension.\n *\n * @param Class\n * @returns\n */\nexport function classExtendsCoreExtension(Class) {\n return Class.prototype instanceof CoreExtension;\n}\nexport async function loadCoreExtension(coreExtensionModule, stage) {\n let module;\n try {\n console.log('Loading core extension', coreExtensionModule);\n module = (await import(coreExtensionModule /* @vite-ignore */));\n }\n catch (e) {\n console.error(`The core extension module at '${coreExtensionModule}' could not be loaded.`);\n console.error(e);\n return;\n }\n if (!module.default) {\n console.error(`The core extension module at '${coreExtensionModule}' does not have a default export.`);\n return;\n }\n const ExtensionClass = module.default;\n if (classExtendsCoreExtension(ExtensionClass)) {\n const coreExtension = new ExtensionClass();\n try {\n await coreExtension.run(stage);\n }\n catch (e) {\n console.error(`The core extension at '${coreExtensionModule}' threw an error.`);\n console.error(e);\n }\n }\n else {\n console.error(`The core extension at '${coreExtensionModule}' does not extend CoreExtension.`);\n }\n}\nexport function santizeCustomDataMap(d) {\n const validTypes = { boolean: true, string: true, number: true };\n const keys = Object.keys(d);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!key) {\n continue;\n }\n const value = d[key];\n const valueType = typeof value;\n // Typescript doesn't understand the above const valueType ¯\\_(ツ)_/¯\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore-next-line\n if (valueType === 'string' && value.length > 2048) {\n console.warn(`Custom Data value for ${key} is too long, it will be truncated to 2048 characters`);\n // same here, see above comment, this can only be a string at this point\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore-next-line\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n d[key] = value.substring(0, 2048);\n }\n if (!validTypes[valueType]) {\n console.warn(`Custom Data value for ${key} is not a boolean, string, or number, it will be ignored`);\n delete d[key];\n }\n }\n return d;\n}\n//# sourceMappingURL=utils.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ManualCountTextureUsageTracker, } from './texture-usage-trackers/ManualCountTextureUsageTracker.js';\nimport { FinalizationRegistryTextureUsageTracker } from './texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { Inspector } from './Inspector.js';\nimport { santizeCustomDataMap } from '../render-drivers/utils.js';\nimport { isProductionEnvironment } from '../utils.js';\n/**\n * The Renderer Main API\n *\n * @remarks\n * This is the primary class used to configure and operate the Renderer.\n *\n * It is used to create and destroy Nodes, as well as Texture and Shader\n * references.\n *\n * Example:\n * ```ts\n * import { RendererMain, MainCoreDriver } from '@lightningjs/renderer';\n *\n * // Initialize the Renderer\n * const renderer = new RendererMain(\n * {\n * appWidth: 1920,\n * appHeight: 1080\n * },\n * 'app',\n * new MainCoreDriver(),\n * );\n * ```\n */\nexport class RendererMain extends EventEmitter {\n root = null;\n driver;\n canvas;\n settings;\n inspector = null;\n nodes = new Map();\n nextTextureId = 1;\n /**\n * Texture Usage Tracker for Usage Based Texture Garbage Collection\n *\n * @remarks\n * For internal use only. DO NOT ACCESS.\n */\n textureTracker;\n /**\n * Constructs a new Renderer instance\n *\n * @param settings Renderer settings\n * @param target Element ID or HTMLElement to insert the canvas into\n * @param driver Core Driver to use\n */\n constructor(settings, target, driver) {\n super();\n const resolvedSettings = {\n appWidth: settings.appWidth || 1920,\n appHeight: settings.appHeight || 1080,\n txMemByteThreshold: settings.txMemByteThreshold || 124e6,\n boundsMargin: settings.boundsMargin || 0,\n deviceLogicalPixelRatio: settings.deviceLogicalPixelRatio || 1,\n devicePhysicalPixelRatio: settings.devicePhysicalPixelRatio || window.devicePixelRatio,\n clearColor: settings.clearColor ?? 0x00000000,\n coreExtensionModule: settings.coreExtensionModule || null,\n experimental_FinalizationRegistryTextureUsageTracker: settings.experimental_FinalizationRegistryTextureUsageTracker ?? false,\n textureCleanupOptions: settings.textureCleanupOptions || {},\n fpsUpdateInterval: settings.fpsUpdateInterval || 0,\n numImageWorkers: settings.numImageWorkers !== undefined ? settings.numImageWorkers : 2,\n enableContextSpy: settings.enableContextSpy ?? false,\n enableInspector: settings.enableInspector ?? false,\n };\n this.settings = resolvedSettings;\n const { appWidth, appHeight, deviceLogicalPixelRatio, devicePhysicalPixelRatio, enableInspector, } = resolvedSettings;\n const releaseCallback = (textureId) => {\n this.driver.releaseTexture(textureId);\n };\n const useFinalizationRegistryTracker = resolvedSettings.experimental_FinalizationRegistryTextureUsageTracker &&\n typeof FinalizationRegistry === 'function';\n this.textureTracker = useFinalizationRegistryTracker\n ? new FinalizationRegistryTextureUsageTracker(releaseCallback)\n : new ManualCountTextureUsageTracker(releaseCallback, this.settings.textureCleanupOptions);\n const deviceLogicalWidth = appWidth * deviceLogicalPixelRatio;\n const deviceLogicalHeight = appHeight * deviceLogicalPixelRatio;\n this.driver = driver;\n const canvas = document.createElement('canvas');\n this.canvas = canvas;\n canvas.width = deviceLogicalWidth * devicePhysicalPixelRatio;\n canvas.height = deviceLogicalHeight * devicePhysicalPixelRatio;\n canvas.style.width = `${deviceLogicalWidth}px`;\n canvas.style.height = `${deviceLogicalHeight}px`;\n let targetEl;\n if (typeof target === 'string') {\n targetEl = document.getElementById(target);\n }\n else {\n targetEl = target;\n }\n if (!targetEl) {\n throw new Error('Could not find target element');\n }\n // Hook up the driver's callbacks\n driver.onCreateNode = (node) => {\n this.nodes.set(node.id, node);\n };\n driver.onBeforeDestroyNode = (node) => {\n this.nodes.delete(node.id);\n };\n driver.onFpsUpdate = (fpsData) => {\n this.emit('fpsUpdate', fpsData);\n };\n driver.onFrameTick = (frameTickData) => {\n this.emit('frameTick', frameTickData);\n };\n driver.onIdle = () => {\n this.emit('idle');\n };\n targetEl.appendChild(canvas);\n if (enableInspector && !isProductionEnvironment()) {\n this.inspector = new Inspector(canvas, resolvedSettings);\n }\n }\n /**\n * Initialize the renderer\n *\n * @remarks\n * This method must be called and resolved asyncronously before any other\n * methods are called.\n */\n async init() {\n await this.driver.init(this, this.settings, this.canvas);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.root = this.driver.getRootNode();\n }\n /**\n * Create a new scene graph node\n *\n * @remarks\n * A node is the main graphical building block of the Renderer scene graph. It\n * can be a container for other nodes, or it can be a leaf node that renders a\n * solid color, gradient, image, or specific texture, using a specific shader.\n *\n * To create a text node, see {@link createTextNode}.\n *\n * See {@link INode} for more details.\n *\n * @param props\n * @returns\n */\n createNode(props) {\n if (this.inspector) {\n return this.inspector.createNode(this.driver, this.resolveNodeDefaults(props));\n }\n return this.driver.createNode(this.resolveNodeDefaults(props));\n }\n /**\n * Create a new scene graph text node\n *\n * @remarks\n * A text node is the second graphical building block of the Renderer scene\n * graph. It renders text using a specific text renderer that is automatically\n * chosen based on the font requested and what type of fonts are installed\n * into an app via a CoreExtension.\n *\n * See {@link ITextNode} for more details.\n *\n * @param props\n * @returns\n */\n createTextNode(props) {\n const fontSize = props.fontSize ?? 16;\n const data = {\n ...this.resolveNodeDefaults(props),\n text: props.text ?? '',\n textRendererOverride: props.textRendererOverride ?? null,\n fontSize,\n fontFamily: props.fontFamily ?? 'sans-serif',\n fontStyle: props.fontStyle ?? 'normal',\n fontWeight: props.fontWeight ?? 'normal',\n fontStretch: props.fontStretch ?? 'normal',\n textAlign: props.textAlign ?? 'left',\n contain: props.contain ?? 'none',\n scrollable: props.scrollable ?? false,\n scrollY: props.scrollY ?? 0,\n offsetY: props.offsetY ?? 0,\n letterSpacing: props.letterSpacing ?? 0,\n lineHeight: props.lineHeight ?? fontSize,\n maxLines: props.maxLines ?? 0,\n textBaseline: props.textBaseline ?? 'alphabetic',\n verticalAlign: props.verticalAlign ?? 'top',\n overflowSuffix: props.overflowSuffix ?? '...',\n debug: props.debug ?? {},\n };\n if (this.inspector) {\n return this.inspector.createTextNode(this.driver, data);\n }\n return this.driver.createTextNode(data);\n }\n /**\n * Resolves the default property values for a Node\n *\n * @remarks\n * This method is used internally by the RendererMain to resolve the default\n * property values for a Node. It is exposed publicly so that it can be used\n * by Core Driver implementations.\n *\n * @param props\n * @returns\n */\n resolveNodeDefaults(props) {\n const color = props.color ?? 0xffffffff;\n const colorTl = props.colorTl ?? props.colorTop ?? props.colorLeft ?? color;\n const colorTr = props.colorTr ?? props.colorTop ?? props.colorRight ?? color;\n const colorBl = props.colorBl ?? props.colorBottom ?? props.colorLeft ?? color;\n const colorBr = props.colorBr ?? props.colorBottom ?? props.colorRight ?? color;\n const data = santizeCustomDataMap(props.data ?? {});\n const parentHasRenderTexture = props.parent?.rtt ?? props.parent?.parentHasRenderTexture ?? false;\n return {\n x: props.x ?? 0,\n y: props.y ?? 0,\n width: props.width ?? 0,\n height: props.height ?? 0,\n alpha: props.alpha ?? 1,\n autosize: props.autosize ?? false,\n clipping: props.clipping ?? false,\n color,\n colorTop: props.colorTop ?? color,\n colorBottom: props.colorBottom ?? color,\n colorLeft: props.colorLeft ?? color,\n colorRight: props.colorRight ?? color,\n colorBl,\n colorBr,\n colorTl,\n colorTr,\n zIndex: props.zIndex ?? 0,\n zIndexLocked: props.zIndexLocked ?? 0,\n parent: props.parent ?? null,\n texture: props.texture ?? null,\n shader: props.shader ?? null,\n // Since setting the `src` will trigger a texture load, we need to set it after\n // we set the texture. Otherwise, problems happen.\n src: props.src ?? '',\n scale: props.scale ?? null,\n scaleX: props.scaleX ?? props.scale ?? 1,\n scaleY: props.scaleY ?? props.scale ?? 1,\n mount: props.mount ?? 0,\n mountX: props.mountX ?? props.mount ?? 0,\n mountY: props.mountY ?? props.mount ?? 0,\n pivot: props.pivot ?? 0.5,\n pivotX: props.pivotX ?? props.pivot ?? 0.5,\n pivotY: props.pivotY ?? props.pivot ?? 0.5,\n rotation: props.rotation ?? 0,\n rtt: props.rtt ?? false,\n parentHasRenderTexture,\n data: data,\n };\n }\n /**\n * Destroy a node\n *\n * @remarks\n * This method destroys a node but does not destroy its children.\n *\n * @param node\n * @returns\n */\n destroyNode(node) {\n if (this.inspector) {\n this.inspector.destroyNode(node);\n }\n return this.driver.destroyNode(node);\n }\n /**\n * Create a new texture reference\n *\n * @remarks\n * This method creates a new reference to a texture. The texture is not\n * loaded until it is used on a node.\n *\n * It can be assigned to a node's `texture` property, or it can be used\n * when creating a SubTexture.\n *\n * @param textureType\n * @param props\n * @param options\n * @returns\n */\n createTexture(textureType, props, options) {\n const id = this.nextTextureId++;\n const desc = {\n descType: 'texture',\n txType: textureType,\n props,\n options: {\n ...options,\n // This ID is used to identify the texture in the CoreTextureManager's\n // ID Texture Map cache.\n id,\n },\n };\n this.textureTracker.registerTexture(desc);\n return desc;\n }\n /**\n * Create a new shader reference\n *\n * @remarks\n * This method creates a new reference to a shader. The shader is not\n * loaded until it is used on a Node.\n *\n * It can be assigned to a Node's `shader` property.\n *\n * @param shaderType\n * @param props\n * @returns\n */\n createShader(shaderType, props) {\n return {\n descType: 'shader',\n shType: shaderType,\n props: props,\n };\n }\n /**\n * Get a Node by its ID\n *\n * @param id\n * @returns\n */\n getNodeById(id) {\n return this.nodes.get(id) || null;\n }\n toggleFreeze() {\n throw new Error('Not implemented');\n }\n advanceFrame() {\n throw new Error('Not implemented');\n }\n /**\n * Re-render the current frame without advancing any running animations.\n *\n * @remarks\n * Any state changes will be reflected in the re-rendered frame. Useful for\n * debugging.\n *\n * May not do anything if the render loop is running on a separate worker.\n */\n rerender() {\n throw new Error('Not implemented');\n }\n}\n//# sourceMappingURL=RendererMain.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getTimingFunction } from '../utils.js';\nimport { mergeColorProgress } from '../../utils.js';\nimport { EventEmitter } from '../../common/EventEmitter.js';\nexport class CoreAnimation extends EventEmitter {\n node;\n props;\n settings;\n propStartValues = {};\n restoreValues = {};\n progress = 0;\n delayFor = 0;\n timingFunction;\n propsList; //fixme - aint got not time for this\n constructor(node, props, settings) {\n super();\n this.node = node;\n this.props = props;\n this.settings = settings;\n this.propStartValues = {};\n this.propsList = Object.keys(props);\n this.propsList.forEach((propName) => {\n this.propStartValues[propName] = node[propName];\n });\n this.timingFunction = (t) => t;\n if (settings.easing && typeof settings.easing === 'string') {\n this.timingFunction = getTimingFunction(settings.easing);\n }\n this.delayFor = settings.delay || 0;\n }\n reset() {\n this.progress = 0;\n this.delayFor = this.settings.delay || 0;\n this.update(0);\n }\n restore() {\n this.reset();\n Object.keys(this.props).forEach((propName) => {\n this.node[propName] = this.propStartValues[propName];\n });\n }\n reverse() {\n this.progress = 0;\n Object.keys(this.props).forEach((propName) => {\n // set the start value to the current value\n const startValue = this.props[propName];\n const endValue = this.propStartValues[propName];\n // swap the start and end values\n this.props[propName] = endValue;\n this.propStartValues[propName] = startValue;\n });\n // restore stop method if we are not looping\n if (!this.settings.loop) {\n this.settings.stopMethod = false;\n }\n }\n applyEasing(p, s, e) {\n return (this.timingFunction(p) || p) * (e - s) + s;\n }\n update(dt) {\n const { duration, loop, easing, stopMethod } = this.settings;\n if (!duration) {\n this.emit('finished', {});\n return;\n }\n if (this.delayFor > 0) {\n this.delayFor -= dt;\n return;\n }\n if (this.delayFor <= 0 && this.progress === 0) {\n this.emit('start', {});\n }\n this.progress += dt / duration;\n if (this.progress > 1) {\n this.progress = loop ? 0 : 1;\n if (stopMethod) {\n // If there's a stop method emit finished so the stop method can be applied.\n // TODO: We should probably reevaluate how stopMethod is implemented as currently\n // stop method 'reset' does not work when looping.\n this.emit('finished', {});\n return;\n }\n }\n for (let i = 0; i < this.propsList.length; i++) {\n const propName = this.propsList[i];\n const propValue = this.props[propName];\n const startValue = this.propStartValues[propName];\n const endValue = propValue;\n if (propName.indexOf('color') !== -1) {\n // check if we have to change the color to begin with\n if (startValue === endValue) {\n this.node[propName] = startValue;\n continue;\n }\n if (easing) {\n const easingProgressValue = this.timingFunction(this.progress) || this.progress;\n const easingColorValue = mergeColorProgress(startValue, endValue, easingProgressValue);\n this.node[propName] = easingColorValue;\n continue;\n }\n this.node[propName] = mergeColorProgress(startValue, endValue, this.progress);\n continue;\n }\n if (easing) {\n this.node[propName] = this.applyEasing(this.progress, startValue, endValue);\n continue;\n }\n this.node[propName] =\n startValue + (endValue - startValue) * this.progress;\n }\n if (this.progress === 1) {\n this.emit('finished', {});\n }\n }\n}\n//# sourceMappingURL=CoreAnimation.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nexport class CoreAnimationController {\n manager;\n animation;\n startedPromise = null;\n /**\n * If this is null, then the animation hasn't started yet.\n */\n startedResolve = null;\n stoppedPromise = null;\n /**\n * If this is null, then the animation is in a finished / stopped state.\n */\n stoppedResolve = null;\n constructor(manager, animation) {\n this.manager = manager;\n this.animation = animation;\n this.state = 'stopped';\n }\n state;\n start() {\n this.makeStartedPromise();\n this.animation.once('start', this.started.bind(this));\n this.makeStoppedPromise();\n this.animation.once('finished', this.finished.bind(this));\n // prevent registering the same animation twice\n if (!this.manager.activeAnimations.has(this.animation)) {\n this.manager.registerAnimation(this.animation);\n }\n this.state = 'running';\n return this;\n }\n stop() {\n this.manager.unregisterAnimation(this.animation);\n if (this.stoppedResolve !== null) {\n this.stoppedResolve();\n this.stoppedResolve = null;\n }\n this.animation.reset();\n this.state = 'stopped';\n return this;\n }\n pause() {\n this.manager.unregisterAnimation(this.animation);\n this.state = 'paused';\n return this;\n }\n restore() {\n this.stoppedResolve = null;\n this.animation.restore();\n return this;\n }\n waitUntilStarted() {\n this.makeStartedPromise();\n const promise = this.startedPromise;\n assertTruthy(promise);\n return promise;\n }\n waitUntilStopped() {\n this.makeStoppedPromise();\n const promise = this.stoppedPromise;\n assertTruthy(promise);\n return promise;\n }\n makeStartedPromise() {\n if (this.startedResolve === null) {\n this.startedPromise = new Promise((resolve) => {\n this.startedResolve = resolve;\n });\n }\n }\n makeStoppedPromise() {\n if (this.stoppedResolve === null) {\n this.stoppedPromise = new Promise((resolve) => {\n this.stoppedResolve = resolve;\n });\n }\n }\n started() {\n assertTruthy(this.startedResolve);\n // resolve promise (and pass current this to continue to the chain)\n this.startedResolve(this);\n this.startedResolve = null;\n }\n finished() {\n assertTruthy(this.stoppedResolve);\n // If the animation is looping, then we need to restart it.\n const { loop, stopMethod } = this.animation.settings;\n if (stopMethod === 'reverse') {\n this.animation.reverse();\n this.start();\n return;\n }\n // resolve promise\n this.stoppedResolve();\n this.stoppedResolve = null;\n if (loop) {\n return;\n }\n // unregister animation\n this.manager.unregisterAnimation(this.animation);\n }\n}\n//# sourceMappingURL=CoreAnimationController.js.map","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n// Matrix3d is a 3x3 matrix in column-major order because that's how WebGL likes it.\n// The matrix is stored in a Float32Array in the following order:\n// | 0 3 6 |\n// | 1 4 7 |\n// | 2 5 8 |\n// The following constants are used to index into the array in a row-major way.\nconst m0 = 0;\nconst m1 = 3;\nconst m2 = 6;\nconst m3 = 1;\nconst m4 = 4;\nconst m5 = 7;\nconst m6 = 2;\nconst m7 = 5;\nconst m8 = 8;\n/**\n * A 3x3 matrix representing a 2D transformation.\n *\n * @remarks\n * The matrix is stored in column-major order in the `data` property which can\n * be passed directly to a WebGL shader uniform.\n *\n * The matrix is stored in a Float32Array in the following index order:\n * | 0 3 6 |\n * | 1 4 7 |\n * | 2 5 8 |\n *\n * Only the first two rows are really used for the transformation. The last row is\n * generally always `[0, 0, 1]` if you only use the 2D transformation methods\n * provided by this class.\n *\n * For convenience, entries in the first two rows can be accessed by the following\n * getter properties:\n * | ta tb tx |\n * | tc td ty |\n * | 0 0 1 |\n */\nexport class Matrix3d {\n data;\n /**\n * Creates a new 3x3 matrix.\n *\n * @param entries Row-major 3x3 matrix\n */\n constructor(entries) {\n if (entries) {\n // Transpose the input matrix so that it's in column-major order.\n this.data = new Float32Array(9);\n this.data[m0] = entries[0];\n this.data[m1] = entries[3];\n this.data[m2] = entries[6];\n this.data[m3] = entries[1];\n this.data[m4] = entries[4];\n this.data[m5] = entries[7];\n this.data[m6] = entries[2];\n this.data[m7] = entries[5];\n this.data[m8] = entries[8];\n }\n else {\n this.data = new Float32Array(9);\n }\n }\n /**\n * Returns a temporary matrix that can be used for calculations.\n *\n * @remarks\n * This is useful for avoiding allocations in tight loops.\n *\n * The matrix is not guaranteed to be the same between calls.\n *\n * @returns\n */\n static get temp() {\n return tempMatrix;\n }\n static multiply(a, b, out) {\n const e0 = a.data[m0] * b.data[m0] +\n a.data[m1] * b.data[m3] +\n a.data[m2] * b.data[m6];\n const e1 = a.data[m0] * b.data[m1] +\n a.data[m1] * b.data[m4] +\n a.data[m2] * b.data[m7];\n const e2 = a.data[m0] * b.data[m2] +\n a.data[m1] * b.data[m5] +\n a.data[m2] * b.data[m8];\n const e3 = a.data[m3] * b.data[m0] +\n a.data[m4] * b.data[m3] +\n a.data[m5] * b.data[m6];\n const e4 = a.data[m3] * b.data[m1] +\n a.data[m4] * b.data[m4] +\n a.data[m5] * b.data[m7];\n const e5 = a.data[m3] * b.data[m2] +\n a.data[m4] * b.data[m5] +\n a.data[m5] * b.data[m8];\n const e6 = a.data[m6] * b.data[m0] +\n a.data[m7] * b.data[m3] +\n a.data[m8] * b.data[m6];\n const e7 = a.data[m6] * b.data[m1] +\n a.data[m7] * b.data[m4] +\n a.data[m8] * b.data[m7];\n const e8 = a.data[m6] * b.data[m2] +\n a.data[m7] * b.data[m5] +\n a.data[m8] * b.data[m8];\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = e0;\n out.data[m1] = e1;\n out.data[m2] = e2;\n out.data[m3] = e3;\n out.data[m4] = e4;\n out.data[m5] = e5;\n out.data[m6] = e6;\n out.data[m7] = e7;\n out.data[m8] = e8;\n return out;\n }\n static identity(out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = 1;\n out.data[m1] = 0;\n out.data[m2] = 0;\n out.data[m3] = 0;\n out.data[m4] = 1;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static translate(x, y, out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = 1;\n out.data[m1] = 0;\n out.data[m2] = x;\n out.data[m3] = 0;\n out.data[m4] = 1;\n out.data[m5] = y;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static scale(sx, sy, out) {\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = sx;\n out.data[m1] = 0;\n out.data[m2] = 0;\n out.data[m3] = 0;\n out.data[m4] = sy;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static rotate(angle, out) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n if (!out) {\n out = new Matrix3d();\n }\n out.data[m0] = cos;\n out.data[m1] = -sin;\n out.data[m2] = 0;\n out.data[m3] = sin;\n out.data[m4] = cos;\n out.data[m5] = 0;\n out.data[m6] = 0;\n out.data[m7] = 0;\n out.data[m8] = 1;\n return out;\n }\n static copy(src, dst, transpose) {\n if (!dst) {\n dst = new Matrix3d();\n }\n dst.data[0] = src.data[0];\n dst.data[1] = src.data[1];\n dst.data[2] = src.data[2];\n dst.data[3] = src.data[3];\n dst.data[4] = src.data[4];\n dst.data[5] = src.data[5];\n dst.data[6] = src.data[6];\n dst.data[7] = src.data[7];\n dst.data[8] = src.data[8];\n return dst;\n }\n translate(x, y) {\n this.data[m2] = this.data[m0] * x + this.data[m1] * y + this.data[m2];\n this.data[m5] = this.data[m3] * x + this.data[m4] * y + this.data[m5];\n return this;\n }\n scale(sx, sy) {\n this.data[m0] = this.data[m0] * sx;\n this.data[m1] = this.data[m1] * sy;\n this.data[m3] = this.data[m3] * sx;\n this.data[m4] = this.data[m4] * sy;\n return this;\n }\n rotate(angle) {\n if (angle === 0 || !((angle % Math.PI) * 2)) {\n return this;\n }\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const e0 = this.data[m0] * cos + this.data[m1] * sin;\n const e1 = this.data[m1] * cos - this.data[m0] * sin;\n const e3 = this.data[m3] * cos + this.data[m4] * sin;\n const e4 = this.data[m4] * cos - this.data[m3] * sin;\n this.data[m0] = e0;\n this.data[m1] = e1;\n this.data[m3] = e3;\n this.data[m4] = e4;\n return this;\n }\n multiply(other) {\n return Matrix3d.multiply(this, other, this);\n }\n get tx() {\n return this.data[m2];\n }\n get ty() {\n return this.data[m5];\n }\n get ta() {\n return this.data[m0];\n }\n get tb() {\n return this.data[m1];\n }\n get tc() {\n return this.data[m3];\n }\n get td() {\n return this.data[m4];\n }\n transformPoint(x, y) {\n return [\n this.data[m0] * x + this.data[m1] * y + this.data[m2],\n this.data[m3] * x + this.data[m4] * y + this.data[m3],\n ];\n }\n}\nconst tempMatrix = new Matrix3d();\n//# sourceMappingURL=Matrix3d.js.map","const rx1 = 0;\nconst rx2 = 2;\nconst rx3 = 4;\nconst rx4 = 6;\nconst ry1 = 1;\nconst ry2 = 3;\nconst ry3 = 5;\nconst ry4 = 7;\nexport class RenderCoords {\n data;\n constructor(entries) {\n this.data = new Float32Array(8);\n if (entries) {\n this.data[rx1] = entries[rx1];\n this.data[rx2] = entries[rx2];\n this.data[rx3] = entries[rx3];\n this.data[rx4] = entries[rx4];\n this.data[ry1] = entries[ry1];\n this.data[ry2] = entries[ry2];\n this.data[ry3] = entries[ry3];\n this.data[ry4] = entries[ry4];\n }\n }\n static translate(x1, y1, x2, y2, x3, y3, x4, y4, out) {\n if (!out) {\n out = new RenderCoords();\n }\n out.data[rx1] = x1;\n out.data[rx2] = x2;\n out.data[rx3] = x3;\n out.data[rx4] = x4;\n out.data[ry1] = y1;\n out.data[ry2] = y2;\n out.data[ry3] = y3;\n out.data[ry4] = y4;\n return out;\n }\n get x1() {\n return this.data[rx1];\n }\n get x2() {\n return this.data[rx2];\n }\n get x3() {\n return this.data[rx3];\n }\n get x4() {\n return this.data[rx4];\n }\n get y1() {\n return this.data[ry1];\n }\n get y2() {\n return this.data[ry2];\n }\n get y3() {\n return this.data[ry3];\n }\n get y4() {\n return this.data[ry4];\n }\n}\n//# sourceMappingURL=RenderCoords.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy, mergeColorAlphaPremultiplied, getImageAspectRatio, } from '../utils.js';\nimport { RenderTexture } from './textures/RenderTexture.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { copyRect, intersectRect, createBound, boundInsideBound, } from './lib/utils.js';\nimport { Matrix3d } from './lib/Matrix3d.js';\nimport { RenderCoords } from './lib/RenderCoords.js';\nexport var CoreNodeRenderState;\n(function (CoreNodeRenderState) {\n CoreNodeRenderState[CoreNodeRenderState[\"Init\"] = 0] = \"Init\";\n CoreNodeRenderState[CoreNodeRenderState[\"OutOfBounds\"] = 2] = \"OutOfBounds\";\n CoreNodeRenderState[CoreNodeRenderState[\"InBounds\"] = 4] = \"InBounds\";\n CoreNodeRenderState[CoreNodeRenderState[\"InViewport\"] = 8] = \"InViewport\";\n})(CoreNodeRenderState || (CoreNodeRenderState = {}));\nconst CoreNodeRenderStateMap = new Map();\nCoreNodeRenderStateMap.set(CoreNodeRenderState.Init, 'init');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.OutOfBounds, 'outOfBounds');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.InBounds, 'inBounds');\nCoreNodeRenderStateMap.set(CoreNodeRenderState.InViewport, 'inViewport');\nexport var UpdateType;\n(function (UpdateType) {\n /**\n * Child updates\n */\n UpdateType[UpdateType[\"Children\"] = 1] = \"Children\";\n /**\n * Scale/Rotate transform update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `scaleRotateTransform`\n */\n UpdateType[UpdateType[\"ScaleRotate\"] = 2] = \"ScaleRotate\";\n /**\n * Translate transform update (x/y/width/height/pivot/mount)\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `localTransform`\n */\n UpdateType[UpdateType[\"Local\"] = 4] = \"Local\";\n /**\n * Global Transform update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `globalTransform`\n * - `renderCoords`\n * - `renderBound`\n */\n UpdateType[UpdateType[\"Global\"] = 8] = \"Global\";\n /**\n * Clipping rect update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `clippingRect`\n */\n UpdateType[UpdateType[\"Clipping\"] = 16] = \"Clipping\";\n /**\n * Calculated ZIndex update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `calcZIndex`\n */\n UpdateType[UpdateType[\"CalculatedZIndex\"] = 32] = \"CalculatedZIndex\";\n /**\n * Z-Index Sorted Children update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `children` (sorts children by their `calcZIndex`)\n */\n UpdateType[UpdateType[\"ZIndexSortedChildren\"] = 64] = \"ZIndexSortedChildren\";\n /**\n * Premultiplied Colors update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `premultipliedColorTl`\n * - `premultipliedColorTr`\n * - `premultipliedColorBl`\n * - `premultipliedColorBr`\n */\n UpdateType[UpdateType[\"PremultipliedColors\"] = 128] = \"PremultipliedColors\";\n /**\n * World Alpha update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `worldAlpha` = `parent.worldAlpha` * `alpha`\n */\n UpdateType[UpdateType[\"WorldAlpha\"] = 256] = \"WorldAlpha\";\n /**\n * Render State update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `renderState`\n */\n UpdateType[UpdateType[\"RenderState\"] = 512] = \"RenderState\";\n /**\n * Is Renderable update\n *\n * @remarks\n * CoreNode Properties Updated:\n * - `isRenderable`\n */\n UpdateType[UpdateType[\"IsRenderable\"] = 1024] = \"IsRenderable\";\n /**\n * None\n */\n UpdateType[UpdateType[\"None\"] = 0] = \"None\";\n /**\n * All\n */\n UpdateType[UpdateType[\"All\"] = 2047] = \"All\";\n})(UpdateType || (UpdateType = {}));\nexport class CoreNode extends EventEmitter {\n stage;\n children = [];\n props;\n updateType = UpdateType.All;\n globalTransform;\n scaleRotateTransform;\n localTransform;\n renderCoords;\n renderBound;\n strictBound;\n preloadBound;\n clippingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n valid: false,\n };\n isRenderable = false;\n renderState = CoreNodeRenderState.Init;\n worldAlpha = 1;\n premultipliedColorTl = 0;\n premultipliedColorTr = 0;\n premultipliedColorBl = 0;\n premultipliedColorBr = 0;\n calcZIndex = 0;\n hasRTTupdates = false;\n constructor(stage, props) {\n super();\n this.stage = stage;\n this.props = {\n ...props,\n parent: null,\n // Assign a default value to parentHasRenderTexture\n parentHasRenderTexture: false,\n };\n // Allow for parent to be processed appropriately\n this.parent = props.parent;\n // Allow for Render Texture to be processed appropriately\n this.rtt = props.rtt;\n this.updateScaleRotateTransform();\n }\n //#region Textures\n loadTexture(textureType, props, options = null) {\n // First unload any existing texture\n if (this.props.texture) {\n this.unloadTexture();\n }\n const { txManager } = this.stage;\n const texture = txManager.loadTexture(textureType, props, options);\n this.props.texture = texture;\n this.props.textureOptions = options;\n this.setUpdateType(UpdateType.IsRenderable);\n // If texture is already loaded / failed, trigger loaded event manually\n // so that users get a consistent event experience.\n // We do this in a microtask to allow listeners to be attached in the same\n // synchronous task after calling loadTexture()\n queueMicrotask(() => {\n if (texture.state === 'loaded') {\n this.onTextureLoaded(texture, texture.dimensions);\n }\n else if (texture.state === 'failed') {\n this.onTextureFailed(texture, texture.error);\n }\n else if (texture.state === 'freed') {\n this.onTextureFreed(texture);\n }\n texture.on('loaded', this.onTextureLoaded);\n texture.on('failed', this.onTextureFailed);\n texture.on('freed', this.onTextureFreed);\n });\n }\n unloadTexture() {\n if (this.props.texture) {\n const { texture } = this.props;\n texture.off('loaded', this.onTextureLoaded);\n texture.off('failed', this.onTextureFailed);\n texture.off('freed', this.onTextureFreed);\n texture.setRenderableOwner(this, false);\n }\n this.props.texture = null;\n this.props.textureOptions = null;\n this.setUpdateType(UpdateType.IsRenderable);\n }\n autosizeNode(dimensions) {\n if (this.autosize) {\n this.width = dimensions.width;\n this.height = dimensions.height;\n }\n }\n onTextureLoaded = (target, dimensions) => {\n this.autosizeNode(dimensions);\n // If parent has a render texture, flag that we need to update\n // @todo: Reserve type for RTT updates\n if (this.parentHasRenderTexture) {\n this.setRTTUpdates(1);\n }\n this.emit('loaded', {\n type: 'texture',\n dimensions,\n });\n queueMicrotask(() => {\n // Texture was loaded. In case the RAF loop has already stopped, we request\n // a render to ensure the texture is rendered.\n this.stage.requestRender();\n });\n };\n onTextureFailed = (target, error) => {\n this.emit('failed', {\n type: 'texture',\n error,\n });\n };\n onTextureFreed = (target) => {\n this.emit('freed', {\n type: 'texture',\n });\n };\n //#endregion Textures\n loadShader(shaderType, props) {\n const shManager = this.stage.renderer.getShaderManager();\n assertTruthy(shManager);\n const { shader, props: p } = shManager.loadShader(shaderType, props);\n this.props.shader = shader;\n this.props.shaderProps = p;\n this.setUpdateType(UpdateType.IsRenderable);\n }\n /**\n * Change types types is used to determine the scope of the changes being applied\n *\n * @remarks\n * See {@link UpdateType} for more information on each type\n *\n * @param type\n */\n setUpdateType(type) {\n this.updateType |= type;\n // If we're updating this node at all, we need to inform the parent\n // (and all ancestors) that their children need updating as well\n const parent = this.props.parent;\n if (parent && !(parent.updateType & UpdateType.Children)) {\n parent.setUpdateType(UpdateType.Children);\n }\n // If node is part of RTT texture\n // Flag that we need to update\n if (this.parentHasRenderTexture) {\n this.setRTTUpdates(type);\n }\n }\n sortChildren() {\n this.children.sort((a, b) => a.calcZIndex - b.calcZIndex);\n }\n updateScaleRotateTransform() {\n this.scaleRotateTransform = Matrix3d.rotate(this.props.rotation, this.scaleRotateTransform).scale(this.props.scaleX, this.props.scaleY);\n }\n updateLocalTransform() {\n assertTruthy(this.scaleRotateTransform);\n const pivotTranslateX = this.props.pivotX * this.props.width;\n const pivotTranslateY = this.props.pivotY * this.props.height;\n const mountTranslateX = this.props.mountX * this.props.width;\n const mountTranslateY = this.props.mountY * this.props.height;\n this.localTransform = Matrix3d.translate(pivotTranslateX - mountTranslateX + this.props.x, pivotTranslateY - mountTranslateY + this.props.y, this.localTransform)\n .multiply(this.scaleRotateTransform)\n .translate(-pivotTranslateX, -pivotTranslateY);\n this.setUpdateType(UpdateType.Global);\n }\n /**\n * @todo: test for correct calculation flag\n * @param delta\n */\n update(delta, parentClippingRect) {\n if (this.updateType & UpdateType.ScaleRotate) {\n this.updateScaleRotateTransform();\n this.setUpdateType(UpdateType.Local);\n }\n if (this.updateType & UpdateType.Local) {\n this.updateLocalTransform();\n this.setUpdateType(UpdateType.Global);\n }\n const parent = this.props.parent;\n let childUpdateType = UpdateType.None;\n if (this.updateType & UpdateType.Global) {\n assertTruthy(this.localTransform);\n this.globalTransform = Matrix3d.copy(parent?.globalTransform || this.localTransform, this.globalTransform);\n if (this.parentHasRenderTexture && this.props.parent?.rtt) {\n this.globalTransform = Matrix3d.identity();\n }\n if (parent) {\n this.globalTransform.multiply(this.localTransform);\n }\n this.calculateRenderCoords();\n this.updateBoundingRect();\n this.setUpdateType(UpdateType.Clipping | UpdateType.RenderState | UpdateType.Children);\n childUpdateType |= UpdateType.Global;\n }\n if (this.updateType & UpdateType.Clipping) {\n this.calculateClippingRect(parentClippingRect);\n this.setUpdateType(UpdateType.Children);\n childUpdateType |= UpdateType.Clipping;\n }\n if (this.updateType & UpdateType.WorldAlpha) {\n if (parent) {\n this.worldAlpha = parent.worldAlpha * this.props.alpha;\n }\n else {\n this.worldAlpha = this.props.alpha;\n }\n this.setUpdateType(UpdateType.Children |\n UpdateType.PremultipliedColors |\n UpdateType.IsRenderable);\n childUpdateType |= UpdateType.WorldAlpha;\n }\n if (this.updateType & UpdateType.PremultipliedColors) {\n this.premultipliedColorTl = mergeColorAlphaPremultiplied(this.props.colorTl, this.worldAlpha, true);\n // If all the colors are the same just sent them all to the same value\n if (this.props.colorTl === this.props.colorTr &&\n this.props.colorBl === this.props.colorBr &&\n this.props.colorTl === this.props.colorBl) {\n this.premultipliedColorTr =\n this.premultipliedColorBl =\n this.premultipliedColorBr =\n this.premultipliedColorTl;\n }\n else {\n this.premultipliedColorTr = mergeColorAlphaPremultiplied(this.props.colorTr, this.worldAlpha, true);\n this.premultipliedColorBl = mergeColorAlphaPremultiplied(this.props.colorBl, this.worldAlpha, true);\n this.premultipliedColorBr = mergeColorAlphaPremultiplied(this.props.colorBr, this.worldAlpha, true);\n }\n }\n if (this.updateType & UpdateType.RenderState) {\n this.updateRenderState(parentClippingRect);\n this.setUpdateType(UpdateType.IsRenderable);\n }\n if (this.updateType & UpdateType.IsRenderable) {\n this.updateIsRenderable();\n }\n // No need to update zIndex if there is no parent\n if (parent && this.updateType & UpdateType.CalculatedZIndex) {\n this.calculateZIndex();\n // Tell parent to re-sort children\n parent.setUpdateType(UpdateType.ZIndexSortedChildren);\n }\n if (this.updateType & UpdateType.Children &&\n this.children.length &&\n !this.rtt) {\n this.children.forEach((child) => {\n // Trigger the depenedent update types on the child\n child.setUpdateType(childUpdateType);\n // If child has no updates, skip\n if (child.updateType === 0) {\n return;\n }\n child.update(delta, this.clippingRect);\n });\n }\n // Sorting children MUST happen after children have been updated so\n // that they have the oppotunity to update their calculated zIndex.\n if (this.updateType & UpdateType.ZIndexSortedChildren) {\n // reorder z-index\n this.sortChildren();\n }\n // reset update type\n this.updateType = 0;\n }\n //check if CoreNode is renderable based on props\n checkRenderProps() {\n if (this.props.texture) {\n return true;\n }\n if (!this.props.width || !this.props.height) {\n return false;\n }\n if (this.props.shader) {\n return true;\n }\n if (this.props.clipping) {\n return true;\n }\n if (this.props.color !== 0) {\n return true;\n }\n // Consider removing these checks and just using the color property check above.\n // Maybe add a forceRender prop for nodes that should always render.\n if (this.props.colorTop !== 0) {\n return true;\n }\n if (this.props.colorBottom !== 0) {\n return true;\n }\n if (this.props.colorLeft !== 0) {\n return true;\n }\n if (this.props.colorRight !== 0) {\n return true;\n }\n if (this.props.colorTl !== 0) {\n return true;\n }\n if (this.props.colorTr !== 0) {\n return true;\n }\n if (this.props.colorBl !== 0) {\n return true;\n }\n if (this.props.colorBr !== 0) {\n return true;\n }\n return false;\n }\n checkRenderBounds(parentClippingRect) {\n assertTruthy(this.renderBound);\n const rectW = parentClippingRect.width || this.stage.root.width;\n const rectH = parentClippingRect.height || this.stage.root.height;\n this.strictBound = createBound(parentClippingRect.x, parentClippingRect.y, parentClippingRect.x + rectW, parentClippingRect.y + rectH, this.strictBound);\n const renderM = this.stage.boundsMargin;\n this.preloadBound = createBound(parentClippingRect.x - renderM[3], parentClippingRect.y - renderM[0], parentClippingRect.x + rectW + renderM[1], parentClippingRect.y + rectH + renderM[2], this.preloadBound);\n if (boundInsideBound(this.renderBound, this.strictBound)) {\n return CoreNodeRenderState.InViewport;\n }\n if (boundInsideBound(this.renderBound, this.preloadBound)) {\n return CoreNodeRenderState.InBounds;\n }\n return CoreNodeRenderState.OutOfBounds;\n }\n updateRenderState(parentClippingRect) {\n const renderState = this.checkRenderBounds(parentClippingRect);\n if (renderState !== this.renderState) {\n let previous = this.renderState;\n this.renderState = renderState;\n if (previous === CoreNodeRenderState.InViewport) {\n this.emit('outOfViewport', {\n previous,\n current: renderState,\n });\n }\n if (previous < CoreNodeRenderState.InBounds &&\n renderState === CoreNodeRenderState.InViewport) {\n this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), {\n previous,\n current: renderState,\n });\n previous = CoreNodeRenderState.InBounds;\n }\n else if (previous > CoreNodeRenderState.InBounds &&\n renderState === CoreNodeRenderState.OutOfBounds) {\n this.emit(CoreNodeRenderStateMap.get(CoreNodeRenderState.InBounds), {\n previous,\n current: renderState,\n });\n previous = CoreNodeRenderState.InBounds;\n }\n const event = CoreNodeRenderStateMap.get(renderState);\n assertTruthy(event);\n this.emit(event, {\n previous,\n current: renderState,\n });\n }\n }\n setRenderState(state) {\n if (state !== this.renderState) {\n this.renderState = state;\n this.emit(CoreNodeRenderState[state]);\n }\n }\n /**\n * This function updates the `isRenderable` property based on certain conditions.\n *\n * @returns\n */\n updateIsRenderable() {\n let newIsRenderable;\n if (this.worldAlpha === 0 || !this.checkRenderProps()) {\n newIsRenderable = false;\n }\n else {\n newIsRenderable = this.renderState > CoreNodeRenderState.OutOfBounds;\n }\n if (this.isRenderable !== newIsRenderable) {\n this.isRenderable = newIsRenderable;\n this.onChangeIsRenderable(newIsRenderable);\n }\n }\n onChangeIsRenderable(isRenderable) {\n this.props.texture?.setRenderableOwner(this, isRenderable);\n }\n calculateRenderCoords() {\n const { width, height, globalTransform: transform } = this;\n assertTruthy(transform);\n const { tx, ty, ta, tb, tc, td } = transform;\n if (tb === 0 && tc === 0) {\n const minX = tx;\n const maxX = tx + width * ta;\n const minY = ty;\n const maxY = ty + height * td;\n this.renderCoords = RenderCoords.translate(\n //top-left\n minX, minY, \n //top-right\n maxX, minY, \n //bottom-right\n maxX, maxY, \n //bottom-left\n minX, maxY, this.renderCoords);\n }\n else {\n this.renderCoords = RenderCoords.translate(\n //top-left\n tx, ty, \n //top-right\n tx + width * ta, ty + width * tc, \n //bottom-right\n tx + width * ta + height * tb, ty + width * tc + height * td, \n //bottom-left\n tx + height * tb, ty + height * td, this.renderCoords);\n }\n }\n updateBoundingRect() {\n const { renderCoords, globalTransform: transform } = this;\n assertTruthy(transform);\n assertTruthy(renderCoords);\n const { tb, tc } = transform;\n const { x1, y1, x3, y3 } = renderCoords;\n if (tb === 0 || tc === 0) {\n this.renderBound = createBound(x1, y1, x3, y3, this.renderBound);\n }\n else {\n const { x2, x4, y2, y4 } = renderCoords;\n this.renderBound = createBound(Math.min(x1, x2, x3, x4), Math.min(y1, y2, y3, y4), Math.max(x1, x2, x3, x4), Math.max(y1, y2, y3, y4), this.renderBound);\n }\n }\n /**\n * This function calculates the clipping rectangle for a node.\n *\n * The function then checks if the node is rotated. If the node requires clipping and is not rotated, a new clipping rectangle is created based on the node's global transform and dimensions.\n * If a parent clipping rectangle exists, it is intersected with the node's clipping rectangle (if it exists), or replaces the node's clipping rectangle.\n *\n * Finally, the node's parentClippingRect and clippingRect properties are updated.\n */\n calculateClippingRect(parentClippingRect) {\n assertTruthy(this.globalTransform);\n const { clippingRect, props, globalTransform: gt } = this;\n const { clipping } = props;\n const isRotated = gt.tb !== 0 || gt.tc !== 0;\n if (clipping && !isRotated) {\n clippingRect.x = gt.tx;\n clippingRect.y = gt.ty;\n clippingRect.width = this.width * gt.ta;\n clippingRect.height = this.height * gt.td;\n clippingRect.valid = true;\n }\n else {\n clippingRect.valid = false;\n }\n if (parentClippingRect.valid && clippingRect.valid) {\n // Intersect parent clipping rect with node clipping rect\n intersectRect(parentClippingRect, clippingRect, clippingRect);\n }\n else if (parentClippingRect.valid) {\n // Copy parent clipping rect\n copyRect(parentClippingRect, clippingRect);\n clippingRect.valid = true;\n }\n }\n calculateZIndex() {\n const props = this.props;\n const z = props.zIndex || 0;\n const p = props.parent?.zIndex || 0;\n let zIndex = z;\n if (props.parent?.zIndexLocked) {\n zIndex = z < p ? z : p;\n }\n this.calcZIndex = zIndex;\n }\n /**\n * Destroy the node and cleanup all resources\n */\n destroy() {\n this.unloadTexture();\n this.clippingRect.valid = false;\n this.isRenderable = false;\n delete this.renderCoords;\n delete this.renderBound;\n delete this.strictBound;\n delete this.preloadBound;\n delete this.globalTransform;\n delete this.scaleRotateTransform;\n delete this.localTransform;\n this.props.texture = null;\n this.props.shader = null;\n this.removeAllListeners();\n this.parent = null;\n }\n renderQuads(renderer) {\n const { width, height, texture, textureOptions, shader, shaderProps, rtt, parentHasRenderTexture, } = this.props;\n // Prevent quad rendering if parent has a render texture\n // and renderer is not currently rendering to a texture\n if (parentHasRenderTexture) {\n if (!renderer.renderToTextureActive) {\n return;\n }\n // Prevent quad rendering if parent render texture is not the active render texture\n if (this.parentRenderTexture !== renderer.activeRttNode) {\n return;\n }\n }\n const { premultipliedColorTl, premultipliedColorTr, premultipliedColorBl, premultipliedColorBr, } = this;\n const { zIndex, worldAlpha, globalTransform: gt, clippingRect } = this;\n assertTruthy(gt);\n // add to list of renderables to be sorted before rendering\n renderer.addQuad({\n width,\n height,\n colorTl: premultipliedColorTl,\n colorTr: premultipliedColorTr,\n colorBl: premultipliedColorBl,\n colorBr: premultipliedColorBr,\n texture,\n textureOptions,\n zIndex,\n shader,\n shaderProps,\n alpha: worldAlpha,\n clippingRect,\n tx: gt.tx,\n ty: gt.ty,\n ta: gt.ta,\n tb: gt.tb,\n tc: gt.tc,\n td: gt.td,\n rtt,\n parentHasRenderTexture,\n framebufferDimensions: this.framebufferDimensions,\n });\n }\n //#region Properties\n get id() {\n return this.props.id;\n }\n get x() {\n return this.props.x;\n }\n set x(value) {\n if (this.props.x !== value) {\n this.props.x = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get absX() {\n return (this.props.x +\n (this.props.parent?.absX || this.props.parent?.globalTransform?.tx || 0));\n }\n get absY() {\n return this.props.y + (this.props.parent?.absY ?? 0);\n }\n get y() {\n return this.props.y;\n }\n set y(value) {\n if (this.props.y !== value) {\n this.props.y = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get width() {\n return this.props.width;\n }\n set width(value) {\n if (this.props.width !== value) {\n this.props.width = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n if (this.props.height !== value) {\n this.props.height = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get scale() {\n // The CoreNode `scale` property is only used by Animations.\n // Unlike INode, `null` should never be possibility for Animations.\n return this.scaleX;\n }\n set scale(value) {\n // The CoreNode `scale` property is only used by Animations.\n // Unlike INode, `null` should never be possibility for Animations.\n this.scaleX = value;\n this.scaleY = value;\n }\n get scaleX() {\n return this.props.scaleX;\n }\n set scaleX(value) {\n if (this.props.scaleX !== value) {\n this.props.scaleX = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get scaleY() {\n return this.props.scaleY;\n }\n set scaleY(value) {\n if (this.props.scaleY !== value) {\n this.props.scaleY = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get mount() {\n return this.props.mount;\n }\n set mount(value) {\n if (this.props.mountX !== value || this.props.mountY !== value) {\n this.props.mountX = value;\n this.props.mountY = value;\n this.props.mount = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get mountX() {\n return this.props.mountX;\n }\n set mountX(value) {\n if (this.props.mountX !== value) {\n this.props.mountX = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get mountY() {\n return this.props.mountY;\n }\n set mountY(value) {\n if (this.props.mountY !== value) {\n this.props.mountY = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivot() {\n return this.props.pivot;\n }\n set pivot(value) {\n if (this.props.pivotX !== value || this.props.pivotY !== value) {\n this.props.pivotX = value;\n this.props.pivotY = value;\n this.props.pivot = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivotX() {\n return this.props.pivotX;\n }\n set pivotX(value) {\n if (this.props.pivotX !== value) {\n this.props.pivotX = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get pivotY() {\n return this.props.pivotY;\n }\n set pivotY(value) {\n if (this.props.pivotY !== value) {\n this.props.pivotY = value;\n this.setUpdateType(UpdateType.Local);\n }\n }\n get rotation() {\n return this.props.rotation;\n }\n set rotation(value) {\n if (this.props.rotation !== value) {\n this.props.rotation = value;\n this.setUpdateType(UpdateType.ScaleRotate);\n }\n }\n get alpha() {\n return this.props.alpha;\n }\n set alpha(value) {\n this.props.alpha = value;\n this.setUpdateType(UpdateType.PremultipliedColors | UpdateType.WorldAlpha);\n }\n get autosize() {\n return this.props.autosize;\n }\n set autosize(value) {\n this.props.autosize = value;\n }\n get clipping() {\n return this.props.clipping;\n }\n set clipping(value) {\n this.props.clipping = value;\n this.setUpdateType(UpdateType.Clipping);\n }\n get color() {\n return this.props.color;\n }\n set color(value) {\n if (this.props.colorTl !== value ||\n this.props.colorTr !== value ||\n this.props.colorBl !== value ||\n this.props.colorBr !== value) {\n this.colorTl = value;\n this.colorTr = value;\n this.colorBl = value;\n this.colorBr = value;\n }\n this.props.color = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTop() {\n return this.props.colorTop;\n }\n set colorTop(value) {\n if (this.props.colorTl !== value || this.props.colorTr !== value) {\n this.colorTl = value;\n this.colorTr = value;\n }\n this.props.colorTop = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBottom() {\n return this.props.colorBottom;\n }\n set colorBottom(value) {\n if (this.props.colorBl !== value || this.props.colorBr !== value) {\n this.colorBl = value;\n this.colorBr = value;\n }\n this.props.colorBottom = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorLeft() {\n return this.props.colorLeft;\n }\n set colorLeft(value) {\n if (this.props.colorTl !== value || this.props.colorBl !== value) {\n this.colorTl = value;\n this.colorBl = value;\n }\n this.props.colorLeft = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorRight() {\n return this.props.colorRight;\n }\n set colorRight(value) {\n if (this.props.colorTr !== value || this.props.colorBr !== value) {\n this.colorTr = value;\n this.colorBr = value;\n }\n this.props.colorRight = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTl() {\n return this.props.colorTl;\n }\n set colorTl(value) {\n this.props.colorTl = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorTr() {\n return this.props.colorTr;\n }\n set colorTr(value) {\n this.props.colorTr = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBl() {\n return this.props.colorBl;\n }\n set colorBl(value) {\n this.props.colorBl = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n get colorBr() {\n return this.props.colorBr;\n }\n set colorBr(value) {\n this.props.colorBr = value;\n this.setUpdateType(UpdateType.PremultipliedColors);\n }\n // we're only interested in parent zIndex to test\n // if we should use node zIndex is higher then parent zIndex\n get zIndexLocked() {\n return this.props.zIndexLocked || 0;\n }\n set zIndexLocked(value) {\n this.props.zIndexLocked = value;\n this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);\n this.children.forEach((child) => {\n child.setUpdateType(UpdateType.CalculatedZIndex);\n });\n }\n get zIndex() {\n return this.props.zIndex;\n }\n set zIndex(value) {\n this.props.zIndex = value;\n this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);\n this.children.forEach((child) => {\n child.setUpdateType(UpdateType.CalculatedZIndex);\n });\n }\n get parent() {\n return this.props.parent;\n }\n set parent(newParent) {\n const oldParent = this.props.parent;\n if (oldParent === newParent) {\n return;\n }\n this.props.parent = newParent;\n if (oldParent) {\n const index = oldParent.children.indexOf(this);\n assertTruthy(index !== -1, \"CoreNode.parent: Node not found in old parent's children!\");\n oldParent.children.splice(index, 1);\n oldParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);\n }\n if (newParent) {\n newParent.children.push(this);\n // Since this node has a new parent, to be safe, have it do a full update.\n this.setUpdateType(UpdateType.All);\n // Tell parent that it's children need to be updated and sorted.\n newParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);\n if (newParent.rtt || newParent.parentHasRenderTexture) {\n this.setRTTUpdates(UpdateType.All);\n }\n }\n this.parentHasRenderTexture =\n newParent?.rtt || newParent?.parentHasRenderTexture;\n this.updateScaleRotateTransform();\n }\n get rtt() {\n return this.props.rtt;\n }\n set rtt(value) {\n if (!value) {\n return;\n }\n this.props.rtt = true;\n this.hasRTTupdates = true;\n // Store RTT nodes in a separate list\n this.stage.renderer?.renderToTexture(this);\n }\n set parentHasRenderTexture(value) {\n this.props.parentHasRenderTexture = !!value;\n }\n get parentHasRenderTexture() {\n return this.props.parentHasRenderTexture;\n }\n /**\n * Returns the framebuffer dimensions of the node.\n * If the node has a render texture, the dimensions are the same as the node's dimensions.\n * If the node does not have a render texture, the dimensions are inherited from the parent.\n * If the node parent has a render texture and the node is a render texture, the nodes dimensions are used.\n */\n get framebufferDimensions() {\n if (this.parentHasRenderTexture && !this.rtt) {\n return this.parent?.framebufferDimensions;\n }\n return { width: this.width, height: this.height };\n }\n /**\n * Returns the parent render texture node if it exists.\n */\n get parentRenderTexture() {\n let parent = this.parent;\n while (parent) {\n if (parent.rtt) {\n return parent;\n }\n parent = parent.parent;\n }\n return null;\n }\n get texture() {\n return this.props.texture;\n }\n setRTTUpdates(type) {\n this.hasRTTupdates = true;\n this.parent?.setRTTUpdates(type);\n }\n}\n//# sourceMappingURL=CoreNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { CoreAnimation } from '../../core/animations/CoreAnimation.js';\nimport { CoreAnimationController } from '../../core/animations/CoreAnimationController.js';\nimport { CoreNode } from '../../core/CoreNode.js';\nimport { EventEmitter } from '../../common/EventEmitter.js';\nimport { santizeCustomDataMap } from '../utils.js';\nlet nextId = 1;\nexport function getNewId() {\n return nextId++;\n}\nexport class MainOnlyNode extends EventEmitter {\n rendererMain;\n stage;\n id;\n coreNode;\n // Prop stores\n _children = [];\n _src = '';\n _parent = null;\n _texture = null;\n _shader = null;\n _data = {};\n constructor(props, rendererMain, stage, coreNode) {\n super();\n this.rendererMain = rendererMain;\n this.stage = stage;\n this.id = coreNode?.id ?? getNewId();\n this.coreNode =\n coreNode ||\n new CoreNode(this.stage, {\n id: this.id,\n x: props.x,\n y: props.y,\n width: props.width,\n height: props.height,\n alpha: props.alpha,\n autosize: props.autosize,\n clipping: props.clipping,\n color: props.color,\n colorTop: props.colorTop,\n colorBottom: props.colorBottom,\n colorLeft: props.colorLeft,\n colorRight: props.colorRight,\n colorTl: props.colorTl,\n colorTr: props.colorTr,\n colorBl: props.colorBl,\n colorBr: props.colorBr,\n zIndex: props.zIndex,\n zIndexLocked: props.zIndexLocked,\n scaleX: props.scaleX,\n scaleY: props.scaleY,\n mountX: props.mountX,\n mountY: props.mountY,\n mount: props.mount,\n pivot: props.pivot,\n pivotX: props.pivotX,\n pivotY: props.pivotY,\n rotation: props.rotation,\n parent: null,\n shader: null,\n shaderProps: null,\n texture: null,\n textureOptions: null,\n rtt: props.rtt,\n parentHasRenderTexture: props.parentHasRenderTexture,\n });\n // Forward loaded/failed events\n this.coreNode.on('loaded', this.onTextureLoaded);\n this.coreNode.on('failed', this.onTextureFailed);\n this.coreNode.on('freed', this.onTextureFreed);\n this.coreNode.on('outOfBounds', this.onOutOfBounds);\n this.coreNode.on('inBounds', this.onInBounds);\n this.coreNode.on('outOfViewport', this.onOutOfViewport);\n this.coreNode.on('inViewport', this.onInViewport);\n // Assign properties to this object\n this.parent = props.parent;\n this.shader = props.shader;\n this.texture = props.texture;\n this.src = props.src;\n this.rtt = props.rtt;\n this._data = props.data;\n }\n get x() {\n return this.coreNode.x;\n }\n set x(value) {\n this.coreNode.x = value;\n }\n get y() {\n return this.coreNode.y;\n }\n set y(value) {\n this.coreNode.y = value;\n }\n get width() {\n return this.coreNode.width;\n }\n set width(value) {\n this.coreNode.width = value;\n }\n get height() {\n return this.coreNode.height;\n }\n set height(value) {\n this.coreNode.height = value;\n }\n get alpha() {\n return this.coreNode.alpha;\n }\n set alpha(value) {\n this.coreNode.alpha = value;\n }\n get autosize() {\n return this.coreNode.autosize;\n }\n set autosize(value) {\n this.coreNode.autosize = value;\n }\n get clipping() {\n return this.coreNode.clipping;\n }\n set clipping(value) {\n this.coreNode.clipping = value;\n }\n get color() {\n return this.coreNode.color;\n }\n set color(value) {\n this.coreNode.color = value;\n }\n get colorTop() {\n return this.coreNode.colorTop;\n }\n set colorTop(value) {\n this.coreNode.colorTop = value;\n }\n get colorBottom() {\n return this.coreNode.colorBottom;\n }\n set colorBottom(value) {\n this.coreNode.colorBottom = value;\n }\n get colorLeft() {\n return this.coreNode.colorLeft;\n }\n set colorLeft(value) {\n this.coreNode.colorLeft = value;\n }\n get colorRight() {\n return this.coreNode.colorRight;\n }\n set colorRight(value) {\n this.coreNode.colorRight = value;\n }\n get colorTl() {\n return this.coreNode.colorTl;\n }\n set colorTl(value) {\n this.coreNode.colorTl = value;\n }\n get colorTr() {\n return this.coreNode.colorTr;\n }\n set colorTr(value) {\n this.coreNode.colorTr = value;\n }\n get colorBl() {\n return this.coreNode.colorBl;\n }\n set colorBl(value) {\n this.coreNode.colorBl = value;\n }\n get colorBr() {\n return this.coreNode.colorBr;\n }\n set colorBr(value) {\n this.coreNode.colorBr = value;\n }\n get scale() {\n if (this.scaleX !== this.scaleY) {\n return null;\n }\n return this.coreNode.scaleX;\n }\n set scale(value) {\n // We ignore `null` when it's set.\n if (value === null) {\n return;\n }\n this.coreNode.scaleX = value;\n this.coreNode.scaleY = value;\n }\n get scaleX() {\n return this.coreNode.scaleX;\n }\n set scaleX(value) {\n this.coreNode.scaleX = value;\n }\n get scaleY() {\n return this.coreNode.scaleY;\n }\n set scaleY(value) {\n this.coreNode.scaleY = value;\n }\n get mount() {\n return this.coreNode.mount;\n }\n set mount(value) {\n this.coreNode.mount = value;\n }\n get mountX() {\n return this.coreNode.mountX;\n }\n set mountX(value) {\n this.coreNode.mountX = value;\n }\n get mountY() {\n return this.coreNode.mountY;\n }\n set mountY(value) {\n this.coreNode.mountY = value;\n }\n get pivot() {\n return this.coreNode.pivot;\n }\n set pivot(value) {\n this.coreNode.pivot = value;\n }\n get pivotX() {\n return this.coreNode.pivotX;\n }\n set pivotX(value) {\n this.coreNode.pivotX = value;\n }\n get pivotY() {\n return this.coreNode.pivotY;\n }\n set pivotY(value) {\n this.coreNode.pivotY = value;\n }\n get rotation() {\n return this.coreNode.rotation;\n }\n set rotation(value) {\n this.coreNode.rotation = value;\n }\n get parent() {\n return this._parent;\n }\n set parent(newParent) {\n const oldParent = this._parent;\n this._parent = newParent;\n this.coreNode.parent = newParent?.coreNode ?? null;\n if (oldParent) {\n const index = oldParent.children.indexOf(this);\n assertTruthy(index !== -1, \"MainOnlyNode.parent: Node not found in old parent's children!\");\n oldParent.children.splice(index, 1);\n }\n if (newParent) {\n newParent.children.push(this);\n }\n }\n get children() {\n return this._children;\n }\n get zIndex() {\n return this.coreNode.zIndex;\n }\n set zIndex(value) {\n this.coreNode.zIndex = value;\n }\n get zIndexLocked() {\n return this.coreNode.zIndexLocked;\n }\n set zIndexLocked(value) {\n this.coreNode.zIndexLocked = value;\n }\n get src() {\n return this._src;\n }\n set src(imageUrl) {\n if (this._src === imageUrl) {\n return;\n }\n this._src = imageUrl;\n if (!imageUrl) {\n this.texture = null;\n return;\n }\n this.texture = this.rendererMain.createTexture('ImageTexture', {\n src: imageUrl,\n });\n }\n //#region Texture\n get texture() {\n return this._texture;\n }\n set texture(texture) {\n if (this._texture === texture) {\n return;\n }\n if (this._texture) {\n this.rendererMain.textureTracker.decrementTextureRefCount(this._texture);\n }\n if (texture) {\n this.rendererMain.textureTracker.incrementTextureRefCount(texture);\n }\n this._texture = texture;\n if (texture) {\n this.coreNode.loadTexture(texture.txType, texture.props, texture.options);\n }\n else {\n this.coreNode.unloadTexture();\n }\n }\n get rtt() {\n return this.coreNode.rtt;\n }\n set rtt(value) {\n if (value) {\n this.texture = this.rendererMain.createTexture('RenderTexture', {\n width: this.width,\n height: this.height,\n }, { preload: true, flipY: true });\n }\n this.coreNode.rtt = value;\n }\n get parentHasRenderTexture() {\n return this.coreNode.parentHasRenderTexture;\n }\n set parentHasRenderTexture(value) {\n this.coreNode.parentHasRenderTexture = value;\n }\n onTextureLoaded = (target, payload) => {\n this.emit('loaded', payload);\n };\n onTextureFailed = (target, payload) => {\n this.emit('failed', payload);\n };\n onTextureFreed = (target, payload) => {\n this.emit('freed', payload);\n };\n onOutOfBounds = (target, payload) => {\n this.emit('outOfBounds', payload);\n };\n onInBounds = (target, payload) => {\n this.emit('inBounds', payload);\n };\n onOutOfViewport = (target, payload) => {\n this.emit('outOfViewport', payload);\n };\n onInViewport = (target, payload) => {\n this.emit('inViewport', payload);\n };\n //#endregion Texture\n get shader() {\n return this._shader;\n }\n set shader(shader) {\n if (this._shader === shader) {\n return;\n }\n this._shader = shader;\n if (shader) {\n this.coreNode.loadShader(shader.shType, shader.props);\n }\n }\n get data() {\n return this._data;\n }\n set data(d) {\n this._data = santizeCustomDataMap(d);\n }\n destroy() {\n this.emit('beforeDestroy', {});\n //use while loop since setting parent to null removes it from array\n let child = this.children[0];\n while (child) {\n child.destroy();\n child = this.children[0];\n }\n this.coreNode.destroy();\n this.parent = null;\n this.texture = null;\n this.emit('afterDestroy', {});\n this.removeAllListeners();\n }\n flush() {\n // No-op\n }\n animate(props, settings) {\n const animation = new CoreAnimation(this.coreNode, props, settings);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const controller = new CoreAnimationController(this.stage.animationManager, animation);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return controller;\n }\n}\n//# sourceMappingURL=MainOnlyNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Platform render loop initiator\n */\nexport const startLoop = (stage) => {\n let isIdle = false;\n const runLoop = () => {\n stage.updateAnimations();\n if (!stage.hasSceneUpdates()) {\n // We still need to calculate the fps else it looks like the app is frozen\n stage.calculateFps();\n setTimeout(runLoop, 16.666666666666668);\n if (!isIdle) {\n stage.emit('idle');\n isIdle = true;\n }\n return;\n }\n isIdle = false;\n stage.drawFrame();\n requestAnimationFrame(runLoop);\n };\n requestAnimationFrame(runLoop);\n};\n/**\n * Return unix timestamp\n * @return {number}\n */\nexport const getTimeStamp = () => {\n return performance ? performance.now() : Date.now();\n};\n//# sourceMappingURL=platform.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreAnimation } from './CoreAnimation.js';\nexport class AnimationManager {\n activeAnimations = new Set();\n registerAnimation(animation) {\n this.activeAnimations.add(animation);\n }\n unregisterAnimation(animation) {\n this.activeAnimations.delete(animation);\n }\n update(dt) {\n this.activeAnimations.forEach((animation) => {\n animation.update(dt);\n });\n }\n}\n//# sourceMappingURL=AnimationManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {} from '../textures/Texture.js';\nexport class ImageWorkerManager {\n imageWorkersEnabled = true;\n messageManager = {};\n workers = [];\n workerIndex = 0;\n constructor(numImageWorkers) {\n this.workers = this.createWorkers(numImageWorkers);\n this.workers.forEach((worker) => {\n worker.onmessage = this.handleMessage.bind(this);\n });\n }\n handleMessage(event) {\n const { src, data, error } = event.data;\n const msg = this.messageManager[src];\n if (msg) {\n const [resolve, reject] = msg;\n delete this.messageManager[src];\n if (error) {\n reject(new Error(error));\n }\n else {\n resolve(data);\n }\n }\n }\n createWorkers(numWorkers = 1) {\n const workerCode = `\n function hasAlphaChannel(mimeType) {\n return (mimeType.indexOf(\"image/png\") !== -1);\n }\n\n function getImage(src, premultiplyAlpha) {\n return new Promise(function(resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', src, true);\n xhr.responseType = 'blob';\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n var blob = xhr.response;\n var hasAlphaChannel = premultiplyAlpha !== undefined ? premultiplyAlpha : hasAlphaChannel(blob.type);\n\n createImageBitmap(blob, {\n premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',\n colorSpaceConversion: 'none',\n imageOrientation: 'none'\n }).then(function(data) {\n resolve({ data: data, premultiplyAlpha: premultiplyAlpha });\n }).catch(function(error) {\n reject(error);\n });\n } else {\n reject(new Error('Failed to load image: ' + xhr.statusText));\n }\n };\n\n xhr.onerror = function() {\n reject(new Error('Network error occurred while trying to fetch the image.'));\n };\n\n xhr.send();\n });\n }\n\n self.onmessage = (event) => {\n var src = event.data.src;\n var premultiplyAlpha = event.data.premultiplyAlpha;\n\n getImage(src, premultiplyAlpha)\n .then(function(data) {\n self.postMessage({ src: src, data: data }, [data.data]);\n })\n .catch(function(error) {\n self.postMessage({ src: src, error: error.message });\n });\n };\n `;\n const blob = new Blob([workerCode.replace('\"use strict\";', '')], {\n type: 'application/javascript',\n });\n const blobURL = (self.URL ? URL : webkitURL).createObjectURL(blob);\n const workers = [];\n for (let i = 0; i < numWorkers; i++) {\n workers.push(new Worker(blobURL));\n }\n return workers;\n }\n getNextWorker() {\n const worker = this.workers[this.workerIndex];\n this.workerIndex = (this.workerIndex + 1) % this.workers.length;\n return worker;\n }\n convertUrlToAbsolute(url) {\n const absoluteUrl = new URL(url, self.location.href);\n return absoluteUrl.href;\n }\n getImage(src, premultiplyAlpha) {\n return new Promise((resolve, reject) => {\n try {\n if (this.workers) {\n const absoluteSrcUrl = this.convertUrlToAbsolute(src);\n this.messageManager[absoluteSrcUrl] = [resolve, reject];\n this.getNextWorker().postMessage({\n src: absoluteSrcUrl,\n premultiplyAlpha,\n });\n }\n }\n catch (error) {\n reject(error);\n }\n });\n }\n}\n//# sourceMappingURL=ImageWorker.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Texture } from './Texture.js';\n/**\n * Texture consisting of a random grid of greyscale pixels\n *\n * @remarks\n * The width and height of the NoiseTexture are defined by it's\n * {@link NoiseTextureProps.width} and {@link NoiseTextureProps.height}\n * properties. The {@link NoiseTextureProps.cacheId} prop can be varied in order\n * to bypass cache and get newly randomized texture data.\n */\nexport class NoiseTexture extends Texture {\n props;\n constructor(txManager, props) {\n super(txManager);\n this.props = NoiseTexture.resolveDefaults(props);\n }\n async getTextureData() {\n const { width, height } = this.props;\n const size = width * height * 4;\n const pixelData8 = new Uint8ClampedArray(size);\n for (let i = 0; i < size; i += 4) {\n const v = Math.floor(Math.random() * 256);\n pixelData8[i] = v;\n pixelData8[i + 1] = v;\n pixelData8[i + 2] = v;\n pixelData8[i + 3] = 255;\n }\n return {\n data: new ImageData(pixelData8, width, height),\n };\n }\n static makeCacheKey(props) {\n const resolvedProps = NoiseTexture.resolveDefaults(props);\n return `NoiseTexture,${resolvedProps.width},${resolvedProps.height},${resolvedProps.cacheId}`;\n }\n static resolveDefaults(props) {\n return {\n width: props.width ?? 128,\n height: props.height ?? 128,\n cacheId: props.cacheId ?? 0,\n };\n }\n static z$__type__Props;\n}\n//# sourceMappingURL=NoiseTexture.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../utils.js';\nimport { ImageWorkerManager } from './lib/ImageWorker.js';\nimport { ColorTexture } from './textures/ColorTexture.js';\nimport { ImageTexture } from './textures/ImageTexture.js';\nimport { NoiseTexture } from './textures/NoiseTexture.js';\nimport { SubTexture } from './textures/SubTexture.js';\nimport { RenderTexture } from './textures/RenderTexture.js';\nexport class CoreTextureManager {\n /**\n * Amount of used memory defined in pixels\n */\n usedMemory = 0;\n txConstructors = {};\n textureKeyCache = new Map();\n textureIdCache = new Map();\n ctxTextureCache = new WeakMap();\n textureRefCountMap = new WeakMap();\n imageWorkerManager = null;\n hasCreateImageBitmap = !!self.createImageBitmap;\n hasWorker = !!self.Worker;\n /**\n * Renderer that this texture manager is associated with\n *\n * @remarks\n * This MUST be set before the texture manager is used. Otherwise errors\n * will occur when using the texture manager.\n */\n renderer;\n constructor(numImageWorkers) {\n // Register default known texture types\n if (this.hasCreateImageBitmap && this.hasWorker) {\n this.imageWorkerManager = new ImageWorkerManager(numImageWorkers);\n }\n if (!this.hasCreateImageBitmap) {\n console.warn('[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.');\n }\n this.registerTextureType('ImageTexture', ImageTexture);\n this.registerTextureType('ColorTexture', ColorTexture);\n this.registerTextureType('NoiseTexture', NoiseTexture);\n this.registerTextureType('SubTexture', SubTexture);\n this.registerTextureType('RenderTexture', RenderTexture);\n }\n registerTextureType(textureType, textureClass) {\n this.txConstructors[textureType] = textureClass;\n }\n loadTexture(textureType, props, options = null) {\n const TextureClass = this.txConstructors[textureType];\n if (!TextureClass) {\n throw new Error(`Texture type \"${textureType}\" is not registered`);\n }\n let texture;\n // If an ID is specified, try to get the texture from the ID cache first\n if (options?.id !== undefined && this.textureIdCache.has(options.id)) {\n // console.log('Getting texture by texture desc ID', options.id);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n texture = this.textureIdCache.get(options.id);\n }\n // If the texture is not found in the ID cache, try to get it from the key cache\n if (!texture) {\n const descId = options?.id;\n const cacheKey = options?.cacheKey ?? TextureClass.makeCacheKey(props);\n if (cacheKey && this.textureKeyCache.has(cacheKey)) {\n // console.log('Getting texture by cache key', cacheKey);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n texture = this.textureKeyCache.get(cacheKey);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n texture = new TextureClass(this, props);\n }\n if (descId) {\n this.addTextureIdToCache(descId, cacheKey, texture);\n }\n }\n if (options?.preload) {\n const ctxTx = this.getCtxTexture(texture);\n ctxTx.load();\n }\n return texture;\n }\n /**\n * Add a `Texture` to the texture cache by its texture desc ID and cache key\n *\n * @remarks\n * This is used internally by the `CoreTextureManager` to cache textures\n * when they are created.\n *\n * It handles updating the texture ID cache, texture key cache, and texture\n * reference count map.\n *\n * @param textureDescId\n * @param cacheKey\n * @param texture\n */\n addTextureIdToCache(textureDescId, cacheKey, texture) {\n const { textureIdCache, textureRefCountMap } = this;\n textureIdCache.set(textureDescId, texture);\n if (textureRefCountMap.has(texture)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n textureRefCountMap.get(texture).count++;\n }\n else {\n textureRefCountMap.set(texture, { cacheKey, count: 1 });\n if (cacheKey) {\n this.textureKeyCache.set(cacheKey, texture);\n }\n }\n }\n /**\n * Remove a `Texture` from the texture cache by its texture desc ID\n *\n * @remarks\n * This is called externally by when we know (at least reasonably well) that\n * the `TextureRef` in the Main API space has been is no longer used. This\n * allows us to remove the `Texture` from the Usage Cache so that it can be\n * garbage collected as well.\n *\n * @param textureDescId\n */\n removeTextureIdFromCache(textureDescId) {\n const { textureIdCache, textureRefCountMap } = this;\n const texture = textureIdCache.get(textureDescId);\n if (!texture) {\n // Sometimes a texture is removed from the cache before it ever gets\n // added to the cache. This is fine and not an error.\n return;\n }\n textureIdCache.delete(textureDescId);\n if (textureRefCountMap.has(texture)) {\n const refCountObj = textureRefCountMap.get(texture);\n assertTruthy(refCountObj);\n refCountObj.count--;\n if (refCountObj.count === 0) {\n textureRefCountMap.delete(texture);\n // If the texture is not referenced anywhere else, remove it from the key cache\n // as well.\n // This should allow the `Texture` instance to be garbage collected.\n if (refCountObj.cacheKey) {\n this.textureKeyCache.delete(refCountObj.cacheKey);\n }\n }\n }\n // Free the ctx texture if it exists.\n this.ctxTextureCache.get(texture)?.free();\n }\n /**\n * Get an object containing debug information about the texture manager.\n *\n * @returns\n */\n getDebugInfo() {\n // const textureSet = new Set();\n // for (const texture of this.textureIdCache.values()) {\n // textureSet.add(texture);\n // }\n // for (const texture of this.textureKeyCache.values()) {\n // textureSet.add(texture);\n // }\n // TODO: Output number of bytes used by textures\n return {\n keyCacheSize: this.textureKeyCache.size,\n idCacheSize: this.textureIdCache.size,\n };\n }\n /**\n * Get a CoreContextTexture for the given Texture source.\n *\n * @remarks\n * If the texture source already has an allocated CoreContextTexture, it will be\n * returned from the cache. Otherwise, a new CoreContextTexture will be created\n * and cached.\n *\n * ContextTextures are stored in a WeakMap, so they will be garbage collected\n * when the Texture source is no longer referenced.\n *\n * @param textureSource\n * @returns\n */\n getCtxTexture(textureSource) {\n if (this.ctxTextureCache.has(textureSource)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.ctxTextureCache.get(textureSource);\n }\n const texture = this.renderer.createCtxTexture(textureSource);\n this.ctxTextureCache.set(textureSource, texture);\n return texture;\n }\n}\n//# sourceMappingURL=CoreTextureManager.js.map","export class TextureMemoryManager {\n memUsed = 0;\n textures = new Map();\n threshold;\n /**\n * @param byteThreshold Number of texture bytes to trigger garbage collection\n */\n constructor(byteThreshold) {\n this.threshold = byteThreshold;\n // If the threshold is 0, we disable the memory manager by replacing the\n // setTextureMemUse method with a no-op function.\n if (byteThreshold === 0) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.setTextureMemUse = () => { };\n }\n }\n setTextureMemUse(ctxTexture, byteSize) {\n if (this.textures.has(ctxTexture)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.memUsed -= this.textures.get(ctxTexture);\n }\n if (byteSize === 0) {\n this.textures.delete(ctxTexture);\n return;\n }\n else {\n this.memUsed += byteSize;\n this.textures.set(ctxTexture, byteSize);\n }\n if (this.memUsed > this.threshold) {\n this.gc();\n }\n }\n gc() {\n this.textures.forEach((byteSize, ctxTexture) => {\n if (!ctxTexture.renderable) {\n ctxTexture.free();\n }\n });\n }\n}\n//# sourceMappingURL=TextureMemoryManager.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { startLoop, getTimeStamp } from './platform.js';\nimport { WebGlCoreRenderer } from './renderers/webgl/WebGlCoreRenderer.js';\nimport { assertTruthy } from '../utils.js';\nimport { AnimationManager } from './animations/AnimationManager.js';\nimport { CoreNode } from './CoreNode.js';\nimport { CoreTextureManager } from './CoreTextureManager.js';\nimport { TrFontManager } from './text-rendering/TrFontManager.js';\nimport { CoreShaderManager } from './CoreShaderManager.js';\nimport { SdfTextRenderer } from './text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js';\nimport { CanvasTextRenderer } from './text-rendering/renderers/CanvasTextRenderer.js';\nimport { EventEmitter } from '../common/EventEmitter.js';\nimport { ContextSpy } from './lib/ContextSpy.js';\nimport { TextureMemoryManager } from './TextureMemoryManager.js';\nconst bufferMemory = 2e6;\nconst autoStart = true;\nexport class Stage extends EventEmitter {\n options;\n /// Module Instances\n animationManager;\n txManager;\n txMemManager;\n fontManager;\n textRenderers;\n shManager;\n renderer;\n root;\n boundsMargin;\n /// State\n deltaTime = 0;\n lastFrameTime = 0;\n currentFrameTime = 0;\n fpsNumFrames = 0;\n fpsElapsedTime = 0;\n renderRequested = false;\n /// Debug data\n contextSpy = null;\n /**\n * Stage constructor\n */\n constructor(options) {\n super();\n this.options = options;\n const { canvas, clearColor, rootId, debug, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, txMemByteThreshold, } = options;\n this.txManager = new CoreTextureManager(numImageWorkers);\n this.txMemManager = new TextureMemoryManager(txMemByteThreshold);\n this.shManager = new CoreShaderManager();\n this.animationManager = new AnimationManager();\n this.contextSpy = enableContextSpy ? new ContextSpy() : null;\n let bm = [0, 0, 0, 0];\n if (boundsMargin) {\n bm = Array.isArray(boundsMargin)\n ? boundsMargin\n : [boundsMargin, boundsMargin, boundsMargin, boundsMargin];\n }\n this.boundsMargin = bm;\n if (debug?.monitorTextureCache) {\n setInterval(() => {\n assertTruthy(this.txManager);\n const debugInfo = this.txManager.getDebugInfo();\n console.log('Texture ID Cache Size: ', debugInfo.idCacheSize);\n console.log('Texture Key Cache Size: ', debugInfo.keyCacheSize);\n }, 1000);\n }\n this.renderer = new WebGlCoreRenderer({\n stage: this,\n canvas,\n pixelRatio: options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio,\n clearColor: clearColor ?? 0xff000000,\n bufferMemory,\n txManager: this.txManager,\n txMemManager: this.txMemManager,\n shManager: this.shManager,\n contextSpy: this.contextSpy,\n });\n // Must do this after renderer is created\n this.txManager.renderer = this.renderer;\n this.textRenderers = {\n canvas: new CanvasTextRenderer(this),\n sdf: new SdfTextRenderer(this),\n };\n this.fontManager = new TrFontManager(this.textRenderers);\n // create root node\n const rootNode = new CoreNode(this, {\n id: rootId,\n x: 0,\n y: 0,\n width: appWidth,\n height: appHeight,\n alpha: 1,\n autosize: false,\n clipping: false,\n color: 0x00000000,\n colorTop: 0x00000000,\n colorBottom: 0x00000000,\n colorLeft: 0x00000000,\n colorRight: 0x00000000,\n colorTl: 0x00000000,\n colorTr: 0x00000000,\n colorBl: 0x00000000,\n colorBr: 0x00000000,\n zIndex: 0,\n zIndexLocked: 0,\n scaleX: 1,\n scaleY: 1,\n mountX: 0,\n mountY: 0,\n mount: 0,\n pivot: 0.5,\n pivotX: 0.5,\n pivotY: 0.5,\n rotation: 0,\n parent: null,\n texture: null,\n textureOptions: null,\n shader: null,\n shaderProps: null,\n rtt: false,\n });\n this.root = rootNode;\n // execute platform start loop\n if (autoStart) {\n startLoop(this);\n }\n }\n /**\n * Update animations\n */\n updateAnimations() {\n const { animationManager } = this;\n if (!this.root) {\n return;\n }\n this.lastFrameTime = this.currentFrameTime;\n this.currentFrameTime = getTimeStamp();\n this.deltaTime = !this.lastFrameTime\n ? 100 / 6\n : this.currentFrameTime - this.lastFrameTime;\n this.emit('frameTick', {\n time: this.currentFrameTime,\n delta: this.deltaTime,\n });\n // step animation\n animationManager.update(this.deltaTime);\n }\n /**\n * Check if the scene has updates\n */\n hasSceneUpdates() {\n return !!this.root.updateType || this.renderRequested;\n }\n /**\n * Start a new frame draw\n */\n drawFrame() {\n const { renderer, renderRequested } = this;\n // Update tree if needed\n if (this.root.updateType !== 0) {\n this.root.update(this.deltaTime, this.root.clippingRect);\n }\n // Reset render operations and clear the canvas\n renderer?.reset();\n // If we have RTT nodes draw them first\n // So we can use them as textures in the main scene\n if (renderer.rttNodes.length > 0) {\n renderer.renderRTTNodes();\n }\n // Fill quads buffer\n this.addQuads(this.root);\n // Perform render pass\n renderer?.render();\n this.calculateFps();\n // Reset renderRequested flag if it was set\n if (renderRequested) {\n this.renderRequested = false;\n }\n }\n calculateFps() {\n // If there's an FPS update interval, emit the FPS update event\n // when the specified interval has elapsed.\n const { fpsUpdateInterval } = this.options;\n if (fpsUpdateInterval) {\n this.fpsNumFrames++;\n this.fpsElapsedTime += this.deltaTime;\n if (this.fpsElapsedTime >= fpsUpdateInterval) {\n const fps = Math.round((this.fpsNumFrames * 1000) / this.fpsElapsedTime);\n this.fpsNumFrames = 0;\n this.fpsElapsedTime = 0;\n this.emit('fpsUpdate', {\n fps,\n contextSpyData: this.contextSpy?.getData() ?? null,\n });\n this.contextSpy?.reset();\n }\n }\n }\n addQuads(node) {\n assertTruthy(this.renderer && node.globalTransform);\n if (node.isRenderable) {\n node.renderQuads(this.renderer);\n }\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (!child) {\n continue;\n }\n if (child?.worldAlpha === 0) {\n continue;\n }\n this.addQuads(child);\n }\n }\n /**\n * Request a render pass without forcing an update\n */\n requestRender() {\n this.renderRequested = true;\n }\n /**\n * Given a font name, and possible renderer override, return the best compatible text renderer.\n *\n * @remarks\n * Will always return at least a canvas renderer if no other suitable renderer can be resolved.\n *\n * @param fontFamily\n * @param textRendererOverride\n * @returns\n */\n resolveTextRenderer(trProps, textRendererOverride = null) {\n let rendererId = textRendererOverride;\n let overrideFallback = false;\n // Check if the override is valid (if one is provided)\n if (rendererId) {\n const possibleRenderer = this.textRenderers[rendererId];\n if (!possibleRenderer) {\n console.warn(`Text renderer override '${rendererId}' not found.`);\n rendererId = null;\n overrideFallback = true;\n }\n else if (!possibleRenderer.canRenderFont(trProps)) {\n console.warn(`Cannot use override text renderer '${rendererId}' for font`, trProps);\n rendererId = null;\n overrideFallback = true;\n }\n }\n if (!rendererId) {\n // Iterate through the text renderers and find the first one that can render the font\n for (const [trId, tr] of Object.entries(this.textRenderers)) {\n if (trId === 'canvas') {\n // Canvas is always a fallback\n continue;\n }\n if (tr.canRenderFont(trProps)) {\n rendererId = trId;\n break;\n }\n }\n if (!rendererId) {\n // If no renderer can be found, use the canvas renderer\n rendererId = 'canvas';\n }\n }\n if (overrideFallback) {\n console.warn(`Falling back to text renderer ${String(rendererId)}`);\n }\n // By now we are guaranteed to have a valid rendererId (at least Canvas);\n const resolvedTextRenderer = this.textRenderers[rendererId];\n assertTruthy(resolvedTextRenderer, 'resolvedTextRenderer undefined');\n // Need to explicitly cast to TextRenderer because TS doesn't like\n // the covariant state argument in the setter method map\n return resolvedTextRenderer;\n }\n}\n//# sourceMappingURL=Stage.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CoreNode, UpdateType } from './CoreNode.js';\nimport { assertTruthy } from '../utils.js';\nimport { Matrix3d } from './lib/Matrix3d.js';\nexport class CoreTextNode extends CoreNode {\n textRenderer;\n trState;\n _textRendererOverride = null;\n constructor(stage, props) {\n super(stage, props);\n this._textRendererOverride = props.textRendererOverride;\n const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState({\n x: this.absX,\n y: this.absY,\n width: props.width,\n height: props.height,\n textAlign: props.textAlign,\n color: props.color,\n zIndex: props.zIndex,\n contain: props.contain,\n scrollable: props.scrollable,\n scrollY: props.scrollY,\n offsetY: props.offsetY,\n letterSpacing: props.letterSpacing,\n debug: props.debug,\n fontFamily: props.fontFamily,\n fontSize: props.fontSize,\n fontStretch: props.fontStretch,\n fontStyle: props.fontStyle,\n fontWeight: props.fontWeight,\n text: props.text,\n lineHeight: props.lineHeight,\n maxLines: props.maxLines,\n textBaseline: props.textBaseline,\n verticalAlign: props.verticalAlign,\n overflowSuffix: props.overflowSuffix,\n });\n this.textRenderer = resolvedTextRenderer;\n this.trState = textRendererState;\n }\n onTextLoaded = () => {\n const { contain } = this;\n const setWidth = this.trState.props.width;\n const setHeight = this.trState.props.height;\n const calcWidth = this.trState.textW || 0;\n const calcHeight = this.trState.textH || 0;\n if (contain === 'both') {\n this.props.width = setWidth;\n this.props.height = setHeight;\n }\n else if (contain === 'width') {\n this.props.width = setWidth;\n this.props.height = calcHeight;\n }\n else if (contain === 'none') {\n this.props.width = calcWidth;\n this.props.height = calcHeight;\n }\n this.updateLocalTransform();\n // Incase the RAF loop has been stopped already before text was loaded,\n // we request a render so it can be drawn.\n this.stage.requestRender();\n this.emit('loaded', {\n type: 'text',\n dimensions: {\n width: this.trState.textW || 0,\n height: this.trState.textH || 0,\n },\n });\n };\n onTextFailed = (target, error) => {\n this.emit('failed', {\n type: 'text',\n error,\n });\n };\n get width() {\n return this.props.width;\n }\n set width(value) {\n this.props.width = value;\n this.textRenderer.set.width(this.trState, value);\n // If not containing, we must update the local transform to account for the\n // new width\n if (this.contain === 'none') {\n this.setUpdateType(UpdateType.Local);\n }\n }\n get height() {\n return this.props.height;\n }\n set height(value) {\n this.props.height = value;\n this.textRenderer.set.height(this.trState, value);\n // If not containing in the horizontal direction, we must update the local\n // transform to account for the new height\n if (this.contain !== 'both') {\n this.setUpdateType(UpdateType.Local);\n }\n }\n get color() {\n return this.trState.props.color;\n }\n set color(value) {\n this.textRenderer.set.color(this.trState, value);\n }\n get text() {\n return this.trState.props.text;\n }\n set text(value) {\n this.textRenderer.set.text(this.trState, value);\n }\n get textRendererOverride() {\n return this._textRendererOverride;\n }\n set textRendererOverride(value) {\n this._textRendererOverride = value;\n this.textRenderer.destroyState(this.trState);\n const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState(this.trState.props);\n this.textRenderer = resolvedTextRenderer;\n this.trState = textRendererState;\n }\n get fontSize() {\n return this.trState.props.fontSize;\n }\n set fontSize(value) {\n this.textRenderer.set.fontSize(this.trState, value);\n }\n get fontFamily() {\n return this.trState.props.fontFamily;\n }\n set fontFamily(value) {\n this.textRenderer.set.fontFamily(this.trState, value);\n }\n get fontStretch() {\n return this.trState.props.fontStretch;\n }\n set fontStretch(value) {\n this.textRenderer.set.fontStretch(this.trState, value);\n }\n get fontStyle() {\n return this.trState.props.fontStyle;\n }\n set fontStyle(value) {\n this.textRenderer.set.fontStyle(this.trState, value);\n }\n get fontWeight() {\n return this.trState.props.fontWeight;\n }\n set fontWeight(value) {\n this.textRenderer.set.fontWeight(this.trState, value);\n }\n get textAlign() {\n return this.trState.props.textAlign;\n }\n set textAlign(value) {\n this.textRenderer.set.textAlign(this.trState, value);\n }\n get contain() {\n return this.trState.props.contain;\n }\n set contain(value) {\n this.textRenderer.set.contain(this.trState, value);\n }\n get scrollable() {\n return this.trState.props.scrollable;\n }\n set scrollable(value) {\n this.textRenderer.set.scrollable(this.trState, value);\n }\n get scrollY() {\n return this.trState.props.scrollY;\n }\n set scrollY(value) {\n this.textRenderer.set.scrollY(this.trState, value);\n }\n get offsetY() {\n return this.trState.props.offsetY;\n }\n set offsetY(value) {\n this.textRenderer.set.offsetY(this.trState, value);\n }\n get letterSpacing() {\n return this.trState.props.letterSpacing;\n }\n set letterSpacing(value) {\n this.textRenderer.set.letterSpacing(this.trState, value);\n }\n get lineHeight() {\n return this.trState.props.lineHeight;\n }\n set lineHeight(value) {\n if (this.textRenderer.set.lineHeight) {\n this.textRenderer.set.lineHeight(this.trState, value);\n }\n }\n get maxLines() {\n return this.trState.props.maxLines;\n }\n set maxLines(value) {\n if (this.textRenderer.set.maxLines) {\n this.textRenderer.set.maxLines(this.trState, value);\n }\n }\n get textBaseline() {\n return this.trState.props.textBaseline;\n }\n set textBaseline(value) {\n if (this.textRenderer.set.textBaseline) {\n this.textRenderer.set.textBaseline(this.trState, value);\n }\n }\n get verticalAlign() {\n return this.trState.props.verticalAlign;\n }\n set verticalAlign(value) {\n if (this.textRenderer.set.verticalAlign) {\n this.textRenderer.set.verticalAlign(this.trState, value);\n }\n }\n get overflowSuffix() {\n return this.trState.props.overflowSuffix;\n }\n set overflowSuffix(value) {\n if (this.textRenderer.set.overflowSuffix) {\n this.textRenderer.set.overflowSuffix(this.trState, value);\n }\n }\n get debug() {\n return this.trState.props.debug;\n }\n set debug(value) {\n this.textRenderer.set.debug(this.trState, value);\n }\n update(delta, parentClippingRect) {\n super.update(delta, parentClippingRect);\n assertTruthy(this.globalTransform);\n // globalTransform is updated in super.update(delta)\n this.textRenderer.set.x(this.trState, this.globalTransform.tx);\n this.textRenderer.set.y(this.trState, this.globalTransform.ty);\n }\n checkRenderProps() {\n if (this.trState.props.text !== '') {\n return true;\n }\n return super.checkRenderProps();\n }\n onChangeIsRenderable(isRenderable) {\n super.onChangeIsRenderable(isRenderable);\n this.textRenderer.setIsRenderable(this.trState, isRenderable);\n }\n renderQuads(renderer) {\n assertTruthy(this.globalTransform);\n // Prevent quad rendering if parent has a render texture\n // and this node is not the render texture\n if (this.parentHasRenderTexture) {\n if (!renderer.renderToTextureActive) {\n return;\n }\n // Prevent quad rendering if parent render texture is not the active render texture\n if (this.parentRenderTexture !== renderer.activeRttNode) {\n return;\n }\n }\n if (this.parentHasRenderTexture && this.props.parent?.rtt) {\n this.globalTransform = Matrix3d.identity();\n this.globalTransform.multiply(this.localTransform ?? Matrix3d.identity());\n }\n assertTruthy(this.globalTransform);\n this.textRenderer.renderQuads(this.trState, this.globalTransform, this.clippingRect, this.worldAlpha, this.parentHasRenderTexture, this.framebufferDimensions);\n }\n /**\n * Destroy the node and cleanup all resources\n */\n destroy() {\n super.destroy();\n this.textRenderer.destroyState(this.trState);\n }\n /**\n * Resolve a text renderer and a new state based on the current text renderer props provided\n * @param props\n * @returns\n */\n resolveTextRendererAndState(props) {\n const resolvedTextRenderer = this.stage.resolveTextRenderer(props, this._textRendererOverride);\n const textRendererState = resolvedTextRenderer.createState(props);\n textRendererState.emitter.on('loaded', this.onTextLoaded);\n textRendererState.emitter.on('failed', this.onTextFailed);\n resolvedTextRenderer.scheduleUpdateState(textRendererState);\n return {\n resolvedTextRenderer,\n textRendererState,\n };\n }\n}\n//# sourceMappingURL=CoreTextNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MainOnlyNode, getNewId } from './MainOnlyNode.js';\nimport { CoreTextNode } from '../../core/CoreTextNode.js';\nexport class MainOnlyTextNode extends MainOnlyNode {\n constructor(props, rendererMain, stage) {\n super(props, rendererMain, stage, new CoreTextNode(stage, {\n id: getNewId(),\n x: props.x,\n y: props.y,\n width: props.width,\n height: props.height,\n alpha: props.alpha,\n autosize: props.autosize,\n clipping: props.clipping,\n color: props.color,\n colorTop: props.colorTop,\n colorBottom: props.colorBottom,\n colorLeft: props.colorLeft,\n colorRight: props.colorRight,\n colorTl: props.colorTl,\n colorTr: props.colorTr,\n colorBl: props.colorBl,\n colorBr: props.colorBr,\n zIndex: props.zIndex,\n zIndexLocked: props.zIndexLocked,\n scaleX: props.scaleX,\n scaleY: props.scaleY,\n mountX: props.mountX,\n mountY: props.mountY,\n mount: props.mount,\n pivot: props.pivot,\n pivotX: props.pivotX,\n pivotY: props.pivotY,\n rotation: props.rotation,\n // Text properties\n text: props.text,\n fontSize: props.fontSize,\n fontFamily: props.fontFamily,\n fontWeight: props.fontWeight,\n fontStretch: props.fontStretch,\n fontStyle: props.fontStyle,\n contain: props.contain,\n scrollable: props.scrollable,\n letterSpacing: props.letterSpacing,\n textAlign: props.textAlign,\n scrollY: props.scrollY,\n offsetY: props.offsetY,\n textRendererOverride: props.textRendererOverride,\n lineHeight: props.lineHeight,\n maxLines: props.maxLines,\n textBaseline: props.textBaseline,\n verticalAlign: props.verticalAlign,\n overflowSuffix: props.overflowSuffix,\n debug: props.debug,\n // These properties will get set appropriately in the base MainOnlyNode class\n parent: null,\n texture: null,\n textureOptions: null,\n shader: null,\n shaderProps: null,\n rtt: false,\n parentHasRenderTexture: false,\n }));\n }\n get text() {\n return this.coreNode.text;\n }\n set text(value) {\n this.coreNode.text = value;\n }\n get textRendererOverride() {\n return this.coreNode.textRendererOverride;\n }\n set textRendererOverride(value) {\n this.coreNode.textRendererOverride = value;\n }\n get fontSize() {\n return this.coreNode.fontSize;\n }\n set fontSize(value) {\n this.coreNode.fontSize = value;\n }\n get fontFamily() {\n return this.coreNode.fontFamily;\n }\n set fontFamily(value) {\n this.coreNode.fontFamily = value;\n }\n get fontWeight() {\n return this.coreNode.fontWeight;\n }\n set fontWeight(value) {\n this.coreNode.fontWeight = value;\n }\n get fontStretch() {\n return this.coreNode.fontStretch;\n }\n set fontStretch(value) {\n this.coreNode.fontStretch = value;\n }\n get fontStyle() {\n return this.coreNode.fontStyle;\n }\n set fontStyle(value) {\n this.coreNode.fontStyle = value;\n }\n get textAlign() {\n return this.coreNode.textAlign;\n }\n set textAlign(value) {\n this.coreNode.textAlign = value;\n }\n get contain() {\n return this.coreNode.contain;\n }\n set contain(value) {\n this.coreNode.contain = value;\n }\n get scrollable() {\n return this.coreNode.scrollable;\n }\n set scrollable(value) {\n this.coreNode.scrollable = value;\n }\n get scrollY() {\n return this.coreNode.scrollY;\n }\n set scrollY(value) {\n this.coreNode.scrollY = value;\n }\n get offsetY() {\n return this.coreNode.offsetY;\n }\n set offsetY(value) {\n this.coreNode.offsetY = value;\n }\n get letterSpacing() {\n return this.coreNode.letterSpacing;\n }\n set letterSpacing(value) {\n this.coreNode.letterSpacing = value;\n }\n get lineHeight() {\n return this.coreNode.lineHeight;\n }\n set lineHeight(value) {\n if (value) {\n this.coreNode.lineHeight = value;\n }\n }\n get maxLines() {\n return this.coreNode.maxLines;\n }\n set maxLines(value) {\n if (value) {\n this.coreNode.maxLines = value;\n }\n }\n get textBaseline() {\n return this.coreNode.textBaseline;\n }\n set textBaseline(value) {\n if (value) {\n this.coreNode.textBaseline = value;\n }\n }\n get verticalAlign() {\n return this.coreNode.verticalAlign;\n }\n set verticalAlign(value) {\n if (value) {\n this.coreNode.verticalAlign = value;\n }\n }\n get overflowSuffix() {\n return this.coreNode.overflowSuffix;\n }\n set overflowSuffix(value) {\n if (value) {\n this.coreNode.overflowSuffix = value;\n }\n }\n get debug() {\n return this.coreNode.debug;\n }\n set debug(value) {\n this.coreNode.debug = value;\n }\n}\n//# sourceMappingURL=MainOnlyTextNode.js.map","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast Cable Communications Management, LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertTruthy } from '../../utils.js';\nimport { MainOnlyNode, getNewId } from './MainOnlyNode.js';\nimport { Stage, } from '../../core/Stage.js';\nimport { MainOnlyTextNode } from './MainOnlyTextNode.js';\nimport { loadCoreExtension } from '../utils.js';\nexport class MainCoreDriver {\n root = null;\n stage = null;\n rendererMain = null;\n async init(rendererMain, rendererSettings, canvas) {\n this.stage = new Stage({\n rootId: getNewId(),\n appWidth: rendererSettings.appWidth,\n appHeight: rendererSettings.appHeight,\n txMemByteThreshold: rendererSettings.txMemByteThreshold,\n boundsMargin: rendererSettings.boundsMargin,\n deviceLogicalPixelRatio: rendererSettings.deviceLogicalPixelRatio,\n devicePhysicalPixelRatio: rendererSettings.devicePhysicalPixelRatio,\n clearColor: rendererSettings.clearColor,\n canvas,\n fpsUpdateInterval: rendererSettings.fpsUpdateInterval,\n enableContextSpy: rendererSettings.enableContextSpy,\n numImageWorkers: rendererSettings.numImageWorkers,\n debug: {\n monitorTextureCache: false,\n },\n });\n this.rendererMain = rendererMain;\n assertTruthy(this.stage.root);\n const node = new MainOnlyNode(rendererMain.resolveNodeDefaults({}), this.rendererMain, this.stage, this.stage.root);\n this.root = node;\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n // Load the Core Extension Module if one was specified.\n if (rendererSettings.coreExtensionModule) {\n await loadCoreExtension(rendererSettings.coreExtensionModule, this.stage);\n }\n // Forward fpsUpdate events from the stage to RendererMain\n this.stage.on('fpsUpdate', ((stage, fpsData) => {\n this.onFpsUpdate(fpsData);\n }));\n this.stage.on('frameTick', ((stage, frameTickData) => {\n this.onFrameTick(frameTickData);\n }));\n this.stage.on('idle', () => {\n this.onIdle();\n });\n }\n createNode(props) {\n assertTruthy(this.rendererMain);\n assertTruthy(this.stage);\n const node = new MainOnlyNode(props, this.rendererMain, this.stage);\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n return node;\n }\n createTextNode(props) {\n assertTruthy(this.rendererMain);\n assertTruthy(this.stage);\n const node = new MainOnlyTextNode(props, this.rendererMain, this.stage);\n node.once('beforeDestroy', this.onBeforeDestroyNode.bind(this, node));\n this.onCreateNode(node);\n return node;\n }\n // TODO: Remove?\n destroyNode(node) {\n node.destroy();\n }\n releaseTexture(id) {\n const { stage } = this;\n assertTruthy(stage);\n stage.txManager.removeTextureIdFromCache(id);\n }\n getRootNode() {\n assertTruthy(this.root);\n return this.root;\n }\n //#region Event Methods\n // The implementations for these event methods are provided by RendererMain\n onCreateNode(node) {\n throw new Error('Method not implemented.');\n }\n onBeforeDestroyNode(node) {\n throw new Error('Method not implemented.');\n }\n onFpsUpdate(fpsData) {\n throw new Error('Method not implemented.');\n }\n onFrameTick(frameTickData) {\n throw new Error('Method not implemented.');\n }\n onIdle() {\n throw new Error('Method not implemented.');\n }\n}\n//# sourceMappingURL=MainCoreDriver.js.map","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = (n + m) >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;\n else if (cmp < 0) n = k - 1;\n else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined\n};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned\n ? UNOWNED\n : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);\n else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(\n () => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n },\n undefined,\n false,\n 0\n ),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if ((arguments.length === 2 && typeof pFetcher === \"object\") || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;\n else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v;\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated)\n queueMicrotask(() =>\n options.onHydrated(key, {\n value: v\n })\n );\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);\n else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p =\n initP !== NO_INIT\n ? initP\n : untrack(() =>\n fetcher(lookup, {\n value: value(),\n refetching\n })\n );\n if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"value\" in p) {\n if (p.status === \"success\") loadEnd(pr, p.value, undefined, lookup);\n else loadEnd(pr, undefined, undefined, lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => (scheduled = false));\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(\n v => loadEnd(p, v, undefined, lookup),\n e => loadEnd(p, undefined, castError(e), lookup)\n );\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));\n else load(false);\n return [\n read,\n {\n refetch: load,\n mutate: setValue\n }\n ];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(\n () => {\n if (!t || !t.fn)\n t = requestCallback(\n () => setDeferred(() => node.value),\n timeout !== undefined\n ? {\n timeout\n }\n : undefined\n );\n return source();\n },\n undefined,\n true\n );\n const [deferred, setDeferred] = createSignal(\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n options\n );\n updateComputation(node);\n setDeferred(() =>\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(\n p => {\n const v = source();\n for (const [key, val] of subs.entries())\n if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);\n else Effects.push(c);\n }\n }\n return v;\n },\n undefined,\n true,\n STALE\n );\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if ((l = subs.get(key))) l.add(listener);\n else subs.set(key, (l = new Set([listener])));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(\n key,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null);\n else if (Owner.cleanups === null) Owner.cleanups = [fn];\n else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t =\n Transition ||\n (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => (t.resolve = res)));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/ createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n return Owner && Owner.context && Owner.context[context.id] !== undefined\n ? Owner.context[context.id]\n : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const { factory: oldFactory, untrack: oldUntrack } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);\n else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current =\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || (!isComp && Transition.sources.has(node))) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;\n else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false);\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(\n node,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n time\n );\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null);\n else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];\n else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];\n else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;\n else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);\n else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);\n else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n } else if (sharedConfig.effects) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n setHydrateContext();\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;\n else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount))\n runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;\n else o.state = PENDING;\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;\n else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, (owner && owner.owner) || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects)\n Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });\n else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(\n () =>\n (res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n })),\n undefined\n );\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null);\n else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler =\n typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => (\"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub()));\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n } else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (\n start = 0, end = Math.min(len, newLen);\n start < end && items[start] === newItems[start];\n start++\n );\n for (\n end = len - 1, newEnd = newLen - 1;\n end >= start && newEnd >= start && items[end] === newItems[newEnd];\n end--, newEnd--\n ) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, (len = newLen));\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return (mapped = mapped.slice(0, len));\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || (!!s && $PROXY in s);\n sources[i] = typeof s === \"function\" ? ((proxy = true), createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy(\n {\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++)\n keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n },\n propTraps\n );\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get\n ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind((sourcesMap[key] = [desc.get.bind(source)]))\n }\n : desc.value !== undefined\n ? desc\n : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));\n else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);\n else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n if ($PROXY in props) {\n const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n const res = keys.map(k => {\n return new Proxy(\n {\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n },\n propTraps\n );\n });\n res.push(\n new Proxy(\n {\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n },\n propTraps\n )\n );\n return res;\n }\n const otherObject = {};\n const objects = keys.map(() => ({}));\n for (const propName of Object.getOwnPropertyNames(props)) {\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc =\n !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n let blocked = false;\n let objectIndex = 0;\n for (const k of keys) {\n if (k.includes(propName)) {\n blocked = true;\n isDefaultDesc\n ? (objects[objectIndex][propName] = desc.value)\n : Object.defineProperty(objects[objectIndex], propName, desc);\n }\n ++objectIndex;\n }\n if (!blocked) {\n isDefaultDesc\n ? (otherObject[propName] = desc.value)\n : Object.defineProperty(otherObject, propName, desc);\n }\n }\n return [...objects, otherObject];\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(\n () =>\n (Comp = comp()) &&\n untrack(() => {\n if (false);\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n })\n );\n };\n wrap.preload = () => p || ((p = fn()).then(mod => (comp = () => mod.default)), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => (keyed ? a === b : !a === !b)\n });\n return createMemo(\n () => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n keyed\n ? c\n : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return props.when;\n }\n )\n )\n : child;\n }\n return props.fallback;\n },\n undefined,\n undefined\n );\n}\nfunction Switch(props) {\n let keyed = false;\n const equals = (a, b) => (keyed ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(\n () => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n },\n undefined,\n {\n equals\n }\n );\n return createMemo(\n () => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n return fn\n ? untrack(() =>\n c(\n keyed\n ? when\n : () => {\n if (untrack(evalConditions)[0] !== index) throw narrowedError(\"Match\");\n return cond.when;\n }\n )\n )\n : c;\n },\n undefined,\n undefined\n );\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load)\n err = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count);\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(\n () => {\n let e;\n if ((e = errored())) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n },\n undefined,\n undefined\n );\n}\n\nconst suspenseListEquals = (a, b) =>\n a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(\n prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n { showContent = true, showFallback = true } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || (next && tail === \"collapsed\") ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n },\n {\n inFallback: false\n }\n );\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.status !== \"success\") p = ref;\n else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(\n () => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n },\n err => {\n error = err;\n set();\n }\n );\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return (flicker = undefined);\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n { showContent = true, showFallback = true } = show ? show() : {};\n if ((!inFallback || (p && p !== \"$$f\")) && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport {\n $DEVCOMP,\n $PROXY,\n $TRACK,\n DEV,\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n batch,\n cancelCallback,\n catchError,\n children,\n createComponent,\n createComputed,\n createContext,\n createDeferred,\n createEffect,\n createMemo,\n createReaction,\n createRenderEffect,\n createResource,\n createRoot,\n createSelector,\n createSignal,\n createUniqueId,\n enableExternalSource,\n enableHydration,\n enableScheduling,\n equalFn,\n from,\n getListener,\n getOwner,\n indexArray,\n lazy,\n mapArray,\n mergeProps,\n observable,\n on,\n onCleanup,\n onError,\n onMount,\n requestCallback,\n resetErrorBoundaries,\n runWithOwner,\n sharedConfig,\n splitProps,\n startTransition,\n untrack,\n useContext,\n useTransition\n};\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n MainCoreDriver,\n RendererMain,\n type RendererMainSettings,\n} from '@lightningjs/renderer';\n\nexport let renderer: RendererMain;\nexport let createShader: RendererMain['createShader'];\n\nexport interface SolidRendererOptions extends RendererMainSettings {\n threadXCoreWorkerUrl?: string;\n rootId: string | HTMLElement;\n}\n\nexport function getRenderer(): RendererMain {\n return renderer;\n}\n\nexport function startLightningRenderer(\n options: Partial = {},\n rootId: string | HTMLElement = 'app',\n): RendererMain {\n const driver = new MainCoreDriver();\n renderer = new RendererMain(options, rootId, driver);\n createShader = renderer.createShader.bind(renderer);\n return renderer;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ElementNode, SolidNode } from './index.js';\n\n/**\n * Children class\n */\nexport default class Children extends Array {\n _parent: ElementNode;\n\n constructor(node: ElementNode) {\n super();\n this._parent = node;\n }\n\n get selected(): ElementNode | undefined {\n // For selected Elements should always be an ElementNode\n return this[this._parent.selected || 0] as ElementNode | undefined;\n }\n\n get firstChild() {\n return this[0];\n }\n\n insert(node: SolidNode, beforeNode: SolidNode) {\n if (beforeNode) {\n const index = this.indexOf(beforeNode);\n this.splice(index, 0, node);\n } else {\n this.push(node);\n }\n\n node.parent = this._parent;\n this._parent._isDirty = true;\n }\n\n remove(node: SolidNode) {\n const nodeIndexToRemove = this.indexOf(node);\n if (nodeIndexToRemove >= 0) {\n this.splice(nodeIndexToRemove, 1);\n }\n }\n}\n","/*\n * If not stated otherwise in this file or this component's LICENSE file the\n * following copyright and licenses apply:\n *\n * Copyright 2023 Comcast\n *\n * Licensed under the Apache License, Version 2.0 (the License);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n AnimationSettings,\n RendererMainSettings,\n} from '@lightningjs/renderer';\nimport type { IntrinsicTextNodeStyleProps } from './intrinsicTypes.js';\n\ninterface Config {\n debug: boolean;\n animationSettings: Partial;\n animationsEnabled: boolean;\n fontSettings: Partial;\n rendererOptions?: Partial;\n}\n\nfunction isDevEnv(): boolean {\n return import.meta.env && import.meta.env.DEV;\n}\nexport const isDev = isDevEnv() || false;\n\nexport const config: Config = {\n debug: false,\n animationsEnabled: true,\n animationSettings: {\n duration: 250,\n easing: 'ease-in-out',\n },\n fontSettings: {\n fontFamily: 'Ubuntu',\n fontSize: 100,\n },\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { config, isDev } from '../config.js';\nimport type { SolidNode, SolidStyles } from './node/index.js';\n\nfunction hasDebug(node: any) {\n return isObject(node) && node.debug;\n}\n\nexport function log(msg: string, node: SolidNode, ...args: any[]) {\n if (isDev) {\n if (config.debug || hasDebug(node) || hasDebug(args[0])) {\n console.log(msg, node, ...args);\n }\n }\n}\n\nexport function isFunc(item: unknown): item is (...args: unknown[]) => unknown {\n return typeof item === 'function';\n}\n\nexport function isObject(\n item: unknown,\n): item is Record {\n return typeof item === 'object';\n}\n\nexport function isArray(item: unknown): item is any[] {\n return Array.isArray(item);\n}\n\nexport function isString(item: unknown): item is string {\n return typeof item === 'string';\n}\n\nexport function isNumber(item: unknown): item is number {\n return typeof item === 'number';\n}\n\nexport function isInteger(item: unknown): item is number {\n return Number.isInteger(item);\n}\n\nexport function keyExists(\n obj: Record,\n keys: (string | number | symbol)[],\n) {\n for (const key of keys) {\n if (key in obj) {\n return true;\n }\n }\n return false;\n}\n\nexport function flattenStyles(\n obj: SolidStyles | undefined | (SolidStyles | undefined)[],\n result: Record = {},\n): SolidStyles {\n if (isArray(obj)) {\n obj.forEach((item) => {\n flattenStyles(item, result);\n });\n } else if (obj) {\n // handle the case where the object is not an array\n for (const key in obj) {\n // be careful of 0 values\n if (result[key as keyof SolidStyles] === undefined) {\n result[key as keyof SolidStyles] = obj[key as keyof SolidStyles];\n }\n }\n }\n\n return result;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isArray, isString } from '../utils.js';\n\nexport type NodeStates =\n | string[]\n | string\n | Record;\n\nexport default class States extends Array {\n private onChange: () => void;\n\n constructor(callback: () => void, initialState: NodeStates = {}) {\n if (isArray(initialState)) {\n super(...initialState);\n } else if (isString(initialState)) {\n super(initialState);\n } else {\n super(\n ...Object.entries(initialState)\n .filter(([_key, value]) => value)\n .map(([key]) => key),\n );\n }\n\n this.onChange = callback;\n return this;\n }\n\n has(state: string) {\n return this.indexOf(state) >= 0;\n }\n\n is(state: string) {\n return this.indexOf(state) >= 0;\n }\n\n add(state: string) {\n this.push(state);\n this.onChange();\n }\n\n toggle(state: string) {\n if (this.has(state)) {\n this.remove(state);\n } else {\n this.add(state);\n }\n }\n\n remove(state: string) {\n const stateIndexToRemove = this.indexOf(state);\n if (stateIndexToRemove >= 0) {\n this.splice(stateIndexToRemove, 1);\n this.onChange();\n }\n }\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { assertTruthy } from '@lightningjs/renderer/utils';\nimport type { ElementNode, SolidNode } from './node/index.js';\n\nexport default function (node: ElementNode): boolean {\n const children = [];\n let hasOrder = false;\n for (let i = 0; i < node.children.length; i++) {\n const c = node.children[i]!;\n // Filter empty text nodes which are place holders for and elements missing dimensions\n if (c.name === 'TextNode') {\n continue;\n }\n\n // Skip layout for non flex items\n if (c.flexItem === false) {\n continue;\n }\n\n // text node hasnt loaded yet - skip layout\n if (c.name === 'text' && c.text !== '' && !(c.width || c.height)) {\n return false;\n }\n\n if (c.flexOrder !== undefined) {\n hasOrder = true;\n }\n\n children.push(c);\n }\n\n if (hasOrder) {\n children.sort((a, b) => (a.flexOrder || 0) - (b.flexOrder || 0));\n }\n\n const numChildren = children.length;\n const direction = node.flexDirection || 'row';\n const isRow = direction === 'row';\n const dimension = isRow ? 'width' : 'height';\n const crossDimension = isRow ? 'height' : 'width';\n const marginOne = isRow ? 'marginLeft' : 'marginTop';\n const marginTwo = isRow ? 'marginRight' : 'marginBottom';\n const prop = isRow ? 'x' : 'y';\n const crossProp = isRow ? 'y' : 'x';\n const containerSize = node[dimension] || 0;\n const containerCrossSize = node[crossDimension] || 0;\n const gap = node.gap || 0;\n const justify = node.justifyContent || 'flexStart';\n const align = node.alignItems;\n let itemSize = 0;\n if (['center', 'spaceBetween', 'spaceEvenly'].includes(justify)) {\n itemSize = children.reduce((prev, c) => prev + (c[dimension] || 0), 0);\n }\n\n // Only align children if container has a cross size\n const crossAlignChild =\n containerCrossSize && align\n ? (c: SolidNode) => {\n if (align === 'flexStart') {\n c[crossProp] = 0;\n } else if (align === 'center') {\n c[crossProp] = (containerCrossSize - (c[crossDimension] || 0)) / 2;\n } else if (align === 'flexEnd') {\n c[crossProp] = containerCrossSize - (c[crossDimension] || 0);\n }\n }\n : (c: SolidNode) => c;\n\n if (justify === 'flexStart') {\n let start = 0;\n children.forEach((c) => {\n c[prop] = start + (c[marginOne] || 0);\n start +=\n (c[dimension] || 0) + gap + (c[marginOne] || 0) + (c[marginTwo] || 0);\n crossAlignChild(c);\n });\n // Update container size\n if (node.flexBoundary !== 'fixed') {\n const calculatedSize = start - gap;\n if (calculatedSize !== node[dimension]) {\n node[dimension] = calculatedSize;\n return true;\n }\n }\n } else if (justify === 'flexEnd') {\n let start = containerSize;\n for (let i = numChildren - 1; i >= 0; i--) {\n const c = children[i];\n assertTruthy(c);\n c[prop] = start - (c[dimension] || 0) - (c[marginTwo] || 0);\n start -=\n (c[dimension] || 0) + gap + (c[marginOne] || 0) + (c[marginTwo] || 0);\n crossAlignChild(c);\n }\n } else if (justify === 'center') {\n let start = (containerSize - (itemSize + gap * (numChildren - 1))) / 2;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + gap;\n crossAlignChild(c);\n });\n } else if (justify === 'spaceBetween') {\n const toPad = (containerSize - itemSize) / (numChildren - 1);\n let start = 0;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + toPad;\n crossAlignChild(c);\n });\n } else if (justify === 'spaceEvenly') {\n const toPad = (containerSize - itemSize) / (numChildren + 1);\n let start = toPad;\n children.forEach((c) => {\n c[prop] = start;\n start += (c[dimension] || 0) + toPad;\n crossAlignChild(c);\n });\n }\n\n // Container was not updated\n return false;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createSignal } from 'solid-js';\nimport type { ElementNode } from './node/index.js';\nexport const [activeElement, setActiveElement] = createSignal<\n ElementNode | undefined\n>(undefined);\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { renderer, createShader } from '../lightningInit.js';\nimport {\n type BorderStyleObject,\n type IntrinsicCommonProps,\n type IntrinsicNodeProps,\n type IntrinsicTextProps,\n type NodeStyles,\n type TextStyles,\n} from '../../index.js';\nimport Children from './children.js';\nimport States, { type NodeStates } from './states.js';\nimport calculateFlex from '../flex.js';\nimport {\n log,\n isArray,\n isNumber,\n isFunc,\n keyExists,\n flattenStyles,\n} from '../utils.js';\nimport { config } from '../../config.js';\nimport { setActiveElement } from '../activeElement.js';\nimport type {\n RendererMain,\n INode,\n INodeAnimatableProps,\n INodeWritableProps,\n ShaderRef,\n Dimensions,\n AnimationSettings,\n NodeLoadedPayload,\n} from '@lightningjs/renderer';\nimport { assertTruthy } from '@lightningjs/renderer/utils';\n\nconst { animationSettings: defaultAnimationSettings } = config;\n\nfunction convertEffectsToShader(styleEffects: any) {\n const effects = [];\n\n for (const [type, props] of Object.entries>(\n styleEffects,\n )) {\n effects.push({ type, props });\n }\n return createShader('DynamicShader', { effects: effects as any });\n}\n\nfunction borderAccessor(\n direction: '' | 'Top' | 'Right' | 'Bottom' | 'Left' = '',\n) {\n return {\n set(\n this: ElementNode,\n value: number | { width: number; color: number | string },\n ) {\n // Format: width || { width, color }\n if (isNumber(value)) {\n value = { width: value, color: 0x000000ff };\n }\n this.effects = {\n ...(this.effects || {}),\n ...{ [`border${direction}`]: value },\n };\n this[`_border${direction}`] = value;\n },\n get(this: ElementNode) {\n return this[`_border${direction}`];\n },\n };\n}\n\nconst LightningRendererNumberProps = [\n 'alpha',\n 'color',\n 'colorTop',\n 'colorRight',\n 'colorLeft',\n 'colorBottom',\n 'colorTl',\n 'colorTr',\n 'colorBl',\n 'colorBr',\n 'height',\n 'fontSize',\n 'lineHeight',\n 'mount',\n 'mountX',\n 'mountY',\n 'pivot',\n 'pivotX',\n 'pivotY',\n 'rotation',\n 'scale',\n 'width',\n 'worldX',\n 'worldY',\n 'x',\n 'y',\n 'zIndex',\n 'zIndexLocked',\n];\n\nconst LightningRendererNonAnimatingProps = [\n 'autosize',\n 'clipping',\n 'contain',\n 'fontFamily',\n 'fontStretch',\n 'fontStyle',\n 'fontWeight',\n 'letterSpacing',\n 'maxLines',\n 'offsetY',\n 'overflowSuffix',\n 'rtt',\n 'scrollable',\n 'scrollY',\n 'src',\n 'text',\n 'textAlign',\n 'textBaseline',\n 'textOverflow',\n 'texture',\n 'verticalAlign',\n 'wordWrap',\n];\n\nexport interface TextNode {\n id?: string;\n name: string;\n text: string;\n parent: ElementNode | undefined;\n zIndex?: number;\n states?: States;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n marginLeft?: number;\n marginRight?: number;\n marginTop?: number;\n marginBottom?: number;\n flexItem?: boolean;\n flexOrder?: number;\n _queueDelete?: boolean;\n}\n\nexport type SolidNode = ElementNode | TextNode;\nexport type SolidStyles = NodeStyles | TextStyles;\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport interface ElementNode\n extends Partial>,\n IntrinsicCommonProps {\n [key: string]: unknown;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport class ElementNode extends Object {\n id?: string;\n debug?: boolean;\n name: string;\n lng: INode | undefined;\n renderer?: RendererMain;\n selected?: number;\n autofocus?: boolean;\n flexItem?: boolean;\n flexOrder?: number;\n flexBoundary?: 'contain' | 'fixed'; // default is undefined - contained for flex calculated size\n _queueDelete?: boolean;\n forwardFocus?:\n | number\n | ((this: ElementNode, elm: ElementNode) => boolean | void);\n\n private _undoStyles?: string[];\n private _renderProps?: IntrinsicNodeProps | IntrinsicTextProps;\n private _effects: any;\n private _parent: ElementNode | undefined;\n private _shader?: ShaderRef;\n private _style?: SolidStyles;\n private _states?: States;\n private _events?: Array<\n [string, (target: ElementNode, event?: Event) => void]\n >;\n private _animationSettings?: Partial;\n public _borderRadius?: number;\n public _border?: BorderStyleObject;\n public _borderLeft?: BorderStyleObject;\n public _borderRight?: BorderStyleObject;\n public _borderTop?: BorderStyleObject;\n public _borderBottom?: BorderStyleObject;\n public _autosized?: boolean; // Public but uses _ prefix\n public _isDirty?: boolean; // Public but uses _ prefix\n private _animationQueue: Array<{\n props: Partial;\n animationSettings?: Partial;\n }> = [];\n private _animationQueueSettings: Partial | undefined;\n private _animationRunning: boolean = false;\n children: Children;\n\n constructor(name: string) {\n super();\n this.name = name;\n this._renderProps = {};\n this.children = new Children(this);\n }\n\n get effects() {\n return this._effects;\n }\n\n set effects(v) {\n this._effects = v;\n if (this.lng) {\n this.shader = convertEffectsToShader(v);\n }\n }\n\n get parent() {\n return this._parent;\n }\n\n set parent(p) {\n this._parent = p;\n if (this.lng) {\n this.lng.parent = p?.lng ?? null;\n }\n }\n\n get shader(): ShaderRef | undefined {\n return this._shader;\n }\n\n set shader(v: Parameters | ShaderRef | undefined) {\n if (isArray(v)) {\n this._shader = createShader(...v) as ShaderRef;\n } else {\n this._shader = v;\n }\n this._sendToLightning('shader', this._shader);\n }\n\n _sendToLightningAnimatable(name: string, value: number | string) {\n if (this.lng) {\n if (\n config.animationsEnabled &&\n this.transition &&\n (this.transition === true || this.transition[name])\n ) {\n const animationSettings =\n this.transition === true || this.transition[name] === true\n ? undefined\n : (this.transition[name] as undefined | AnimationSettings);\n\n return this.animate({ [name]: value }, animationSettings).start();\n }\n\n (this.lng[name as keyof INode] as number | string) = value;\n } else {\n this._renderProps![name] = value;\n }\n }\n\n _sendToLightning(name: string, value: unknown) {\n if (this.lng) {\n (this.lng[name as keyof INodeWritableProps] as unknown) = value;\n } else {\n this._renderProps![name] = value;\n }\n }\n\n animate(\n props: Partial,\n animationSettings?: Partial,\n ) {\n assertTruthy(this.lng, 'Node must be rendered before animating');\n return this.lng.animate(props, animationSettings || this.animationSettings);\n }\n\n chain(\n props: Partial,\n animationSettings?: Partial,\n ) {\n if (this._animationRunning) {\n this._animationQueue = [];\n this._animationRunning = false;\n }\n\n if (animationSettings) {\n this._animationQueueSettings = animationSettings;\n } else if (!this._animationQueueSettings) {\n this._animationQueueSettings =\n animationSettings || this.animationSettings;\n }\n animationSettings = animationSettings || this._animationQueueSettings;\n this._animationQueue.push({ props, animationSettings });\n return this;\n }\n\n async start() {\n let animation = this._animationQueue.shift();\n while (animation) {\n this._animationRunning = true;\n await this.animate(animation.props, animation.animationSettings)\n .start()\n .waitUntilStopped();\n animation = this._animationQueue.shift();\n }\n this._animationRunning = false;\n this._animationQueueSettings = undefined;\n }\n\n setFocus() {\n if (this.lng) {\n // can be 0\n if (this.forwardFocus !== undefined) {\n if (isFunc(this.forwardFocus)) {\n if (this.forwardFocus.call(this, this) !== false) {\n return;\n }\n } else {\n const focusedIndex =\n typeof this.forwardFocus === 'number' ? this.forwardFocus : null;\n if (focusedIndex !== null && focusedIndex < this.children.length) {\n const child = this.children[focusedIndex];\n child instanceof ElementNode && child.setFocus();\n return;\n }\n }\n }\n // Delay setting focus so children can render (useful for Row + Column)\n queueMicrotask(() => setActiveElement(this));\n } else {\n this.autofocus = true;\n }\n }\n\n isTextNode() {\n return this.name === 'text';\n }\n\n _resizeOnTextLoad() {\n this.lng!.on('loaded', (_node: INode, loadedPayload: NodeLoadedPayload) => {\n if (loadedPayload.type === 'text') {\n const { dimensions } = loadedPayload;\n this.parent!.updateLayout(this, dimensions);\n }\n });\n }\n\n getText() {\n return this.children.map((c) => c.text).join('');\n }\n\n destroy() {\n if (this._queueDelete) {\n this.lng?.destroy();\n }\n }\n // Must be set before render\n set onEvents(\n events: Array<[string, (target: ElementNode, event?: any) => void]>,\n ) {\n this._events = events;\n }\n\n get onEvents() {\n return this._events || [];\n }\n\n set style(values: SolidStyles | (SolidStyles | undefined)[]) {\n if (isArray(values)) {\n this._style = flattenStyles(values);\n } else {\n this._style = values;\n }\n // Keys set in JSX are more important\n for (const key in this._style) {\n // be careful of 0 values\n if (this[key as keyof SolidStyles] === undefined) {\n this[key as keyof SolidStyles] = this._style[key as keyof SolidStyles];\n }\n }\n }\n\n get style(): SolidStyles {\n return this._style!;\n }\n\n get hasChildren() {\n return this.children.length > 0;\n }\n\n getChildById(id: string) {\n return this.children.find((c) => c.id === id);\n }\n\n searchChildrenById(id: string): SolidNode | undefined {\n // traverse all the childrens children\n for (let i=0; i < this.children.length; i++) {\n const child = this.children[i];\n if (child instanceof ElementNode) {\n if (child.id === id) {\n return child;\n }\n\n const found = child.searchChildrenById(id);\n if (found) {\n return found;\n }\n }\n }\n }\n\n set states(states: NodeStates) {\n this._states = new States(this._stateChanged.bind(this), states);\n if (this.lng) {\n this._stateChanged();\n }\n }\n\n get states(): States {\n this._states = this._states || new States(this._stateChanged.bind(this));\n return this._states;\n }\n\n get animationSettings(): Partial {\n return this._animationSettings || defaultAnimationSettings;\n }\n\n set animationSettings(animationSettings: Partial) {\n this._animationSettings = animationSettings;\n }\n\n updateLayout(child?: ElementNode, dimensions?: Dimensions) {\n if (this.hasChildren) {\n log('Layout: ', this);\n let changedLayout = false;\n if (isFunc(this.onBeforeLayout)) {\n changedLayout = this.onBeforeLayout.call(\n this,\n child,\n dimensions,\n ) as boolean;\n }\n\n if (this.display === 'flex') {\n if (calculateFlex(this) || changedLayout) {\n this.parent?.updateLayout();\n }\n } else if (changedLayout) {\n this.parent?.updateLayout();\n }\n\n isFunc(this.onLayout) && this.onLayout.call(this, child, dimensions);\n }\n }\n\n _stateChanged() {\n log('State Changed: ', this, this.states);\n\n if (this.forwardStates) {\n // apply states to children first\n const states = this.states.slice() as States;\n this.children.forEach((c) => (c.states = states));\n }\n\n const states = this.states;\n\n if (this._undoStyles || (this.style && keyExists(this.style, states))) {\n this._undoStyles = this._undoStyles || [];\n const stylesToUndo: { [key: string]: any } = {};\n\n this._undoStyles.forEach((styleKey) => {\n stylesToUndo[styleKey] = this.style[styleKey];\n });\n\n const newStyles = states.reduce((acc, state) => {\n const styles = this.style[state];\n if (styles) {\n acc = {\n ...acc,\n ...styles,\n };\n }\n return acc;\n }, {});\n\n this._undoStyles = Object.keys(newStyles);\n\n // Apply transition first\n if ((newStyles as any).transition !== undefined) {\n this.transition = (newStyles as any).transition;\n }\n\n // Apply the styles\n Object.assign(this, stylesToUndo, newStyles);\n }\n }\n\n render() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const node = this;\n const parent = this.parent;\n\n if (!parent) {\n console.warn('Parent not set - no node created for: ', this);\n return;\n }\n\n if (!parent.lng) {\n console.warn('Parent not rendered yet: ', this);\n return;\n }\n\n if (this.lng) {\n console.warn('Node already rendered: ', this);\n return;\n }\n\n // Parent is dirty whenever a node is inserted after initial render\n if (parent._isDirty) {\n parent.updateLayout();\n parent._isDirty = false;\n }\n\n if (this.states.length) {\n this._stateChanged();\n }\n\n const props = node._renderProps as IntrinsicNodeProps | IntrinsicTextProps;\n props.x = props.x || 0;\n props.y = props.y || 0;\n\n if (parent.lng) {\n props.parent = parent.lng;\n }\n\n if (node._effects) {\n this.shader = convertEffectsToShader(node._effects);\n }\n\n if (node.isTextNode()) {\n if (config.fontSettings) {\n for (const key in config.fontSettings) {\n if (props[key] === undefined) {\n props[key] = config.fontSettings[key];\n }\n }\n }\n props.text = node.getText();\n\n if (props.contain) {\n if (!props.width) {\n props.width =\n (parent.width || 0) - props.x - (props.marginRight || 0);\n node._autosized = true;\n }\n\n if (props.contain === 'both' && !props.height && !props.maxLines) {\n props.height =\n (parent.height || 0) - props.y - (props.marginBottom || 0);\n node._autosized = true;\n }\n }\n\n log('Rendering: ', this, props);\n node.lng = renderer.createTextNode(props);\n\n if (!props.width || !props.height) {\n node._autosized = true;\n node._resizeOnTextLoad();\n }\n } else {\n // If its not an image or texture apply some defaults\n if (!props.texture) {\n // Set width and height to parent less offset\n if (isNaN(props.width as number)) {\n props.width = (parent.width || 0) - props.x;\n node._autosized = true;\n }\n\n if (isNaN(props.height as number)) {\n props.height = (parent.height || 0) - props.y;\n node._autosized = true;\n }\n\n if (!props.color && !props.src) {\n // Default color to transparent - If you later set a src, you'll need\n // to set color '#ffffffff'\n props.color = 0x00000000;\n }\n }\n\n log('Rendering: ', this, props);\n node.lng = renderer.createNode(props);\n }\n\n if (node.onFail) {\n node.lng.on('failed', node.onFail);\n }\n\n if (node.onLoad) {\n node.lng.on('loaded', node.onLoad);\n }\n\n isFunc(this.onCreate) && this.onCreate.call(this, node);\n\n node.onEvents.forEach(([name, handler]) => {\n node.lng?.on(name, (inode, data) => handler(node, data));\n });\n\n // L3 Inspector adds div to the lng object\n //@ts-expect-error - div is not in the typings\n if (node.lng.div) {\n //@ts-expect-error - div is not in the typings\n node.lng.div.solid = node;\n }\n\n if (node.name !== 'text') {\n node.children.forEach((c) => {\n if ((c as ElementNode).render) {\n (c as ElementNode).render();\n } else if (c.text !== '') {\n // Solid Show uses an empty text node as a placeholder\n console.warn('TextNode outside of : ', c);\n }\n });\n }\n\n node.autofocus && node.setFocus();\n // clean up after first render;\n delete this._renderProps;\n }\n}\n\nfor (const key of LightningRendererNumberProps) {\n Object.defineProperty(ElementNode.prototype, key, {\n get(): number {\n return this.lng ? this.lng[key] : this._renderProps[key];\n },\n set(v: number) {\n this._sendToLightningAnimatable(key, v);\n },\n });\n}\n\nfor (const key of LightningRendererNonAnimatingProps) {\n Object.defineProperty(ElementNode.prototype, key, {\n get() {\n return this.lng ? this.lng[key] : this._renderProps[key];\n },\n set(v) {\n this._sendToLightning(key, v);\n },\n });\n}\n\n// Add Border Helpers\nObject.defineProperties(ElementNode.prototype, {\n borderRadius: {\n set(this: ElementNode, radius) {\n this._borderRadius = radius;\n this.effects = {\n ...(this.effects || {}),\n ...{ radius: { radius } },\n };\n },\n get(this: ElementNode) {\n return this._borderRadius;\n },\n },\n border: borderAccessor(),\n borderLeft: borderAccessor('Left'),\n borderRight: borderAccessor('Right'),\n borderTop: borderAccessor('Top'),\n borderBottom: borderAccessor('Bottom'),\n});\n\nObject.defineProperties(ElementNode.prototype, {\n linearGradient: {\n set(props = {}) {\n this._linearGradient = props;\n this.effects = {\n ...(this.effects || {}),\n ...{ linearGradient: props },\n };\n },\n get() {\n return this._linearGradient;\n },\n },\n});\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { type Component } from \"solid-js\";\nimport type { IntrinsicTextProps } from \"../intrinsicTypes.js\";\n\nexport const Text: Component = (props) => \n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { type Component } from \"solid-js\";\nimport { type IntrinsicNodeProps } from \"../intrinsicTypes.js\";\n\nexport const View: Component = (props) =>\n ;\n","import {\n createRoot,\n createRenderEffect,\n mergeProps,\n createMemo,\n createComponent,\n untrack\n} from \"solid-js\";\n\nfunction createRenderer$1({\n createElement,\n createTextNode,\n isTextNode,\n replaceText,\n insertNode,\n removeNode,\n setProperty,\n getParentNode,\n getFirstChild,\n getNextSibling\n}) {\n function insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n }\n function insertExpression(parent, value, current, marker, unwrapArray) {\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n if (t === \"string\" || t === \"number\") {\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && isTextNode(node)) {\n replaceText(node, value);\n } else node = createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n replaceText(getFirstChild(parent), (current = value));\n } else {\n cleanChildren(parent, current, marker, createTextNode(value));\n current = value;\n }\n }\n } else if (value == null || t === \"boolean\") {\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n if (normalizeIncomingArray(array, value, unwrapArray)) {\n createRenderEffect(\n () => (current = insertExpression(parent, array, current, marker, true))\n );\n return () => current;\n }\n if (array.length === 0) {\n const replacement = cleanChildren(parent, current, marker);\n if (multi) return (current = replacement);\n } else {\n if (Array.isArray(current)) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else if (current == null || current === \"\") {\n appendNodes(parent, array);\n } else {\n reconcileArrays(parent, (multi && current) || [getFirstChild(parent)], array);\n }\n }\n current = array;\n } else {\n if (Array.isArray(current)) {\n if (multi) return (current = cleanChildren(parent, current, marker, value));\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !getFirstChild(parent)) {\n insertNode(parent, value);\n } else replaceNode(parent, value, getFirstChild(parent));\n current = value;\n }\n return current;\n }\n function normalizeIncomingArray(normalized, array, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n t;\n if (item == null || item === true || item === false);\n else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item) || dynamic;\n } else if ((t = typeof item) === \"string\" || t === \"number\") {\n normalized.push(createTextNode(item));\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic =\n normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else normalized.push(item);\n }\n return dynamic;\n }\n function reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = getNextSibling(a[aEnd - 1]),\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node =\n bEnd < bLength ? (bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart]) : after;\n while (bStart < bEnd) insertNode(parentNode, b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) removeNode(parentNode, a[aStart]);\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = getNextSibling(a[--aEnd]);\n insertNode(parentNode, b[bStart++], getNextSibling(a[aStart++]));\n insertNode(parentNode, b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) insertNode(parentNode, b[bStart++], node);\n } else replaceNode(parentNode, b[bStart++], a[aStart++]);\n } else aStart++;\n } else removeNode(parentNode, a[aStart++]);\n }\n }\n }\n function cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) {\n let removed;\n while ((removed = getFirstChild(parent))) removeNode(parent, removed);\n replacement && insertNode(parent, replacement);\n return \"\";\n }\n const node = replacement || createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = getParentNode(el) === parent;\n if (!inserted && !i)\n isParent ? replaceNode(parent, node, el) : insertNode(parent, node, marker);\n else isParent && removeNode(parent, el);\n } else inserted = true;\n }\n } else insertNode(parent, node, marker);\n return [node];\n }\n function appendNodes(parent, array, marker) {\n for (let i = 0, len = array.length; i < len; i++) insertNode(parent, array[i], marker);\n }\n function replaceNode(parent, newNode, oldNode) {\n insertNode(parent, newNode, oldNode);\n removeNode(parent, oldNode);\n }\n function spreadExpression(node, props, prevProps = {}, skipChildren) {\n props || (props = {});\n if (!skipChildren) {\n createRenderEffect(\n () => (prevProps.children = insertExpression(node, props.children, prevProps.children))\n );\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => {\n for (const prop in props) {\n if (prop === \"children\" || prop === \"ref\") continue;\n const value = props[prop];\n if (value === prevProps[prop]) continue;\n setProperty(node, prop, value, prevProps[prop]);\n prevProps[prop] = value;\n }\n });\n return prevProps;\n }\n return {\n render(code, element) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n insert(element, code());\n });\n return disposer;\n },\n insert,\n spread(node, accessor, skipChildren) {\n if (typeof accessor === \"function\") {\n createRenderEffect(current => spreadExpression(node, accessor(), current, skipChildren));\n } else spreadExpression(node, accessor, undefined, skipChildren);\n },\n createElement,\n createTextNode,\n insertNode,\n setProp(node, name, value, prev) {\n setProperty(node, name, value, prev);\n return value;\n },\n mergeProps,\n effect: createRenderEffect,\n memo: createMemo,\n createComponent,\n use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n }\n };\n}\n\nfunction createRenderer(options) {\n const renderer = createRenderer$1(options);\n renderer.mergeProps = mergeProps;\n return renderer;\n}\n\nexport { createRenderer };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { assertTruthy } from '@lightningjs/renderer/utils';\nimport { log } from './utils.js';\nimport { ElementNode, type SolidNode, type TextNode } from './node/index.js';\nimport type { createRenderer } from 'solid-js/universal';\n\nexport type SolidRendererOptions = Parameters<\n typeof createRenderer\n>[0];\n\nexport default {\n createElement(name: string): ElementNode {\n return new ElementNode(name);\n },\n createTextNode(text: string): TextNode {\n // A text node is just a string - not the node\n return { name: 'TextNode', text, parent: undefined };\n },\n replaceText(node: TextNode, value: string): void {\n log('Replace Text: ', node, value);\n node.text = value;\n const parent = node.parent;\n assertTruthy(parent);\n parent.text = parent.getText();\n },\n setProperty(node: ElementNode, name: string, value: any = true): void {\n node[name] = value;\n },\n insertNode(parent: ElementNode, node: SolidNode, anchor: SolidNode): void {\n log('INSERT: ', parent, node, anchor);\n\n parent.children.insert(node, anchor);\n node._queueDelete = false;\n\n if (node instanceof ElementNode) {\n parent.lng && node.render();\n } else if (parent.isTextNode()) {\n // TextNodes can be placed outside of nodes when is used as placeholder\n parent.text = parent.getText();\n }\n },\n isTextNode(node: ElementNode): boolean {\n return node.isTextNode();\n },\n removeNode(parent: ElementNode, node: SolidNode): void {\n log('REMOVE: ', parent, node);\n parent.children.remove(node);\n node._queueDelete = true;\n\n if (node instanceof ElementNode) {\n // Solid replacesNodes to move them (via insert and remove),\n // so we need to wait for the next microtask to destroy the node\n // in the event it gets a new parent.\n queueMicrotask(() => node.destroy());\n }\n },\n getParentNode(node: SolidNode): ElementNode | undefined {\n return node.parent;\n },\n getFirstChild(node: ElementNode): SolidNode | undefined {\n return node.children[0];\n },\n getNextSibling(node: SolidNode): SolidNode | undefined {\n const children = node.parent!.children || [];\n const index = children.indexOf(node) + 1;\n if (index < children.length) {\n return children[index];\n }\n return undefined;\n },\n} satisfies SolidRendererOptions;\n","/* eslint-disable @typescript-eslint/unbound-method */\n/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createRenderer } from 'solid-js/universal';\nimport { config } from '../config.js';\nimport { startLightningRenderer } from './lightningInit.js';\nimport universalLightning from './solidUniversal.js';\nimport { ElementNode, type SolidNode } from './node/index.js';\nimport { splitProps, createMemo, untrack, type JSX } from 'solid-js';\n\nconst solidRenderer = createRenderer(universalLightning);\n\nexport const render = async function (\n code: () => JSX.Element,\n node?: string | HTMLElement | undefined,\n) {\n const renderer = startLightningRenderer(config.rendererOptions, node);\n await renderer.init();\n const rootNode = new ElementNode('App');\n rootNode.lng = renderer.root!;\n // @ts-expect-error - code is jsx element and not SolidElement yet\n const dispose = solidRenderer.render(code, rootNode);\n return {\n dispose,\n rootNode,\n renderer,\n };\n};\n\nexport const {\n effect,\n memo,\n createComponent,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps,\n use,\n} = solidRenderer;\n\n/**\n * renders an arbitrary custom or native component and passes the other props\n * ```typescript\n * \n * ```\n * @description https://www.solidjs.com/docs/latest/api#dynamic\n */\nexport function Dynamic(\n props: T extends Record ? T : never,\n): SolidNode {\n const [p, others] = splitProps(props, ['component']);\n // eslint-disable-next-line @typescript-eslint/ban-types\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case 'function':\n return untrack(() => component(others));\n\n case 'string':\n // eslint-disable-next-line no-case-declarations\n const el = createElement(component);\n spread(el, others);\n return el;\n\n default:\n break;\n }\n }) as unknown as SolidNode;\n}\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isInteger } from './core/utils.js';\n\n/**\n * Converts a color string to a color number value.\n */\nexport function hexColor(color: string | number = ''): number {\n if (isInteger(color)) {\n return color;\n }\n\n if (typeof color === 'string') {\n // Renderer expects RGBA values\n if (color.startsWith('#')) {\n return Number(\n color.replace('#', '0x') + (color.length === 7 ? 'ff' : ''),\n );\n }\n\n if (color.startsWith('0x')) {\n return Number(color);\n }\n return Number('0x' + (color.length === 6 ? color + 'ff' : color));\n }\n\n return 0x00000000;\n}\n\n/**\n * Converts degrees to radians\n */\nexport function deg2rad(deg: number) {\n return (deg * Math.PI) / 180;\n}\n","import {\n createRoot,\n sharedConfig,\n createRenderEffect,\n untrack,\n enableHydration,\n getOwner,\n createEffect,\n runWithOwner,\n createMemo,\n createSignal,\n onCleanup,\n splitProps\n} from \"solid-js\";\nexport {\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n createComponent,\n createRenderEffect as effect,\n getOwner,\n createMemo as memo,\n mergeProps,\n untrack\n} from \"solid-js\";\n\nconst booleans = [\n \"allowfullscreen\",\n \"async\",\n \"autofocus\",\n \"autoplay\",\n \"checked\",\n \"controls\",\n \"default\",\n \"disabled\",\n \"formnovalidate\",\n \"hidden\",\n \"indeterminate\",\n \"inert\",\n \"ismap\",\n \"loop\",\n \"multiple\",\n \"muted\",\n \"nomodule\",\n \"novalidate\",\n \"open\",\n \"playsinline\",\n \"readonly\",\n \"required\",\n \"reversed\",\n \"seamless\",\n \"selected\"\n];\nconst Properties = /*#__PURE__*/ new Set([\n \"className\",\n \"value\",\n \"readOnly\",\n \"formNoValidate\",\n \"isMap\",\n \"noModule\",\n \"playsInline\",\n ...booleans\n]);\nconst ChildProperties = /*#__PURE__*/ new Set([\n \"innerHTML\",\n \"textContent\",\n \"innerText\",\n \"children\"\n]);\nconst Aliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: {\n $: \"formNoValidate\",\n BUTTON: 1,\n INPUT: 1\n },\n ismap: {\n $: \"isMap\",\n IMG: 1\n },\n nomodule: {\n $: \"noModule\",\n SCRIPT: 1\n },\n playsinline: {\n $: \"playsInline\",\n VIDEO: 1\n },\n readonly: {\n $: \"readOnly\",\n INPUT: 1,\n TEXTAREA: 1\n }\n});\nfunction getPropAlias(prop, tagName) {\n const a = PropAliases[prop];\n return typeof a === \"object\" ? (a[tagName] ? a[\"$\"] : undefined) : a;\n}\nconst DelegatedEvents = /*#__PURE__*/ new Set([\n \"beforeinput\",\n \"click\",\n \"dblclick\",\n \"contextmenu\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"keydown\",\n \"keyup\",\n \"mousedown\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"mouseup\",\n \"pointerdown\",\n \"pointermove\",\n \"pointerout\",\n \"pointerover\",\n \"pointerup\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\"\n]);\nconst SVGElements = /*#__PURE__*/ new Set([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animate\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"circle\",\n \"clipPath\",\n \"color-profile\",\n \"cursor\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"font\",\n \"font-face\",\n \"font-face-format\",\n \"font-face-name\",\n \"font-face-src\",\n \"font-face-uri\",\n \"foreignObject\",\n \"g\",\n \"glyph\",\n \"glyphRef\",\n \"hkern\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"missing-glyph\",\n \"mpath\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n \"set\",\n \"stop\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n \"tref\",\n \"tspan\",\n \"use\",\n \"view\",\n \"vkern\"\n]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/ new Set([\n \"html\",\n \"base\",\n \"head\",\n \"link\",\n \"meta\",\n \"style\",\n \"title\",\n \"body\",\n \"address\",\n \"article\",\n \"aside\",\n \"footer\",\n \"header\",\n \"main\",\n \"nav\",\n \"section\",\n \"body\",\n \"blockquote\",\n \"dd\",\n \"div\",\n \"dl\",\n \"dt\",\n \"figcaption\",\n \"figure\",\n \"hr\",\n \"li\",\n \"ol\",\n \"p\",\n \"pre\",\n \"ul\",\n \"a\",\n \"abbr\",\n \"b\",\n \"bdi\",\n \"bdo\",\n \"br\",\n \"cite\",\n \"code\",\n \"data\",\n \"dfn\",\n \"em\",\n \"i\",\n \"kbd\",\n \"mark\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"small\",\n \"span\",\n \"strong\",\n \"sub\",\n \"sup\",\n \"time\",\n \"u\",\n \"var\",\n \"wbr\",\n \"area\",\n \"audio\",\n \"img\",\n \"map\",\n \"track\",\n \"video\",\n \"embed\",\n \"iframe\",\n \"object\",\n \"param\",\n \"picture\",\n \"portal\",\n \"source\",\n \"svg\",\n \"math\",\n \"canvas\",\n \"noscript\",\n \"script\",\n \"del\",\n \"ins\",\n \"caption\",\n \"col\",\n \"colgroup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"tr\",\n \"button\",\n \"datalist\",\n \"fieldset\",\n \"form\",\n \"input\",\n \"label\",\n \"legend\",\n \"meter\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"progress\",\n \"select\",\n \"textarea\",\n \"details\",\n \"dialog\",\n \"menu\",\n \"summary\",\n \"details\",\n \"slot\",\n \"template\",\n \"acronym\",\n \"applet\",\n \"basefont\",\n \"bgsound\",\n \"big\",\n \"blink\",\n \"center\",\n \"content\",\n \"dir\",\n \"font\",\n \"frame\",\n \"frameset\",\n \"hgroup\",\n \"image\",\n \"keygen\",\n \"marquee\",\n \"menuitem\",\n \"nobr\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"rb\",\n \"rtc\",\n \"shadow\",\n \"spacer\",\n \"strike\",\n \"tt\",\n \"xmp\",\n \"a\",\n \"abbr\",\n \"acronym\",\n \"address\",\n \"applet\",\n \"area\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"base\",\n \"basefont\",\n \"bdi\",\n \"bdo\",\n \"bgsound\",\n \"big\",\n \"blink\",\n \"blockquote\",\n \"body\",\n \"br\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"center\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"content\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"dir\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"embed\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"font\",\n \"footer\",\n \"form\",\n \"frame\",\n \"frameset\",\n \"head\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"html\",\n \"i\",\n \"iframe\",\n \"image\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"keygen\",\n \"label\",\n \"legend\",\n \"li\",\n \"link\",\n \"main\",\n \"map\",\n \"mark\",\n \"marquee\",\n \"menu\",\n \"menuitem\",\n \"meta\",\n \"meter\",\n \"nav\",\n \"nobr\",\n \"noembed\",\n \"noframes\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"param\",\n \"picture\",\n \"plaintext\",\n \"portal\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rb\",\n \"rp\",\n \"rt\",\n \"rtc\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"shadow\",\n \"slot\",\n \"small\",\n \"source\",\n \"spacer\",\n \"span\",\n \"strike\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"template\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"track\",\n \"tt\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n \"wbr\",\n \"xmp\",\n \"input\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\"\n]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? (bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart]) : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document\n ? code()\n : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, isCE, isSVG) {\n let node;\n const create = () => {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n return isSVG ? t.content.firstChild.firstChild : t.content.firstChild;\n };\n const fn = isCE\n ? () => untrack(() => document.importNode(node || (node = create()), true))\n : () => (node || (node = create())).cloneNode(true);\n fn.cloneNode = fn;\n return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setProperty(node, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n node[name] = value;\n}\nfunction setAttribute(node, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttribute(name);\n else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttributeNS(namespace, name);\n else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (!!sharedConfig.context && node.isConnected) return;\n if (value == null) node.removeAttribute(\"class\");\n else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, (handler[0] = e => handlerFn.call(node, handler[1], e)));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return (nodeStyle.cssText = value);\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(\n () => (prevProps.children = insertExpression(node, props.children, prevProps.children))\n );\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = id => globalThis._$HY.r[id];\n sharedConfig.has = id => id in globalThis._$HY.r;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get((key = getHydrationKey())))) {\n return template();\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"$\") count++;\n else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const { completed, events } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++)\n node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp, propAlias, forceProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if (prop.slice(0, 5) === \"attr:\") {\n setAttribute(node, prop.slice(5), value);\n } else if (\n (forceProp = prop.slice(0, 5) === \"prop:\") ||\n (isChildProp = ChildProperties.has(prop)) ||\n (!isSVG &&\n ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop)))) ||\n (isCE = node.nodeName.includes(\"-\"))\n ) {\n if (forceProp) {\n prop = prop.slice(5);\n isProp = true;\n } else if (!!sharedConfig.context && node.isConnected) return value;\n if (prop === \"class\" || prop === \"className\") className(node, value);\n else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;\n else node[propAlias || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);\n else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = (e.composedPath && e.composedPath()[0]) || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n const hydrating = !!sharedConfig.context && parent.isConnected;\n if (hydrating) {\n !current && (current = [...parent.childNodes]);\n let cleaned = [];\n for (let i = 0; i < current.length; i++) {\n const node = current[i];\n if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();\n else cleaned.push(node);\n }\n current = cleaned;\n }\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = (multi && current[0] && current[0].parentNode) || parent;\n if (t === \"string\" || t === \"number\") {\n if (hydrating) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data !== value && (node.data = value);\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (hydrating) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => (current = insertExpression(parent, array, current, marker, true)));\n return () => current;\n }\n if (hydrating) {\n if (!array.length) return current;\n if (marker === undefined) return [...parent.childNodes];\n let node = array[0];\n let nodes = [node];\n while ((node = node.nextSibling) !== marker) nodes.push(node);\n return (current = nodes);\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value.nodeType) {\n if (hydrating && value.parentNode) return (current = multi ? [value] : value);\n if (Array.isArray(current)) {\n if (multi) return (current = cleanChildren(parent, current, marker, value));\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[normalized.length],\n t;\n if (item == null || item === true || item === false);\n else if ((t = typeof item) === \"object\" && item.nodeType) {\n normalized.push(item);\n } else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic =\n normalizeIncomingArray(\n normalized,\n Array.isArray(item) ? item : [item],\n Array.isArray(prev) ? prev : [prev]\n ) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);\n else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return (parent.textContent = \"\");\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i)\n isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);\n else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key))\n sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nconst voidFn = () => undefined;\nconst RequestContext = Symbol();\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst isDev = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const { useShadow } = props,\n marker = document.createTextNode(\"\"),\n mount = () => props.mount || document.body,\n owner = getOwner();\n let content;\n let hydrating = !!sharedConfig.context;\n createEffect(\n () => {\n if (hydrating) getOwner().user = hydrating = false;\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n const el = mount();\n if (el instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(el, () => (!clean() ? content() : dispose()), null));\n onCleanup(cleanup);\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot =\n useShadow && container.attachShadow\n ? container.attachShadow({\n mode: \"open\"\n })\n : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => el.removeChild(container));\n }\n },\n undefined,\n {\n render: !hydrating\n }\n );\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport {\n Aliases,\n voidFn as Assets,\n ChildProperties,\n DOMElements,\n DelegatedEvents,\n Dynamic,\n Hydration,\n voidFn as HydrationScript,\n NoHydration,\n Portal,\n Properties,\n RequestContext,\n SVGElements,\n SVGNamespace,\n addEventListener,\n assign,\n classList,\n className,\n clearDelegatedEvents,\n delegateEvents,\n dynamicProperty,\n escape,\n voidFn as generateHydrationScript,\n voidFn as getAssets,\n getHydrationKey,\n getNextElement,\n getNextMarker,\n getNextMatch,\n getPropAlias,\n voidFn as getRequestEvent,\n hydrate,\n innerHTML,\n insert,\n isDev,\n isServer,\n render,\n renderToStream,\n renderToString,\n renderToStringAsync,\n resolveSSRNode,\n runHydrationEvents,\n setAttribute,\n setAttributeNS,\n setProperty,\n spread,\n ssr,\n ssrAttribute,\n ssrClassList,\n ssrElement,\n ssrHydrationKey,\n ssrSpread,\n ssrStyle,\n style,\n template,\n use,\n voidFn as useAssets\n};\n","import { isServer } from \"solid-js/web\";\nexport function createBeforeLeave() {\n let listeners = new Set();\n function subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }\n let ignore = false;\n function confirm(to, options) {\n if (ignore)\n return !(ignore = false);\n const e = {\n to,\n options,\n defaultPrevented: false,\n preventDefault: () => (e.defaultPrevented = true)\n };\n for (const l of listeners)\n l.listener({\n ...e,\n from: l.location,\n retry: (force) => {\n force && (ignore = true);\n l.navigate(to, { ...options, resolve: false });\n }\n });\n return !e.defaultPrevented;\n }\n return {\n subscribe,\n confirm\n };\n}\n// The following supports browser initiated blocking (eg back/forward)\nlet depth;\nexport function saveCurrentDepth() {\n if (!window.history.state || window.history.state._depth == null) {\n window.history.replaceState({ ...window.history.state, _depth: window.history.length - 1 }, \"\");\n }\n depth = window.history.state._depth;\n}\nif (!isServer) {\n saveCurrentDepth();\n}\nexport function keepDepth(state) {\n return {\n ...state,\n _depth: window.history.state && window.history.state._depth\n };\n}\nexport function notifyIfNotBlocked(notify, block) {\n let ignore = false;\n return () => {\n const prevDepth = depth;\n saveCurrentDepth();\n const delta = prevDepth == null ? null : depth - prevDepth;\n if (ignore) {\n ignore = false;\n return;\n }\n if (delta && block(delta)) {\n ignore = true;\n window.history.go(-delta);\n }\n else {\n notify();\n }\n };\n}\n","import { createMemo, getOwner, runWithOwner } from \"solid-js\";\nconst hasSchemeRegex = /^(?:[a-z0-9]+:)?\\/\\//i;\nconst trimPathRegex = /^\\/+|(\\/)\\/+$/g;\nexport const mockBase = \"http://sr\";\nexport function normalizePath(path, omitSlash = false) {\n const s = path.replace(trimPathRegex, \"$1\");\n return s ? (omitSlash || /^[?#]/.test(s) ? s : \"/\" + s) : \"\";\n}\nexport function resolvePath(base, path, from) {\n if (hasSchemeRegex.test(path)) {\n return undefined;\n }\n const basePath = normalizePath(base);\n const fromPath = from && normalizePath(from);\n let result = \"\";\n if (!fromPath || path.startsWith(\"/\")) {\n result = basePath;\n }\n else if (fromPath.toLowerCase().indexOf(basePath.toLowerCase()) !== 0) {\n result = basePath + fromPath;\n }\n else {\n result = fromPath;\n }\n return (result || \"/\") + normalizePath(path, !result);\n}\nexport function invariant(value, message) {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nexport function joinPaths(from, to) {\n return normalizePath(from).replace(/\\/*(\\*.*)?$/g, \"\") + normalizePath(to);\n}\nexport function extractSearchParams(url) {\n const params = {};\n url.searchParams.forEach((value, key) => {\n params[key] = value;\n });\n return params;\n}\nexport function createMatcher(path, partial, matchFilters) {\n const [pattern, splat] = path.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n const len = segments.length;\n return (location) => {\n const locSegments = location.split(\"/\").filter(Boolean);\n const lenDiff = locSegments.length - len;\n if (lenDiff < 0 || (lenDiff > 0 && splat === undefined && !partial)) {\n return null;\n }\n const match = {\n path: len ? \"\" : \"/\",\n params: {}\n };\n const matchFilter = (s) => matchFilters === undefined ? undefined : matchFilters[s];\n for (let i = 0; i < len; i++) {\n const segment = segments[i];\n const locSegment = locSegments[i];\n const dynamic = segment[0] === \":\";\n const key = dynamic ? segment.slice(1) : segment;\n if (dynamic && matchSegment(locSegment, matchFilter(key))) {\n match.params[key] = locSegment;\n }\n else if (dynamic || !matchSegment(locSegment, segment)) {\n return null;\n }\n match.path += `/${locSegment}`;\n }\n if (splat) {\n const remainder = lenDiff ? locSegments.slice(-lenDiff).join(\"/\") : \"\";\n if (matchSegment(remainder, matchFilter(splat))) {\n match.params[splat] = remainder;\n }\n else {\n return null;\n }\n }\n return match;\n };\n}\nfunction matchSegment(input, filter) {\n const isEqual = (s) => s.localeCompare(input, undefined, { sensitivity: \"base\" }) === 0;\n if (filter === undefined) {\n return true;\n }\n else if (typeof filter === \"string\") {\n return isEqual(filter);\n }\n else if (typeof filter === \"function\") {\n return filter(input);\n }\n else if (Array.isArray(filter)) {\n return filter.some(isEqual);\n }\n else if (filter instanceof RegExp) {\n return filter.test(input);\n }\n return false;\n}\nexport function scoreRoute(route) {\n const [pattern, splat] = route.pattern.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n return segments.reduce((score, segment) => score + (segment.startsWith(\":\") ? 2 : 3), segments.length - (splat === undefined ? 0 : 1));\n}\nexport function createMemoObject(fn) {\n const map = new Map();\n const owner = getOwner();\n return new Proxy({}, {\n get(_, property) {\n if (!map.has(property)) {\n runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property])));\n }\n return map.get(property)();\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n },\n ownKeys() {\n return Reflect.ownKeys(fn());\n }\n });\n}\nexport function mergeSearchString(search, params) {\n const merged = new URLSearchParams(search);\n Object.entries(params).forEach(([key, value]) => {\n if (value == null || value === \"\") {\n merged.delete(key);\n }\n else {\n merged.set(key, String(value));\n }\n });\n const s = merged.toString();\n return s ? `?${s}` : \"\";\n}\nexport function expandOptionals(pattern) {\n let match = /(\\/?\\:[^\\/]+)\\?/.exec(pattern);\n if (!match)\n return [pattern];\n let prefix = pattern.slice(0, match.index);\n let suffix = pattern.slice(match.index + match[0].length);\n const prefixes = [prefix, (prefix += match[1])];\n // This section handles adjacent optional params. We don't actually want all permuations since\n // that will lead to equivalent routes which have the same number of params. For example\n // `/:a?/:b?/:c`? only has the unique expansion: `/`, `/:a`, `/:a/:b`, `/:a/:b/:c` and we can\n // discard `/:b`, `/:c`, `/:b/:c` by building them up in order and not recursing. This also helps\n // ensure predictability where earlier params have precidence.\n while ((match = /^(\\/\\:[^\\/]+)\\?/.exec(suffix))) {\n prefixes.push((prefix += match[1]));\n suffix = suffix.slice(match[0].length);\n }\n return expandOptionals(suffix).reduce((results, expansion) => [...results, ...prefixes.map(p => p + expansion)], []);\n}\n","import { runWithOwner } from \"solid-js\";\nimport { createComponent, createContext, createMemo, createRenderEffect, createSignal, on, onCleanup, untrack, useContext, startTransition, resetErrorBoundaries } from \"solid-js\";\nimport { isServer, getRequestEvent } from \"solid-js/web\";\nimport { createBeforeLeave } from \"./lifecycle.js\";\nimport { mockBase, createMemoObject, extractSearchParams, invariant, resolvePath, createMatcher, joinPaths, scoreRoute, mergeSearchString, expandOptionals } from \"./utils.js\";\nconst MAX_REDIRECTS = 100;\nexport const RouterContextObj = createContext();\nexport const RouteContextObj = createContext();\nexport const useRouter = () => invariant(useContext(RouterContextObj), \" and 'use' router primitives can be only used inside a Route.\");\nlet TempRoute;\nexport const useRoute = () => TempRoute || useContext(RouteContextObj) || useRouter().base;\nexport const useResolvedPath = (path) => {\n const route = useRoute();\n return createMemo(() => route.resolvePath(path()));\n};\nexport const useHref = (to) => {\n const router = useRouter();\n return createMemo(() => {\n const to_ = to();\n return to_ !== undefined ? router.renderPath(to_) : to_;\n });\n};\nexport const useNavigate = () => useRouter().navigatorFactory();\nexport const useLocation = () => useRouter().location;\nexport const useIsRouting = () => useRouter().isRouting;\nexport const useMatch = (path, matchFilters) => {\n const location = useLocation();\n const matchers = createMemo(() => expandOptionals(path()).map(path => createMatcher(path, undefined, matchFilters)));\n return createMemo(() => {\n for (const matcher of matchers()) {\n const match = matcher(location.pathname);\n if (match)\n return match;\n }\n });\n};\nexport const useParams = () => useRouter().params;\nexport const useSearchParams = () => {\n const location = useLocation();\n const navigate = useNavigate();\n const setSearchParams = (params, options) => {\n const searchString = untrack(() => location.pathname + mergeSearchString(location.search, params) + location.hash);\n navigate(searchString, {\n scroll: false,\n resolve: false,\n ...options\n });\n };\n return [location.query, setSearchParams];\n};\nexport const useBeforeLeave = (listener) => {\n const s = useRouter().beforeLeave.subscribe({\n listener,\n location: useLocation(),\n navigate: useNavigate()\n });\n onCleanup(s);\n};\nexport function createRoutes(routeDef, base = \"\") {\n const { component, load, children, info } = routeDef;\n const isLeaf = !children || (Array.isArray(children) && !children.length);\n const shared = {\n key: routeDef,\n component,\n load,\n info\n };\n return asArray(routeDef.path).reduce((acc, path) => {\n for (const originalPath of expandOptionals(path)) {\n const path = joinPaths(base, originalPath);\n let pattern = isLeaf ? path : path.split(\"/*\", 1)[0];\n pattern = pattern\n .split(\"/\")\n .map((s) => {\n return s.startsWith(\":\") || s.startsWith(\"*\") ? s : encodeURIComponent(s);\n })\n .join(\"/\");\n acc.push({\n ...shared,\n originalPath,\n pattern,\n matcher: createMatcher(pattern, !isLeaf, routeDef.matchFilters)\n });\n }\n return acc;\n }, []);\n}\nexport function createBranch(routes, index = 0) {\n return {\n routes,\n score: scoreRoute(routes[routes.length - 1]) * 10000 - index,\n matcher(location) {\n const matches = [];\n for (let i = routes.length - 1; i >= 0; i--) {\n const route = routes[i];\n const match = route.matcher(location);\n if (!match) {\n return null;\n }\n matches.unshift({\n ...match,\n route\n });\n }\n return matches;\n }\n };\n}\nfunction asArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function createBranches(routeDef, base = \"\", stack = [], branches = []) {\n const routeDefs = asArray(routeDef);\n for (let i = 0, len = routeDefs.length; i < len; i++) {\n const def = routeDefs[i];\n if (def && typeof def === \"object\") {\n if (!def.hasOwnProperty(\"path\"))\n def.path = \"\";\n const routes = createRoutes(def, base);\n for (const route of routes) {\n stack.push(route);\n const isEmptyArray = Array.isArray(def.children) && def.children.length === 0;\n if (def.children && !isEmptyArray) {\n createBranches(def.children, route.pattern, stack, branches);\n }\n else {\n const branch = createBranch([...stack], branches.length);\n branches.push(branch);\n }\n stack.pop();\n }\n }\n }\n // Stack will be empty on final return\n return stack.length ? branches : branches.sort((a, b) => b.score - a.score);\n}\nexport function getRouteMatches(branches, location) {\n for (let i = 0, len = branches.length; i < len; i++) {\n const match = branches[i].matcher(location);\n if (match) {\n return match;\n }\n }\n return [];\n}\nexport function createLocation(path, state) {\n const origin = new URL(mockBase);\n const url = createMemo(prev => {\n const path_ = path();\n try {\n return new URL(path_, origin);\n }\n catch (err) {\n console.error(`Invalid path ${path_}`);\n return prev;\n }\n }, origin, {\n equals: (a, b) => a.href === b.href\n });\n const pathname = createMemo(() => url().pathname);\n const search = createMemo(() => url().search, true);\n const hash = createMemo(() => url().hash);\n const key = () => \"\";\n return {\n get pathname() {\n return pathname();\n },\n get search() {\n return search();\n },\n get hash() {\n return hash();\n },\n get state() {\n return state();\n },\n get key() {\n return key();\n },\n query: createMemoObject(on(search, () => extractSearchParams(url())))\n };\n}\nlet intent;\nexport function getIntent() {\n return intent;\n}\nexport function createRouterContext(integration, branches, getContext, options = {}) {\n const { signal: [source, setSource], utils = {} } = integration;\n const parsePath = utils.parsePath || (p => p);\n const renderPath = utils.renderPath || (p => p);\n const beforeLeave = utils.beforeLeave || createBeforeLeave();\n const basePath = resolvePath(\"\", options.base || \"\");\n if (basePath === undefined) {\n throw new Error(`${basePath} is not a valid base path`);\n }\n else if (basePath && !source().value) {\n setSource({ value: basePath, replace: true, scroll: false });\n }\n const [isRouting, setIsRouting] = createSignal(false);\n const start = async (callback) => {\n setIsRouting(true);\n try {\n await startTransition(callback);\n }\n finally {\n setIsRouting(false);\n }\n };\n const [reference, setReference] = createSignal(source().value);\n const [state, setState] = createSignal(source().state);\n const location = createLocation(reference, state);\n const referrers = [];\n const submissions = createSignal(isServer ? initFromFlash() : []);\n const matches = createMemo(() => getRouteMatches(branches(), location.pathname));\n const params = createMemoObject(() => {\n const m = matches();\n const params = {};\n for (let i = 0; i < m.length; i++) {\n Object.assign(params, m[i].params);\n }\n return params;\n });\n const baseRoute = {\n pattern: basePath,\n path: () => basePath,\n outlet: () => null,\n resolvePath(to) {\n return resolvePath(basePath, to);\n }\n };\n createRenderEffect(() => {\n const { value, state } = source();\n // Untrack this whole block so `start` doesn't cause Solid's Listener to be preserved\n untrack(() => {\n if (value !== reference()) {\n start(() => {\n intent = \"native\";\n setReference(value);\n setState(state);\n resetErrorBoundaries();\n submissions[1]([]);\n }).then(() => {\n intent = undefined;\n });\n }\n });\n });\n return {\n base: baseRoute,\n location,\n params,\n isRouting,\n renderPath,\n parsePath,\n navigatorFactory,\n matches,\n beforeLeave,\n preloadRoute,\n singleFlight: options.singleFlight === undefined ? true : options.singleFlight,\n submissions\n };\n function navigateFromRoute(route, to, options) {\n // Untrack in case someone navigates in an effect - don't want to track `reference` or route paths\n untrack(() => {\n if (typeof to === \"number\") {\n if (!to) {\n // A delta of 0 means stay at the current location, so it is ignored\n }\n else if (utils.go) {\n utils.go(to);\n }\n else {\n console.warn(\"Router integration does not support relative routing\");\n }\n return;\n }\n const { replace, resolve, scroll, state: nextState } = {\n replace: false,\n resolve: true,\n scroll: true,\n ...options\n };\n const resolvedTo = resolve ? route.resolvePath(to) : resolvePath(\"\", to);\n if (resolvedTo === undefined) {\n throw new Error(`Path '${to}' is not a routable path`);\n }\n else if (referrers.length >= MAX_REDIRECTS) {\n throw new Error(\"Too many redirects\");\n }\n const current = reference();\n if (resolvedTo !== current || nextState !== state()) {\n if (isServer) {\n const e = getRequestEvent();\n e && (e.response = { status: 302, headers: new Headers({ Location: resolvedTo }) });\n setSource({ value: resolvedTo, replace, scroll, state: nextState });\n }\n else if (beforeLeave.confirm(resolvedTo, options)) {\n const len = referrers.push({ value: current, replace, scroll, state: state() });\n start(() => {\n intent = \"navigate\";\n setReference(resolvedTo);\n setState(nextState);\n resetErrorBoundaries();\n submissions[1]([]);\n }).then(() => {\n if (referrers.length === len) {\n intent = undefined;\n navigateEnd({\n value: resolvedTo,\n state: nextState\n });\n }\n });\n }\n }\n });\n }\n function navigatorFactory(route) {\n // Workaround for vite issue (https://github.com/vitejs/vite/issues/3803)\n route = route || useContext(RouteContextObj) || baseRoute;\n return (to, options) => navigateFromRoute(route, to, options);\n }\n function navigateEnd(next) {\n const first = referrers[0];\n if (first) {\n if (next.value !== first.value || next.state !== first.state) {\n setSource({\n ...next,\n replace: first.replace,\n scroll: first.scroll\n });\n }\n referrers.length = 0;\n }\n }\n function preloadRoute(url, preloadData) {\n const matches = getRouteMatches(branches(), url.pathname);\n const prevIntent = intent;\n intent = \"preload\";\n for (let match in matches) {\n const { route, params } = matches[match];\n route.component &&\n route.component.preload &&\n route.component.preload();\n const { load } = route;\n preloadData &&\n load &&\n runWithOwner(getContext(), () => load({\n params,\n location: {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n query: extractSearchParams(url),\n state: null,\n key: \"\"\n },\n intent: \"preload\"\n }));\n }\n intent = prevIntent;\n }\n function initFromFlash() {\n const e = getRequestEvent();\n return (e && e.router && e.router.submission\n ? [e.router.submission]\n : []);\n }\n}\nexport function createRouteContext(router, parent, outlet, match) {\n const { base, location, params } = router;\n const { pattern, component, load } = match().route;\n const path = createMemo(() => match().path);\n component &&\n component.preload &&\n component.preload();\n const data = load ? load({ params, location, intent: intent || \"initial\" }) : undefined;\n const route = {\n parent,\n pattern,\n path,\n outlet: () => component\n ? createComponent(component, {\n params,\n location,\n data,\n get children() {\n return outlet();\n }\n })\n : outlet(),\n resolvePath(to) {\n return resolvePath(base.path(), to, path());\n }\n };\n return route;\n}\n","/*@refresh skip*/\nimport { getRequestEvent, isServer } from \"solid-js/web\";\nimport { children, createMemo, createRoot, getOwner, mergeProps, on, Show, untrack } from \"solid-js\";\nimport { createBranches, createRouteContext, createRouterContext, getRouteMatches, RouteContextObj, RouterContextObj } from \"../routing.js\";\nexport const createRouterComponent = (router) => (props) => {\n const { base } = props;\n const routeDefs = children(() => props.children);\n const branches = createMemo(() => createBranches(routeDefs(), props.base || \"\"));\n let context;\n const routerState = createRouterContext(router, branches, () => context, {\n base,\n singleFlight: props.singleFlight\n });\n router.create && router.create(routerState);\n return (\n \n {(context = getOwner()) && null}\n \n \n );\n};\nfunction Root(props) {\n const location = props.routerState.location;\n const params = props.routerState.params;\n const data = createMemo(() => props.load && untrack(() => props.load({ params, location, intent: \"preload\" })));\n return (\n {Root => (\n {props.children}\n )}\n );\n}\nfunction Routes(props) {\n if (isServer) {\n const e = getRequestEvent();\n if (e && e.router && e.router.dataOnly) {\n dataOnly(e, props.routerState, props.branches);\n return;\n }\n e &&\n ((e.router || (e.router = {})).matches ||\n (e.router.matches = props.routerState.matches().map(({ route, path, params }) => ({\n path: route.originalPath,\n pattern: route.pattern,\n match: path,\n params,\n info: route.info\n }))));\n }\n const disposers = [];\n let root;\n const routeStates = createMemo(on(props.routerState.matches, (nextMatches, prevMatches, prev) => {\n let equal = prevMatches && nextMatches.length === prevMatches.length;\n const next = [];\n for (let i = 0, len = nextMatches.length; i < len; i++) {\n const prevMatch = prevMatches && prevMatches[i];\n const nextMatch = nextMatches[i];\n if (prev && prevMatch && nextMatch.route.key === prevMatch.route.key) {\n next[i] = prev[i];\n }\n else {\n equal = false;\n if (disposers[i]) {\n disposers[i]();\n }\n createRoot(dispose => {\n disposers[i] = dispose;\n next[i] = createRouteContext(props.routerState, next[i - 1] || props.routerState.base, createOutlet(() => routeStates()[i + 1]), () => props.routerState.matches()[i]);\n });\n }\n }\n disposers.splice(nextMatches.length).forEach(dispose => dispose());\n if (prev && equal) {\n return prev;\n }\n root = next[0];\n return next;\n }));\n return createOutlet(() => routeStates() && root)();\n}\nconst createOutlet = (child) => {\n return () => (\n {child => {child.outlet()}}\n );\n};\nexport const Route = (props) => {\n const childRoutes = children(() => props.children);\n return mergeProps(props, {\n get children() {\n return childRoutes();\n }\n });\n};\n// for data only mode with single flight mutations\nfunction dataOnly(event, routerState, branches) {\n const url = new URL(event.request.url);\n const prevMatches = getRouteMatches(branches, new URL(event.router.previousUrl || event.request.url).pathname);\n const matches = getRouteMatches(branches, url.pathname);\n for (let match = 0; match < matches.length; match++) {\n if (!prevMatches[match] || matches[match].route !== prevMatches[match].route)\n event.router.dataOnly = true;\n const { route, params } = matches[match];\n route.load &&\n route.load({\n params,\n location: routerState.location,\n intent: \"preload\"\n });\n }\n}\n","import { createSignal, onCleanup } from \"solid-js\";\nimport { createRouterComponent } from \"./components.jsx\";\nfunction intercept([value, setValue], get, set) {\n return [get ? () => get(value()) : value, set ? (v) => setValue(set(v)) : setValue];\n}\nfunction querySelector(selector) {\n if (selector === \"#\") {\n return null;\n }\n // Guard against selector being an invalid CSS selector\n try {\n return document.querySelector(selector);\n }\n catch (e) {\n return null;\n }\n}\nexport function createRouter(config) {\n let ignore = false;\n const wrap = (value) => (typeof value === \"string\" ? { value } : value);\n const signal = intercept(createSignal(wrap(config.get()), { equals: (a, b) => a.value === b.value }), undefined, next => {\n !ignore && config.set(next);\n return next;\n });\n config.init &&\n onCleanup(config.init((value = config.get()) => {\n ignore = true;\n signal[1](wrap(value));\n ignore = false;\n }));\n return createRouterComponent({\n signal,\n create: config.create,\n utils: config.utils\n });\n}\nexport function bindEvent(target, type, handler) {\n target.addEventListener(type, handler);\n return () => target.removeEventListener(type, handler);\n}\nexport function scrollToHash(hash, fallbackTop) {\n const el = querySelector(`#${hash}`);\n if (el) {\n el.scrollIntoView();\n }\n else if (fallbackTop) {\n window.scrollTo(0, 0);\n }\n}\n","import { $TRACK, createMemo, createSignal, onCleanup, getOwner } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { useRouter } from \"../routing.js\";\nimport { mockBase } from \"../utils.js\";\nimport { cacheKeyOp, hashKey, revalidate, cache } from \"./cache.js\";\nexport const actions = /* #__PURE__ */ new Map();\nexport function useSubmissions(fn, filter) {\n const router = useRouter();\n const subs = createMemo(() => router.submissions[0]().filter(s => s.url === fn.toString() && (!filter || filter(s.input))));\n return new Proxy([], {\n get(_, property) {\n if (property === $TRACK)\n return subs();\n if (property === \"pending\")\n return subs().some(sub => !sub.result);\n return subs()[property];\n }\n });\n}\nexport function useSubmission(fn, filter) {\n const submissions = useSubmissions(fn, filter);\n return new Proxy({}, {\n get(_, property) {\n return submissions[submissions.length - 1]?.[property];\n }\n });\n}\nexport function useAction(action) {\n const r = useRouter();\n return (...args) => action.apply({ r }, args);\n}\nexport function action(fn, name) {\n function mutate(...variables) {\n const router = this.r;\n const form = this.f;\n const p = (router.singleFlight && fn.withOptions\n ? fn.withOptions({ headers: { \"X-Single-Flight\": \"true\" } })\n : fn)(...variables);\n const [result, setResult] = createSignal();\n let submission;\n function handler(error) {\n return async (res) => {\n const result = await handleResponse(res, error, router.navigatorFactory());\n if (!result)\n return submission.clear();\n setResult(result);\n if (result.error && !form)\n throw result.error;\n return result.data;\n };\n }\n router.submissions[1](s => [\n ...s,\n (submission = {\n input: variables,\n url,\n get result() {\n return result()?.data;\n },\n get error() {\n return result()?.error;\n },\n get pending() {\n return !result();\n },\n clear() {\n router.submissions[1](v => v.filter(i => i.input !== variables));\n },\n retry() {\n setResult(undefined);\n const p = fn(...variables);\n return p.then(handler(), handler(true));\n }\n })\n ]);\n return p.then(handler(), handler(true));\n }\n const url = fn.url ||\n (name && `https://action/${name}`) ||\n (!isServer ? `https://action/${hashString(fn.toString())}` : \"\");\n return toAction(mutate, url);\n}\nfunction toAction(fn, url) {\n fn.toString = () => {\n if (!url)\n throw new Error(\"Client Actions need explicit names if server rendered\");\n return url;\n };\n fn.with = function (...args) {\n const newFn = function (...passedArgs) {\n return fn.call(this, ...args, ...passedArgs);\n };\n const uri = new URL(url, mockBase);\n uri.searchParams.set(\"args\", hashKey(args));\n return toAction(newFn, (uri.origin === \"https://action\" ? uri.origin : \"\") + uri.pathname + uri.search);\n };\n fn.url = url;\n if (!isServer) {\n actions.set(url, fn);\n getOwner() && onCleanup(() => actions.delete(url));\n }\n return fn;\n}\nconst hashString = (s) => s.split(\"\").reduce((a, b) => ((a << 5) - a + b.charCodeAt(0)) | 0, 0);\nasync function handleResponse(response, error, navigate) {\n let data;\n let keys;\n let invalidateKeys;\n if (response instanceof Response) {\n if (response.headers.has(\"X-Revalidate\"))\n keys = invalidateKeys = response.headers.get(\"X-Revalidate\").split(\",\");\n if (response.customBody) {\n data = await response.customBody();\n if (response.headers.has(\"X-Single-Flight\")) {\n keys || (keys = []);\n invalidateKeys || (invalidateKeys = []);\n Object.keys(data).forEach(key => {\n if (key === \"_$value\")\n return;\n keys.push(key);\n cache.set(key, data[key]);\n });\n data = data._$value;\n }\n }\n if (response.headers.has(\"Location\")) {\n const locationUrl = response.headers.get(\"Location\") || \"/\";\n if (locationUrl.startsWith(\"http\")) {\n window.location.href = locationUrl;\n }\n else {\n navigate(locationUrl);\n }\n }\n }\n else if (error)\n return { error: response };\n else\n data = response;\n // invalidate\n cacheKeyOp(invalidateKeys, entry => (entry[0] = 0));\n // trigger revalidation\n await revalidate(keys, false);\n return data != null ? { data } : undefined;\n}\n","import { delegateEvents } from \"solid-js/web\";\nimport { onCleanup } from \"solid-js\";\nimport { actions } from \"./action.js\";\nimport { mockBase } from \"../utils.js\";\nexport function setupNativeEvents(preload = true, explicitLinks = false, actionBase = \"/_server\") {\n return (router) => {\n const basePath = router.base.path();\n const navigateFromRoute = router.navigatorFactory(router.base);\n let preloadTimeout = {};\n function isSvg(el) {\n return el.namespaceURI === \"http://www.w3.org/2000/svg\";\n }\n function handleAnchor(evt) {\n if (evt.defaultPrevented ||\n evt.button !== 0 ||\n evt.metaKey ||\n evt.altKey ||\n evt.ctrlKey ||\n evt.shiftKey)\n return;\n const a = evt\n .composedPath()\n .find(el => el instanceof Node && el.nodeName.toUpperCase() === \"A\");\n if (!a || (explicitLinks && !a.hasAttribute(\"link\")))\n return;\n const svg = isSvg(a);\n const href = svg ? a.href.baseVal : a.href;\n const target = svg ? a.target.baseVal : a.target;\n if (target || (!href && !a.hasAttribute(\"state\")))\n return;\n const rel = (a.getAttribute(\"rel\") || \"\").split(/\\s+/);\n if (a.hasAttribute(\"download\") || (rel && rel.includes(\"external\")))\n return;\n const url = svg ? new URL(href, document.baseURI) : new URL(href);\n if (url.origin !== window.location.origin ||\n (basePath && url.pathname && !url.pathname.toLowerCase().startsWith(basePath.toLowerCase())))\n return;\n return [a, url];\n }\n function handleAnchorClick(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n const to = router.parsePath(url.pathname + url.search + url.hash);\n const state = a.getAttribute(\"state\");\n evt.preventDefault();\n navigateFromRoute(to, {\n resolve: false,\n replace: a.hasAttribute(\"replace\"),\n scroll: !a.hasAttribute(\"noscroll\"),\n state: state && JSON.parse(state)\n });\n }\n function handleAnchorPreload(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n if (!preloadTimeout[url.pathname])\n router.preloadRoute(url, a.getAttribute(\"preload\") !== \"false\");\n }\n function handleAnchorIn(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n if (preloadTimeout[url.pathname])\n return;\n preloadTimeout[url.pathname] = setTimeout(() => {\n router.preloadRoute(url, a.getAttribute(\"preload\") !== \"false\");\n delete preloadTimeout[url.pathname];\n }, 200);\n }\n function handleAnchorOut(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [, url] = res;\n if (preloadTimeout[url.pathname]) {\n clearTimeout(preloadTimeout[url.pathname]);\n delete preloadTimeout[url.pathname];\n }\n }\n function handleFormSubmit(evt) {\n let actionRef = evt.submitter && evt.submitter.hasAttribute(\"formaction\")\n ? evt.submitter.getAttribute(\"formaction\")\n : evt.target.getAttribute(\"action\");\n if (!actionRef)\n return;\n if (!actionRef.startsWith(\"https://action/\")) {\n // normalize server actions\n const url = new URL(actionRef, mockBase);\n actionRef = router.parsePath(url.pathname + url.search);\n if (!actionRef.startsWith(actionBase))\n return;\n }\n if (evt.target.method.toUpperCase() !== \"POST\")\n throw new Error(\"Only POST forms are supported for Actions\");\n const handler = actions.get(actionRef);\n if (handler) {\n evt.preventDefault();\n const data = new FormData(evt.target);\n if (evt.submitter && evt.submitter.name)\n data.append(evt.submitter.name, evt.submitter.value);\n handler.call({ r: router, f: evt.target }, data);\n }\n }\n // ensure delegated event run first\n delegateEvents([\"click\", \"submit\"]);\n document.addEventListener(\"click\", handleAnchorClick);\n if (preload) {\n document.addEventListener(\"mouseover\", handleAnchorIn);\n document.addEventListener(\"mouseout\", handleAnchorOut);\n document.addEventListener(\"focusin\", handleAnchorPreload);\n document.addEventListener(\"touchstart\", handleAnchorPreload);\n }\n document.addEventListener(\"submit\", handleFormSubmit);\n onCleanup(() => {\n document.removeEventListener(\"click\", handleAnchorClick);\n if (preload) {\n document.removeEventListener(\"mouseover\", handleAnchorIn);\n document.removeEventListener(\"mouseout\", handleAnchorOut);\n document.removeEventListener(\"focusin\", handleAnchorPreload);\n document.removeEventListener(\"touchstart\", handleAnchorPreload);\n }\n document.removeEventListener(\"submit\", handleFormSubmit);\n });\n };\n}\n","import { setupNativeEvents } from \"../data/events.js\";\nimport { createRouter, scrollToHash, bindEvent } from \"./createRouter.js\";\nimport { createBeforeLeave, keepDepth, notifyIfNotBlocked, saveCurrentDepth } from \"../lifecycle.js\";\nexport function hashParser(str) {\n const to = str.replace(/^.*?#/, \"\");\n // Hash-only hrefs like `#foo` from plain anchors will come in as `/#foo` whereas a link to\n // `/foo` will be `/#/foo`. Check if the to starts with a `/` and if not append it as a hash\n // to the current path so we can handle these in-page anchors correctly.\n if (!to.startsWith(\"/\")) {\n const [, path = \"/\"] = window.location.hash.split(\"#\", 2);\n return `${path}#${to}`;\n }\n return to;\n}\nexport function HashRouter(props) {\n const getSource = () => window.location.hash.slice(1);\n const beforeLeave = createBeforeLeave();\n return createRouter({\n get: getSource,\n set({ value, replace, scroll, state }) {\n if (replace) {\n window.history.replaceState(keepDepth(state), \"\", \"#\" + value);\n }\n else {\n window.location.hash = value;\n }\n const hashIndex = value.indexOf(\"#\");\n const hash = hashIndex >= 0 ? value.slice(hashIndex + 1) : \"\";\n scrollToHash(hash, scroll);\n saveCurrentDepth();\n },\n init: notify => bindEvent(window, \"hashchange\", notifyIfNotBlocked(notify, delta => !beforeLeave.confirm(delta && delta < 0 ? delta : getSource()))),\n create: setupNativeEvents(props.preload, props.explicitLinks, props.actionBase),\n utils: {\n go: delta => window.history.go(delta),\n renderPath: path => `#${path}`,\n parsePath: hashParser,\n beforeLeave\n }\n })(props);\n}\n","import { DEV, equalFn, untrack, getOwner, onCleanup, createSignal, sharedConfig, onMount } from 'solid-js';\nimport { isServer } from 'solid-js/web';\nexport { isServer } from 'solid-js/web';\n\n// src/index.ts\nvar isClient = !isServer;\nvar isDev = isClient && !!DEV;\nvar isProd = !isDev;\nvar noop = () => void 0;\nvar trueFn = () => true;\nvar falseFn = () => false;\nvar defaultEquals = equalFn;\nvar EQUALS_FALSE_OPTIONS = { equals: false };\nvar INTERNAL_OPTIONS = { internal: true };\nvar ofClass = (v, c) => v instanceof c || v && v.constructor === c;\nfunction isObject(value) {\n return value !== null && (typeof value === \"object\" || typeof value === \"function\");\n}\nvar isNonNullable = (i) => i != null;\nvar filterNonNullable = (arr) => arr.filter(isNonNullable);\nvar compare = (a, b) => a < b ? -1 : a > b ? 1 : 0;\nvar arrayEquals = (a, b) => a === b || a.length === b.length && a.every((e, i) => e === b[i]);\nfunction chain(callbacks) {\n return (...args) => {\n for (const callback of callbacks)\n callback && callback(...args);\n };\n}\nfunction reverseChain(callbacks) {\n return (...args) => {\n for (let i = callbacks.length - 1; i >= 0; i--) {\n const callback = callbacks[i];\n callback && callback(...args);\n }\n };\n}\nvar clamp = (n, min, max) => Math.min(Math.max(n, min), max);\nvar access = (v) => typeof v === \"function\" && !v.length ? v() : v;\nvar asArray = (value) => Array.isArray(value) ? value : value ? [value] : [];\nvar accessArray = (list) => list.map((v) => access(v));\nvar withAccess = (value, fn) => {\n const _value = access(value);\n typeof _value != null && fn(_value);\n};\nvar asAccessor = (v) => typeof v === \"function\" ? v : () => v;\nfunction accessWith(valueOrFn, ...args) {\n return typeof valueOrFn === \"function\" ? valueOrFn(...args) : valueOrFn;\n}\nfunction defer(deps, fn, initialValue) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let shouldDefer = true;\n return (prevValue) => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++)\n input[i] = deps[i]();\n } else\n input = deps();\n if (shouldDefer) {\n shouldDefer = false;\n prevInput = input;\n return initialValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nvar entries = Object.entries;\nvar keys = Object.keys;\nvar tryOnCleanup = isDev ? (fn) => getOwner() ? onCleanup(fn) : fn : onCleanup;\nvar createCallbackStack = () => {\n let stack = [];\n const clear = () => stack = [];\n return {\n push: (...callbacks) => stack.push(...callbacks),\n execute(arg0, arg1, arg2, arg3) {\n stack.forEach((cb) => cb(arg0, arg1, arg2, arg3));\n clear();\n },\n clear\n };\n};\nfunction createMicrotask(fn) {\n let calls = 0;\n let args;\n onCleanup(() => calls = 0);\n return (...a) => {\n args = a, calls++;\n queueMicrotask(() => --calls === 0 && fn(...args));\n };\n}\nfunction createHydratableSignal(serverValue, update, options) {\n if (isServer) {\n return createSignal(serverValue, options);\n }\n if (sharedConfig.context) {\n const [state, setState] = createSignal(serverValue, options);\n onMount(() => setState(() => update()));\n return [state, setState];\n }\n return createSignal(update(), options);\n}\nvar createHydrateSignal = createHydratableSignal;\nfunction handleDiffArray(current, prev, handleAdded, handleRemoved) {\n const currLength = current.length;\n const prevLength = prev.length;\n let i = 0;\n if (!prevLength) {\n for (; i < currLength; i++)\n handleAdded(current[i]);\n return;\n }\n if (!currLength) {\n for (; i < prevLength; i++)\n handleRemoved(prev[i]);\n return;\n }\n for (; i < prevLength; i++) {\n if (prev[i] !== current[i])\n break;\n }\n let prevEl;\n let currEl;\n prev = prev.slice(i);\n current = current.slice(i);\n for (prevEl of prev) {\n if (!current.includes(prevEl))\n handleRemoved(prevEl);\n }\n for (currEl of current) {\n if (!prev.includes(currEl))\n handleAdded(currEl);\n }\n}\n\nexport { EQUALS_FALSE_OPTIONS, INTERNAL_OPTIONS, access, accessArray, accessWith, arrayEquals, asAccessor, asArray, chain, clamp, compare, createCallbackStack, createHydratableSignal, createHydrateSignal, createMicrotask, defaultEquals, defer, entries, falseFn, filterNonNullable, handleDiffArray, isClient, isDev, isNonNullable, isObject, isProd, keys, noop, ofClass, reverseChain, trueFn, tryOnCleanup, withAccess };\n","import { tryOnCleanup, entries, createCallbackStack, asArray, access, keys } from '@solid-primitives/utils';\nimport { createEffect, createRenderEffect, createSignal, onCleanup } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/eventListener.ts\nfunction makeEventListener(target, type, handler, options) {\n target.addEventListener(type, handler, options);\n return tryOnCleanup(target.removeEventListener.bind(target, type, handler, options));\n}\nfunction createEventListener(targets, type, handler, options) {\n if (isServer)\n return;\n const attachListeners = () => {\n asArray(access(targets)).forEach((el) => {\n if (el)\n asArray(access(type)).forEach((type2) => makeEventListener(el, type2, handler, options));\n });\n };\n if (typeof targets === \"function\")\n createEffect(attachListeners);\n else\n createRenderEffect(attachListeners);\n}\nfunction createEventSignal(target, type, options) {\n if (isServer) {\n return () => void 0;\n }\n const [lastEvent, setLastEvent] = createSignal();\n createEventListener(target, type, setLastEvent, options);\n return lastEvent;\n}\nvar eventListener = (target, props) => {\n createEffect(() => {\n const [type, handler, options] = props();\n makeEventListener(target, type, handler, options);\n });\n};\nfunction createEventListenerMap(targets, handlersMap, options) {\n if (isServer) {\n return;\n }\n for (const [eventName, handler] of entries(handlersMap)) {\n if (handler)\n createEventListener(targets, eventName, handler, options);\n }\n}\nvar attachPropListeners = (target, props) => {\n keys(props).forEach((attr) => {\n if (attr.startsWith(\"on\") && typeof props[attr] === \"function\")\n makeEventListener(target, attr.substring(2).toLowerCase(), props[attr]);\n });\n};\nvar WindowEventListener = (props) => {\n if (isServer)\n return null;\n attachPropListeners(window, props);\n};\nvar DocumentEventListener = (props) => {\n if (isServer)\n return null;\n attachPropListeners(document, props);\n};\nfunction makeEventListenerStack(target, options) {\n if (isServer) {\n return [() => () => void 0, () => void 0];\n }\n const { push, execute } = createCallbackStack();\n return [\n (type, handler, overwriteOptions) => {\n const clear = makeEventListener(target, type, handler, overwriteOptions ?? options);\n push(clear);\n return clear;\n },\n onCleanup(execute)\n ];\n}\n\n// src/callbackWrappers.ts\nvar preventDefault = (callback) => (e) => {\n e.preventDefault();\n callback(e);\n};\nvar stopPropagation = (callback) => (e) => {\n e.stopPropagation();\n callback(e);\n};\nvar stopImmediatePropagation = (callback) => (e) => {\n e.stopImmediatePropagation();\n callback(e);\n};\n\nexport { DocumentEventListener, WindowEventListener, createEventListener, createEventListenerMap, createEventSignal, eventListener, makeEventListener, makeEventListenerStack, preventDefault, stopImmediatePropagation, stopPropagation };\n","import { getOwner, createRoot, runWithOwner, onCleanup, sharedConfig, createSignal, batch } from 'solid-js';\nimport { isServer } from 'solid-js/web';\nimport { asArray, access, trueFn, noop, createMicrotask } from '@solid-primitives/utils';\n\n// src/index.ts\nfunction createSubRoot(fn, ...owners) {\n if (owners.length === 0)\n owners = [getOwner()];\n return createRoot((dispose) => {\n asArray(access(owners)).forEach(\n (owner) => owner && runWithOwner(owner, onCleanup.bind(void 0, dispose))\n );\n return fn(dispose);\n }, owners[0]);\n}\nvar createBranch = createSubRoot;\nvar createCallback = (callback, owner = getOwner()) => owner ? (...args) => runWithOwner(owner, () => callback(...args)) : callback;\nfunction createDisposable(fn, ...owners) {\n return createSubRoot(\n (dispose) => {\n fn(dispose);\n return dispose;\n },\n ...owners\n );\n}\nfunction createSingletonRoot(factory, detachedOwner = getOwner()) {\n let listeners = 0, value, disposeRoot;\n return () => {\n listeners++;\n onCleanup(() => {\n listeners--;\n queueMicrotask(() => {\n if (!listeners && disposeRoot) {\n disposeRoot();\n disposeRoot = value = void 0;\n }\n });\n });\n if (!disposeRoot) {\n createRoot((dispose) => value = factory(disposeRoot = dispose), detachedOwner);\n }\n return value;\n };\n}\nvar createSharedRoot = createSingletonRoot;\nfunction createHydratableSingletonRoot(factory) {\n const owner = getOwner();\n const singleton = createSingletonRoot(factory, owner);\n return () => isServer || sharedConfig.context ? createRoot(factory, owner) : singleton();\n}\nfunction createRootPool(factory, options = {}) {\n if (isServer) {\n const owner2 = getOwner();\n return (args) => createRoot((dispose) => factory(() => args, trueFn, dispose), owner2);\n }\n let length = 0;\n const { limit = 100 } = options, pool = new Array(limit), owner = getOwner(), mapRoot = factory.length > 1 ? (dispose, [args, set]) => {\n const [active, setA] = createSignal(true);\n const root = {\n dispose,\n set,\n setA,\n active,\n v: factory(args, active, () => disposeRoot(root))\n };\n return root;\n } : (dispose, [args, set]) => ({\n dispose,\n set,\n setA: trueFn,\n active: trueFn,\n v: factory(args, trueFn, noop)\n }), limitPool = createMicrotask(() => {\n if (length > limit) {\n for (let i = limit; i < length; i++) {\n pool[i].dispose();\n pool[i] = void 0;\n }\n length = limit;\n }\n }), cleanupRoot = (root) => {\n if (root.dispose !== noop) {\n pool[length++] = root;\n root.setA(false);\n limitPool();\n }\n }, disposeRoot = (root) => {\n root.dispose();\n root.dispose = noop;\n if (root.active())\n root.setA(false);\n else {\n pool[pool.indexOf(root)] = pool[--length];\n pool[length] = void 0;\n }\n };\n onCleanup(() => {\n for (let i = 0; i < length; i++)\n pool[i].dispose();\n length = 0;\n });\n return (arg) => {\n let root;\n if (length) {\n root = pool[--length];\n pool[length] = void 0;\n batch(() => {\n root.set(() => arg);\n root.setA(true);\n });\n } else\n root = createRoot((dispose) => mapRoot(dispose, createSignal(arg)), owner);\n onCleanup(() => cleanupRoot(root));\n return root.v;\n };\n}\n\nexport { createBranch, createCallback, createDisposable, createHydratableSingletonRoot, createRootPool, createSharedRoot, createSingletonRoot, createSubRoot };\n","import { makeEventListener } from '@solid-primitives/event-listener';\nimport { createSingletonRoot } from '@solid-primitives/rootless';\nimport { arrayEquals } from '@solid-primitives/utils';\nimport { createSignal, untrack, createMemo, createEffect, on } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nfunction equalsKeyHoldSequence(sequence, model) {\n for (let i = sequence.length - 1; i >= 0; i--) {\n const _model = model.slice(0, i + 1);\n if (!arrayEquals(sequence[i], _model))\n return false;\n }\n return true;\n}\nvar useKeyDownEvent = /* @__PURE__ */ createSingletonRoot(\n () => {\n if (isServer) {\n return () => null;\n }\n const [event, setEvent] = createSignal(null);\n makeEventListener(window, \"keydown\", (e) => {\n setEvent(e);\n setTimeout(() => setEvent(null));\n });\n return event;\n }\n);\nvar useKeyDownList = /* @__PURE__ */ createSingletonRoot(() => {\n if (isServer) {\n const keys = () => [];\n keys[0] = keys;\n keys[1] = { event: () => null };\n keys[Symbol.iterator] = function* () {\n yield keys[0];\n yield keys[1];\n };\n return keys;\n }\n const [pressedKeys, setPressedKeys] = createSignal([]), reset = () => setPressedKeys([]), event = useKeyDownEvent();\n makeEventListener(window, \"keydown\", (e) => {\n if (e.repeat || typeof e.key !== \"string\")\n return;\n const key = e.key.toUpperCase(), currentKeys = pressedKeys();\n if (currentKeys.includes(key))\n return;\n const keys = [...currentKeys, key];\n if (currentKeys.length === 0 && key !== \"ALT\" && key !== \"CONTROL\" && key !== \"META\" && key !== \"SHIFT\") {\n if (e.shiftKey)\n keys.unshift(\"SHIFT\");\n if (e.altKey)\n keys.unshift(\"ALT\");\n if (e.ctrlKey)\n keys.unshift(\"CONTROL\");\n if (e.metaKey)\n keys.unshift(\"META\");\n }\n setPressedKeys(keys);\n });\n makeEventListener(window, \"keyup\", (e) => {\n if (typeof e.key !== \"string\")\n return;\n const key = e.key.toUpperCase();\n setPressedKeys((prev) => prev.filter((_key) => _key !== key));\n });\n makeEventListener(window, \"blur\", reset);\n makeEventListener(window, \"contextmenu\", (e) => {\n e.defaultPrevented || reset();\n });\n pressedKeys[0] = pressedKeys;\n pressedKeys[1] = { event };\n pressedKeys[Symbol.iterator] = function* () {\n yield pressedKeys[0];\n yield pressedKeys[1];\n };\n return pressedKeys;\n});\nvar useCurrentlyHeldKey = /* @__PURE__ */ createSingletonRoot(\n () => {\n if (isServer) {\n return () => null;\n }\n const keys = useKeyDownList();\n let prevKeys = untrack(keys);\n return createMemo(() => {\n const _keys = keys();\n const prev = prevKeys;\n prevKeys = _keys;\n if (prev.length === 0 && _keys.length === 1)\n return _keys[0];\n return null;\n });\n }\n);\nvar useKeyDownSequence = /* @__PURE__ */ createSingletonRoot(() => {\n if (isServer) {\n return () => [];\n }\n const keys = useKeyDownList();\n return createMemo((prev) => {\n if (keys().length === 0)\n return [];\n return [...prev, keys()];\n }, []);\n});\nfunction createKeyHold(key, options = {}) {\n if (isServer) {\n return () => false;\n }\n key = key.toUpperCase();\n const { preventDefault = true } = options, event = useKeyDownEvent(), heldKey = useCurrentlyHeldKey();\n return createMemo(() => heldKey() === key && (preventDefault && event()?.preventDefault(), true));\n}\nfunction createShortcut(keys, callback, options = {}) {\n if (isServer || !keys.length) {\n return;\n }\n keys = keys.map((key) => key.toUpperCase());\n const { preventDefault = true } = options, event = useKeyDownEvent(), sequence = useKeyDownSequence();\n let reset = false;\n const handleSequenceWithReset = (sequence2) => {\n if (!sequence2.length)\n return reset = false;\n if (reset)\n return;\n const e = event();\n if (sequence2.length < keys.length) {\n if (equalsKeyHoldSequence(sequence2, keys.slice(0, sequence2.length))) {\n preventDefault && e && e.preventDefault();\n } else {\n reset = true;\n }\n } else {\n reset = true;\n if (equalsKeyHoldSequence(sequence2, keys)) {\n preventDefault && e && e.preventDefault();\n callback(e);\n }\n }\n };\n const handleSequenceWithoutReset = (sequence2) => {\n const last = sequence2.at(-1);\n if (!last)\n return;\n const e = event();\n if (preventDefault && last.length < keys.length) {\n if (arrayEquals(last, keys.slice(0, keys.length - 1))) {\n e && e.preventDefault();\n }\n return;\n }\n if (arrayEquals(last, keys)) {\n const prev = sequence2.at(-2);\n if (!prev || arrayEquals(prev, keys.slice(0, keys.length - 1))) {\n preventDefault && e && e.preventDefault();\n callback(e);\n }\n }\n };\n createEffect(\n on(sequence, options.requireReset ? handleSequenceWithReset : handleSequenceWithoutReset)\n );\n}\n\nexport { createKeyHold, createShortcut, useCurrentlyHeldKey, useKeyDownEvent, useKeyDownList, useKeyDownSequence };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nexport function isFunc(item) {\n return typeof item === 'function';\n}\nexport function isObject(item) {\n return typeof item === 'object';\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isArray(item) {\n return Array.isArray(item);\n}\nexport function isString(item) {\n return typeof item === 'string';\n}\nexport function isNumber(item) {\n return typeof item === 'number';\n}\nexport function isInteger(item) {\n return Number.isInteger(item);\n}\nexport function keyExists(obj, keys) {\n for (const key of keys) {\n if (key in obj) {\n return true;\n }\n }\n return false;\n}\n/**\n * Asserts a condition is truthy, otherwise throws an error\n *\n * @remarks\n * Useful at the top of functions to ensure certain conditions, arguments and\n * properties are set/met before continuing. When using this function,\n * TypeScript will narrow away falsy types from the condition.\n *\n * @param condition\n * @param message\n * @returns\n */\nexport function assertTruthy(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n//# sourceMappingURL=utils.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { createEffect, on, createSignal, untrack, } from 'solid-js';\nimport { useKeyDownEvent } from '@solid-primitives/keyboard';\nimport { activeElement, ElementNode } from '@lightningjs/solid';\nimport { isFunc, isArray } from './utils.js';\nconst keyMapEntries = {\n ArrowLeft: 'Left',\n ArrowRight: 'Right',\n ArrowUp: 'Up',\n ArrowDown: 'Down',\n Enter: 'Enter',\n l: 'Last',\n ' ': 'Space',\n Backspace: 'Back',\n Escape: 'Escape',\n};\nconst [focusPath, setFocusPath] = createSignal([]);\nexport { focusPath };\nexport const useFocusManager = (userKeyMap) => {\n const keypressEvent = useKeyDownEvent();\n if (userKeyMap) {\n // Flatten the userKeyMap to a hash\n for (const [key, value] of Object.entries(userKeyMap)) {\n if (isArray(value)) {\n value.forEach((v) => {\n keyMapEntries[v] = key;\n });\n }\n else {\n keyMapEntries[value] = key;\n }\n }\n }\n createEffect(on(activeElement, (currentFocusedElm, prevFocusedElm, prevFocusPath = []) => {\n const newFocusedElms = [];\n let current = currentFocusedElm;\n const fp = [];\n while (current) {\n if (!current.states.has('focus')) {\n current.states.add('focus');\n isFunc(current.onFocus) &&\n current.onFocus.call(current, currentFocusedElm, prevFocusedElm);\n newFocusedElms.push(current);\n }\n fp.push(current);\n current = current.parent;\n }\n prevFocusPath.forEach((elm) => {\n if (!fp.includes(elm)) {\n elm.states.remove('focus');\n isFunc(elm.onBlur) &&\n elm.onBlur.call(elm, currentFocusedElm, prevFocusedElm);\n }\n });\n setFocusPath(fp);\n return fp;\n }, { defer: true }));\n createEffect(() => {\n const e = keypressEvent();\n if (e) {\n // Search keyMap for the value of the pressed key or keyCode if value undefined\n const mappedKeyEvent = keyMapEntries[e.key] || keyMapEntries[e.keyCode];\n untrack(() => {\n const fp = focusPath();\n let finalFocusElm = undefined;\n for (const elm of fp) {\n finalFocusElm = finalFocusElm || elm;\n if (mappedKeyEvent) {\n const onKeyHandler = elm[`on${mappedKeyEvent}`];\n if (isFunc(onKeyHandler)) {\n if (onKeyHandler.call(elm, e, elm, finalFocusElm) === true) {\n break;\n }\n }\n }\n else {\n console.log(`Unhandled key event: ${e.key}`);\n }\n if (isFunc(elm.onKeyPress)) {\n if (elm.onKeyPress.call(elm, e, mappedKeyEvent, elm, finalFocusElm) === true) {\n break;\n }\n }\n }\n return false;\n });\n }\n });\n return focusPath;\n};\n//# sourceMappingURL=useFocusManager.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { ElementNode } from '@lightningjs/solid';\n// To use with TS import withPadding and then put withPadding; on the next line to prevent tree shaking\nexport function withPadding(el, padding) {\n const pad = padding();\n let top, left, right, bottom;\n if (Array.isArray(pad)) {\n // top right bottom left\n if (pad.length === 2) {\n top = bottom = pad[0];\n left = right = pad[1];\n }\n else if (pad.length === 3) {\n top = pad[0];\n left = right = pad[1];\n bottom = pad[2];\n }\n else {\n [top, right, bottom, left] = pad;\n }\n }\n else {\n top = right = bottom = left = pad;\n }\n el.onBeforeLayout = (node, size) => {\n if (size) {\n el.width =\n el.children.reduce((acc, c) => {\n return acc + (c.width || 0);\n }, 0) +\n left +\n right;\n const firstChild = el.children[0];\n if (firstChild) {\n // set padding or marginLeft for flex\n firstChild.x = left;\n firstChild.marginLeft = left;\n }\n let maxHeight = 0;\n el.children.forEach((c) => {\n c.y = top;\n c.marginTop = top;\n maxHeight = Math.max(maxHeight, c.height || 0);\n });\n el.height = maxHeight + top + bottom;\n // let flex know we need to re-layout\n return true;\n }\n };\n}\n//# sourceMappingURL=withPadding.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n/* global SpeechSynthesisErrorEvent */\nfunction flattenStrings(series = []) {\n const flattenedSeries = [];\n let i;\n for (i = 0; i < series.length; i++) {\n const s = series[i];\n if (typeof s === 'string' && !s.includes('PAUSE-')) {\n flattenedSeries.push(series[i]);\n }\n else {\n break;\n }\n }\n // add a \"word boundary\" to ensure the Announcer doesn't automatically try to\n // interpret strings that look like dates but are not actually dates\n // for example, if \"Rising Sun\" and \"1993\" are meant to be two separate lines,\n // when read together, \"Sun 1993\" is interpretted as \"Sunday 1993\"\n return [flattenedSeries.join(',\\b ')].concat(series.slice(i));\n}\nfunction delay(pause) {\n return new Promise((resolve) => {\n setTimeout(resolve, pause);\n });\n}\n/**\n * Speak a string\n *\n * @param phrase Phrase to speak\n * @param utterances An array which the new SpeechSynthesisUtterance instance representing this utterance will be appended\n * @param lang Language to speak in\n * @return {Promise} Promise resolved when the utterance has finished speaking, and rejected if there's an error\n */\nfunction speak(phrase, utterances, lang = 'en-US') {\n const synth = window.speechSynthesis;\n return new Promise((resolve, reject) => {\n const utterance = new SpeechSynthesisUtterance(phrase);\n utterance.lang = lang;\n utterance.onend = () => {\n resolve();\n };\n utterance.onerror = (e) => {\n reject(e);\n };\n utterances.push(utterance);\n synth.speak(utterance);\n });\n}\nfunction speakSeries(series, lang, root = true) {\n const synth = window.speechSynthesis;\n const remainingPhrases = flattenStrings(Array.isArray(series) ? series : [series]);\n const nestedSeriesResults = [];\n /*\n We hold this array of SpeechSynthesisUtterances in order to prevent them from being\n garbage collected prematurely on STB hardware which can cause the 'onend' events of\n utterances to not fire consistently.\n */\n const utterances = [];\n let active = true;\n const seriesChain = (async () => {\n try {\n while (active && remainingPhrases.length) {\n const phrase = await Promise.resolve(remainingPhrases.shift());\n if (!active) {\n // Exit\n // Need to check this after the await in case it was cancelled in between\n break;\n }\n else if (typeof phrase === 'string' && phrase.includes('PAUSE-')) {\n // Pause it\n let pause = Number(phrase.split('PAUSE-')[1]) * 1000;\n if (isNaN(pause)) {\n pause = 0;\n }\n await delay(pause);\n }\n else if (typeof phrase === 'string' && phrase.length) {\n // Speak it\n const totalRetries = 3;\n let retriesLeft = totalRetries;\n while (active && retriesLeft > 0) {\n try {\n await speak(phrase, utterances, lang);\n retriesLeft = 0;\n }\n catch (e) {\n // eslint-disable-next-line no-undef\n if (e instanceof SpeechSynthesisErrorEvent) {\n if (e.error === 'network') {\n retriesLeft--;\n console.warn(`Speech synthesis network error. Retries left: ${retriesLeft}`);\n await delay(500 * (totalRetries - retriesLeft));\n }\n else if (e.error === 'canceled' ||\n e.error === 'interrupted') {\n // Cancel or interrupt error (ignore)\n retriesLeft = 0;\n }\n else {\n throw new Error(`SpeechSynthesisErrorEvent: ${e.error}`);\n }\n }\n else {\n throw e;\n }\n }\n }\n }\n else if (typeof phrase === 'function') {\n const seriesResult = speakSeries(phrase(), lang, false);\n nestedSeriesResults.push(seriesResult);\n await seriesResult.series;\n }\n else if (Array.isArray(phrase)) {\n // Speak it (recursively)\n const seriesResult = speakSeries(phrase, lang, false);\n nestedSeriesResults.push(seriesResult);\n await seriesResult.series;\n }\n }\n }\n finally {\n active = false;\n }\n })();\n return {\n series: seriesChain,\n get active() {\n return active;\n },\n append: (toSpeak) => {\n remainingPhrases.push(toSpeak);\n },\n cancel: () => {\n if (!active) {\n return;\n }\n if (root) {\n synth.cancel();\n }\n nestedSeriesResults.forEach((nestedSeriesResults) => {\n nestedSeriesResults.cancel();\n });\n active = false;\n },\n };\n}\nlet currentSeries;\nexport default function (toSpeak, lang = 'en-US') {\n currentSeries && currentSeries.cancel();\n currentSeries = speakSeries(toSpeak, lang);\n return currentSeries;\n}\n//# sourceMappingURL=speech.js.map","import { getOwner, onCleanup, createSignal, getListener } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nvar debounce = (callback, wait) => {\n if (isServer) {\n return Object.assign(() => void 0, { clear: () => void 0 });\n }\n let timeoutId;\n const clear = () => clearTimeout(timeoutId);\n if (getOwner())\n onCleanup(clear);\n const debounced = (...args) => {\n if (timeoutId !== void 0)\n clear();\n timeoutId = setTimeout(() => callback(...args), wait);\n };\n return Object.assign(debounced, { clear });\n};\nvar throttle = (callback, wait) => {\n if (isServer) {\n return Object.assign(() => void 0, { clear: () => void 0 });\n }\n let isThrottled = false, timeoutId, lastArgs;\n const throttled = (...args) => {\n lastArgs = args;\n if (isThrottled)\n return;\n isThrottled = true;\n timeoutId = setTimeout(() => {\n callback(...lastArgs);\n isThrottled = false;\n }, wait);\n };\n const clear = () => {\n clearTimeout(timeoutId);\n isThrottled = false;\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(throttled, { clear });\n};\nvar scheduleIdle = isServer ? () => Object.assign(() => void 0, { clear: () => void 0 }) : (\n // requestIdleCallback is not supported in Safari\n window.requestIdleCallback ? (callback, maxWait) => {\n let isDeferred = false, id, lastArgs;\n const deferred = (...args) => {\n lastArgs = args;\n if (isDeferred)\n return;\n isDeferred = true;\n id = requestIdleCallback(\n () => {\n callback(...lastArgs);\n isDeferred = false;\n },\n { timeout: maxWait }\n );\n };\n const clear = () => {\n cancelIdleCallback(id);\n isDeferred = false;\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(deferred, { clear });\n } : (\n // fallback to setTimeout (throttle)\n (callback) => throttle(callback)\n )\n);\nfunction leading(schedule, callback, wait) {\n if (isServer) {\n let called = false;\n const scheduled2 = (...args) => {\n if (called)\n return;\n called = true;\n callback(...args);\n };\n return Object.assign(scheduled2, { clear: () => void 0 });\n }\n let isScheduled = false;\n const scheduled = schedule(() => isScheduled = false, wait);\n const func = (...args) => {\n if (!isScheduled)\n callback(...args);\n isScheduled = true;\n scheduled();\n };\n const clear = () => {\n isScheduled = false;\n scheduled.clear();\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(func, { clear });\n}\nfunction leadingAndTrailing(schedule, callback, wait) {\n if (isServer) {\n let called = false;\n const scheduled2 = (...args) => {\n if (called)\n return;\n called = true;\n callback(...args);\n };\n return Object.assign(scheduled2, { clear: () => void 0 });\n }\n let State;\n ((State2) => {\n State2[State2[\"Ready\"] = 0] = \"Ready\";\n State2[State2[\"Leading\"] = 1] = \"Leading\";\n State2[State2[\"Trailing\"] = 2] = \"Trailing\";\n })(State || (State = {}));\n let state = 0 /* Ready */;\n const scheduled = schedule((args) => {\n state === 2 /* Trailing */ && callback(...args);\n state = 0 /* Ready */;\n }, wait);\n const fn = (...args) => {\n if (state !== 2 /* Trailing */) {\n if (state === 0 /* Ready */)\n callback(...args);\n state += 1;\n }\n scheduled(args);\n };\n const clear = () => {\n state = 0 /* Ready */;\n scheduled.clear();\n };\n if (getOwner())\n onCleanup(clear);\n return Object.assign(fn, { clear });\n}\nfunction createScheduled(schedule) {\n let listeners = 0;\n let isDirty = false;\n const [track, dirty] = createSignal(void 0, { equals: false });\n const call = schedule(() => {\n isDirty = true;\n dirty();\n });\n return () => {\n if (!isDirty)\n call(), track();\n if (isDirty) {\n isDirty = !!listeners;\n return true;\n }\n if (getListener()) {\n listeners++;\n onCleanup(() => listeners--);\n }\n return false;\n };\n}\n\nexport { createScheduled, debounce, leading, leadingAndTrailing, scheduleIdle, throttle };\n","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { untrack } from 'solid-js';\nimport SpeechEngine, {} from './speech.js';\nimport { debounce } from '@solid-primitives/scheduled';\nimport { focusPath } from '../useFocusManager.js';\nlet resetFocusPathTimer;\nlet prevFocusPath = [];\nlet currentlySpeaking;\nlet voiceOutDisabled = false;\nconst fiveMinutes = 300000;\nfunction debounceWithFlush(callback, time) {\n const trigger = debounce(callback, time);\n let scopedValue;\n const debounced = (newValue) => {\n scopedValue = newValue;\n trigger(newValue);\n };\n debounced.flush = () => {\n trigger.clear();\n callback(scopedValue);\n };\n debounced.clear = trigger.clear;\n return debounced;\n}\nfunction getElmName(elm) {\n return elm.id || elm.name;\n}\nfunction onFocusChangeCore(focusPath = []) {\n if (!Announcer.onFocusChange || !Announcer.enabled) {\n return;\n }\n const loaded = focusPath.every((elm) => !elm.loading);\n const focusDiff = focusPath.filter((elm) => !prevFocusPath.includes(elm));\n resetFocusPathTimer();\n if (!loaded && Announcer.onFocusChange) {\n Announcer.onFocusChange([]);\n return;\n }\n prevFocusPath = focusPath.slice(0);\n const toAnnounceText = [];\n const toAnnounce = focusDiff.reduce((acc, elm) => {\n if (elm.announce) {\n acc.push([getElmName(elm), 'Announce', elm.announce]);\n toAnnounceText.push(elm.announce);\n }\n else if (elm.title) {\n acc.push([getElmName(elm), 'Title', elm.title]);\n toAnnounceText.push(elm.title);\n }\n else {\n acc.push([getElmName(elm), 'No Announce', '']);\n }\n return acc;\n }, []);\n focusDiff.reverse().reduce((acc, elm) => {\n if (elm.announceContext) {\n acc.push([getElmName(elm), 'Context', elm.announceContext]);\n toAnnounceText.push(elm.announceContext);\n }\n else {\n acc.push([getElmName(elm), 'No Context', '']);\n }\n return acc;\n }, toAnnounce);\n if (Announcer.debug) {\n console.table(toAnnounce);\n }\n if (toAnnounceText.length) {\n return Announcer.speak(toAnnounceText.reduce((acc, val) => acc.concat(val), []));\n }\n}\nfunction textToSpeech(toSpeak) {\n if (voiceOutDisabled) {\n return;\n }\n return (currentlySpeaking = SpeechEngine(toSpeak));\n}\nexport const Announcer = {\n debug: false,\n enabled: true,\n cancel: function () {\n currentlySpeaking && currentlySpeaking.cancel();\n },\n clearPrevFocus: function (depth = 0) {\n prevFocusPath = prevFocusPath.slice(0, depth);\n resetFocusPathTimer();\n },\n speak: function (text, { append = false, notification = false } = {}) {\n if (Announcer.onFocusChange && Announcer.enabled) {\n Announcer.onFocusChange.flush();\n if (append && currentlySpeaking && currentlySpeaking.active) {\n currentlySpeaking.append(text);\n }\n else {\n Announcer.cancel();\n textToSpeech(text);\n }\n if (notification) {\n voiceOutDisabled = true;\n currentlySpeaking?.series\n .finally(() => {\n voiceOutDisabled = false;\n Announcer.refresh();\n })\n .catch(console.error);\n }\n }\n return currentlySpeaking;\n },\n refresh: function (depth = 0) {\n Announcer.clearPrevFocus(depth);\n Announcer.onFocusChange &&\n Announcer.onFocusChange(untrack(() => focusPath()));\n },\n setupTimers: function ({ focusDebounce = 400, focusChangeTimeout = fiveMinutes, } = {}) {\n Announcer.onFocusChange = debounceWithFlush(onFocusChangeCore, focusDebounce);\n resetFocusPathTimer = debounceWithFlush(() => {\n // Reset focus path for full announce\n prevFocusPath = [];\n }, focusChangeTimeout);\n },\n};\n//# sourceMappingURL=announcer.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { createEffect, on } from 'solid-js';\nimport { Announcer } from './announcer.js';\nimport { focusPath } from '../useFocusManager.js';\nexport const useAnnouncer = () => {\n Announcer.setupTimers();\n createEffect(on(focusPath, Announcer.onFocusChange, { defer: true }));\n return Announcer;\n};\n//# sourceMappingURL=index.js.map","/*\n * Copyright 2023 Comcast Cable Communications Management, LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { renderer } from '@lightningjs/solid';\nimport {} from '@lightningjs/renderer';\nexport function createSpriteMap(src, subTextures) {\n const spriteMapTexture = renderer.createTexture('ImageTexture', {\n src,\n });\n return subTextures.reduce((acc, t) => {\n const { x, y, width, height } = t;\n acc[t.name] = renderer.createTexture('SubTexture', {\n texture: spriteMapTexture,\n x,\n y,\n width,\n height,\n });\n return acc;\n }, {});\n}\n//# sourceMappingURL=createSpriteMap.js.map","import { createSignal } from \"solid-js\";\nexport const [globalBackground, setGlobalBackground] = createSignal(\"\");\n","export default {\n name: 'Base Lightning TV',\n alpha: {\n primary: 1,\n secondary: 0.7,\n tertiary: 0.1,\n inactive: 0.5,\n full: 1,\n none: 0,\n alpha1: 0.1,\n alpha2: 0.3,\n alpha3: 0.5,\n alpha4: 0.7,\n alpha5: 0.9\n },\n animation: {\n duration: {\n none: 0,\n xfast: 0.1,\n fast: 0.25,\n normal: 0.5,\n slow: 0.75,\n xslow: 0.9\n },\n delay: {\n none: 0,\n xfast: 0.01,\n fast: 0.025,\n normal: 0.05,\n slow: 0.075,\n xslow: 0.09\n },\n expressive: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n expressiveEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n expressiveExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standard: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standardEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n standardExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utility: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utilityEntrance: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n },\n utilityExit: {\n timingFunction: 'cubic-bezier(0, 0, 1, 1)',\n delay: 0,\n duration: 0.25\n }\n },\n asset: {\n arrowLeft:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAi0lEQVRIDWNgGAWjIfD//38JID5Fk5AAGqwKxPeA+D/VLQCaaQLEr0CGgwBVLQCa5wbEn0EGwwDVLAAaGA3Ev2AGw2iqWAA0rBiI/8EMRaYptgBoWDeygehsci1gIlcjWfqArqZdEMFcBLSEdpGMZAntkimSJbTLaEiW0K6oQLKEdoUdzJJRemiHAAD4n+yzPWCs7QAAAABJRU5ErkJggg==',\n arrowRight:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAAg0lEQVRIDWNgGAWjIYArBP7//38KiCVwyVMsDjQcBO4BsSrFhmEzAGw8hHgFpEywqaFIDMkCEPMzELtRZCC6ZjQLQNxfQByNro5sPhYLQEL/gLiYbEORNeKwACbcDVPLBGMMOhrmVDSapkFE00imaTKlaUajaVFB28Ju0CXrUQfhDAEAEgHss6NhpLQAAAAASUVORK5CYII=',\n backspaceOutline:\n 'data:image/png;base64,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',\n check:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAOCAYAAAAi2ky3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACtSURBVHgBvdPdDcIgEAfwoy8Nb45QN3AGF2s36Ahu4gpuIDoBfSgfpdoTlCbEWEMh6T8hFzjyg5AAkBHOcQe5UWqspRx435sDpMYj6IYQwwVSEiJ2MKVUBWuzLSLl2HL+uxmNCGFO8yaL7RHxve6qRZoAuS4hxac8735elWVx7jrtMKL1o0Gcat9jhExHSukN/kUIFZ7MpDRtzE1isDRkAUtDvrA8ZI597FUf8gWH9P0b4gko9wAAAABJRU5ErkJggg=='\n },\n color: {\n palette: {\n 'blue-20': '0xbecffeff',\n 'blue-40': '0x93a9fdff',\n 'blue-90': '0x000033ff',\n 'grey-05': '0xf8f7faff',\n 'grey-40': '0x929096ff',\n 'grey-70': '0x48474bff',\n 'grey-90': '0x181819ff'\n },\n white: '0xffffffff',\n black: '0x000000ff',\n grey: '0x929096ff',\n red: '0xe74c3cff',\n orange: '0xdc7633ff',\n yellow: '0xf7dc6fff',\n green: '0x2ecc71ff',\n blue: '0x93a9fdff',\n purple: '0x663399ff',\n material: '0x181819ff',\n materialBrand: '0x000033ff',\n overlay: '0x181819b3',\n textNeutral: '0xf8f7faff',\n textNeutralSecondary: '0xf8f7fab3',\n textNeutralTertiary: '0xf8f7fa1a',\n textNeutralDisabled: '0xf8f7fa80',\n textInverse: '0x181819ff',\n textInverseSecondary: '0x181819b3',\n textInverseTertiary: '0x1818191a',\n textInverseDisabled: '0x18181980',\n textBrand: '0x93a9fdff',\n textBrandSecondary: '0x93a9fdb3',\n textBrandTertiary: '0x93a9fd1a',\n textBrandDisabled: '0x93a9fd80',\n textPositive: '0x2ecc71ff',\n textNegative: '0xe74c3cff',\n textInfo: '0x93a9fdff',\n textCaution: '0xdc7633ff',\n fillTransparent: '0xffffff0',\n fillNeutral: '0xf8f7faff',\n fillNeutralSecondary: '0xf8f7fab3',\n fillNeutralTertiary: '0xf8f7fa1a',\n fillNeutralDisabled: '0xf8f7fa80',\n fillInverse: '0x181819ff',\n fillInverseSecondary: '0x181819b3',\n fillInverseTertiary: '0x1818191a',\n fillInverseDisabled: '0x18181980',\n fillBrand: '0x93a9fdff',\n fillBrandSecondary: '0x93a9fdb3',\n fillBrandTertiary: '0x93a9fd1a',\n fillBrandDisabled: '0x93a9fd80',\n fillPositive: '0x2ecc71ff',\n fillNegative: '0xe74c3cff',\n fillInfo: '0x93a9fdff',\n fillCaution: '0xdc7633ff',\n strokeNeutral: '0xf8f7faff',\n strokeNeutralSecondary: '0xf8f7fab3',\n strokeNeutralTertiary: '0xf8f7fa1a',\n strokeNeutralDisabled: '0xf8f7fa80',\n strokeInverse: '0x181819ff',\n strokeInverseSecondary: '0x181819b3',\n strokeInverseTertiary: '0x1818191a',\n strokeInverseDisabled: '0x18181980',\n strokeBrand: '0x93a9fdff',\n strokeBrandSecondary: '0x93a9fdb3',\n strokeBrandTertiary: '0x93a9fd1a',\n strokeBrandDisabled: '0x93a9fd80',\n strokePositive: '0x2ecc71ff',\n strokeNegative: '0xe74c3cff',\n strokeInfo: '0x93a9fdff',\n strokeCaution: '0xdc7633ff',\n interactiveNeutral: '0xffffff1a',\n interactiveNeutralFocus: '0xffffffff',\n interactiveNeutralFocusSoft: '0xffffff1a',\n interactiveInverse: '0x48474b1a',\n interactiveInverseFocus: '0x48474bff',\n interactiveInverseFocusSoft: '0x48474b1a',\n interactiveBrand: '0xbecffe1a',\n interactiveBrandFocus: '0xbecffeff',\n interactiveBrandFocusSoft: '0xbecffe1a',\n shadowNeutral: '0x000000b3',\n shadowNeutralFocus: '0x000000b3',\n shadowNeutralFocusSoft: '0x000000b3',\n shadowNeutralText: '0x000000ff',\n shadowInverse: '0x000000b3',\n shadowInverseFocus: '0x000000b3',\n shadowInverseFocusSoft: '0x000000b3',\n shadowInverseText: '0x000000ff',\n shadowBrand: '0x000000b3',\n shadowBrandFocus: '0x000000b3',\n shadowBrandFocusSoft: '0x000000b3',\n shadowBrandText: '0x000000ff'\n },\n font: [],\n layout: {\n columnCount: 10,\n focusScale: 1.2,\n gutterX: 20,\n gutterY: 20,\n marginX: 150,\n marginY: 150,\n safe: 50,\n screenW: 1920,\n screenH: 1080\n },\n radius: { none: 0, xs: 2, sm: 4, md: 8, lg: 16, xl: 24 },\n spacer: {\n none: 0,\n xxs: 2,\n xs: 4,\n sm: 8,\n md: 10,\n lg: 20,\n xl: 30,\n xxl: 40,\n xxxl: 50\n },\n stroke: { none: 0, sm: 2, md: 4, lg: 6, xl: 8 },\n typography: {\n display1: {\n fontFamily: 'Arial',\n fontSize: 75,\n lineHeight: 85,\n fontWeight: 500,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n display2: {\n fontFamily: 'Arial',\n fontSize: 50,\n lineHeight: 60,\n fontWeight: 500,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline1: {\n fontFamily: 'Arial',\n fontSize: 35,\n fontWeight: 500,\n lineHeight: 48,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline2: {\n fontFamily: 'Arial',\n fontSize: 30,\n fontWeight: 500,\n lineHeight: 40,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n headline3: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 500,\n lineHeight: 36,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body1: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 300,\n lineHeight: 40,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body2: {\n fontFamily: 'Arial',\n fontSize: 22,\n fontWeight: 300,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n body3: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 300,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n button1: {\n fontFamily: 'Arial',\n fontSize: 25,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n button2: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n callout1: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 32,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n caption1: {\n fontFamily: 'Arial',\n fontSize: 15,\n fontWeight: 500,\n lineHeight: 24,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n tag1: {\n fontFamily: 'Arial',\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 24,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n },\n footnote1: {\n fontFamily: 'Arial',\n fontSize: 22,\n fontWeight: 300,\n lineHeight: 30,\n verticalAlign: 'middle',\n textBaseline: 'bottom'\n }\n },\n componentConfig: {\n Keyboard: {\n base: {\n keyProps: {\n delete: {\n title: null,\n icon: 'data:image/png;base64,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'\n }\n }\n }\n }\n }\n};\n","import { type AnimationSettings } from \"@lightningjs/renderer\";\nimport { globalBackground } from \"../state.js\";\nimport {\n type IntrinsicNodeStyleProps,\n View,\n Text,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { createEffect, on } from \"solid-js\";\nimport theme from \"theme\";\n\nexport default function Background() {\n let bg1, bg2, heroMask;\n let active = 0;\n const alpha = 1;\n const animationSettings = {\n duration: 750,\n easing: \"ease-in-out\",\n } satisfies Partial;\n const bgStyles = {\n alpha,\n color: 0xffffffff,\n } satisfies IntrinsicNodeStyleProps;\n\n function changeBackgrounds(img: string) {\n if (img.startsWith(\"#\")) {\n bg1.color = hexColor(img);\n bg1.src = \"\";\n bg1.alpha = 1;\n active = 1;\n bg2.alpha = 0;\n heroMask.alpha = 0;\n return;\n } else {\n bg1.color = 0xffffffff;\n heroMask.alpha = 1;\n }\n\n if (active === 0) {\n bg1.src = img;\n active = 1;\n return;\n }\n\n if (active === 1) {\n bg2.src = img;\n active = 2;\n bg2.alpha = 0;\n bg2.animate({ alpha }, animationSettings).start();\n bg1.animate({ alpha: 0 }, animationSettings).start();\n return;\n }\n\n if (active === 2) {\n bg1.src = img;\n active = 1;\n bg1.alpha = 0;\n bg1.animate({ alpha }, animationSettings).start();\n bg2.animate({ alpha: 0 }, animationSettings).start();\n }\n }\n\n createEffect(\n on(\n globalBackground,\n (img: string) => {\n changeBackgrounds(img);\n },\n { defer: true }\n )\n );\n\n return (\n <>\n \n \n \n \n \n \n );\n}\n","var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;\nimport { ElementNode, createComponent, View, mergeProps, Text as Text$7, createElement, use, spread, memo, insert, Show, For, hexColor } from \"@lightningjs/solid\";\nimport { createMemo, For as For$1, createSignal } from \"solid-js\";\nimport theme from \"theme\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nfunction objectFromEntries(entries) {\n if (!entries || !entries[Symbol.iterator]) {\n throw new Error(\"objectFromEntries requires a single iterable argument\");\n }\n const obj = {};\n for (const [key2, value] of entries) {\n obj[key2] = value;\n }\n return obj;\n}\nconst defaultModeKeys = [\"focus\", \"disabled\"];\nconst defaultToneKeys = [\"brand\", \"inverse\", \"neutral\"];\nfunction makeComponentStyles({ themeKeys, base, modes, tones, themeStyles: themeStyles2, modeKeys = defaultModeKeys, toneKeys = defaultToneKeys }, debug = false) {\n const makeToneStyles = (tones2, themeComponentStyles, modeStyles) => {\n const toneStyles = toneKeys.map((tone) => {\n const styles2 = {};\n const styleList = new Set(\n [].concat.apply([], [(tones2 == null ? void 0 : tones2[tone]) ?? {}, (themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) ?? {}].map(Object.keys))\n );\n styleList.forEach((styleKey) => {\n var _a2, _b2;\n if (!modeKeys.includes(styleKey)) {\n styles2[styleKey] = ((_a2 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _a2[styleKey]) ?? ((_b2 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _b2[styleKey]);\n }\n });\n modeKeys.forEach((mode) => {\n var _a2, _b2;\n styles2[mode] = {\n ...modeStyles[mode],\n // fallbacks from base.mode\n ...(_a2 = tones2 == null ? void 0 : tones2[tone]) == null ? void 0 : _a2[mode],\n // component configured tone.mode\n ...(_b2 = themeComponentStyles == null ? void 0 : themeComponentStyles[tone]) == null ? void 0 : _b2[mode]\n // theme configure tone.mode\n };\n });\n return [tone, styles2];\n });\n return objectFromEntries(toneStyles);\n };\n const makeModeStyles = (modes2, themeComponentStyles) => {\n const modeStyles = modeKeys.map((mode) => {\n return [mode, { ...modes2 == null ? void 0 : modes2[mode], ...themeComponentStyles == null ? void 0 : themeComponentStyles[mode] }];\n });\n const modeObject = objectFromEntries(modeStyles);\n return modeObject;\n };\n const makeBaseStyles = (base2, themeComponentStyles) => {\n const baseStyles = {\n ...base2,\n ...themeComponentStyles.base\n };\n return baseStyles;\n };\n const mapThemeKeysToSolid = (stylesToMap) => objectFromEntries(\n Object.entries(themeKeys).filter(([_, themeKey]) => stylesToMap[themeKey]).map(([solidKey, themeKey]) => [solidKey, stylesToMap[themeKey]])\n );\n const convertComponentConfig = (themeStyles3) => {\n const convertedThemeStyles = objectFromEntries(\n // iterate through each variant\n Object.entries(themeStyles3).map(([variantName, styles2]) => {\n const convertedStyles = mapThemeKeysToSolid(styles2);\n Object.entries(styles2).filter(([styleName, _]) => modeKeys.includes(styleName)).forEach(([modeName, modeStyles]) => {\n convertedStyles[modeName] = mapThemeKeysToSolid(modeStyles);\n });\n return [variantName, convertedStyles];\n })\n );\n return convertedThemeStyles;\n };\n const generateSolidStylesFromLookupObject = (base2, modes2, tones2) => {\n const themeComponentStyles = convertComponentConfig(themeStyles2);\n debug && console.log(themeComponentStyles);\n const baseStyles = makeBaseStyles(base2, themeComponentStyles);\n debug && console.log(baseStyles);\n const modeStyles = makeModeStyles(modes2, themeComponentStyles);\n debug && console.log(modeStyles);\n const toneStyles = makeToneStyles(tones2, themeComponentStyles, modeStyles);\n debug && console.log(toneStyles);\n return {\n base: {\n ...baseStyles,\n ...modeStyles\n },\n tones: toneStyles\n };\n };\n return generateSolidStylesFromLookupObject(base, modes, tones);\n}\nfunction withScrolling(adjustment = 0) {\n return (componentRef, selectedElement, selected = 0, lastSelected) => {\n if (componentRef.children.length === 0) {\n return;\n }\n const dimension = componentRef.flexDirection === \"row\" ? \"width\" : \"height\";\n const axis = componentRef.flexDirection === \"row\" ? \"x\" : \"y\";\n const gap = componentRef.gap || 0;\n const scroll = componentRef.scroll || \"auto\";\n const [lastItem, containerSize] = updateLastIndex(componentRef);\n let rootPosition = componentRef[axis] ?? 0;\n const selectedPosition = (selectedElement == null ? void 0 : selectedElement[axis]) ?? 0;\n const selectedSize = (selectedElement == null ? void 0 : selectedElement[dimension]) ?? 0;\n const direct = lastSelected === void 0 ? \"none\" : selected > lastSelected ? \"positive\" : \"negative\";\n let next = rootPosition;\n if (scroll === \"auto\") {\n if (componentRef.scrollIndex != void 0 && componentRef.scrollIndex >= 0) {\n if (componentRef.selected >= componentRef.scrollIndex) {\n if (direct === \"positive\") {\n next = rootPosition - selectedSize - gap;\n } else {\n next = rootPosition + selectedSize + gap;\n }\n }\n } else if (Math.abs(rootPosition) + containerSize < lastItem.position + lastItem.size || selectedPosition < Math.abs(rootPosition)) {\n next = -selectedPosition + adjustment;\n }\n } else if (scroll === \"always\" || scroll === \"edge\" && direct === \"negative\" && Math.abs(rootPosition) > selectedPosition) {\n next = -selectedPosition + adjustment;\n } else if (scroll === \"edge\" && direct === \"positive\" && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) {\n next = rootPosition - selectedSize - gap;\n } else if (scroll === \"edge\" && direct === \"none\") {\n let currentChildIndex = 0;\n let currentChild, currentChildSize;\n while (currentChildIndex < componentRef.children.length && Math.abs(rootPosition) + containerSize < selectedPosition + selectedSize) {\n currentChild = componentRef.children[currentChildIndex++];\n currentChildSize = currentChild[dimension] ?? 0;\n rootPosition -= currentChildSize + gap;\n }\n next = rootPosition;\n }\n if (axis === \"x\" && componentRef.x !== next) {\n componentRef.x = next;\n } else if (axis === \"y\" && componentRef.y !== next) {\n componentRef.y = next;\n }\n };\n}\nfunction updateLastIndex(items) {\n let lastItem, containerSize;\n if (items.flexDirection === \"row\") {\n lastItem = {\n position: items.children[items.children.length - 1].x,\n size: items.children[items.children.length - 1].width\n };\n containerSize = items.width;\n } else {\n lastItem = {\n position: items.children[items.children.length - 1].y,\n size: items.children[items.children.length - 1].height\n };\n containerSize = items.height;\n }\n return [lastItem, containerSize];\n}\nconst useItemLayout = (itemLayout) => {\n if (itemLayout) {\n const width = (theme.layout.screenW - theme.layout.marginX * 2) / itemLayout.upCount - theme.layout.gutterX;\n const height = width / itemLayout.ratioX * itemLayout.ratioY;\n return { width, height };\n }\n return {};\n};\nconst chainFunctions = (...args) => {\n const onlyFunctions = args.filter((func) => typeof func === \"function\");\n if (onlyFunctions.length === 0) {\n return void 0;\n }\n if (onlyFunctions.length === 1) {\n return onlyFunctions[0];\n }\n return function(...innerArgs) {\n let result;\n for (const func of onlyFunctions) {\n result = func.apply(this, innerArgs);\n if (result === true) {\n return result;\n }\n }\n return result;\n };\n};\nfunction assertTruthy(condition, message) {\n return;\n}\nfunction onGridFocus() {\n if (!this || this.selected === void 0 || this.children.length === 0)\n return false;\n let child = this.children[this.selected];\n while (child == null ? void 0 : child.skipFocus) {\n this.selected++;\n child = this.children[this.selected];\n }\n if (!(child instanceof ElementNode))\n return false;\n child.setFocus();\n return true;\n}\nfunction handleNavigation(direction) {\n return function() {\n var _a2, _b2, _c2;\n const numChildren = this.children.length;\n const wrap = this.wrap;\n const lastSelected = this.selected || 0;\n if (numChildren === 0) {\n return false;\n }\n if (direction === \"right\" || direction === \"down\") {\n do {\n this.selected = (this.selected || 0) % numChildren + 1;\n if (this.selected >= numChildren) {\n if (!wrap) {\n this.selected = void 0;\n break;\n }\n this.selected = 0;\n }\n } while ((_a2 = this.children[this.selected]) == null ? void 0 : _a2.skipFocus);\n } else if (direction === \"left\" || direction === \"up\") {\n do {\n this.selected = (this.selected || 0) % numChildren - 1;\n if (this.selected < 0) {\n if (!wrap) {\n this.selected = void 0;\n break;\n }\n this.selected = numChildren - 1;\n }\n } while ((_b2 = this.children[this.selected]) == null ? void 0 : _b2.skipFocus);\n }\n if (this.selected === void 0) {\n this.selected = lastSelected;\n if ((_c2 = this.children[this.selected]) == null ? void 0 : _c2.states.has(\"focus\")) {\n return false;\n }\n }\n const active = this.children[this.selected];\n this.onSelectedChanged && this.onSelectedChanged.call(this, this, active, this.selected, lastSelected);\n if (this.plinko && lastSelected !== void 0) {\n const lastSelectedChild = this.children[lastSelected];\n const num = lastSelectedChild.selected || 0;\n active.selected = num < active.children.length ? num : active.children.length - 1;\n }\n active.setFocus();\n return true;\n };\n}\nfunction scrollToIndex(componentRef, selectedIndex) {\n if (!componentRef || componentRef.selected === void 0 || componentRef.children.length === 0 || componentRef.children.length <= selectedIndex || componentRef.selected === selectedIndex) {\n return false;\n }\n componentRef.selected = selectedIndex;\n if (componentRef.flexDirection === \"row\") {\n componentRef.x = -componentRef.children[selectedIndex].x;\n } else if (componentRef.flexDirection === \"column\") {\n componentRef.y = -componentRef.children[selectedIndex].y;\n }\n}\nfunction getWidthByUpCount$1(theme2, upCount = 1) {\n const screenW = theme2.layout.screenW;\n const columnCount = theme2.layout.columnCount;\n const marginX = theme2.layout.marginX;\n const gutterX = theme2.layout.gutterX;\n if (upCount < 1 || upCount > columnCount) {\n console.error(`Column expects a number between 1 & ${columnCount}. Received ${upCount}`);\n return;\n }\n const columnWidth = screenW - marginX * 2;\n const columnGapTotal = (upCount - 1) * gutterX;\n const totalColumnsWidth = columnWidth - columnGapTotal;\n return totalColumnsWidth / upCount;\n}\nfunction getItemRatioDimensions(ratioX, ratioY, upCount) {\n let w, h;\n if (ratioX && ratioY && upCount) {\n w = Math.round(getWidthByUpCount$1(theme, upCount) ?? 0);\n h = Math.round(w / ratioX * ratioY);\n } else {\n w = 0;\n h = 0;\n }\n return { w, h };\n}\nfunction getDimensions(obj = {}, fallback = {}) {\n const { w, h, ratioX, ratioY, upCount } = obj;\n const fallbackW = fallback.w || 0;\n const fallbackH = fallback.h || 0;\n let dimensions = {};\n if (w && h) {\n dimensions = {\n w,\n h\n };\n } else if (h && ratioX && ratioY) {\n dimensions = {\n w: Math.round(h * ratioX / ratioY),\n h\n };\n } else if (ratioX && ratioY && upCount) {\n dimensions = getItemRatioDimensions(ratioX, ratioY, upCount);\n } else if (h && upCount) {\n dimensions = {\n w: Math.round(getWidthByUpCount(theme, upCount)),\n h\n };\n } else if (h) {\n dimensions = {\n w: fallbackW,\n h\n };\n } else if (w) {\n dimensions = {\n w,\n h: fallbackH\n };\n } else {\n dimensions = {\n w: fallbackW,\n h: fallbackH\n };\n }\n dimensions = {\n ...dimensions,\n ratioX,\n ratioY,\n upCount\n };\n return dimensions;\n}\nconst { Artwork: { defaultTone: defaultTone$f, ...themeStyles$e } = { styles: {} } } = (_a = theme) == null ? void 0 : _a.componentConfig;\nconst container$f = {\n themeKeys: {\n fillColor: \"fillColor\",\n scale: \"imageScale\",\n pivotX: \"imageScalePivotX\",\n pivotY: \"imageScalePivotY\"\n },\n base: {\n fallbackSrc: void 0,\n fillColor: theme.color.overlay,\n gradientColor: theme.color.material,\n pivotX: 0.5,\n pivotY: 0.5,\n scale: void 0\n },\n themeStyles: themeStyles$e\n};\nconst Container$e = makeComponentStyles(container$f);\nconst styles$e = {\n tone: defaultTone$f || \"neutral\",\n Container: Container$e\n};\nconst formatArtwork = (props) => {\n let src = props.src ? props.src : props.fallbackSrc;\n if (src && props.srcCallback && typeof props.srcCallback === \"function\") {\n src = props.srcCallback({\n closestAspectRatio: void 0,\n aspectRatio: void 0,\n src,\n width: props.width,\n height: props.height\n });\n }\n return src;\n};\nconst Artwork = (props) => {\n const formattedArtwork = createMemo(() => formatArtwork(props));\n return createComponent(View, mergeProps(props, {\n get color() {\n var _a2;\n return Boolean(formattedArtwork()) ? void 0 : props.color ?? ((_a2 = styles$e.Container.tones[props.tone ?? styles$e.tone]) == null ? void 0 : _a2.fillColor) ?? styles$e.Container.base.fillColor;\n },\n get style() {\n return [...[props.style].flat(), styles$e.Container.tones[props.tone || styles$e.tone], styles$e.Container.base];\n },\n get src() {\n return formattedArtwork();\n }\n }));\n};\nconst { Badge: { defaultTone: defaultTone$e, ...themeStyles$d } = { styles: {} } } = (_b = theme) == null ? void 0 : _b.componentConfig;\nconst container$e = {\n themeKeys: {\n color: \"backgroundColor\"\n },\n base: {\n color: theme.color.fillInverseSecondary,\n borderRadius: theme.radius.sm,\n // borderRadius must be applied _before_ border to prevent the node from breaking\n border: {\n color: theme.color.strokeInverse,\n width: theme.stroke.sm\n },\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n padding: [\n theme.spacer.md - theme.stroke.sm,\n theme.spacer.xs + theme.stroke.sm,\n theme.spacer.md + theme.stroke.sm,\n theme.spacer.md + theme.stroke.sm\n ]\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutralSecondary,\n borderRadius: theme.radius.sm,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: theme.stroke.sm\n }\n },\n brand: {\n color: theme.color.fillBrand,\n borderRadius: theme.radius.sm,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: theme.stroke.sm\n }\n }\n },\n themeStyles: themeStyles$d\n};\nconst text$7 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.tag1,\n color: theme.color.textNeutral\n },\n tones: {\n inverse: {\n color: theme.color.textInverse\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$d\n};\nconst icon$2 = {\n themeKeys: {\n color: \"iconColor\"\n },\n base: {\n color: theme.color.textNeutral\n },\n tones: {\n inverse: {\n color: theme.color.textInverse\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$d\n};\nconst Container$d = makeComponentStyles(container$e);\nconst Icon$3 = makeComponentStyles(icon$2);\nconst Text$6 = makeComponentStyles(text$7);\nconst styles$d = {\n tone: defaultTone$e || \"neutral\",\n Container: Container$d,\n Icon: Icon$3,\n Text: Text$6\n};\nconst BadgeContainer = (props) => {\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2, _b2;\n return props.padding ?? ((_b2 = (_a2 = styles$d.Container) == null ? void 0 : _a2.tones[props.tone ?? styles$d.tone]) == null ? void 0 : _b2.padding) ?? styles$d.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$d.Container.tones[props.tone || styles$d.tone],\n styles$d.Container.base\n ];\n },\n \"forwardStates\": true\n }), false);\n return _el$;\n })();\n};\nconst Badge = (props) => {\n return createComponent(BadgeContainer, {\n get padding() {\n return props.padding;\n },\n get tone() {\n return props.tone;\n },\n get style() {\n return props.style;\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n return [styles$d.Text.tones[props.tone ?? styles$d.tone], styles$d.Text.base];\n },\n get tone() {\n return props.tone || styles$d.tone;\n },\n get children() {\n return props.title;\n }\n });\n }\n });\n};\nconst { Button: { defaultTone: defaultTone$d, ...themeStyles$c } = { styles: {} } } = (_c = theme) == null ? void 0 : _c.componentConfig;\nconst { Surface: { surfaceDefaultTone, ...surfaceThemeStyles$1 } = { styles: {} } } = (_d = theme) == null ? void 0 : _d.componentConfig;\nconst container$d = {\n themeKeys: {\n textAlign: \"textAlign\",\n borderRadius: \"radius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\"\n },\n base: {\n height: theme.typography.button1.lineHeight + theme.spacer.xl * 2,\n display: \"flex\",\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n color: theme.color.interactiveNeutral,\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm,\n contentColor: theme.color.fillNeutral\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse\n },\n brand: {\n color: theme.color.interactiveBrand,\n focus: {\n color: theme.color.fillNeutral\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst content = {\n themeKeys: {\n color: \"contentColor\"\n },\n base: {\n color: theme.color.textNeutral\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.fillBrand\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst text$6 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.button1\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.fillBrand\n }\n }\n },\n themeStyles: {\n ...surfaceThemeStyles$1,\n ...themeStyles$c\n }\n};\nconst Container$c = makeComponentStyles(container$d);\nconst Content = makeComponentStyles(content);\nconst Text$5 = makeComponentStyles(text$6);\nconst styles$c = {\n tone: defaultTone$d || surfaceDefaultTone || \"neutral\",\n Container: Container$c,\n Content,\n Text: Text$5\n};\nconst Button = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$c.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$c.tone],\n styles$c.Container.base\n ];\n },\n forwardStates: true,\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n ...[(_a2 = props.style) == null ? void 0 : _a2.Text].flat(),\n //\n styles$c.Text.tones[props.tone ?? styles$c.tone],\n styles$c.Text.base\n ];\n },\n get children() {\n return props.children;\n }\n });\n }\n }));\n};\nconst ButtonContainer = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$c.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$c.tone],\n styles$c.Container.base\n ];\n },\n forwardStates: true\n }));\n};\nconst { Checkbox: { defaultTone: defaultTone$c, ...themeStyles$b } = { styles: {} } } = (_e = theme) == null ? void 0 : _e.componentConfig;\nconst strokeWidth = theme.stroke.sm;\nconst size = theme.spacer.xxl;\nconst container$c = {\n themeKeys: {\n color: \"color\",\n borderRadius: \"borderRadius\",\n border: \"border\",\n justifyContent: \"justifyContent\"\n },\n base: {\n width: size,\n height: size,\n display: \"flex\",\n justifyContent: \"center\",\n color: theme.color.fillNeutral,\n alignItems: \"center\",\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverse,\n width: strokeWidth\n }\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n tones: {\n brand: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutralSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillBrand\n }\n },\n neutral: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillInverseSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeNeutralSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutral\n }\n },\n inverse: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: strokeWidth\n },\n color: theme.color.fillNeutralSecondary,\n checked: {\n borderRadius: size / 4,\n border: {\n color: theme.color.strokeInverseSecondary,\n width: strokeWidth\n },\n color: theme.color.fillInverse\n }\n }\n },\n modeKeys: [\"focus\", \"disabled\", \"checked\"],\n themeStyles: themeStyles$b\n};\nconst icon$1 = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n width: theme.spacer.lg,\n height: theme.spacer.lg,\n src: theme.asset.check\n },\n tones: {\n neutral: {\n color: theme.color.fillInverse\n },\n inverse: {\n color: theme.color.fillNeutral\n },\n brand: {\n color: theme.color.fillInverse\n }\n },\n themeStyles: themeStyles$b\n};\nconst Container$b = makeComponentStyles(container$c);\nconst Icon$2 = makeComponentStyles(icon$1);\nconst styles$b = {\n tone: defaultTone$c || \"neutral\",\n Container: Container$b,\n Icon: Icon$2\n};\nconst { Icon: { defaultTone: defaultTone$b, ...themeStyles$a } = { styles: {} } } = (_f = theme) == null ? void 0 : _f.componentConfig;\nconst container$b = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n width: 100,\n height: 100,\n color: theme.color.fillInverse\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand\n }\n },\n themeStyles: themeStyles$a\n};\nconst Container$a = makeComponentStyles(container$b);\nconst styles$a = {\n tone: defaultTone$b || \"neutral\",\n Container: Container$a\n};\nconst Icon$1 = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$a.Container.tones) == null ? void 0 : _a2[props.tone || styles$a.tone],\n styles$a.Container.base\n ];\n },\n forwardStates: true\n }));\n};\nconst check = \"/assets/images/check-icon.png\";\nconst Checkbox = (props) => {\n return createComponent(View, mergeProps({\n forwardStates: true\n }, props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$b.Container.tones[props.tone ?? styles$b.tone],\n styles$b.Container.base\n ];\n },\n get states() {\n return {\n checked: props.checked\n };\n },\n get children() {\n return memo(() => !!props.checked)() ? props.children || createComponent(Icon$1, {\n src: check,\n get style() {\n var _a2;\n return [\n ...[(_a2 = props.style) == null ? void 0 : _a2.Icon].flat(),\n //\n styles$b.Icon.tones[props.tone || styles$b.tone],\n styles$b.Icon.base\n ];\n }\n }) : \"\";\n }\n }));\n};\nconst { Column: { defaultTone: defaultTone$a, ...themeStyles$9 } = { styles: {} } } = (_g = theme) == null ? void 0 : _g.componentConfig;\nconst container$a = {\n themeKeys: {\n gap: \"itemSpacing\",\n scrollIndex: \"scrollIndex\",\n itemTransition: \"itemTransition\"\n },\n base: {\n display: \"flex\",\n flexBoundary: \"fixed\",\n flexDirection: \"column\",\n gap: theme.layout.gutterY,\n itemTransition: {\n ...theme.animation.standardEntrance,\n duration: theme.animation.duration.fast\n }\n },\n themeStyles: themeStyles$9\n};\nconst Container$9 = makeComponentStyles(container$a);\nconst styles$9 = {\n tone: defaultTone$a || \"neutral\",\n Container: Container$9\n};\nconst Column = (props) => {\n const onUp = handleNavigation(\"up\");\n const onDown = handleNavigation(\"down\");\n return createComponent(View, mergeProps(props, {\n get onUp() {\n return chainFunctions(props.onUp, onUp);\n },\n get onDown() {\n return chainFunctions(props.onDown, onDown);\n },\n get selected() {\n return props.selected || 0;\n },\n forwardFocus: onGridFocus,\n get onCreate() {\n return chainFunctions((elm) => withScrolling(props.y).call(elm, elm, elm.children[props.selected ?? 0], props.selected ?? 0, void 0), props.onCreate);\n },\n get onSelectedChanged() {\n return chainFunctions(props.onSelectedChanged, props.scroll !== \"none\" ? withScrolling(props.y) : void 0);\n },\n get style() {\n return [...[props.style].flat(), styles$9.Container.tones[props.tone ?? styles$9.tone], styles$9.Container.base];\n }\n }));\n};\nconst { Label: { defaultTone: defaultTone$9, ...themeStyles$8 } = { styles: {} } } = (_h = theme) == null ? void 0 : _h.componentConfig;\nconst container$9 = {\n themeKeys: {\n color: \"backgroundColor\",\n borderRadius: \"radius\"\n },\n base: {\n display: \"flex\",\n justifyContent: \"center\",\n color: theme.color.textNeutral,\n padding: [theme.spacer.md, theme.spacer.lg],\n // TODO themed padding values\n borderRadius: [theme.radius.md, theme.radius.md, theme.radius.md, theme.radius.none],\n height: theme.typography.caption1.lineHeight + theme.spacer.md,\n neutral: {\n backgroundColor: theme.color.fillNeutral\n }\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand,\n focus: {\n color: theme.color.orange\n }\n }\n },\n themeStyles: themeStyles$8\n};\nconst text$5 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.caption1,\n color: theme.color.textInverse\n },\n tones: {\n inverse: {\n color: theme.color.textNeutral\n },\n brand: {\n color: theme.color.textNeutral\n }\n },\n themeStyles: themeStyles$8\n};\nconst Container$8 = makeComponentStyles(container$9);\nconst Text$4 = makeComponentStyles(text$5);\nconst styles$8 = {\n tone: defaultTone$9 || \"neutral\",\n Container: Container$8,\n Text: Text$4\n};\nconst Label = (props) => {\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2;\n return props.padding ?? ((_a2 = styles$8.Container.tones[props.tone ?? styles$8.tone]) == null ? void 0 : _a2.padding) ?? styles$8.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n get style() {\n return [\n ...[props.style].flat(),\n //\n styles$8.Container.tones[props.tone || styles$8.tone],\n styles$8.Container.base\n ];\n },\n \"forwardStates\": true\n }), true);\n insert(_el$, createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$8.Text.tones[props.tone || styles$8.tone],\n styles$8.Text.base\n ];\n },\n get children() {\n return props.title;\n }\n }));\n return _el$;\n })();\n};\nconst { Rating: { styles: themeStyles$7, defaultTone: defaultTone$8 } = { styles: {}, defaultTone: \"neutral\" } } = (_i = theme) == null ? void 0 : _i.componentConfig;\nconst container$8 = {\n themeKeys: {\n justifyContent: \"justifyContent\",\n itemSpacing: \"itemSpacing\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n itemSpacing: theme.spacer.sm\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst text$4 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n color: theme.color.textNeutral,\n ...theme.typography.body2\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst icon = {\n themeKeys: {\n color: \"color\"\n },\n base: {\n height: theme.typography.body2.lineHeight,\n width: theme.typography.body2.lineHeight,\n color: theme.color.fillNeutral,\n marginRight: theme.spacer.sm\n },\n toneModes: {},\n themeStyles: themeStyles$7\n};\nconst Container$7 = makeComponentStyles(container$8);\nconst Icon = makeComponentStyles(icon);\nconst Text$3 = makeComponentStyles(text$4);\nconst styles$7 = {\n tone: defaultTone$8,\n Container: Container$7,\n Text: Text$3,\n Icon\n};\nconst Rating = (props) => {\n const formatTitle = (title) => {\n if (typeof title !== \"string\" && typeof title !== \"number\" || !String(title).trim().length) {\n return;\n }\n let formatted = title;\n if (!Number.isNaN(title) && Number(title) >= 0 && Number(title) <= 100) {\n formatted += \"%\";\n }\n return formatted;\n };\n const formattedTitle = createMemo(() => formatTitle(props.title));\n return createComponent(View, mergeProps(props, {\n forwardStates: true,\n get style() {\n return [...[props.style].flat(), styles$7.Container.tones[props.tone || styles$7.tone], styles$7.Container.base];\n },\n get children() {\n return [createComponent(Show, {\n get when() {\n return props.src;\n },\n get children() {\n return createComponent(Icon$1, {\n forwardStates: true,\n get src() {\n return props.src;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Icon,\n //\n styles$7.Icon.tones[props.tone || styles$7.tone],\n styles$7.Icon.base\n ];\n }\n });\n }\n }), createComponent(Show, {\n get when() {\n return formattedTitle();\n },\n get children() {\n return createComponent(Text$7, {\n get marginRight() {\n return props.marginRight;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$7.Text.tones[props.tone || styles$7.tone],\n styles$7.Text.base\n ];\n },\n get children() {\n return formattedTitle();\n }\n });\n }\n })];\n }\n }));\n};\nconst { Details: { defaultTone: defaultTone$7, ...themeStyles$6 } = { styles: {} } } = (_j = theme) == null ? void 0 : _j.componentConfig;\nconst container$7 = {\n themeKeys: {\n alignItems: \"alignItems\",\n contentSpacing: \"contentSpacing\",\n badgeContentSpacing: \"badgeContentSpacing\",\n ratingContentSpacing: \"ratingContentSpacing\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n contentSpacing: theme.spacer.lg,\n badgeContentSpacing: theme.spacer.sm,\n ratingContentSpacing: theme.spacer.lg\n },\n themeStyles: themeStyles$6\n};\nconst text$3 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n ...theme.typography.body2,\n marginRight: theme.spacer.lg,\n color: theme.color.textNeutral\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverse,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutral,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$6\n};\nconst Container$6 = makeComponentStyles(container$7);\nconst Text$2 = makeComponentStyles(text$3);\nconst styles$6 = {\n tone: defaultTone$7 || \"neutral\",\n Container: Container$6,\n Text: Text$2\n};\nconst Details = (props) => {\n return createComponent(View, mergeProps({\n get style() {\n return [...[props.style].flat(), styles$6.Container.tones[props.tone || styles$6.tone], styles$6.Container.base];\n },\n forwardStates: true,\n onBeforeLayout: (node, dimensions) => {\n var _a2;\n if ((dimensions == null ? void 0 : dimensions.height) && node.parent) {\n node.parent.height = dimensions.height;\n (_a2 = node.parent) == null ? void 0 : _a2.updateLayout();\n }\n }\n }, props, {\n get children() {\n return [createComponent(Show, {\n get when() {\n return props.title;\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$6.Text.tones[props.tone || styles$6.tone],\n styles$6.Text.base\n ];\n },\n get children() {\n return props.title;\n }\n });\n }\n }), createComponent(For, {\n get each() {\n return props.badges;\n },\n children: (badge, idx) => createComponent(Badge, mergeProps(badge, {\n get marginRight() {\n var _a2, _b2, _c2, _d2, _e2, _f2, _g2;\n return ((_a2 = props.badges) == null ? void 0 : _a2.length) && idx() === props.badges.length - 1 ? ((_c2 = (_b2 = props.style) == null ? void 0 : _b2.Container) == null ? void 0 : _c2.contentSpacing) ?? ((_d2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _d2.contentSpacing) ?? styles$6.Container.base.contentSpacing : ((_f2 = (_e2 = props.style) == null ? void 0 : _e2.Container) == null ? void 0 : _f2.badgeContentSpacing) ?? ((_g2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _g2.badgeContentSpacing) ?? styles$6.Container.base.badgeContentSpacing;\n }\n }))\n }), createComponent(For, {\n get each() {\n return props.ratings;\n },\n children: (rating, idx) => createComponent(Rating, mergeProps(rating, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$6.Text.tones[props.tone || styles$6.tone],\n styles$6.Text.base\n ];\n },\n forwardStates: true,\n get marginRight() {\n var _a2, _b2, _c2, _d2;\n return ((_a2 = props.ratings) == null ? void 0 : _a2.length) && idx() === props.ratings.length - 1 ? 0 : ((_c2 = (_b2 = props.style) == null ? void 0 : _b2.Container) == null ? void 0 : _c2.ratingContentSpacing) ?? ((_d2 = styles$6.Container.tones[props.tone ?? styles$6.tone]) == null ? void 0 : _d2.ratingContentSpacing) ?? styles$6.Container.base.ratingContentSpacing;\n }\n }))\n })];\n }\n }));\n};\nconst { Metadata: { defaultTone: defaultTone$6, ...themeStyles$5 } = { styles: {} } } = (_k = theme) == null ? void 0 : _k.componentConfig;\nconst container$6 = {\n themeKeys: {\n justifyContent: \"justifyContent\",\n alpha: \"alpha\"\n },\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n alpha: theme.alpha.primary\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n themeStyles: themeStyles$5\n};\nconst titleText = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n maxLines: 1,\n contain: \"width\",\n ...theme.typography.headline3,\n color: theme.color.textNeutral\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverse,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutral,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$5\n};\nconst descriptionText = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n contain: \"width\",\n maxLines: 2,\n ...theme.typography.body2,\n color: theme.color.textNeutralSecondary\n },\n tones: {\n neutral: {\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n inverse: {\n color: theme.color.textInverseSecondary,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n brand: {\n color: theme.color.textNeutralSecondary,\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n }\n },\n themeStyles: themeStyles$5\n};\nconst Container$5 = makeComponentStyles(container$6);\nconst DescriptionText = makeComponentStyles(descriptionText);\nconst TitleText = makeComponentStyles(titleText);\nconst styles$5 = {\n tone: defaultTone$6 || \"neutral\",\n Container: Container$5,\n TitleText,\n DescriptionText\n};\nconst Metadata = (props) => {\n return createComponent(View, mergeProps(props, {\n get style() {\n return [...[props.style].flat(), styles$5.Container.tones[props.tone || styles$5.tone], styles$5.Container.base];\n },\n forwardStates: true,\n get children() {\n return [createComponent(Text$7, {\n get width() {\n return props.width;\n },\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.TitleText,\n //\n styles$5.TitleText.tones[props.tone || styles$5.tone],\n styles$5.TitleText.base\n ];\n },\n get children() {\n return props.title;\n }\n }), createComponent(Show, {\n get when() {\n return props.description;\n },\n get children() {\n return createComponent(Text$7, {\n get width() {\n return props.width;\n },\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.DescriptionText, styles$5.DescriptionText.tones[props.tone || styles$5.tone], styles$5.DescriptionText.base];\n },\n get children() {\n return props.description;\n }\n });\n }\n }), createComponent(Details, mergeProps({\n get width() {\n return props.width;\n }\n }, () => props.details, {\n get tone() {\n return props.tone ?? styles$5.tone;\n }\n }))];\n }\n }));\n};\nconst { ProgressBar: { defaultTone: defaultTone$5, ...themeStyles$4 } = { styles: {} } } = (_l = theme) == null ? void 0 : _l.componentConfig;\nconst container$5 = {\n themeKeys: {\n color: \"barColor\",\n borderRadius: \"borderRadius\"\n },\n base: {\n height: theme.spacer.md,\n color: theme.color.fillNeutralTertiary,\n borderRadius: theme.radius.xs\n },\n tones: {\n inverse: {\n color: theme.color.fillInverseTertiary\n }\n },\n themeStyles: themeStyles$4\n};\nconst progress = {\n themeKeys: {\n color: \"progressColor\",\n borderRadius: \"borderRadius\"\n },\n base: {\n borderRadius: theme.radius.xs,\n color: theme.color.fillNeutral\n },\n tones: {\n inverse: {\n color: theme.color.fillInverse\n },\n brand: {\n color: theme.color.fillBrand\n }\n },\n themeStyles: themeStyles$4\n};\nconst Container$4 = makeComponentStyles(container$5);\nconst ProgressBar$1 = makeComponentStyles(progress);\nconst styles$4 = {\n tone: defaultTone$5 || \"neutral\",\n Container: Container$4,\n ProgressBar: ProgressBar$1\n};\nconst ProgressBar = (props) => {\n return createComponent(View, mergeProps(props, {\n forwardStates: true,\n get style() {\n return [...[props.style].flat(), styles$4.Container.tones[props.tone || styles$4.tone], styles$4.Container.base];\n },\n get children() {\n return createComponent(View, {\n forwardStates: true,\n get animationSettings() {\n return props.animationSettings;\n },\n get width() {\n return props.width * props.progress;\n },\n get color() {\n return props.progressColor;\n },\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.ProgressBar, styles$4.ProgressBar.tones[props.tone || styles$4.tone], styles$4.ProgressBar.base];\n }\n });\n }\n }));\n};\nconst { Row: { defaultTone: defaultTone$4, ...themeStyles$3 } = { styles: {} } } = (_m = theme) == null ? void 0 : _m.componentConfig;\nconst container$4 = {\n themeKeys: {\n gap: \"itemSpacing\",\n scrollIndex: \"scrollIndex\",\n itemTransition: \"itemTransition\"\n },\n base: {\n display: \"flex\",\n flexBoundary: \"fixed\",\n flexDirection: \"row\",\n gap: theme.layout.gutterX,\n itemTransition: {\n ...theme.animation.standardEntrance,\n duration: theme.animation.duration.fast\n }\n },\n themeStyles: themeStyles$3\n};\nconst Container$3 = makeComponentStyles(container$4);\nconst styles$3 = {\n tone: defaultTone$4,\n Container: Container$3\n};\nconst Row = (props) => {\n const onLeft = handleNavigation(\"left\");\n const onRight = handleNavigation(\"right\");\n return createComponent(View, mergeProps(props, {\n get selected() {\n return props.selected || 0;\n },\n get onLeft() {\n return chainFunctions(props.onLeft, onLeft);\n },\n get onRight() {\n return chainFunctions(props.onRight, onRight);\n },\n forwardFocus: onGridFocus,\n get onCreate() {\n return chainFunctions((elm) => withScrolling(props.x).call(elm, elm, elm.children[props.selected ?? 0], props.selected ?? 0, void 0), props.onCreate);\n },\n get onSelectedChanged() {\n return chainFunctions(props.onSelectedChanged, props.scroll !== \"none\" ? withScrolling(props.x) : void 0);\n },\n get tone() {\n return props.tone ?? styles$3.tone;\n },\n get style() {\n return [...[props.style].flat(), styles$3.Container.tones[props.tone || styles$3.tone], styles$3.Container.base];\n },\n get states() {\n return props.tone ?? styles$3.tone;\n }\n }));\n};\nconst { Keyboard: { defaultTone: defaultTone$3, ...themeStyles$2 } = { styles: {} } } = (_n = theme) == null ? void 0 : _n.componentConfig;\nconst container$3 = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n screenW: \"screenW\",\n marginX: \"marginX\"\n },\n base: {\n keySpacing: theme.spacer.md,\n screenW: theme.layout.screenW,\n marginX: theme.layout.marginX,\n height: 100\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst key = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n textAlign: \"textAlign\",\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\",\n baseWidth: \"baseWidth\",\n sizes: \"sizes\",\n contentColor: \"contentColor\"\n // what is this used for\n },\n base: {\n keySpacing: theme.spacer.md,\n height: theme.spacer.md * 9,\n paddingX: theme.spacer.md,\n sizes: {\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n xxl: 5\n },\n contentColor: theme.color.fillNeutral,\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n baseWidth: theme.spacer.md * 7,\n color: theme.color.interactiveNeutral,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled,\n contentColor: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse,\n focus: {\n color: theme.color.interactiveInverseFocus,\n contentColor: theme.color.fillNeutral\n }\n },\n brand: {\n focus: {\n contentColor: theme.color.fillNeutral\n }\n }\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst text$2 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.headline2\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n focus: {\n color: theme.color.textNeutral\n }\n }\n },\n // @ts-expect-error see TODO\n themeStyles: themeStyles$2\n};\nconst Container$2 = makeComponentStyles(container$3);\nconst Key$1 = makeComponentStyles(key);\nconst Text$1 = makeComponentStyles(text$2);\nconst styles$2 = {\n tone: defaultTone$3,\n Container: Container$2,\n Key: Key$1,\n // TODO why was this wrapped in {}?\n Text: Text$1\n};\nconst { Key: { defaultTone: defaultTone$2, ...themeStyles$1 } = { styles: {} } } = (_o = theme) == null ? void 0 : _o.componentConfig;\nconst container$2 = {\n themeKeys: {\n keySpacing: \"keySpacing\",\n textAlign: \"textAlign\",\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\",\n justifyContent: \"justifyContent\",\n baseWidth: \"baseWidth\",\n sizes: \"sizes\",\n contentColor: \"contentColor\"\n },\n base: {\n keySpacing: theme.spacer.md,\n height: theme.spacer.md * 9,\n paddingX: theme.spacer.md,\n contentColor: theme.color.fillNeutral,\n sizes: {\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n xxl: 5\n },\n padding: [theme.spacer.md],\n baseWidth: theme.spacer.md * 7,\n color: theme.color.interactiveNeutral,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: theme.radius.sm\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus,\n contentColor: theme.color.fillInverse\n },\n disabled: {\n color: theme.color.fillNeutralDisabled,\n contentColor: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse,\n focus: {\n color: theme.color.interactiveInverseFocus,\n contentColor: theme.color.fillNeutral\n }\n },\n brand: {\n focus: {\n contentColor: theme.color.fillNeutral\n }\n }\n },\n themeStyles: themeStyles$1\n};\nconst text$1 = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.headline2\n },\n modes: {\n focus: {\n color: theme.color.textInverse\n },\n disabled: {\n color: theme.color.textNeutralDisabled\n }\n },\n tones: {\n inverse: {\n focus: {\n color: theme.color.textNeutral\n }\n }\n },\n themeStyles: themeStyles$1\n};\nconst Container$1 = makeComponentStyles(container$2);\nconst Text = makeComponentStyles(text$1);\nconst styles$1 = {\n tone: defaultTone$2 || \"neutral\",\n Container: Container$1,\n Text\n};\nconst Key = (props) => {\n const style1 = (props == null ? void 0 : props.style) ?? styles$1;\n return createComponent(ButtonContainer, mergeProps(props, {\n get style() {\n var _a2;\n return [\n ...[props.style].flat(),\n //\n (_a2 = styles$1.Container.tones) == null ? void 0 : _a2[props.tone ?? styles$1.tone],\n styles$1.Container.base\n ];\n },\n forwardStates: true,\n get width() {\n var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2;\n return (((_d2 = (_c2 = (_b2 = (_a2 = style1.Container) == null ? void 0 : _a2.tones) == null ? void 0 : _b2[props.tone ?? styles$1.tone]) == null ? void 0 : _c2.sizes) == null ? void 0 : _d2[props.size || \"sm\"]) ?? style1.Container.base.sizes[props.size || \"sm\"]) * (((_g2 = (_f2 = (_e2 = style1.Container) == null ? void 0 : _e2.tones) == null ? void 0 : _f2[props.tone ?? styles$1.tone]) == null ? void 0 : _g2.baseWidth) ?? style1.Container.base.baseWidth) + (((_i2 = (_h2 = style1.Container.tones) == null ? void 0 : _h2[props.tone ?? styles$1.tone]) == null ? void 0 : _i2.keySpacing) ?? style1.Container.base.keySpacing) * (((_l2 = (_k2 = (_j2 = style1.Container.tones) == null ? void 0 : _j2[props.tone ?? styles$1.tone]) == null ? void 0 : _k2.sizes) == null ? void 0 : _l2[props.size || \"sm\"]) ?? style1.Container.base.sizes[props.size || \"sm\"] - 1);\n },\n get children() {\n return createComponent(Text$7, {\n get style() {\n var _a2;\n return [\n (_a2 = props.style) == null ? void 0 : _a2.Text,\n //\n styles$1.Text.tones[props.tone ?? styles$1.tone],\n styles$1.Text.base\n ];\n },\n get children() {\n return props.title ? props.title : \"\";\n }\n });\n }\n }));\n};\nconst KeyboardSimple = (props) => {\n return createComponent(Column, {\n get autofocus() {\n return props.autofocus;\n },\n scroll: \"none\",\n plinko: true,\n get itemSpacing() {\n var _a2;\n return props.keySpacing ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.keySpacing) ?? styles$2.Container.base.keySpacing;\n },\n get justifyContent() {\n return props.centerKeyboard ? \"center\" : \"flexStart\";\n },\n get width() {\n return props.width;\n },\n get children() {\n return createComponent(For$1, {\n get each() {\n return props.formats;\n },\n children: (row) => createComponent(Row, {\n get width() {\n return props.width;\n },\n get justifyContent() {\n return props.centerKeys ? \"center\" : \"flexStart\";\n },\n get itemSpacing() {\n var _a2;\n return props.keySpacing ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.keySpacing) ?? styles$2.Container.base.keySpacing;\n },\n get height() {\n var _a2;\n return (props == null ? void 0 : props.height) ?? ((_a2 = styles$2.Container.tones[props.tone ?? styles$2.tone]) == null ? void 0 : _a2.height) ?? styles$2.Container.base.height;\n },\n get wrap() {\n return props.rowWrap;\n },\n get children() {\n return createComponent(For$1, {\n each: row,\n children: (key2) => createComponent(Key, mergeProps({\n get style() {\n var _a2;\n return (_a2 = props.style) == null ? void 0 : _a2.Key;\n }\n }, typeof key2 === \"string\" ? {} : key2, {\n onEnter: () => props.keySignal[1](typeof key2 === \"string\" ? key2 : key2.title ?? \"\"),\n get title() {\n return key2.title || key2.icon ? key2.title : key2;\n }\n }))\n });\n }\n })\n });\n }\n });\n};\nconst Keyboard = (props) => {\n return createComponent(KeyboardSimple, mergeProps(props, {\n get style() {\n return [...[props.style].flat(), styles$2.Container.tones[props.tone ?? styles$2.tone], styles$2.Container.base];\n }\n }));\n};\nconst { Input: { defaultTone: defaultTone$1, ...themeStyles } = { styles: {} } } = (_p = theme) == null ? void 0 : _p.componentConfig;\nconst container$1 = {\n themeKeys: {\n justifyContent: \"justifyContent\"\n },\n base: {\n display: \"flex\",\n justifyContent: \"flexStart\",\n flexDirection: \"column\",\n width: 100,\n height: 100,\n actualTitle: \"\"\n },\n themeStyles\n};\nconst input = {\n themeKeys: {\n borderRadius: \"borderRadius\",\n color: \"backgroundColor\"\n },\n base: {\n width: getWidthByUpCount$1(theme, 4),\n height: 100,\n display: \"flex\",\n flexDirection: \"column\",\n padding: [theme.spacer.xxxl, theme.spacer.xl],\n color: theme.color.interactiveNeutral,\n contentColor: theme.color.fillInverse,\n borderRadius: theme.radius.sm,\n marginX: theme.spacer.xxxl\n },\n modes: {\n focus: {\n color: theme.color.interactiveNeutralFocus\n },\n disabled: {\n color: theme.color.fillNeutralDisabled\n }\n },\n tones: {\n inverse: {\n color: theme.color.interactiveInverse\n },\n brand: {\n color: theme.color.interactiveBrand,\n focus: {\n color: theme.color.fillNeutral\n }\n }\n },\n themeStyles\n};\nconst text = {\n themeKeys: {\n color: \"textColor\"\n },\n base: {\n textAlign: \"left\",\n color: theme.color.textNeutral,\n ...theme.typography.button1\n },\n themeStyles\n};\nmakeComponentStyles(container$1);\nmakeComponentStyles(input);\nmakeComponentStyles(text);\nconst { Tile: { defaultTone, ...tileThemeStyles } = { styles: {} } } = (_q = theme) == null ? void 0 : _q.componentConfig;\nconst { Surface: { defaultSurfaceTone, ...surfaceThemeStyles } = { styles: {} } } = (_r = theme) == null ? void 0 : _r.componentConfig;\nconst container = {\n themeKeys: {\n alpha: \"alpha\",\n paddingYProgress: \"paddingYProgress\"\n },\n base: {\n width: 400,\n height: 240,\n padding: [40, 10],\n // TODO support separate paddingX and paddingY values from theme, possibly formatter\n paddingYProgress: theme.spacer.xl,\n paddingYBetweenContent: theme.spacer.md,\n borderRadius: theme.radius.md,\n alpha: theme.alpha.primary\n },\n modes: {\n disabled: {\n alpha: theme.alpha.inactive\n }\n },\n themeStyles: {\n ...surfaceThemeStyles,\n ...tileThemeStyles\n }\n};\nconst insetBottom = {\n themeKeys: {},\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n mountY: 1\n },\n themeStyles: tileThemeStyles\n};\nconst standardBottom = {\n themeKeys: {},\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\"\n },\n themeStyles: tileThemeStyles\n};\nconst logoContainer = {\n themeKeys: {},\n base: {\n width: theme.spacer.lg * 5,\n height: theme.spacer.xxl + theme.spacer.md\n },\n themeStyles: tileThemeStyles\n};\nconst Container = makeComponentStyles(container);\nconst InsetBottom = makeComponentStyles(insetBottom);\nconst StandardBottom = makeComponentStyles(standardBottom);\nconst LogoContainer = makeComponentStyles(logoContainer);\nconst styles = {\n tone: defaultTone || defaultSurfaceTone || \"neutral\",\n Container,\n InsetBottom,\n StandardBottom,\n LogoContainer\n};\nconst Tile = (props) => {\n const [isFocused, setIsFocused] = createSignal(false);\n return (() => {\n var _el$ = createElement(\"node\");\n use(withPadding, _el$, () => {\n var _a2;\n return props.padding ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.padding) ?? styles.Container.base.padding;\n });\n spread(_el$, mergeProps(props, {\n \"onFocus\": () => setIsFocused(true),\n \"onBlur\": () => setIsFocused(false),\n get style() {\n return [...[props.style].flat(), styles.Container.tones[props.tone ?? styles.tone], styles.Container.base];\n }\n }), true);\n insert(_el$, createComponent(Artwork, mergeProps(() => props.artwork, {\n get states() {\n return props.states;\n },\n get style() {\n return props.style;\n },\n get tone() {\n return props.tone ?? styles.tone;\n }\n })), null);\n insert(_el$, createComponent(Show, {\n get when() {\n return props.persistentMetadata || isFocused();\n },\n get children() {\n return [createComponent(View, {\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[1]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[1]) ?? styles.Container.base.padding[1];\n },\n get children() {\n return props.topLeft;\n }\n }), createComponent(View, {\n get x() {\n var _a2, _b2, _c2;\n return ((props == null ? void 0 : props.width) ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[0]) ?? ((_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0]);\n },\n get y() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[1]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[1]) ?? styles.Container.base.padding[1];\n },\n mountX: 1,\n get children() {\n return props.topRight;\n }\n }), createComponent(View, {\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.InsetBottom, styles.InsetBottom.tones[props.tone ?? styles.tone], styles.InsetBottom.base];\n },\n get width() {\n var _a2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - styles.Container.base.padding[0] * 2;\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2, _d2, _e2, _f2;\n return (props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) - (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]) - (((_e2 = props.progressBar) == null ? void 0 : _e2.progress) > 0 ? props.paddingYProgress ?? ((_f2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _f2.paddingYProgress) ?? styles.Container.base.paddingYProgress : 0);\n },\n get children() {\n return props.inset;\n }\n }), createComponent(View, {\n get style() {\n var _a2;\n return [(_a2 = props.style) == null ? void 0 : _a2.StandardBottom, styles.StandardBottom.tones[props.tone ?? styles.tone], styles.StandardBottom.base];\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2, _d2;\n return Number(props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) + (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]);\n },\n get width() {\n var _a2, _b2, _c2, _d2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[1]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[1]) ?? styles.Container.base.padding[1]) * 2;\n },\n get children() {\n return props.bottom;\n }\n })];\n }\n }), null);\n insert(_el$, createComponent(Show, {\n get when() {\n var _a2;\n return ((_a2 = props.progressBar) == null ? void 0 : _a2.progress) ? props.progressBar.progress > 0 : 0;\n },\n get children() {\n return createComponent(ProgressBar, mergeProps(() => props.progressBar, {\n get width() {\n var _a2, _b2, _c2, _d2;\n return (props.width ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.width) ?? styles.Container.base.width) - (((_b2 = props.padding) == null ? void 0 : _b2[0]) ?? ((_d2 = (_c2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _c2.padding) == null ? void 0 : _d2[0]) ?? styles.Container.base.padding[0]) * 2;\n },\n get x() {\n var _a2, _b2, _c2;\n return ((_a2 = props.padding) == null ? void 0 : _a2[0]) ?? ((_c2 = (_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.padding) == null ? void 0 : _c2[0]) ?? styles.Container.base.padding[0];\n },\n get y() {\n var _a2, _b2, _c2;\n return (props.height ?? props.height ?? ((_a2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _a2.height) ?? styles.Container.base.height) - (props.paddingYProgress ?? ((_b2 = styles.Container.tones[props.tone ?? styles.tone]) == null ? void 0 : _b2.paddingYProgress) ?? styles.Container.base.paddingYProgress) - (((_c2 = props == null ? void 0 : props.progressBar) == null ? void 0 : _c2.height) || 0);\n }\n }));\n }\n }), null);\n return _el$;\n })();\n};\nconst fpsStyle = {\n color: 255,\n height: 150,\n width: 330,\n x: 1910,\n y: 10,\n mountX: 1,\n alpha: 0.8,\n zIndex: 100\n};\nconst fpsLabel = {\n x: 10,\n fontSize: 22,\n textColor: hexColor(\"#f6f6f6\")\n};\nconst fpsValue = {\n fontSize: 22,\n textColor: hexColor(\"#f6f6f6\")\n};\nconst [fps, setFps] = createSignal(0);\nconst [avgFps, setAvgFps] = createSignal(0);\nconst [minFps, setMinFps] = createSignal(99);\nconst [maxFps, setMaxFps] = createSignal(0);\nconst [isLoadedCount, setIsLoadedCount] = createSignal(0);\nconst [isLoadingCount, setIsLoadingCount] = createSignal(0);\nconst [isFailedCount, setIsFailedCount] = createSignal(0);\nlet count = 0;\nlet totalFps = 0;\nconst resetCounter = () => {\n totalFps = 0;\n count = 0;\n setMinFps(99);\n};\nconst calcFps = (fps2) => {\n if (!fps2)\n return;\n setFps(fps2);\n setMinFps((prev) => Math.min(fps2, prev));\n setMaxFps((prev) => Math.max(fps2, prev));\n totalFps += fps2;\n count++;\n setAvgFps(Math.round(totalFps / count));\n};\nconst calcPerformanceMetrics = (stage) => {\n let isLoadedCount2 = 0;\n let isLoadingCount2 = 0;\n let isFailedCount2 = 0;\n stage.txManager.textureIdCache.forEach((value, key2, map) => {\n if (value.state === \"loaded\") {\n isLoadedCount2++;\n }\n if (value.state === \"loading\") {\n isLoadingCount2++;\n }\n if (value.state === \"failed\") {\n isFailedCount2++;\n }\n });\n setIsLoadedCount(isLoadedCount2);\n setIsLoadingCount(isLoadingCount2);\n setIsFailedCount(isFailedCount2);\n};\nfunction setupFPS(root) {\n root.renderer.on(\"fpsUpdate\", (target, fpsData) => {\n const fps2 = typeof fpsData === \"number\" ? fpsData : fpsData.fps;\n if (fps2 > 5) {\n calcFps(fps2);\n calcPerformanceMetrics(target.root.stage);\n }\n });\n}\nconst FPSCounter = (props) => {\n return createComponent(View, mergeProps(props, {\n style: fpsStyle,\n get children() {\n return [createComponent(View, {\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"FPS:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 90,\n get children() {\n return fps();\n }\n })];\n }\n }), createComponent(View, {\n x: 160,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"AVG:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 100,\n get children() {\n return avgFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 20,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"MIN:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 90,\n get children() {\n return minFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 160,\n y: 20,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"MAX:\"\n }), createComponent(Text$7, {\n style: fpsValue,\n x: 100,\n get children() {\n return maxFps();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 50,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Loaded Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isLoadedCount();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 80,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Loading Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isLoadingCount();\n }\n })];\n }\n }), createComponent(View, {\n x: 0,\n y: 110,\n get children() {\n return [createComponent(Text$7, {\n style: fpsLabel,\n children: \"Failed Textures Cnt:\"\n }), createComponent(Text$7, {\n style: fpsLabel,\n x: 270,\n get children() {\n return isFailedCount();\n }\n })];\n }\n })];\n }\n }));\n};\nexport {\n Artwork,\n Badge,\n Button,\n ButtonContainer,\n Checkbox,\n Column,\n FPSCounter,\n Icon$1 as Icon,\n Keyboard,\n Label,\n Metadata,\n ProgressBar,\n Row,\n Tile,\n styles$e as artworkStyles,\n assertTruthy,\n styles$d as badgeStyles,\n styles$c as buttonStyles,\n chainFunctions,\n styles$b as checkboxStyles,\n styles$9 as columnStyles,\n getDimensions,\n getItemRatioDimensions,\n getWidthByUpCount$1 as getWidthByUpCount,\n handleNavigation,\n styles$a as iconStyles,\n styles$2 as keyboardStyles,\n styles$8 as labelStyles,\n makeComponentStyles,\n styles$5 as metadataStyles,\n onGridFocus,\n styles$4 as progressBarStyles,\n resetCounter,\n styles$3 as rowStyles,\n scrollToIndex,\n setupFPS,\n styles as tileStyles,\n useItemLayout,\n withScrolling\n};\n//# sourceMappingURL=index.js.map\n","import { IntrinsicNodeStyleProps, hexColor } from \"@lightningjs/solid\";\nimport theme from \"theme\";\n\nexport default {\n Column: {\n flexDirection: \"column\",\n display: \"flex\",\n width: 320,\n height: 600,\n y: 360,\n gap: 20,\n zIndex: 101,\n transition: {\n x: {\n duration: 250,\n easing: \"ease-in-out\",\n },\n },\n x: 8,\n focus: {\n x: theme.layout.marginX,\n },\n } satisfies IntrinsicNodeStyleProps,\n Gradient: {\n zIndex: 99,\n color: hexColor(\"#000000\"),\n src: \"./assets/sidenav.png\",\n alpha: 0,\n width: 1200,\n height: 1080,\n focus: {\n alpha: 1,\n },\n transition: { alpha: true },\n } satisfies IntrinsicNodeStyleProps,\n NavButton: {\n zIndex: 102,\n height: 70,\n width: 100,\n borderRadius: 8,\n focus: {\n color: hexColor(\"#424242\"),\n },\n active: {\n width: 328,\n height: 70,\n },\n } satisfies IntrinsicNodeStyleProps,\n};\n","import { For, IntrinsicNodeProps, View } from \"@lightningjs/solid\";\nimport { createSpriteMap } from \"@lightningjs/solid-primitives\";\n// Icons from https://uxwing.com/\n\nconst basePath = import.meta.env.BASE_URL;\n\nconst icons = [\n { name: \"experiment\", width: 81, height: 100, x: 0, y: 0 },\n { name: \"trending\", width: 100, height: 56, x: 81, y: 0 },\n { name: \"tv\", width: 100, height: 68, x: 181, y: 0 },\n { name: \"movie\", width: 94, height: 100, x: 282, y: 0 },\n];\n\ninterface IconProps extends IntrinsicNodeProps {\n name: string;\n}\n\nfunction Icon(props: IconProps) {\n const sprite = createSpriteMap(basePath + \"assets/icons_white.png\", icons);\n\n return (\n \n );\n}\n\nexport default Icon;\nexport function PreviewIcons() {\n return (\n <>\n \n \n {(icon, i) => }\n \n \n );\n}\n","import { useMatch, useNavigate } from \"@solidjs/router\";\nimport {\n View,\n Text,\n IntrinsicNodeProps,\n ElementNode,\n} from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport styles from \"./NavDrawer.styles\";\nimport Icon from \"../Icon\";\nimport theme from \"theme\";\n\ninterface NavButtonProps extends IntrinsicNodeProps {\n icon: string;\n children: string;\n}\n\nfunction NavButton(props: NavButtonProps) {\n return (\n \n \n \n \n \n {props.children}\n \n \n );\n}\n\nexport default function NavDrawer(props) {\n let backdrop;\n const navigate = useNavigate();\n function onFocus(this: ElementNode) {\n backdrop.states.add(\"focus\");\n this.children.forEach((c) => c.states!.add(\"active\"));\n this.children.selected!.setFocus();\n }\n\n function onBlur(this: ElementNode) {\n backdrop.states.remove(\"focus\");\n this.selected = 0;\n this.children.forEach((c) => c.states!.remove(\"active\"));\n }\n\n function handleNavigate(page: string) {\n const isOnPage = useMatch(() => page);\n if (isOnPage()) {\n return props.focusPage();\n }\n\n navigate(page);\n }\n\n return (\n <>\n \n \n Built With:\n \n \n \n \n handleNavigate(\"/browse/all\")}\n icon=\"trending\"\n >\n Trending\n \n handleNavigate(\"/browse/movie\")}>\n Movies\n \n handleNavigate(\"/browse/tv\")}>\n TV\n \n handleNavigate(\"/examples\")}\n >\n Examples\n \n \n \n \n );\n}\n","import { useLocation, useNavigate } from \"@solidjs/router\";\nimport { View, activeElement, renderer } from \"@lightningjs/solid\";\nimport { useFocusManager, useAnnouncer } from \"@lightningjs/solid-primitives\";\nimport Background from \"../components/Background\";\nimport NavDrawer from \"../components/NavDrawer/NavDrawer\";\nimport { FPSCounter, setupFPS } from \"@lightningjs/solid-ui\";\nimport { createEffect, createSignal } from \"solid-js\";\n\ndeclare module \"@lightningjs/solid-primitives\" {\n // Augment the FocusManager KeyMap interface with our custom keys\n interface KeyMap {\n Announcer: (string | number)[];\n Menu: (string | number)[];\n Escape: (string | number)[];\n Backspace: (string | number)[];\n }\n}\n\ndeclare module \"@lightningjs/solid\" {\n interface ElementNode {\n heroContent?: boolean;\n backdrop?: any;\n entityInfo?: any;\n href?: string;\n }\n}\n\nconst App = (props) => {\n useFocusManager({\n Announcer: [\"a\"],\n Menu: [\"m\"],\n Escape: [\"Escape\", 27],\n Backspace: [\"Backspace\", 8],\n Left: [\"ArrowLeft\", 37],\n Right: [\"ArrowRight\", 39],\n Up: [\"ArrowUp\", 38],\n Down: [\"ArrowDown\", 40],\n Enter: [\"Enter\", 13],\n });\n const announcer = useAnnouncer();\n announcer.enabled = false;\n const navigate = useNavigate();\n\n let navDrawer, lastFocused;\n\n setupFPS({ renderer });\n\n function focusNavDrawer() {\n if (navDrawer.states.has(\"focus\")) {\n return false;\n }\n lastFocused = activeElement();\n return navDrawer.setFocus();\n }\n\n const [showWidgets, setShowWidgets] = createSignal(true);\n const location = useLocation();\n const showOnPaths = [\"/browse\", \"/entity\"];\n createEffect(() => {\n const currentPath = location.pathname;\n let matchesPartial = showOnPaths.some((path) =>\n currentPath.startsWith(path)\n );\n if (currentPath === \"/\") {\n matchesPartial = true;\n }\n setShowWidgets(matchesPartial);\n });\n\n return (\n (announcer.enabled = !announcer.enabled)}\n onLast={() => history.back()}\n onMenu={() => navigate(\"/\")}\n style={{ width: 1920, height: 1080 }}\n onBackspace={focusNavDrawer}\n onLeft={focusNavDrawer}\n onRight={() => navDrawer.states.has(\"focus\") && lastFocused.setFocus()}\n >\n \n \n\n {props.children}\n lastFocused.setFocus()}\n showWidgets={showWidgets()}\n />\n \n );\n};\n\nexport default App;\n","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n hexColor,\n} from \"@lightningjs/solid\";\nimport theme from \"theme\";\n\n// Augment existing intrinsic style prop interfaces to include our own\n// app-specific states\ndeclare module \"@lightningjs/solid\" {\n interface IntrinsicNodeStyleProps {\n // TODO: Refactor states to use a $ prefix\n active?: IntrinsicNodeStyleProps;\n disabled?: IntrinsicNodeStyleProps;\n }\n\n interface IntrinsicTextNodeStyleProps {\n // TODO: Refactor states to use a $ prefix\n active?: IntrinsicTextNodeStyleProps;\n disabled?: IntrinsicTextNodeStyleProps;\n }\n}\n\nexport default {\n Page: {\n width: 1920,\n height: 1080,\n },\n headlineText: {\n width: 1200,\n height: 240,\n x: 360,\n // lineHeight: 170, // TODO: Add back when lineHeight is supported\n y: 455,\n contain: \"both\",\n fontSize: 66,\n textAlign: \"center\",\n } satisfies IntrinsicTextNodeStyleProps,\n headlineSubText: {\n width: 960,\n height: 170,\n // lineHeight: 170, // TODO: Add back when lineHeight is supported\n x: 530,\n y: 655,\n contain: \"both\",\n fontSize: 48,\n textAlign: \"center\",\n } satisfies IntrinsicTextNodeStyleProps,\n itemsContainer: {\n width: theme.layout.screenW,\n height: 600,\n y: 560,\n x: 0,\n zIndex: 2,\n },\n Thumbnail: {\n borderRadius: 16,\n width: 185,\n height: 278,\n scale: 1,\n zIndex: 2,\n transition: { scale: { duration: 250, easing: \"ease-in-out\" } },\n border: { width: 0, color: 0x00000000 },\n focus: { scale: 1.1, border: { color: 0xffffff66, width: 8 } },\n },\n FocusRing: {\n borderRadius: 16,\n width: 194,\n height: 286,\n y: -5,\n x: -5,\n zIndex: -1,\n },\n FPS: {\n color: 0x000000ff,\n height: 42,\n width: 140,\n x: 20,\n y: 20,\n zIndex: 100,\n } as const,\n FPSLabel: {\n x: 10,\n y: 0,\n fontSize: 36,\n textColor: hexColor(\"#ffffff\"),\n },\n FPSValue: {\n x: 90,\n y: 0,\n fontSize: 36,\n textColor: hexColor(\"#ffffff\"),\n },\n showHeadline: { x: 70, y: 20 },\n headlineBlur: {\n width: 1920,\n height: 150,\n x: 0,\n y: 0,\n zIndex: 14,\n alpha: 0.9,\n color: hexColor(\"#000000\"),\n },\n RowTitle: {\n height: 60,\n width: 300,\n marginBottom: -40,\n fontSize: 36,\n color: hexColor(\"#f0f0f0\"),\n zIndex: 2,\n } satisfies IntrinsicTextNodeStyleProps,\n Row: {\n display: \"flex\",\n justifyContent: \"spaceBetween\",\n height: 300,\n },\n Column: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n gap: 64,\n width: theme.layout.screenW - 2 * theme.layout.marginX,\n x: theme.layout.marginX + theme.layout.gutterX,\n y: 48,\n transition: { y: { duration: 250, easing: \"ease-in-out\" } },\n zIndex: 2,\n },\n Rect: {\n width: 250,\n height: 100,\n y: 10,\n x: 300,\n color: hexColor(\"#0000ff\"),\n },\n peopleBio: {\n ...theme.typography.body1,\n fontFamily: \"Ubuntu\",\n fontWeight: \"normal\",\n contain: \"both\",\n width: 780,\n height: 340,\n } satisfies IntrinsicTextNodeStyleProps,\n} as const;\n\nconst Button = {\n width: 120,\n height: 40,\n color: hexColor(\"#000000\"),\n borderRadius: 8,\n border: { width: 2, color: hexColor(\"#3333ff\") },\n scale: 1,\n focus: {\n scale: 1.1,\n border: { width: 5, color: hexColor(\"#333333\") },\n },\n transition: { scale: true, color: true },\n} satisfies IntrinsicNodeStyleProps;\n\nconst TopBar = {\n color: hexColor(\"#00A699\"),\n height: 8,\n y: 2,\n x: -4,\n width: Button.width + 8,\n} satisfies IntrinsicNodeStyleProps;\n\nconst ButtonText = {\n fontSize: 12,\n y: 12,\n // lineHeight: Button.height, // TODO: Add back when lineHeight is supported\n contain: \"width\",\n textAlign: \"center\",\n color: hexColor(\"#F6F6F9\"),\n height: Button.height,\n width: Button.width,\n} satisfies IntrinsicTextNodeStyleProps;\n\nexport const buttonStyles = {\n container: Button,\n topBar: TopBar,\n text: ButtonText,\n} satisfies Record;\n\nexport const MaterialButton = {\n width: 386,\n height: 136,\n color: hexColor(\"#715cab\"),\n focus: {\n color: hexColor(\"#5a39a2\"),\n },\n disabled: {\n color: hexColor(\"#291d43\"),\n },\n} satisfies IntrinsicNodeStyleProps;\n\nexport const MaterialButtonText = {\n fontSize: 32,\n contain: \"width\",\n textAlign: \"center\",\n mountY: -0.35,\n color: hexColor(\"#FFFFFF\"),\n height: MaterialButton.height,\n width: MaterialButton.width,\n // lineHeight: MaterialButton.height, // TODO: Add back when lineHeight is supported\n focus: {\n fontSize: 40,\n },\n disabled: {\n color: hexColor(\"#909090\"),\n },\n} satisfies IntrinsicTextNodeStyleProps;\n","import { IntrinsicNodeProps, View, Text } from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { For, splitProps } from \"solid-js\";\nimport styles, { buttonStyles } from \"../styles\";\nimport { type Tile } from \"../api/formatters/ItemFormatter\";\n\nexport function Thumbnail(props: IntrinsicNodeProps) {\n return ;\n}\n\nexport function FocusRing(props: IntrinsicNodeProps) {\n return ;\n}\n\nexport interface TileRowProps extends IntrinsicNodeProps {\n items: Tile[];\n}\n\nexport function TileRow(props: TileRowProps) {\n const [local, others] = splitProps(props, [\"items\"]);\n\n return (\n \n {(item) => }\n \n );\n}\n\nexport function Button(props) {\n return (\n \n {props.children}\n \n );\n}\n","export default 'eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIyZDE4YjEwMTA0YjdiZTlkNjFiMWYwYjVlMGEwNzM2OCIsInN1YiI6IjYwZTVjMTdlNGNhNjc2MDA3NTA4Njc3MSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.D_nqH9kd-bhhWzeVsTDPYhHnsUaNAuyAa6YATmKHqsA';\n","import API_KEY_V4 from \"./key\";\nconst API_BASE = \"https://api.themoviedb.org/3\";\nlet tmdbConfig;\nlet baseImageUrl;\nconst basePosterSize = \"w185\";\n\nconst defaultFetchParams = {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + API_KEY_V4,\n },\n};\n\nexport function getImageUrl(path: string, posterSize: string = basePosterSize) {\n return baseImageUrl + posterSize + path;\n}\n\nfunction get(path: string, params: RequestInit = {}) {\n if (tmdbConfig) {\n return _get(path, params);\n } else {\n return loadConfig().then(() => _get(path, params));\n }\n}\n\nfunction _get(path: string, params: RequestInit = {}) {\n return fetch(API_BASE + path, {\n ...defaultFetchParams,\n ...params,\n }).then((r) => r.json());\n}\n\nfunction loadConfig() {\n return _get(\"/configuration\").then((data) => {\n tmdbConfig = data;\n baseImageUrl = data.images?.secure_base_url;\n return data;\n });\n}\n\nexport default {\n get,\n loadConfig,\n};\n","import { getImageUrl } from \"../index\";\n\nfunction truncateString(str: string, maxLength: number): string {\n if (str.length > maxLength) {\n return str.substring(0, maxLength - 3) + \"...\";\n }\n return str;\n}\n\nexport function chunkArray(array: string[], size = 7) {\n let result: string[][] = [];\n for (let i = 0, j = array.length; i < j; i += size) {\n result.push(array.slice(i, i + size));\n }\n return result;\n}\n\nexport interface Tile {\n src: string;\n tileSrc: string;\n backdrop: string;\n href: string;\n shortTitle: string;\n title: string;\n data: unknown;\n entityInfo: {\n type: string;\n id: string;\n };\n heroContent: {\n title: string;\n description: string;\n };\n}\n\n// TODO: Remove `any` type\nexport function convertItemsToTiles(items: any[] = []): Tile[] {\n return items.map((item) => ({\n src: getImageUrl(item.poster_path || item.profile_path),\n tileSrc: getImageUrl(item.backdrop_path || item.profile_path, \"w300\"),\n backdrop: getImageUrl(item.backdrop_path, \"w1280\"),\n href: `/entity/${item.media_type || \"people\"}/${item.id}`,\n shortTitle: truncateString(item.title || item.name, 30),\n title: item.title || item.name,\n data: item,\n entityInfo: {\n type: item.media_type || \"people\",\n id: item.id,\n },\n heroContent: {\n title: item.title || item.name,\n description: item.overview,\n },\n }));\n}\n","import api from \"..\";\nimport { convertItemsToTiles, chunkArray } from \"../formatters/ItemFormatter\";\n\nlet cache = new Map();\nconst leftoverTiles = new Map();\n\nexport default function (filter: string) {\n return (pageIndex: number): Promise => {\n const url = `/trending/${filter}/week?page=${pageIndex}`;\n if (cache.has(url)) {\n return cache.get(url);\n }\n\n let result = api.get(url).then((trending) => {\n let results = trending.results.filter((r) => !r.adult);\n let tiles = (\n leftoverTiles.has(filter) ? leftoverTiles.get(filter) : []\n ).concat(convertItemsToTiles(results));\n let chunks = chunkArray(tiles);\n if (chunks[chunks.length - 1].length < 7) {\n leftoverTiles.set(filter, chunks.pop());\n } else {\n leftoverTiles.delete(filter);\n }\n return chunks;\n });\n\n cache.set(url, result);\n return result;\n };\n}\n","import { createSignal, createComputed, batch, createResource } from \"solid-js\";\n\nexport function createInfiniteScroll(fetcher: (page: number) => Promise) {\n const [pages, setPages] = createSignal([]);\n const [page, setPage] = createSignal(1);\n const [end, setEnd] = createSignal(false);\n\n const [contents] = createResource(page, fetcher);\n\n createComputed(() => {\n const content = contents();\n if (!content) return;\n batch(() => {\n if (content.length === 0) setEnd(true);\n setPages((p) => [...p, ...content]);\n });\n });\n\n return {\n pages,\n page,\n setPage,\n setPages,\n end,\n setEnd,\n };\n}\n","import { View, Text } from \"@lightningjs/solid\";\nimport { For, Show } from \"solid-js\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nimport theme from \"theme\";\nwithPadding;\n\nconst blockWidth = 900;\n\nconst ContentBlockStyle = {\n display: \"flex\",\n flexDirection: \"column\",\n x: 50,\n y: 100,\n width: blockWidth,\n height: 220,\n gap: 16,\n};\n\nconst HeadlineStyles = {\n ...theme.typography.display2,\n fontFamily: \"Ubuntu\",\n fontWeight: 700,\n maxLines: 1,\n width: blockWidth,\n contain: \"width\",\n};\nconst Headline = (props) => ;\n\nconst DescriptionStyles = {\n ...theme.typography.body1,\n fontFamily: \"Ubuntu\",\n fontWeight: 400,\n lineHeight: 32,\n width: blockWidth,\n maxLines: 3,\n contain: \"width\",\n};\n\nconst BadgeStyle = {\n fontSize: 16,\n lineHeight: 20,\n};\n\nconst Description = (props) => (\n \n {props.children}\n \n);\n\nconst Badge = (props) => {\n return (\n \n {props.children}\n \n );\n};\n\nconst MetaTextStyle = {\n ...theme.typography.body2,\n fontFamily: \"Ubuntu\",\n fontWeight: 400,\n};\n\nconst Metadata = (props) => (\n \n \n \n \n \n {props.voteCount} reviews\n {props.metaText}\n {(item) => {item}}\n \n);\n\nconst ContentBlock = (props) => (\n \n {props.title}\n {props.description}\n \n \n \n \n);\n\nexport default ContentBlock;\n","import api, { getImageUrl } from \"..\";\nimport { convertItemsToTiles } from \"../formatters/ItemFormatter\";\n\nexport function minutesToHMM(minutes) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return (\n hours + \"h \" + (remainingMinutes < 10 ? \"0\" : \"\") + remainingMinutes + \"min\"\n );\n}\n\nfunction formatDate(dateString) {\n const parts = dateString.split(\"-\");\n return parts[1] + \"/\" + parts[2] + \"/\" + parts[0];\n}\n\nfunction justYear(dateString) {\n const parts = dateString.split(\"-\");\n return parts[0];\n}\n\nexport function getRecommendations({ type, id }) {\n return api.get(`/${type}/${id}/recommendations`).then(({ results }) => {\n if (results.length) {\n return convertItemsToTiles(results.slice(0, 7));\n }\n return api\n .get(`/trending/${type}/week?page=1`)\n .then(({ results }) => convertItemsToTiles(results.slice(0, 7)));\n });\n}\n\nexport function getCredits({ type, id }) {\n return api\n .get(`/${type}/${id}/credits`)\n .then(({ cast }) => convertItemsToTiles(cast.slice(0, 7)));\n}\n\nexport function getInfo({ type, id }) {\n let rt =\n type === \"movie\"\n ? {\n rtCrit: 86,\n rtFan: 92,\n }\n : {};\n\n return api.get(`/${type}/${id}`).then((data) => ({\n backgroundImage: getImageUrl(data.backdrop_path, \"w1280\"),\n heroContent: {\n title: data.title || data.name,\n description: data.overview,\n badges: [\"HD\", \"CC\"],\n voteAverage: data.vote_average,\n voteCount: data.vote_count,\n metaText:\n type === \"movie\"\n ? minutesToHMM(data.runtime) + \" \" + formatDate(data.release_date)\n : `${justYear(data.first_air_date)} - ${justYear(data.last_air_date)}`,\n reviews: rt,\n },\n ...data,\n }));\n}\n","import {\n createEffect,\n createMemo,\n on,\n createSignal,\n Show,\n createResource,\n createSelector,\n For,\n} from \"solid-js\";\nimport { ElementNode, View, activeElement } from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport { useNavigate, useParams } from \"@solidjs/router\";\nimport { TileRow } from \"../components\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\nimport browseProvider from \"../api/providers/browse\";\nimport { createInfiniteScroll } from \"../components/pagination\";\nimport ContentBlock from \"../components/ContentBlock\";\nimport * as entityProvider from \"../api/providers/entity\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\nimport { debounce } from \"@solid-primitives/scheduled\";\n\nconst Browse = () => {\n const params = useParams();\n const [columnY, setcolumnY] = createSignal(0);\n const [entityInfo, setEntityInfo] = createSignal();\n const [entityData] = createResource(entityInfo, entityProvider.getInfo);\n const [heroContent, setHeroContent] = createSignal({});\n const navigate = useNavigate();\n const isFirst = createSelector(() => {\n return 0;\n });\n\n const provider = createMemo(() => {\n return createInfiniteScroll(browseProvider(params.filter || \"all\"));\n });\n\n const delayedBackgrounds = debounce(\n (img: string) => setGlobalBackground(img),\n 400\n );\n const delayedHero = debounce((content: {}) => setHeroContent(content), 200);\n\n createEffect(\n on(\n activeElement,\n (elm) => {\n if (elm.backdrop) {\n delayedBackgrounds(elm.backdrop);\n }\n\n if (elm.heroContent) {\n delayedHero(elm.heroContent);\n }\n },\n { defer: true }\n )\n );\n\n function onRowFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setcolumnY((this.y || 0) * -1 + 24);\n let numPages = provider().pages().length;\n\n if (\n numPages === 0 ||\n (this.parent.selected && this.parent.selected >= numPages - 2)\n ) {\n provider().setPage((p) => p + 1);\n }\n }\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n return true;\n }\n\n return (\n \n \n \n \n \n {(items, i) => (\n \n )}\n \n \n \n \n );\n};\n\nexport default Browse;\n","import { createSignal, createSelector, For } from \"solid-js\";\nimport { ElementNode, View, Text, activeElement } from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { useNavigate } from \"@solidjs/router\";\nimport styles from \"../styles\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\n\nconst Portal = () => {\n const navigate = useNavigate();\n const isFirst = createSelector(() => {\n return 0;\n });\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.id);\n navigate(\"/\" + entity.id);\n }\n\n const demos = [\n {\n title: \"Flex Row\",\n id: \"flex\",\n description: \"Flex Row Implementation\",\n },\n {\n title: \"Flex Column\",\n id: \"flexcolumn\",\n description: \"Flex Column Implementation\",\n },\n {\n title: \"Flex Row Vertical Align\",\n id: \"flexsize\",\n description: \"Flex Row Vertical Align Implementation\",\n },\n {\n title: \"Flex Column Vertical Align\",\n id: \"flexcolumnsize\",\n description: \"Flex Column Vertical Align Implementation\",\n },\n {\n title: \"Buttons\",\n id: \"buttons\",\n description: \"Demo a few buttons\",\n },\n {\n title: \"Text\",\n id: \"text\",\n description: \"Text layout with flexbox\",\n },\n {\n title: \"Create Elements\",\n id: \"create\",\n description: \"Testing Show + children + inserting text\",\n },\n {\n title: \"Viewport\",\n id: \"viewport\",\n description: \"Events going in and out of viewport\",\n },\n ];\n\n function DemoTile(props) {\n const Container = {\n width: 370,\n height: 320,\n borderRadius: 6,\n scale: 1,\n color: 0x182b44ff,\n transition: { color: true, scale: true },\n focus: {\n scale: 1.1,\n color: 0xffffffff,\n },\n };\n const [color, setColor] = createSignal(0xffffffff);\n\n return (\n setColor(0x000000ff)}\n onBlur={() => setColor(0xffffffff)}\n style={Container}\n >\n \n \n {props.index}\n \n \n {props.title}\n \n \n {props.description}\n \n \n \n );\n }\n\n const [rowX, setRowX] = createSignal(140);\n\n function moveRow(row) {\n setRowX(row.selected * -400 + 140);\n }\n\n return (\n \n \n \n \n Examples\n \n \n \n \n \n {(demo, i) => (\n \n )}\n \n \n \n );\n};\n\nexport default Portal;\n","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst TextPage = () => {\n const OverviewContainer = {\n width: 900,\n height: 500,\n y: 350,\n x: 150,\n gap: 25,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const SublineContainer = {\n width: 900,\n height: 36,\n gap: 6,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const Title = {\n fontSize: 42,\n };\n\n const Overview = {\n width: OverviewContainer.width,\n fontSize: 26,\n contain: \"width\",\n } satisfies IntrinsicTextNodeStyleProps;\n\n const Subline = {\n fontSize: 26,\n };\n\n onMount(() => {\n setGlobalBackground(\"#000000\");\n });\n\n return (\n \n Title of the Page\n \n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel\n tempor tellus. Sed eu leo purus. Vestibulum sollicitudin eget tellus a\n varius. Phasellus est turpis, volutpat sed blandit sit amet, rutrum sit\n amet mauris. In dignissim elit orci, a sollicitudin ipsum faucibus et.\n Quisque vel quam rutrum, faucibus augue sed, scelerisque nunc.\n \n \n Subline Text\n \n More Text\n \n \n );\n};\n\nexport default TextPage;\n","import {\n IntrinsicNodeStyleProps,\n IntrinsicTextNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Show, children, createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst CreatePage = () => {\n const OverviewContainer = {\n width: 900,\n height: 500,\n y: 50,\n x: 150,\n gap: 25,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const SublineContainer = {\n width: 900,\n height: 36,\n gap: 6,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flexStart\",\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const Title = {\n fontSize: 42,\n };\n\n const Subline = {\n fontSize: 26,\n };\n\n let myBox, childRef;\n onMount(() => {\n setGlobalBackground(\"#000000\");\n myBox.animate({ x: 100 }, { duration: 2000 }).start();\n });\n\n const [insertTest, setInsertTest] = createSignal();\n const [emptyTest, setEmptyTest] = createSignal();\n\n setTimeout(() => {\n setInsertTest(\"- Inserted -\");\n childRef\n .getChildById(\"child1\")\n //.searchChildrenById('subChild') - more expensive version of getChildById\n ?.animate({ x: 600 }, { duration: 2000 })\n .start();\n }, 2000);\n\n const styleChild = {\n width: 400,\n height: 300,\n // Solid blue\n color: hexColor(\"#0000ff\"),\n } as const;\n\n const someOtherStyle = {\n // pretty red\n color: hexColor(\"#f54242\"),\n focus: {\n // pretty blue\n color: hexColor(\"#4287f5\"),\n },\n };\n\n function ChildTest(props) {\n // This causes a parent not rendered error since we're rendering it twice in the template\n const resolved = children(() => props.children);\n return (\n \n \n {resolved()}\n \n {props.title}\n \n \n {resolved()}\n \n \n );\n }\n\n const borderStyles = {\n borderLeft: {\n width: 8,\n color: 0x05b2b626,\n },\n borderTop: {\n width: 8,\n color: 0x25a2bd26,\n },\n borderRight: {\n width: 8,\n color: 0x05b2b626,\n },\n borderBottom: {\n width: 8,\n color: 0xc5b23626,\n },\n } as const;\n\n const childTestPassedStyles = {\n // grey color\n color: hexColor(\"#cccccc\"),\n focus: {\n // black\n color: hexColor(\"#000000\"),\n },\n };\n\n const childTestPassedStyles2 = {\n // white color\n color: hexColor(\"#ffffff\"),\n focus: {\n // white something...\n color: hexColor(\"#f6f6cc\"),\n },\n };\n\n function hasFocus(elm) {\n // This doesnt work yet - need to make states reactive\n return elm.states.has(\"focus\");\n }\n\n return (\n \n Title of the Page\n \n {emptyTest()}\n Sub {insertTest()} Text\n \n \n \n More Text\n \n \n Child Test\n \n \n \n );\n};\n\nexport default CreatePage;\n","import { Text, View, hexColor } from \"@lightningjs/solid\";\nimport { onMount, onCleanup, createSignal } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nexport default () => {\n let ball, invervalTimer;\n\n const [ballStatus, setBallStatus] = createSignal([]);\n\n const styleBall = {\n width: 100,\n height: 100,\n x: -400,\n y: -400,\n rotation: 0,\n borderRadius: 50,\n color: hexColor(\"#4287f5\"),\n transition: {\n x: { duration: 1250, easing: \"linear\" },\n y: { duration: 1250, easing: \"linear\" },\n rotation: { duration: 1400, easing: \"ease-in-out\" },\n },\n } as const;\n\n const Title = {\n fontSize: 32,\n x: 960,\n y: 540,\n mount: 0.5,\n lineheight: 52,\n };\n\n const randomIntBetween = (from, to) =>\n Math.floor(Math.random() * (to - from + 1) + from);\n\n onMount(() => {\n setGlobalBackground(\"#000000\");\n\n ball.x = (1920 - 100) / 2;\n ball.y = (1080 - 100) / 2;\n invervalTimer = setInterval(() => {\n ball.rotation = randomIntBetween(-90, 90);\n ball.x = randomIntBetween(-300, 2220);\n ball.y = randomIntBetween(-300, 1380);\n }, 2500);\n });\n\n function logEvent(name, elm) {\n setBallStatus((prev) => {\n return [...prev, name].slice(-4);\n });\n console.log(name);\n }\n\n onCleanup(() => {\n clearInterval(invervalTimer);\n });\n\n return (\n \n {ballStatus().join(\"\\n\")}\n logEvent(\"inBounds\", elm)],\n [\"outOfBounds\", (elm) => logEvent(\"outOfBounds\", elm)],\n [\"inViewport\", (elm) => logEvent(\"inViewport\", elm)],\n [\"outOfViewport\", (elm) => logEvent(\"outOfViewport\", elm)],\n ]}\n />\n \n );\n};\n","import {\n View,\n Text,\n ElementNode,\n IntrinsicNodeProps,\n hexColor,\n IntrinsicNodeStyleProps,\n} from \"@lightningjs/solid\";\nimport { withPadding } from \"@lightningjs/solid-primitives\";\nimport { Row } from \"@lightningjs/solid-ui\";\nimport { buttonStyles } from \"../styles\";\nwithPadding;\n\nconst ButtonsPage = () => {\n function onEnter(this: ElementNode, event, elm) {\n this.states.toggle(\"disabled\");\n }\n\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1500,\n height: 300,\n color: hexColor(\"00000000\"),\n gap: 26,\n y: 400,\n } satisfies IntrinsicNodeStyleProps;\n\n function Button(props) {\n return (\n \n {props.children}\n \n );\n }\n\n const Badge = (props: IntrinsicNodeProps) => {\n return (\n \n \n {props.children as string}\n \n \n );\n };\n return (\n <>\n \n HD\n PG13\n NC17\n I like bananas\n DOLBY\n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default ButtonsPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1600,\n height: 110,\n color: hexColor(\"#4dabf5\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n marginTop: 25,\n marginBottom: -20,\n skipFocus: true,\n };\n\n function Block(props) {\n const styles = {\n width: 200,\n height: 100,\n y: 5,\n color: 0x1769aaff,\n };\n\n return ;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Flex Start\n \n \n \n \n \n \n \n Flex Start - Margin Left\n \n \n \n \n \n \n \n Flex End\n \n \n \n \n \n \n \n\n Flex End - Margin Right\n \n \n \n \n \n \n \n\n Center - No Margin Support\n \n \n \n \n \n \n \n\n Space Between - No Margin Support\n \n \n \n \n \n \n \n\n Space Evenly - No Margin Support\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport styles from \"../styles\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexSizePage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1600,\n height: 110,\n color: hexColor(\"#4dabf5\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n marginTop: 25,\n marginBottom: -20,\n skipFocus: true,\n };\n\n function Block(props) {\n const styles = {\n width: 200,\n height: 100,\n y: 5,\n color: 0x1769aaff,\n };\n\n return ;\n }\n\n function randSize() {\n // size 21 to 100\n return Math.floor(Math.random() * 91) + 10;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Flex Start - AlignItems: center\n \n \n \n \n \n \n \n \n Flex Start - Margin Left - AlignItems: flexStart\n \n \n \n \n \n \n \n \n Flex End - AlignItems: flexEnd\n \n \n \n \n \n \n \n\n Flex End - Margin Right\n \n \n \n \n \n \n \n\n Center - No Margin Support\n \n \n \n \n \n \n \n\n Space Between - No Margin Support\n \n \n \n \n \n \n \n\n Space Evenly - No Margin Support\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexSizePage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexColumnPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n width: 1920,\n y: 100,\n height: 880,\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const ColumnStyles = {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"#4dabf5\"),\n height: 850,\n width: 80,\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n y: 20,\n x: 150,\n };\n\n function Block(props) {\n const styles = {\n width: randSize(),\n height: 80,\n x: 5,\n color: hexColor(\"#1769aa\"),\n };\n\n return ;\n }\n\n function randSize() {\n // size 10 to 70\n return Math.floor(Math.random() * 61) + 10;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Start, MarginTop, End, MarginBottom, Center, Between, Evenly\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexColumnPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Column, Row } from \"@lightningjs/solid-ui\";\nimport { createSignal, onMount } from \"solid-js\";\nimport { setGlobalBackground } from \"../state\";\n\nconst FlexColumnPage = () => {\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"spaceEvenly\",\n width: 1920,\n y: 100,\n height: 880,\n color: hexColor(\"00000000\"),\n } satisfies IntrinsicNodeStyleProps;\n\n const ColumnStyles = {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flexStart\",\n color: hexColor(\"#4dabf5\"),\n height: 850,\n width: 60,\n } satisfies IntrinsicNodeStyleProps;\n\n const rowTitle = {\n fontSize: 44,\n y: 20,\n x: 150,\n };\n\n function Block(props) {\n const styles = {\n width: 50,\n height: 80,\n x: 5,\n color: hexColor(\"#1769aa\"),\n };\n\n return ;\n }\n\n const [columnY, setColumnY] = createSignal(50);\n function onFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n setColumnY(150 + (this.y || 0) * -1);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n const gap = 50;\n\n return (\n <>\n \n Start, MarginTop, End, MarginBottom, Center, Between, Evenly\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlexColumnPage;\n","import {\n ElementNode,\n IntrinsicNodeStyleProps,\n Text,\n View,\n hexColor,\n} from \"@lightningjs/solid\";\nimport { Row } from \"@lightningjs/solid-ui\";\n\nimport { MaterialButtonText } from \"../styles\";\n\nconst MaterialButtonsPage = () => {\n function onEnter(this: ElementNode, event, elm) {\n this.states.toggle(\"disabled\");\n }\n\n const RowStyles = {\n display: \"flex\",\n justifyContent: \"flexStart\",\n width: 1500,\n height: 300,\n color: hexColor(\"00000000\"),\n gap: 26,\n y: 400,\n x: 100,\n } satisfies IntrinsicNodeStyleProps;\n\n const MaterialButton = {\n width: 386,\n height: 136,\n color: \"0x715cabff\",\n focus: {\n color: \"0x5a39a2ff\",\n },\n disabled: {\n color: \"0x291d43ff\",\n },\n };\n const RoundedRectangle = [\"RoundedRectangle\", { radius: 65 }];\n function Button(props) {\n return (\n \n {props.children}\n \n );\n }\n\n return (\n \n \n \n \n \n );\n};\n\nexport default MaterialButtonsPage;\n","// Documentation from Shaka player:\n// https://shaka-player-demo.appspot.com/docs/api/tutorial-basic-usage.html\n\nconst manifestUri =\n \"https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd\";\n\nfunction initApp() {\n // Install built-in polyfills to patch browser incompatibilities.\n shaka.polyfill.installAll();\n\n // Check to see if the browser supports the basic APIs Shaka needs.\n if (shaka.Player.isBrowserSupported()) {\n // Everything looks good!\n initPlayer();\n } else {\n // This browser does not have the minimum set of APIs we need.\n console.error(\"Browser not supported!\");\n }\n}\n\nasync function initPlayer() {\n // Create a Player instance.\n const video = document.getElementById(\"video\");\n const player = new shaka.Player();\n await player.attach(video);\n\n // Attach player to the window to make it easy to access in the JS console.\n window.player = player;\n\n // Listen for error events.\n player.addEventListener(\"error\", onErrorEvent);\n\n // Try to load a manifest.\n // This is an asynchronous process.\n try {\n await player.load(manifestUri);\n // This runs if the asynchronous load is successful.\n console.log(\"The video has now been loaded!\");\n } catch (e) {\n // onError is executed if the asynchronous load fails.\n onError(e);\n }\n}\n\nfunction onErrorEvent(event) {\n // Extract the shaka.util.Error object from the event.\n onError(event.detail);\n}\n\nfunction onError(error) {\n // Log the error.\n console.error(\"Error code\", error.code, \"object\", error);\n}\n\nexport function playVideo() {\n const video = document.getElementById(\"video\");\n video.hidden = false;\n // Needs delay from hidden to play in Chrome\n setTimeout(() => video.play(), 50);\n video.focus();\n return video;\n}\n\nexport function closeVideo() {\n const video = document.getElementById(\"video\");\n video.hidden = true;\n video.pause();\n return video;\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", initApp);\n","import {\n ElementNode,\n Text,\n View,\n Show,\n hexColor,\n setActiveElement,\n} from \"@lightningjs/solid\";\nimport { Column, Button, Row } from \"@lightningjs/solid-ui\";\nimport { useParams } from \"@solidjs/router\";\nimport { createEffect, createResource, on, createSignal } from \"solid-js\";\nimport { TileRow } from \"../components\";\nimport { setGlobalBackground } from \"../state\";\nimport ContentBlock from \"../components/ContentBlock\";\nimport { useNavigate } from \"@solidjs/router\";\nimport styles from \"../styles\";\nimport * as provider from \"../api/providers/entity\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\nimport type { Tile } from \"../api/formatters/ItemFormatter\";\nimport { playVideo, closeVideo } from \"../video\";\n\nconst Entity = () => {\n const params = useParams();\n const navigate = useNavigate();\n\n const [data] = createResource(() => ({ ...params }), provider.getInfo);\n const [credits] = createResource(\n () => ({ ...params }),\n provider.getCredits\n );\n const [recommendations] = createResource(\n () => ({ ...params }),\n provider.getRecommendations\n );\n const [backdropAlpha, setBackdropAlpha] = createSignal(0);\n\n createEffect(\n on(\n data,\n (data) => {\n setGlobalBackground(data.backgroundImage);\n },\n { defer: true }\n )\n );\n\n const columnY = 640;\n\n const Backdrop = {\n color: hexColor(\"#000000\"),\n alpha: 0,\n width: 1900,\n height: 890,\n x: -160,\n y: columnY,\n borderRadius: 30,\n };\n\n function onRowFocus(this: ElementNode) {\n this.children.selected?.setFocus();\n columnRef.y = columnY;\n backdropRef.y = columnY;\n backdropRef.alpha = 0;\n }\n\n function onRowFocusAnimate(this: ElementNode) {\n this.children.selected?.setFocus();\n columnRef.y = 200;\n backdropRef.y = 160;\n backdropRef.alpha = 0.9;\n }\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n }\n\n function onEscape() {\n closeVideo();\n // Set focus back to lightning app\n document.getElementsByTagName(\"canvas\")[0].focus();\n entityActions.setFocus();\n setBackdropAlpha(0);\n }\n\n function onEnterTrailer() {\n const video = playVideo();\n setActiveElement(video);\n setBackdropAlpha(0.9);\n }\n\n let columnRef, backdropRef, entityActions;\n\n return (\n \n entityActions.setFocus()} onEscape={onEscape}>\n \n columnRef.setFocus()}\n onEnter={onEnterTrailer}\n >\n \n \n \n\n \n \n \n Recommendations\n \n \n \n Cast and Crew\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Entity;\n","import api, { getImageUrl } from \"..\";\nimport { convertItemsToTiles } from \"../formatters/ItemFormatter\";\n\nexport function minutesToHMM(minutes) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return (\n hours + \"h \" + (remainingMinutes < 10 ? \"0\" : \"\") + remainingMinutes + \"m\"\n );\n}\n\nfunction justYear(dateString) {\n const parts = dateString.split(\"-\");\n return parts[0];\n}\n\nexport function getCredits({ id }) {\n return api\n .get(`/person/${id}/combined_credits`)\n .then(({ cast }) => convertItemsToTiles(cast.slice(0, 7)));\n}\n\nexport function getInfo({ id }) {\n return api.get(`/person/${id}`).then((data) => ({\n backgroundImage: getImageUrl(data.profile_path, \"original\"),\n heroContent: {\n title: data.title || data.name,\n description: data.biography,\n },\n ...data,\n }));\n}\n","import { ElementNode, Text, View, Show, hexColor } from \"@lightningjs/solid\";\nimport { Column } from \"@lightningjs/solid-ui\";\nimport { useParams } from \"@solidjs/router\";\nimport { createResource, onMount } from \"solid-js\";\nimport { TileRow } from \"../components\";\nimport { setGlobalBackground } from \"../state\";\nimport { useNavigate } from \"@solidjs/router\";\nimport theme from \"theme\";\nimport styles from \"../styles\";\nimport * as provider from \"../api/providers/people\";\nimport { assertTruthy } from \"@lightningjs/renderer/utils\";\n\nconst People = () => {\n const params = useParams();\n const navigate = useNavigate();\n\n const [data] = createResource(() => ({ ...params }), provider.getInfo);\n const [credits] = createResource(() => ({ ...params }), provider.getCredits);\n\n const Backdrop = {\n color: hexColor(\"#000000\"),\n alpha: 0.8,\n width: 800,\n height: 440,\n x: 130,\n y: 180,\n borderRadius: 30,\n };\n\n function onEnter(this: ElementNode) {\n let entity = this.children.selected;\n assertTruthy(entity && entity.href);\n navigate(entity.href);\n }\n\n onMount(() => {\n setGlobalBackground(\"#333333\");\n });\n\n return (\n \n \n \n \n {data().name}\n \n \n {data().biography}\n \n \n \n \n \n \n Credits\n \n \n \n \n \n );\n};\n\nexport default People;\n","const NotFound = () => {\n return ;\n};\n\nexport default NotFound;\n","export default import.meta.ROLLUP_FILE_URL_DM04K3OB;","import {\n render,\n Config,\n SolidNode,\n SolidRendererOptions,\n hexColor,\n ElementNode,\n} from \"@lightningjs/solid\";\nimport { HashRouter, Route } from \"@solidjs/router\";\nimport App from \"./pages/App\";\nimport Browse from \"./pages/Browse\";\nimport Portal from \"./pages/Portal\";\nimport TextPage from \"./pages/Text\";\nimport CreatePage from \"./pages/Create\";\nimport ViewportPage from \"./pages/Viewport\";\nimport ButtonsPage from \"./pages/Buttons\";\nimport FlexPage from \"./pages/Flex\";\nimport FlexSizePage from \"./pages/FlexSize\";\nimport FlexColumnSizePage from \"./pages/FlexColumnSize\";\nimport FlexColumnPage from \"./pages/FlexColumn\";\nimport ButtonsMaterialPage from \"./pages/ButtonsMaterial\";\nimport Entity from \"./pages/Entity\";\nimport People from \"./pages/People\";\nimport NotFound from \"./pages/NotFound\";\nimport coreExtensionModuleUrl from \"./AppCoreExtensions.js?importChunkUrl\";\n\nconst logFps = true;\nConfig.debug = false;\nConfig.animationsEnabled = true;\nConfig.fontSettings.fontFamily = \"Ubuntu\";\nConfig.fontSettings.color = hexColor(\"#f6f6f6\");\nConfig.fontSettings.fontSize = 32;\nConfig.rendererOptions = {\n coreExtensionModule: coreExtensionModuleUrl,\n fpsUpdateInterval: logFps ? 200 : 0,\n enableInspector: true,\n // deviceLogicalPixelRatio: 1\n};\n\nrender(() => (\n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n));\n"],"names":["getUnicodeCodepoints","TextureUsageTracker","constructor","releaseCallback","_defineProperty","ManualCountTextureUsageTracker","options","_options$textureClean","_options$textureClean2","Map","Set","textureCleanupIntervalMs","textureCleanupAgeThreadholdMs","setInterval","now","Date","thresholdMs","_iterator4","_createForOfIteratorHelper","zeroReferenceTextureSet","_step4","s","n","done","textureRefInfo","value","lastUpdate","id","textureMap","delete","err","e","f","registerTexture","texture","_texture$options","textureId","assertTruthy","has","nodeRefCount","set","add","incrementTextureRefCount","_texture$options2","get","txType","props","decrementTextureRefCount","_texture$options3","FinalizationRegistryTextureUsageTracker","registry","FinalizationRegistry","_texture$options4","_texture$options5","register","stylePropertyMap","alpha","v","prop","x","y","width","w","height","h","zIndex","fontFamily","fontSize","fontStyle","fontWeight","fontStretch","lineHeight","letterSpacing","textAlign","overflowSuffix","maxLines","contain","verticalAlign","clipping","rotation","scale","scaleX","scaleY","color","convertColorToRgba","a","b","g","r","domPropertyMap","Inspector","canvas","settings","_settings$appHeight","_settings$deviceLogic","_settings$appWidth","_settings$deviceLogic2","_settings$deviceLogic3","_settings$deviceLogic4","isProductionEnvironment","Error","Math","ceil","appHeight","deviceLogicalPixelRatio","appWidth","root","document","createElement","setRootPosition","body","appendChild","mutationObserver","MutationObserver","bind","observe","attributes","childList","subtree","resizeObserver","ResizeObserver","window","addEventListener","console","warn","rect","getBoundingClientRect","top","documentElement","scrollTop","left","scrollLeft","style","position","transformOrigin","transform","overflow","createDiv","node","properties","div","toString","key","updateNodeProperty","createNode","driver","createProxy","createTextNode","Proxy","target","property","Reflect","receiver","destroyNode","anim","animate","animateNode","getElementById","remove","undefined","parentId","parent","innerHTML","String","visibility","setAttribute","_stylePropertyMap$pro","mappedStyleResponse","call","setProperty","_settings$duration","duration","_settings$delay","delay","_props$alpha","_props$rotation","_props$scale","setTimeout","opacity","rotate","ShaderEffect","getEffectKey","getMethodParameters","uniforms","res","u","uni","define","size","push","type","join","ref","_options$props","uniformInfo","passParameters","declaredUniforms","unif","uniType","uniformName","name","uniform","method","resolveDefaults","makeEffectKey","trPropSetterDefaults","state","text","offsetY","scrollable","scrollY","textBaseline","debug","TextRenderer","stage","propSetters","_objectSpread","getPropertySetters","Object","freeze","fromEntries","entries","map","setter","requestRender","setStatus","status","error","emitter","emit","setIsRenderable","renderable","isRenderable","destroyState","stateEvents","forEach","eventName","off","scheduleUpdateState","updateScheduled","queueMicrotask","updateState","WebTrFontFace","TrFontFace","descriptors","fontUrl","fontUrlWithoutParentheses","replace","determinedDescriptors","cssDescriptors","weight","stretch","unicodeRange","variant","featureSettings","display","fontFace","FontFace","load","then","loaded","catch","MAX_TEXTURE_DIMENSION","calcHeight","numLines","baselineOffset","max","LightningTextTextureRenderer","context","_canvas","_context","_settings","mergeDefaults","getPrecision","precision","setFontProperties","font","_getFontSetting","ff","ffs","i","length","_load","fonts","fontSetting","check","calculateRenderInfo","renderInfo","paddingLeft","paddingRight","wordWrapWidth","cutSx","cutEx","cutSy","cutEy","textIndent","innerWidth","textOverflow","wordWrap","suffix","wrapWord","linesInfo","wrapText","l","split","lines","usedLines","slice","otherLines","measureText","al","j","m","remainingText","moreTextLines","maxLineWidth","lineWidths","lineWidth","min","draw","linesOverride","textRenderIssueMargin","globalAlpha","fillRect","translate","linePositionX","linePositionY","drawLines","highlight","highlightColor","hlHeight","highlightHeight","offset","highlightOffset","hlPaddingLeft","highlightPaddingLeft","hlPaddingRight","highlightPaddingRight","fillStyle","getRgbaString","drawLine","prevShadowSettings","shadow","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","textColor","fillText","textSplit","word","suffixWidth","wordLen","wordWidth","cutoffIndex","floor","truncWordWidth","substring","indent","allLines","realNewlines","resultLines","result","spaceLeft","words","wordWidthWithSpace","concat","space","reduce","acc","char","wordBreak","advancedRenderer","fontBaselineRatio","resolvedGlobal","self","globalThis","globalFontSet","_resolvedGlobal$docum","getFontCssString","tmpElementBounds","createBound","CanvasTextRenderer","OffscreenCanvas","getContext","rendererBounds","x1","y1","x2","y2","fontInfo","invalidateLayoutCache","invalidateVisibleWindowCache","canRenderFont","isFontFaceSupported","addFontFace","createState","EventEmitter","canvasPages","lightning2TextRenderer","renderWindow","visibleWindow","valid","forceFullLayoutCalc","textW","textH","fontFaceLoadedHandler","debugData","updateCount","layoutCount","drawCount","lastLayoutNumCharacters","layoutSum","drawSum","bufferSize","cssString","onFontLoaded","onFontLoadError","containedMaxLines","calcMaxLines","getNormalizedRgbaComponents","_state$props","elementBounds","Infinity","intersectBound","visibleWindowHeight","maxLinesPerCanvasPage","renderWindowScreenX1","renderWindowScreenY1","renderWindowScreenX2","renderWindowScreenY2","shift","lineNumStart","lineNumEnd","unshift","pop","_canvasPages","_canvasPages2","_canvasPages3","pageHeight","page1Block","page1LineStart","page0LineStart","page2LineStart","scrollYNearestPage","performance","_iterator5","_step5","pageInfo","_pageInfo$texture","setRenderableOwner","txManager","loadTexture","src","_pageInfo$texture2","getImageData","preload","renderQuads","clippingRect","_state$textW","_state$textH","_state$props2","elementRect","intersectRect","renderWindowHeight","pageSize","_state$props3","combinedAlpha","getNormalizedAlphaComponent","quadColor","mergeColorAlphaPremultiplied","_canvasPages$0$textur","_canvasPages$0$textur2","renderer","addQuad","colorBl","colorBr","colorTl","colorTr","dimensions","textureOptions","shader","shaderProps","tx","ty","ta","tb","tc","td","_canvasPages$1$textur","_canvasPages$1$textur2","_canvasPages$2$textur","_canvasPages$2$textur2","_state$canvasPages","_pageInfo$texture3","_state$canvasPages2","_pageInfo$texture4","_state$fontInfo","_state$fontInfo2","DefaultShader","WebGlCoreShader","bindTextures","textures","glw","activeTexture","bindTexture","ctxTexture","vertex","fragment","DefaultShaderBatched","system","parameters","MAX_VERTEX_TEXTURE_IMAGE_UNITS","t","samplers","Array","from","keys","setUniform","textureUnits","idx","effectCache","getResolvedEffect","effects","effectContructors","JSON","stringify","effect","DynamicShader","createShader","shaderSources","calculateProps","memize","regEffects","shManager","getRegisteredEffects","results","eff","index","_eff$props","fxClass","uniInfo","p","fxProp","propInfo","validator","isArray","Float32Array","bindProps","canBatchShaderProps","propsA","propsB","$dimensions","propsEffectsLen","effectA","effectB","effectNameCount","methods","declareUniforms","uFx","baseClass","nr","values","effectMethods","fx","_fx$props","fxProps","remap","cm","fxMethod","resolveMethodDuplicate","onShaderMask","Function","onColorize","onEffectMask","reg","RegExp","methodParameters","pm","sharedMethods","currentMask","drawEffects","current","currentClass","next","effectMethod","methodCollection","increment","$alpha","makeCacheKey","_props$effects","RoundedRectangle","radius","IDENTITY_MATRIX_3x3","SdfShader","resolvedProps","components","_props$transform","_props$scrollY","_props$color","_props$size","_props$distanceRange","_props$debug","distanceRange","RadiusEffect","args","_props$radius","fillMask","boxDist","BorderEffect","_props$width","_props$color2","rgba","LinearGradientEffect","colors","_props$colors","_props$angle","stops","colorsL","tmp","angle","_LinearGradientEffect","rgbas","cols","val","fromLinear","toLinear","calcPoint","amount","loop","ColorLoop","GrayscaleEffect","_props$amount","BorderRightEffect","_props$width2","_props$color3","rectDist","BorderTopEffect","_props$width3","_props$color4","BorderBottomEffect","_props$width4","_props$color5","BorderLeftEffect","_props$width5","_props$color6","GlitchEffect","_props$amplitude","_props$narrowness","_props$blockiness","_props$minimizer","_props$time","amplitude","narrowness","blockiness","minimizer","time","rand","noise","fbm","FadeOutEffect","_props$fade","fade","RadialGradientEffect","_props$colors2","_props$width6","_ref","_props$height","_props$pivot","pivot","_RadialGradientEffect","RadialProgressEffect","_props$width7","_props$progress","_props$offset","_props$range","_props$rounded","_props$radius2","_props$color7","progress","range","PI","rounded","rotateUV","drawDot","HolePunchEffect","_props$radius3","CoreShaderManager","registerShaderType","registerEffectType","shType","shClass","shConstructors","effectType","effectClass","effectConstructors","getRegisteredShaders","loadShader","ShaderClass","loadDynamicShader","cacheKey","shCache","useShader","attachedShader","detach","attach","ContextSpy","reset","data","getData","isCompressedTextureContainer","url","test","loadCompressedTexture","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","response","arrayBuffer","wrap","_callee$","prev","fetch","sent","indexOf","abrupt","loadKTXData","loadPVRData","stop","_x2","apply","arguments","_ref3","_callee2","buffer","view","littleEndian","mipmaps","imageSize","_callee2$","_context2","DataView","getUint32","glInternalFormat","pixelWidth","pixelHeight","numberOfMipmapLevels","bytesOfKeyValueData","premultiplyAlpha","_x3","_ref4","_callee3","pvrHeaderLength","pvrFormatEtc1","pvrWidth","pvrHeight","pvrMipmapCount","pvrMetadata","header","dataOffset","pvrtcData","level","_callee3$","_context3","Int32Array","Uint8Array","byteOffset","_x4","ImageTexture","Texture","hasAlphaChannel","mimeType","getTextureData","_this","_callee4","_this$props","blob","img","_callee4$","_context4","ImageData","imageWorkerManager","getImage","hasCreateImageBitmap","createImageBitmap","colorSpaceConversion","imageOrientation","t0","t1","Image","substr","crossOrigin","Promise","resolve","reject","onload","onerror","_props$src","_props$premultiplyAlp","FLOATS_PER_GLYPH","getStartConditions","sdfFontSize","sdfLineHeight","fontSizeRatio","lineCache","startLineIndex","firstLineIdx","sdfStartX","sdfVerticalAlignYOffset","sdfOffsetY","sdfStartY","sdfX","sdfY","lineIndex","PeekableIterator","iterator","indexBase","_lastIndex","peekBuffer","nextResult","peek","lastIndex","start","codePoint","getUnicodeCodepoints$","_context5","codePointAt","_marked","shaperProps","shaper","glyphs","shapeText","_iterator6","_step6","glyph","mapped","xAdvance","layoutText","curLineIndex","startX","startY","vertexBuffer","rwSdf","trFontFace","info","vertexLineHeight","vertexW","vertexLSpacing","startingLineCacheEntry","startingCodepointIndex","codepointIndex","startingMaxX","maxX","startingMaxY","maxY","curX","curY","bufferOffset","lastWord","xStart","glyphResult","curLineBufferStart","bufferLineInfos","vertexTruncateHeight","overflowSuffVertexWidth","moreLines","nextLineWillFit","maxCharHeight","lineVertexW","xStartLastWordBoundary","lineIsBelowWindowTop","lineIsAboveWindowBottom","lineIsWithinWindow","cluster","codepoint","charEndX","xOffset","quadX","quadY","yOffset","atlasEntry","getAtlasEntry","glyphId","common","scaleW","scaleH","uvWidth","uvHeight","bufferStart","bufferEnd","vertexTextW","line","bufferNumFloats","bufferNumQuads","layoutNumCharacters","fullyProcessed","roundUpToMultiple","multiple","roundDownToMultiple","setRenderWindow","outRenderWindow","bufferMargin","screen","sdf","isBoundPositive","y1Base","weightConversions","normal","bold","bolder","lighter","fontWeightToNumber","rawResolveFontToUse","familyMapsByPriority","family","weightIn","_iterator7","_step7","fontFamiles","fontFaces","weightMap","_iterator8","_step8","fontFamilyWeight","msg","resolveFontToUse","TrFontManager","textRenderers","trId","tr","resolveFontFace","tmpRect","SdfTextRenderer","ssdfFontFamilies","msdfFontFamilies","sdfShader","releaseFontFace","setElementBoundsX","boundsOverlap","setElementBoundsY","SdfTrFontFace","familyName","faceSet","webGlBuffers","bufferUploaded","once","_state$props4","distanceField","neededLength","rwScreen","_state$props5","isPossiblyOnScreen","out2","byteLength","parentHasRenderTexture","framebufferDimensions","_trFontFace$data","_state$trFontFace","_state$props6","_state$textW2","_state$textH2","stride","BYTES_PER_ELEMENT","webGlBuffer","createBuffer","BufferCollection","a_position","FLOAT","normalized","a_textureCoordinate","_webGlBuffers$getBuff","_webGlBuffers","getBuffer","arrayBufferData","STATIC_DRAW","convertBoundToRect","copyRect","renderOp","WebGlCoreRenderOp","mergeColorAlpha","sdfShaderDebug","getCtxTexture","addTexture","numQuads","addRenderOp","_state$trFontFace2","_state$trFontFace3","fontFamilyArray","_state$props7","_state$props8","classExtendsCoreExtension","Class","prototype","CoreExtension","loadCoreExtension","_x5","_x6","_loadCoreExtension","_callee12","coreExtensionModule","module$1","ExtensionClass","coreExtension","_callee12$","_context13","log","__vitePreload","module","__VITE_IS_MODERN__","default","run","santizeCustomDataMap","d","validTypes","boolean","string","number","valueType","RendererMain","_settings$clearColor","_settings$experimenta","_settings$enableConte","_settings$enableInspe","resolvedSettings","txMemByteThreshold","boundsMargin","devicePhysicalPixelRatio","devicePixelRatio","clearColor","experimental_FinalizationRegistryTextureUsageTracker","textureCleanupOptions","fpsUpdateInterval","numImageWorkers","enableContextSpy","enableInspector","releaseTexture","useFinalizationRegistryTracker","textureTracker","deviceLogicalWidth","deviceLogicalHeight","targetEl","onCreateNode","nodes","onBeforeDestroyNode","onFpsUpdate","fpsData","onFrameTick","frameTickData","onIdle","inspector","init","_this2","_callee5","_callee5$","_context6","getRootNode","resolveNodeDefaults","_props$fontSize","_props$text","_props$textRendererOv","_props$fontFamily","_props$fontStyle","_props$fontWeight","_props$fontStretch","_props$textAlign","_props$contain","_props$scrollable","_props$scrollY2","_props$offsetY","_props$letterSpacing","_props$lineHeight","_props$maxLines","_props$textBaseline","_props$verticalAlign","_props$overflowSuffix","_props$debug2","textRendererOverride","_props$color8","_ref5","_ref6","_props$colorTl","_ref7","_ref8","_props$colorTr","_ref9","_ref10","_props$colorBl","_ref11","_ref12","_props$colorBr","_props$data","_ref13","_props$parent$rtt","_props$parent","_props$parent2","_props$x","_props$y","_props$width8","_props$height2","_props$alpha2","_props$autosize","_props$clipping","_props$colorTop","_props$colorBottom","_props$colorLeft","_props$colorRight","_props$zIndex","_props$zIndexLocked","_props$parent3","_props$texture","_props$shader","_props$src2","_props$scale2","_ref14","_props$scaleX","_ref15","_props$scaleY","_props$mount","_ref16","_props$mountX","_ref17","_props$mountY","_props$pivot2","_ref18","_props$pivotX","_ref19","_props$pivotY","_props$rotation2","_props$rtt","colorTop","colorLeft","colorRight","colorBottom","rtt","autosize","zIndexLocked","mount","mountX","mountY","pivotX","pivotY","createTexture","textureType","nextTextureId","desc","descType","shaderType","getNodeById","toggleFreeze","advanceFrame","rerender","CoreAnimation","propStartValues","propsList","propName","timingFunction","easing","getTimingFunction","delayFor","update","restore","reverse","startValue","endValue","stopMethod","applyEasing","dt","_this$settings","propValue","easingProgressValue","easingColorValue","mergeColorProgress","CoreAnimationController","manager","animation","makeStartedPromise","started","makeStoppedPromise","finished","activeAnimations","registerAnimation","unregisterAnimation","stoppedResolve","pause","waitUntilStarted","promise","startedPromise","waitUntilStopped","stoppedPromise","startedResolve","_this$animation$setti","m0","m1","m2","m3","m4","m5","m6","m7","m8","Matrix3d","temp","tempMatrix","multiply","out","e0","e1","e2","e3","e4","e5","e6","e7","e8","identity","sx","sy","cos","sin","copy","dst","transpose","other","transformPoint","rx1","rx2","rx3","rx4","ry1","ry2","ry3","ry4","RenderCoords","x3","y3","x4","y4","CoreNodeRenderState","CoreNodeRenderStateMap","Init","OutOfBounds","InBounds","InViewport","UpdateType","CoreNode","All","autosizeNode","setRTTUpdates","updateScaleRotateTransform","unloadTexture","setUpdateType","IsRenderable","onTextureLoaded","onTextureFailed","onTextureFreed","on","getShaderManager","_shManager$loadShader","updateType","Children","sortChildren","children","sort","calcZIndex","scaleRotateTransform","updateLocalTransform","pivotTranslateX","pivotTranslateY","mountTranslateX","mountTranslateY","localTransform","Global","delta","parentClippingRect","ScaleRotate","Local","childUpdateType","None","_this$props$parent","globalTransform","calculateRenderCoords","updateBoundingRect","Clipping","RenderState","calculateClippingRect","WorldAlpha","worldAlpha","PremultipliedColors","premultipliedColorTl","premultipliedColorTr","premultipliedColorBl","premultipliedColorBr","updateRenderState","updateIsRenderable","CalculatedZIndex","calculateZIndex","ZIndexSortedChildren","child","checkRenderProps","checkRenderBounds","renderBound","rectW","rectH","strictBound","renderM","preloadBound","boundInsideBound","renderState","previous","event","setRenderState","newIsRenderable","onChangeIsRenderable","_this$props$texture","minX","minY","renderCoords","gt","isRotated","_props$parent4","_props$parent5","z","destroy","removeAllListeners","_this$props2","renderToTextureActive","parentRenderTexture","activeRttNode","absX","_this$props$parent2","_this$props$parent3","absY","_this$props$parent$ab","_this$props$parent4","newParent","oldParent","splice","_this$stage$renderer","hasRTTupdates","renderToTexture","_this$parent","_this$parent2","nextId","getNewId","MainOnlyNode","rendererMain","coreNode","_coreNode$id","payload","onOutOfBounds","onInBounds","onOutOfViewport","onInViewport","_data","_parent","_newParent$coreNode","_children","_src","imageUrl","_texture","flipY","_shader","flush","controller","animationManager","startLoop","isIdle","runLoop","updateAnimations","hasSceneUpdates","calculateFps","drawFrame","requestAnimationFrame","getTimeStamp","AnimationManager","ImageWorkerManager","workers","createWorkers","worker","onmessage","handleMessage","_event$data","messageManager","_msg","_slicedToArray","numWorkers","workerCode","Blob","blobURL","URL","webkitURL","createObjectURL","Worker","getNextWorker","workerIndex","convertUrlToAbsolute","absoluteUrl","location","href","absoluteSrcUrl","postMessage","NoiseTexture","_this3","_callee6","_this3$props","pixelData8","_callee6$","_context7","Uint8ClampedArray","random","cacheId","_props$width9","_props$height3","_props$cacheId","CoreTextureManager","WeakMap","hasWorker","registerTextureType","ColorTexture","SubTexture","RenderTexture","textureClass","txConstructors","TextureClass","textureIdCache","_options$cacheKey","descId","textureKeyCache","addTextureIdToCache","ctxTx","textureDescId","textureRefCountMap","count","removeTextureIdFromCache","_this$ctxTextureCache","refCountObj","ctxTextureCache","free","getDebugInfo","keyCacheSize","idCacheSize","textureSource","createCtxTexture","TextureMemoryManager","byteThreshold","threshold","setTextureMemUse","byteSize","memUsed","gc","bufferMemory","Stage","rootId","txMemManager","contextSpy","bm","monitorTextureCache","debugInfo","WebGlCoreRenderer","pixelRatio","fontManager","rootNode","lastFrameTime","currentFrameTime","deltaTime","renderRequested","rttNodes","renderRTTNodes","addQuads","render","fpsNumFrames","fpsElapsedTime","_this$contextSpy$getD","_this$contextSpy","_this$contextSpy2","fps","round","contextSpyData","resolveTextRenderer","trProps","rendererId","overrideFallback","possibleRenderer","_i8","_Object$entries","_Object$entries$_i","resolvedTextRenderer","CoreTextNode","setWidth","trState","setHeight","calcWidth","_textRendererOverride","_this$resolveTextRend","resolveTextRendererAndState","textRendererState","textRenderer","_this$resolveTextRend2","_this$props$parent5","_this$localTransform","onTextLoaded","onTextFailed","MainOnlyTextNode","MainCoreDriver","rendererSettings","_this4","_callee7","_callee7$","_context8","equalFn","$PROXY","Symbol","$TRACK","signalOptions","equals","runEffects","runQueue","STALE","PENDING","UNOWNED","owned","cleanups","owner","NO_INIT","Owner","Transition","ExternalSourceConfig","Listener","Updates","Effects","ExecCount","createRoot","fn","detachedOwner","listener","unowned","updateFn","untrack","cleanNode","runUpdates","createSignal","assign","observers","observerSlots","comparator","writeSignal","readSignal","createComputed","c","createComputation","updateComputation","createRenderEffect","createEffect","runUserEffects","user","createMemo","isPromise","createResource","pSource","pFetcher","pOptions","source","fetcher","pr","initP","scheduled","resolved","dynamic","contexts","_ref20","storage","initialValue","_ref21","setValue","_createSignal","_createSignal2","setError","_createSignal3","_createSignal4","track","trigger","_createSignal5","_createSignal6","setState","loadEnd","onHydrated","completeLoad","_iterator9","_step9","decrement","clear","read","SuspenseContext","refetching","lookup","castError","defineProperties","loading","latest","refetch","mutate","createSelector","subs","_iterator10","_step10","_step10$value","_iterator11","_step11","pure","onCleanup","batch","deps","prevInput","defer","prevValue","input","onMount","getOwner","runWithOwner","o","prevListener","handleError","startTransition","createContext","defaultValue","Provider","createProvider","useContext","memo","resolveChildren","toArray","sources","updates","lookUpstream","sSlot","sourceSlots","isComp","TransitionRunning","running","disposed","tState","markDownstream","runComputation","nextValue","updatedAt","runTop","suspense","inFallback","ancestors","wait","completeUpdates","queue","userLength","ignore","obs","cause","provider","FALLBACK","dispose","mapArray","list","mapFn","items","disposers","len","indexes","newItems","newLen","newIndices","newIndicesNext","tempdisposers","tempIndexes","end","newEnd","item","fallback","disposer","mapper","_createSignal7","_createSignal8","createComponent","createComponent$1","Comp","trueFn","propTraps","_","deleteProperty","getOwnPropertyDescriptor","configurable","enumerable","ownKeys","resolveSource","resolveSources","mergeProps","mergeProps$1","proxy","sourcesMap","defined","create","sourceKeys","getOwnPropertyNames","_loop","definedKeys","defineProperty","splitProps","blocked","flat","k","includes","filter","otherObject","objects","_iterator12","_step12","isDefaultDesc","writable","objectIndex","_iterator13","_step13","narrowedError","For","each","Show","keyed","condition","when","resetErrorBoundaries","DEV","startLightningRenderer","selected","firstChild","insert","beforeNode","_isDirty","nodeIndexToRemove","isDevEnv","isDev","config","animationsEnabled","animationSettings","fontSettings","hasDebug","isObject","isFunc","isString","isNumber","isInteger","Number","keyExists","obj","_iterator14","_step14","flattenStyles","States","callback","initialState","_key","onChange","is","toggle","stateIndexToRemove","calculateFlex","hasOrder","flexItem","flexOrder","numChildren","direction","flexDirection","isRow","dimension","crossDimension","marginOne","marginTwo","crossProp","containerSize","containerCrossSize","gap","justify","justifyContent","align","alignItems","itemSize","crossAlignChild","flexBoundary","calculatedSize","toPad","_createSignal9","_createSignal10","activeElement","setActiveElement","defaultAnimationSettings","convertEffectsToShader","styleEffects","_i16","_Object$entries2","_Object$entries2$_i","borderAccessor","LightningRendererNumberProps","LightningRendererNonAnimatingProps","ElementNode","_renderProps","_effects","lng","_p$lng","_sendToLightning","_sendToLightningAnimatable","transition","chain","_animationRunning","_animationQueue","_animationQueueSettings","_this5","_callee8","_callee8$","_context9","setFocus","forwardFocus","focusedIndex","autofocus","isTextNode","_resizeOnTextLoad","_node","loadedPayload","updateLayout","getText","_queueDelete","_this$lng","onEvents","events","_events","_style","hasChildren","getChildById","find","searchChildrenById","found","states","_states","_stateChanged","_animationSettings","changedLayout","onBeforeLayout","_this$parent3","_this$parent4","onLayout","forwardStates","_undoStyles","stylesToUndo","styleKey","newStyles","styles","marginRight","_autosized","marginBottom","isNaN","onFail","onLoad","onCreate","handler","_node$lng","inode","solid","_loop2","_i17","_LightningRendererNum","_loop3","_i18","_LightningRendererNon","borderRadius","_borderRadius","border","borderLeft","borderRight","borderTop","borderBottom","linearGradient","_linearGradient","Text","_el$","_$createElement","View","createRenderer$1","replaceText","insertNode","removeNode","getParentNode","getFirstChild","getNextSibling","accessor","marker","initial","insertExpression","unwrapArray","multi","cleanChildren","array","normalizeIncomingArray","replacement","appendNodes","reconcileArrays","replaceNode","unwrap","parentNode","bLength","aEnd","bEnd","aStart","bStart","after","sequence","removed","inserted","el","isParent","newNode","oldNode","spreadExpression","prevProps","skipChildren","code","element","spread","setProp","use","arg","createRenderer","universalLightning","anchor","solidRenderer","_ref22","_callee9","_callee9$","_context10","rendererOptions","_x7","_x8","hexColor","startsWith","$$EVENTS","delegateEvents","eventNames","eventHandler","composedPath","disabled","cancelBubble","_$host","host","voidFn","isServer","createBeforeLeave","listeners","subscribe","confirm","to","defaultPrevented","preventDefault","_iterator15","_step15","_loop4","retry","force","navigate","depth","saveCurrentDepth","history","_depth","replaceState","keepDepth","notifyIfNotBlocked","notify","block","prevDepth","go","hasSchemeRegex","trimPathRegex","mockBase","normalizePath","path","omitSlash","resolvePath","base","basePath","fromPath","toLowerCase","invariant","message","joinPaths","extractSearchParams","params","searchParams","createMatcher","partial","matchFilters","_path$split","_path$split2","pattern","splat","segments","Boolean","locSegments","lenDiff","match","matchFilter","segment","locSegment","matchSegment","remainder","isEqual","localeCompare","sensitivity","some","scoreRoute","route","_route$pattern$split","_route$pattern$split2","score","createMemoObject","expandOptionals","exec","prefix","prefixes","expansion","MAX_REDIRECTS","RouterContextObj","RouteContextObj","useRouter","useNavigate","navigatorFactory","useLocation","useMatch","matchers","_iterator16","_step16","matcher","pathname","useParams","createRoutes","routeDef","component","isLeaf","shared","asArray","_iterator17","_step17","originalPath","encodeURIComponent","createBranch","routes","matches","createBranches","stack","branches","routeDefs","def","hasOwnProperty","_iterator18","_step18","isEmptyArray","branch","getRouteMatches","createLocation","origin","path_","search","hash","query","intent","createRouterContext","integration","_integration$signal","signal","setSource","_integration$utils","utils","parsePath","renderPath","beforeLeave","scroll","_createSignal11","_createSignal12","isRouting","setIsRouting","_ref23","_callee10","_callee10$","_context11","finish","_x9","_createSignal13","_createSignal14","reference","setReference","_createSignal15","_createSignal16","referrers","submissions","baseRoute","outlet","_source","preloadRoute","singleFlight","navigateFromRoute","_replace$resolve$scro","nextState","resolvedTo","navigateEnd","first","preloadData","prevIntent","_loop5","_matches$match","createRouteContext","router","_match$route","createRouterComponent","routerState","_$createComponent","Root","rootLoad","_$memo","Routes","routeStates","nextMatches","prevMatches","equal","_loop6","prevMatch","nextMatch","createOutlet","Route","childRoutes","intercept","querySelector","selector","createRouter","bindEvent","removeEventListener","scrollToHash","fallbackTop","scrollIntoView","scrollTo","actions","setupNativeEvents","explicitLinks","actionBase","preloadTimeout","isSvg","namespaceURI","handleAnchor","evt","button","metaKey","altKey","ctrlKey","shiftKey","Node","nodeName","toUpperCase","hasAttribute","svg","baseVal","rel","getAttribute","baseURI","handleAnchorClick","_res","parse","handleAnchorPreload","_res2","handleAnchorIn","_res3","handleAnchorOut","_res4","clearTimeout","handleFormSubmit","actionRef","submitter","FormData","append","hashParser","str","_window$location$hash","_window$location$hash2","_window$location$hash3","HashRouter","getSource","hashIndex","tryOnCleanup","makeEventListener","createSingletonRoot","factory","disposeRoot","useKeyDownEvent","_createSignal17","_createSignal18","setEvent","keyMapEntries","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Enter","Backspace","Escape","_createSignal19","_createSignal20","focusPath","setFocusPath","useFocusManager","userKeyMap","keypressEvent","_loop7","_Object$entries3$_i","_Object$entries3","_i20","currentFocusedElm","prevFocusedElm","prevFocusPath","fp","onFocus","elm","onBlur","mappedKeyEvent","keyCode","finalFocusElm","_iterator19","_step19","onKeyHandler","onKeyPress","withPadding","padding","pad","right","bottom","_pad","marginLeft","maxHeight","marginTop","flattenStrings","series","flattenedSeries","speak","phrase","utterances","lang","synth","speechSynthesis","utterance","SpeechSynthesisUtterance","onend","speakSeries","remainingPhrases","nestedSeriesResults","active","seriesChain","_callee11","totalRetries","retriesLeft","seriesResult","_seriesResult","_callee11$","_context12","SpeechSynthesisErrorEvent","toSpeak","cancel","currentSeries","SpeechEngine","debounce","timeoutId","debounced","resetFocusPathTimer","currentlySpeaking","voiceOutDisabled","fiveMinutes","debounceWithFlush","scopedValue","newValue","getElmName","onFocusChangeCore","Announcer","onFocusChange","enabled","every","focusDiff","toAnnounceText","toAnnounce","announce","title","announceContext","table","textToSpeech","clearPrevFocus","notification","_currentlySpeaking","finally","refresh","setupTimers","focusDebounce","focusChangeTimeout","useAnnouncer","createSpriteMap","subTextures","spriteMapTexture","_createSignal21","_createSignal22","globalBackground","setGlobalBackground","theme","primary","secondary","tertiary","inactive","full","none","alpha1","alpha2","alpha3","alpha4","alpha5","xfast","fast","slow","xslow","expressive","expressiveEntrance","expressiveExit","standard","standardEntrance","standardExit","utility","utilityEntrance","utilityExit","asset","arrowLeft","arrowRight","backspaceOutline","palette","white","black","grey","red","orange","yellow","green","blue","purple","material","materialBrand","overlay","textNeutral","textNeutralSecondary","textNeutralTertiary","textNeutralDisabled","textInverse","textInverseSecondary","textInverseTertiary","textInverseDisabled","textBrand","textBrandSecondary","textBrandTertiary","textBrandDisabled","textPositive","textNegative","textInfo","textCaution","fillTransparent","fillNeutral","fillNeutralSecondary","fillNeutralTertiary","fillNeutralDisabled","fillInverse","fillInverseSecondary","fillInverseTertiary","fillInverseDisabled","fillBrand","fillBrandSecondary","fillBrandTertiary","fillBrandDisabled","fillPositive","fillNegative","fillInfo","fillCaution","strokeNeutral","strokeNeutralSecondary","strokeNeutralTertiary","strokeNeutralDisabled","strokeInverse","strokeInverseSecondary","strokeInverseTertiary","strokeInverseDisabled","strokeBrand","strokeBrandSecondary","strokeBrandTertiary","strokeBrandDisabled","strokePositive","strokeNegative","strokeInfo","strokeCaution","interactiveNeutral","interactiveNeutralFocus","interactiveNeutralFocusSoft","interactiveInverse","interactiveInverseFocus","interactiveInverseFocusSoft","interactiveBrand","interactiveBrandFocus","interactiveBrandFocusSoft","shadowNeutral","shadowNeutralFocus","shadowNeutralFocusSoft","shadowNeutralText","shadowInverse","shadowInverseFocus","shadowInverseFocusSoft","shadowInverseText","shadowBrand","shadowBrandFocus","shadowBrandFocusSoft","shadowBrandText","layout","columnCount","focusScale","gutterX","gutterY","marginX","marginY","safe","screenW","screenH","xs","sm","md","lg","xl","spacer","xxs","xxl","xxxl","stroke","typography","display1","display2","headline1","headline2","headline3","body1","body2","body3","button1","button2","callout1","caption1","tag1","footnote1","componentConfig","Keyboard","keyProps","icon","Background","bg1","bg2","heroMask","bgStyles","changeBackgrounds","r$","_ref$","_ref$2","_ref$3","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","objectFromEntries","_iterator20","_step20","_step20$value","key2","defaultModeKeys","defaultToneKeys","makeComponentStyles","themeKeys","modes","tones","themeStyles","themeStyles2","modeKeys","toneKeys","makeToneStyles","tones2","themeComponentStyles","modeStyles","toneStyles","tone","_ref25","_ref26","styles2","styleList","_a2","_b2","_ref27","mode","makeModeStyles","modes2","modeObject","makeBaseStyles","base2","baseStyles","mapThemeKeysToSolid","stylesToMap","themeKey","solidKey","convertComponentConfig","themeStyles3","convertedThemeStyles","variantName","convertedStyles","styleName","modeName","generateSolidStylesFromLookupObject","withScrolling","adjustment","componentRef","selectedElement","lastSelected","_componentRef$axis","_ref28","_ref29","axis","_updateLastIndex","updateLastIndex","_updateLastIndex2","lastItem","rootPosition","selectedPosition","selectedSize","direct","scrollIndex","abs","currentChildIndex","currentChild","currentChildSize","_currentChild$dimensi","chainFunctions","onlyFunctions","func","innerArgs","_iterator21","_step21","onGridFocus","skipFocus","handleNavigation","_c2","onSelectedChanged","plinko","lastSelectedChild","num","getWidthByUpCount$1","theme2","upCount","columnWidth","columnGapTotal","totalColumnsWidth","_ref30","_ref30$Artwork","Artwork","_ref30$Artwork2","defaultTone$f","defaultTone","themeStyles$e","_objectWithoutProperties","_excluded","container$f","fillColor","fallbackSrc","gradientColor","_ref31","_ref31$Badge","Badge","_ref31$Badge2","defaultTone$e","themeStyles$d","_excluded2","container$e","inverse","brand","text$7","icon$2","_ref32","_ref32$Button","Button","_ref32$Button2","defaultTone$d","themeStyles$c","_excluded3","_ref33","_ref33$Surface","Surface","_ref33$Surface2","surfaceDefaultTone","surfaceThemeStyles$1","_excluded4","container$d","contentColor","focus","content","text$6","Container$c","Content","Text$5","styles$c","Container","_props$tone","Text$7","_props$tone2","_ref34","_ref34$Checkbox","Checkbox","_ref34$Checkbox2","defaultTone$c","themeStyles$b","_excluded5","strokeWidth","container$c","checked","neutral","icon$1","_ref35","_ref35$Icon","Icon","_ref35$Icon2","defaultTone$b","themeStyles$a","_excluded6","container$b","_ref36","_ref36$Column","Column","_ref36$Column2","defaultTone$a","themeStyles$9","_excluded7","container$a","itemTransition","Container$9","styles$9","onUp","onDown","_props$selected","_props$selected2","_props$tone3","_ref37","_ref37$Label","Label","_ref37$Label2","defaultTone$9","themeStyles$8","_excluded8","container$9","backgroundColor","text$5","_ref38","_ref38$Rating","Rating","_ref38$Rating2","themeStyles$7","defaultTone$8","container$8","itemSpacing","toneModes","text$4","_ref39","_ref39$Details","Details","_ref39$Details2","defaultTone$7","themeStyles$6","_excluded9","container$7","contentSpacing","badgeContentSpacing","ratingContentSpacing","text$3","_ref40","_ref40$Metadata","Metadata","_ref40$Metadata2","defaultTone$6","themeStyles$5","_excluded10","container$6","titleText","descriptionText","_ref41","_ref41$ProgressBar","ProgressBar","_ref41$ProgressBar2","defaultTone$5","themeStyles$4","_excluded11","container$5","_ref42","_ref42$Row","Row","_ref42$Row2","defaultTone$4","themeStyles$3","_excluded12","container$4","Container$3","styles$3","onLeft","onRight","_props$selected3","_props$selected4","_props$tone4","_props$tone5","_ref43","_ref43$Keyboard","_ref43$Keyboard2","defaultTone$3","themeStyles$2","_excluded13","container$3","keySpacing","baseWidth","sizes","paddingX","text$2","_ref44","_ref44$Key","Key","_ref44$Key2","defaultTone$2","themeStyles$1","_excluded14","container$2","text$1","_ref45","_ref45$Input","Input","_ref45$Input2","defaultTone$1","_excluded15","container$1","actualTitle","_ref46","_ref46$Tile","Tile","_ref46$Tile2","tileThemeStyles","_excluded16","_ref47","_ref47$Surface","_ref47$Surface2","defaultSurfaceTone","surfaceThemeStyles","_excluded17","container","paddingYProgress","paddingYBetweenContent","insetBottom","standardBottom","logoContainer","fpsStyle","fpsLabel","fpsValue","_createSignal23","_createSignal24","setFps","_createSignal25","_createSignal26","avgFps","setAvgFps","_createSignal27","_createSignal28","minFps","setMinFps","_createSignal29","_createSignal30","maxFps","setMaxFps","_createSignal31","_createSignal32","isLoadedCount","setIsLoadedCount","_createSignal33","_createSignal34","isLoadingCount","setIsLoadingCount","_createSignal35","_createSignal36","isFailedCount","setIsFailedCount","totalFps","calcFps","fps2","calcPerformanceMetrics","isLoadedCount2","isLoadingCount2","isFailedCount2","setupFPS","FPSCounter","styles$1","Gradient","NavButton","import","icons","sprite","_$mergeProps","NavDrawer","backdrop","handleNavigate","page","isOnPage","focusPage","showWidgets","onEnter","App","Menu","Left","Right","Up","Down","announcer","navDrawer","lastFocused","focusNavDrawer","_createSignal37","_createSignal38","setShowWidgets","showOnPaths","currentPath","matchesPartial","APP","onAnnouncer","onLast","back","onMenu","onBackspace","Page","headlineText","headlineSubText","itemsContainer","Thumbnail","FocusRing","FPS","FPSLabel","FPSValue","showHeadline","headlineBlur","RowTitle","Rect","peopleBio","TopBar","ButtonText","buttonStyles","topBar","MaterialButton","MaterialButtonText","TileRow","_splitProps","_splitProps2","local","others","API_KEY_V4","API_BASE","tmdbConfig","baseImageUrl","basePosterSize","defaultFetchParams","headers","Authorization","getImageUrl","posterSize","_get","loadConfig","json","_data$images","images","secure_base_url","api","truncateString","maxLength","chunkArray","convertItemsToTiles","poster_path","profile_path","tileSrc","backdrop_path","media_type","shortTitle","entityInfo","heroContent","description","overview","cache","leftoverTiles","browseProvider","pageIndex","trending","adult","tiles","chunks","createInfiniteScroll","_createSignal39","_createSignal40","pages","setPages","_createSignal41","_createSignal42","setPage","_createSignal43","_createSignal44","setEnd","_createResource","_createResource2","contents","blockWidth","ContentBlockStyle","HeadlineStyles","Headline","DescriptionStyles","BadgeStyle","Description","MetaTextStyle","voteAverage","voteCount","metaText","badges","ContentBlock","minutesToHMM","minutes","hours","remainingMinutes","formatDate","dateString","parts","justYear","getRecommendations","getCredits","getCredits$1","cast","getInfo","getInfo$1","rt","rtCrit","rtFan","backgroundImage","vote_average","vote_count","runtime","release_date","first_air_date","last_air_date","reviews","Browse","_createSignal45","_createSignal46","columnY","setcolumnY","_createSignal47","_createSignal48","setEntityInfo","entityProvider","_createSignal49","_createSignal50","setHeroContent","isFirst","delayedBackgrounds","delayedHero","onRowFocus","_this$children$select","numPages","entity","Portal","demos","DemoTile","_createSignal51","_createSignal52","setColor","_createSignal53","_createSignal54","rowX","setRowX","moveRow","row","demo","TextPage","OverviewContainer","SublineContainer","Title","Overview","Subline","CreatePage","myBox","childRef","_createSignal55","_createSignal56","insertTest","setInsertTest","_createSignal57","_createSignal58","emptyTest","setEmptyTest","_childRef$getChildByI","styleChild","someOtherStyle","ChildTest","borderStyles","childTestPassedStyles","childTestPassedStyles2","hasFocus","ViewportPage","ball","invervalTimer","_createSignal59","_createSignal60","ballStatus","setBallStatus","styleBall","lineheight","randomIntBetween","logEvent","clearInterval","ButtonsPage","RowStyles","_$use","FlexPage","rowTitle","Block","_createSignal61","_createSignal62","setColumnY","_this$children$select2","FlexSizePage","randSize","_createSignal63","_createSignal64","_this$children$select3","FlexColumnPage","ColumnStyles","_createSignal65","_createSignal66","_this$children$select4","_createSignal67","_createSignal68","_this$children$select5","MaterialButtonsPage","manifestUri","initApp","shaka","polyfill","installAll","Player","isBrowserSupported","initPlayer","_initPlayer","_callee13","video","player","_callee13$","_context14","onErrorEvent","onError","detail","playVideo","hidden","play","closeVideo","Entity","_createResource3","_createResource4","_createResource5","_createResource6","credits","_createResource7","_createResource8","recommendations","_createSignal69","_createSignal70","backdropAlpha","setBackdropAlpha","Backdrop","_this$children$select6","columnRef","backdropRef","onRowFocusAnimate","_this$children$select7","onEscape","getElementsByTagName","entityActions","onEnterTrailer","biography","People","_createResource9","_createResource10","_createResource11","_createResource12","NotFound","_$setProp","coreExtensionModuleUrl","meta","Config","FlexColumnSizePage","ButtonsMaterialPage"],"mappings":"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","x_google_ignoreList":[59,70,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,96,98]} \ No newline at end of file diff --git a/assets/polyfills-legacy-D5gaKwUZ.js b/assets/polyfills-legacy-D5gaKwUZ.js new file mode 100644 index 0000000..03300b0 --- /dev/null +++ b/assets/polyfills-legacy-D5gaKwUZ.js @@ -0,0 +1,10693 @@ +(function () { + 'use strict'; + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + var check = function (it) { + return it && it.Math === Math && it; + }; + + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 + var global$K = + // eslint-disable-next-line es/no-global-this -- safe + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + // eslint-disable-next-line no-restricted-globals -- safe + check(typeof self == 'object' && self) || + check(typeof commonjsGlobal == 'object' && commonjsGlobal) || + check(typeof commonjsGlobal == 'object' && commonjsGlobal) || + // eslint-disable-next-line no-new-func -- fallback + (function () { return this; })() || Function('return this')(); + + var objectGetOwnPropertyDescriptor = {}; + + var fails$N = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } + }; + + var fails$M = fails$N; + + // Detect IE8's incomplete defineProperty implementation + var descriptors = !fails$M(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; + }); + + var fails$L = fails$N; + + var functionBindNative = !fails$L(function () { + // eslint-disable-next-line es/no-function-prototype-bind -- safe + var test = (function () { /* empty */ }).bind(); + // eslint-disable-next-line no-prototype-builtins -- safe + return typeof test != 'function' || test.hasOwnProperty('prototype'); + }); + + var NATIVE_BIND$3 = functionBindNative; + + var call$z = Function.prototype.call; + + var functionCall = NATIVE_BIND$3 ? call$z.bind(call$z) : function () { + return call$z.apply(call$z, arguments); + }; + + var objectPropertyIsEnumerable = {}; + + var $propertyIsEnumerable$1 = {}.propertyIsEnumerable; + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var getOwnPropertyDescriptor$6 = Object.getOwnPropertyDescriptor; + + // Nashorn ~ JDK8 bug + var NASHORN_BUG = getOwnPropertyDescriptor$6 && !$propertyIsEnumerable$1.call({ 1: 2 }, 1); + + // `Object.prototype.propertyIsEnumerable` method implementation + // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable + objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor$6(this, V); + return !!descriptor && descriptor.enumerable; + } : $propertyIsEnumerable$1; + + var createPropertyDescriptor$7 = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; + }; + + var NATIVE_BIND$2 = functionBindNative; + + var FunctionPrototype$2 = Function.prototype; + var call$y = FunctionPrototype$2.call; + var uncurryThisWithBind = NATIVE_BIND$2 && FunctionPrototype$2.bind.bind(call$y, call$y); + + var functionUncurryThis = NATIVE_BIND$2 ? uncurryThisWithBind : function (fn) { + return function () { + return call$y.apply(fn, arguments); + }; + }; + + var uncurryThis$R = functionUncurryThis; + + var toString$k = uncurryThis$R({}.toString); + var stringSlice$b = uncurryThis$R(''.slice); + + var classofRaw$2 = function (it) { + return stringSlice$b(toString$k(it), 8, -1); + }; + + var uncurryThis$Q = functionUncurryThis; + var fails$K = fails$N; + var classof$i = classofRaw$2; + + var $Object$5 = Object; + var split$3 = uncurryThis$Q(''.split); + + // fallback for non-array-like ES3 and non-enumerable old V8 strings + var indexedObject = fails$K(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins -- safe + return !$Object$5('z').propertyIsEnumerable(0); + }) ? function (it) { + return classof$i(it) === 'String' ? split$3(it, '') : $Object$5(it); + } : $Object$5; + + // we can't use just `it == null` since of `document.all` special case + // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec + var isNullOrUndefined$a = function (it) { + return it === null || it === undefined; + }; + + var isNullOrUndefined$9 = isNullOrUndefined$a; + + var $TypeError$p = TypeError; + + // `RequireObjectCoercible` abstract operation + // https://tc39.es/ecma262/#sec-requireobjectcoercible + var requireObjectCoercible$a = function (it) { + if (isNullOrUndefined$9(it)) throw new $TypeError$p("Can't call method on " + it); + return it; + }; + + // toObject with fallback for non-array-like ES3 strings + var IndexedObject$4 = indexedObject; + var requireObjectCoercible$9 = requireObjectCoercible$a; + + var toIndexedObject$a = function (it) { + return IndexedObject$4(requireObjectCoercible$9(it)); + }; + + // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot + var documentAll = typeof document == 'object' && document.all; + + // `IsCallable` abstract operation + // https://tc39.es/ecma262/#sec-iscallable + // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing + var isCallable$w = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { + return typeof argument == 'function' || argument === documentAll; + } : function (argument) { + return typeof argument == 'function'; + }; + + var isCallable$v = isCallable$w; + + var isObject$q = function (it) { + return typeof it == 'object' ? it !== null : isCallable$v(it); + }; + + var global$J = global$K; + var isCallable$u = isCallable$w; + + var aFunction = function (argument) { + return isCallable$u(argument) ? argument : undefined; + }; + + var getBuiltIn$c = function (namespace, method) { + return arguments.length < 2 ? aFunction(global$J[namespace]) : global$J[namespace] && global$J[namespace][method]; + }; + + var uncurryThis$P = functionUncurryThis; + + var objectIsPrototypeOf = uncurryThis$P({}.isPrototypeOf); + + var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; + + var global$I = global$K; + var userAgent$5 = engineUserAgent; + + var process$3 = global$I.process; + var Deno$1 = global$I.Deno; + var versions = process$3 && process$3.versions || Deno$1 && Deno$1.version; + var v8 = versions && versions.v8; + var match, version; + + if (v8) { + match = v8.split('.'); + // in old Chrome, versions of V8 isn't V8 = Chrome / 10 + // but their correct versions are not interesting for us + version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); + } + + // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` + // so check `userAgent` even if `.v8` exists, but 0 + if (!version && userAgent$5) { + match = userAgent$5.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent$5.match(/Chrome\/(\d+)/); + if (match) version = +match[1]; + } + } + + var engineV8Version = version; + + /* eslint-disable es/no-symbol -- required for testing */ + var V8_VERSION$3 = engineV8Version; + var fails$J = fails$N; + var global$H = global$K; + + var $String$6 = global$H.String; + + // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing + var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$J(function () { + var symbol = Symbol('symbol detection'); + // Chrome 38 Symbol has incorrect toString conversion + // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances + // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, + // of course, fail. + return !$String$6(symbol) || !(Object(symbol) instanceof Symbol) || + // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances + !Symbol.sham && V8_VERSION$3 && V8_VERSION$3 < 41; + }); + + /* eslint-disable es/no-symbol -- required for testing */ + var NATIVE_SYMBOL$4 = symbolConstructorDetection; + + var useSymbolAsUid = NATIVE_SYMBOL$4 + && !Symbol.sham + && typeof Symbol.iterator == 'symbol'; + + var getBuiltIn$b = getBuiltIn$c; + var isCallable$t = isCallable$w; + var isPrototypeOf$8 = objectIsPrototypeOf; + var USE_SYMBOL_AS_UID$1 = useSymbolAsUid; + + var $Object$4 = Object; + + var isSymbol$4 = USE_SYMBOL_AS_UID$1 ? function (it) { + return typeof it == 'symbol'; + } : function (it) { + var $Symbol = getBuiltIn$b('Symbol'); + return isCallable$t($Symbol) && isPrototypeOf$8($Symbol.prototype, $Object$4(it)); + }; + + var $String$5 = String; + + var tryToString$6 = function (argument) { + try { + return $String$5(argument); + } catch (error) { + return 'Object'; + } + }; + + var isCallable$s = isCallable$w; + var tryToString$5 = tryToString$6; + + var $TypeError$o = TypeError; + + // `Assert: IsCallable(argument) is true` + var aCallable$l = function (argument) { + if (isCallable$s(argument)) return argument; + throw new $TypeError$o(tryToString$5(argument) + ' is not a function'); + }; + + var aCallable$k = aCallable$l; + var isNullOrUndefined$8 = isNullOrUndefined$a; + + // `GetMethod` abstract operation + // https://tc39.es/ecma262/#sec-getmethod + var getMethod$7 = function (V, P) { + var func = V[P]; + return isNullOrUndefined$8(func) ? undefined : aCallable$k(func); + }; + + var call$x = functionCall; + var isCallable$r = isCallable$w; + var isObject$p = isObject$q; + + var $TypeError$n = TypeError; + + // `OrdinaryToPrimitive` abstract operation + // https://tc39.es/ecma262/#sec-ordinarytoprimitive + var ordinaryToPrimitive$1 = function (input, pref) { + var fn, val; + if (pref === 'string' && isCallable$r(fn = input.toString) && !isObject$p(val = call$x(fn, input))) return val; + if (isCallable$r(fn = input.valueOf) && !isObject$p(val = call$x(fn, input))) return val; + if (pref !== 'string' && isCallable$r(fn = input.toString) && !isObject$p(val = call$x(fn, input))) return val; + throw new $TypeError$n("Can't convert object to primitive value"); + }; + + var sharedStore = {exports: {}}; + + var isPure = false; + + var global$G = global$K; + + // eslint-disable-next-line es/no-object-defineproperty -- safe + var defineProperty$a = Object.defineProperty; + + var defineGlobalProperty$3 = function (key, value) { + try { + defineProperty$a(global$G, key, { value: value, configurable: true, writable: true }); + } catch (error) { + global$G[key] = value; + } return value; + }; + + var globalThis$2 = global$K; + var defineGlobalProperty$2 = defineGlobalProperty$3; + + var SHARED = '__core-js_shared__'; + var store$3 = sharedStore.exports = globalThis$2[SHARED] || defineGlobalProperty$2(SHARED, {}); + + (store$3.versions || (store$3.versions = [])).push({ + version: '3.36.1', + mode: 'global', + copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', + license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE', + source: 'https://github.com/zloirock/core-js' + }); + + var sharedStoreExports = sharedStore.exports; + + var store$2 = sharedStoreExports; + + var shared$4 = function (key, value) { + return store$2[key] || (store$2[key] = value || {}); + }; + + var requireObjectCoercible$8 = requireObjectCoercible$a; + + var $Object$3 = Object; + + // `ToObject` abstract operation + // https://tc39.es/ecma262/#sec-toobject + var toObject$g = function (argument) { + return $Object$3(requireObjectCoercible$8(argument)); + }; + + var uncurryThis$O = functionUncurryThis; + var toObject$f = toObject$g; + + var hasOwnProperty = uncurryThis$O({}.hasOwnProperty); + + // `HasOwnProperty` abstract operation + // https://tc39.es/ecma262/#sec-hasownproperty + // eslint-disable-next-line es/no-object-hasown -- safe + var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { + return hasOwnProperty(toObject$f(it), key); + }; + + var uncurryThis$N = functionUncurryThis; + + var id$2 = 0; + var postfix = Math.random(); + var toString$j = uncurryThis$N(1.0.toString); + + var uid$4 = function (key) { + return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$j(++id$2 + postfix, 36); + }; + + var global$F = global$K; + var shared$3 = shared$4; + var hasOwn$n = hasOwnProperty_1; + var uid$3 = uid$4; + var NATIVE_SYMBOL$3 = symbolConstructorDetection; + var USE_SYMBOL_AS_UID = useSymbolAsUid; + + var Symbol$1 = global$F.Symbol; + var WellKnownSymbolsStore = shared$3('wks'); + var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1['for'] || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$3; + + var wellKnownSymbol$u = function (name) { + if (!hasOwn$n(WellKnownSymbolsStore, name)) { + WellKnownSymbolsStore[name] = NATIVE_SYMBOL$3 && hasOwn$n(Symbol$1, name) + ? Symbol$1[name] + : createWellKnownSymbol('Symbol.' + name); + } return WellKnownSymbolsStore[name]; + }; + + var call$w = functionCall; + var isObject$o = isObject$q; + var isSymbol$3 = isSymbol$4; + var getMethod$6 = getMethod$7; + var ordinaryToPrimitive = ordinaryToPrimitive$1; + var wellKnownSymbol$t = wellKnownSymbol$u; + + var $TypeError$m = TypeError; + var TO_PRIMITIVE = wellKnownSymbol$t('toPrimitive'); + + // `ToPrimitive` abstract operation + // https://tc39.es/ecma262/#sec-toprimitive + var toPrimitive$2 = function (input, pref) { + if (!isObject$o(input) || isSymbol$3(input)) return input; + var exoticToPrim = getMethod$6(input, TO_PRIMITIVE); + var result; + if (exoticToPrim) { + if (pref === undefined) pref = 'default'; + result = call$w(exoticToPrim, input, pref); + if (!isObject$o(result) || isSymbol$3(result)) return result; + throw new $TypeError$m("Can't convert object to primitive value"); + } + if (pref === undefined) pref = 'number'; + return ordinaryToPrimitive(input, pref); + }; + + var toPrimitive$1 = toPrimitive$2; + var isSymbol$2 = isSymbol$4; + + // `ToPropertyKey` abstract operation + // https://tc39.es/ecma262/#sec-topropertykey + var toPropertyKey$3 = function (argument) { + var key = toPrimitive$1(argument, 'string'); + return isSymbol$2(key) ? key : key + ''; + }; + + var global$E = global$K; + var isObject$n = isObject$q; + + var document$3 = global$E.document; + // typeof document.createElement is 'object' in old IE + var EXISTS$1 = isObject$n(document$3) && isObject$n(document$3.createElement); + + var documentCreateElement$2 = function (it) { + return EXISTS$1 ? document$3.createElement(it) : {}; + }; + + var DESCRIPTORS$w = descriptors; + var fails$I = fails$N; + var createElement$1 = documentCreateElement$2; + + // Thanks to IE8 for its funny defineProperty + var ie8DomDefine = !DESCRIPTORS$w && !fails$I(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(createElement$1('div'), 'a', { + get: function () { return 7; } + }).a !== 7; + }); + + var DESCRIPTORS$v = descriptors; + var call$v = functionCall; + var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable; + var createPropertyDescriptor$6 = createPropertyDescriptor$7; + var toIndexedObject$9 = toIndexedObject$a; + var toPropertyKey$2 = toPropertyKey$3; + var hasOwn$m = hasOwnProperty_1; + var IE8_DOM_DEFINE$1 = ie8DomDefine; + + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; + + // `Object.getOwnPropertyDescriptor` method + // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor + objectGetOwnPropertyDescriptor.f = DESCRIPTORS$v ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject$9(O); + P = toPropertyKey$2(P); + if (IE8_DOM_DEFINE$1) try { + return $getOwnPropertyDescriptor$1(O, P); + } catch (error) { /* empty */ } + if (hasOwn$m(O, P)) return createPropertyDescriptor$6(!call$v(propertyIsEnumerableModule$1.f, O, P), O[P]); + }; + + var objectDefineProperty = {}; + + var DESCRIPTORS$u = descriptors; + var fails$H = fails$N; + + // V8 ~ Chrome 36- + // https://bugs.chromium.org/p/v8/issues/detail?id=3334 + var v8PrototypeDefineBug = DESCRIPTORS$u && fails$H(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(function () { /* empty */ }, 'prototype', { + value: 42, + writable: false + }).prototype !== 42; + }); + + var isObject$m = isObject$q; + + var $String$4 = String; + var $TypeError$l = TypeError; + + // `Assert: Type(argument) is Object` + var anObject$t = function (argument) { + if (isObject$m(argument)) return argument; + throw new $TypeError$l($String$4(argument) + ' is not an object'); + }; + + var DESCRIPTORS$t = descriptors; + var IE8_DOM_DEFINE = ie8DomDefine; + var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug; + var anObject$s = anObject$t; + var toPropertyKey$1 = toPropertyKey$3; + + var $TypeError$k = TypeError; + // eslint-disable-next-line es/no-object-defineproperty -- safe + var $defineProperty = Object.defineProperty; + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + var ENUMERABLE = 'enumerable'; + var CONFIGURABLE$1 = 'configurable'; + var WRITABLE = 'writable'; + + // `Object.defineProperty` method + // https://tc39.es/ecma262/#sec-object.defineproperty + objectDefineProperty.f = DESCRIPTORS$t ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) { + anObject$s(O); + P = toPropertyKey$1(P); + anObject$s(Attributes); + if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { + var current = $getOwnPropertyDescriptor(O, P); + if (current && current[WRITABLE]) { + O[P] = Attributes.value; + Attributes = { + configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1], + enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], + writable: false + }; + } + } return $defineProperty(O, P, Attributes); + } : $defineProperty : function defineProperty(O, P, Attributes) { + anObject$s(O); + P = toPropertyKey$1(P); + anObject$s(Attributes); + if (IE8_DOM_DEFINE) try { + return $defineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw new $TypeError$k('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; + }; + + var DESCRIPTORS$s = descriptors; + var definePropertyModule$5 = objectDefineProperty; + var createPropertyDescriptor$5 = createPropertyDescriptor$7; + + var createNonEnumerableProperty$e = DESCRIPTORS$s ? function (object, key, value) { + return definePropertyModule$5.f(object, key, createPropertyDescriptor$5(1, value)); + } : function (object, key, value) { + object[key] = value; + return object; + }; + + var makeBuiltIn$3 = {exports: {}}; + + var DESCRIPTORS$r = descriptors; + var hasOwn$l = hasOwnProperty_1; + + var FunctionPrototype$1 = Function.prototype; + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var getDescriptor = DESCRIPTORS$r && Object.getOwnPropertyDescriptor; + + var EXISTS = hasOwn$l(FunctionPrototype$1, 'name'); + // additional protection from minified / mangled / dropped function names + var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; + var CONFIGURABLE = EXISTS && (!DESCRIPTORS$r || (DESCRIPTORS$r && getDescriptor(FunctionPrototype$1, 'name').configurable)); + + var functionName = { + EXISTS: EXISTS, + PROPER: PROPER, + CONFIGURABLE: CONFIGURABLE + }; + + var uncurryThis$M = functionUncurryThis; + var isCallable$q = isCallable$w; + var store$1 = sharedStoreExports; + + var functionToString = uncurryThis$M(Function.toString); + + // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper + if (!isCallable$q(store$1.inspectSource)) { + store$1.inspectSource = function (it) { + return functionToString(it); + }; + } + + var inspectSource$3 = store$1.inspectSource; + + var global$D = global$K; + var isCallable$p = isCallable$w; + + var WeakMap$1 = global$D.WeakMap; + + var weakMapBasicDetection = isCallable$p(WeakMap$1) && /native code/.test(String(WeakMap$1)); + + var shared$2 = shared$4; + var uid$2 = uid$4; + + var keys$2 = shared$2('keys'); + + var sharedKey$3 = function (key) { + return keys$2[key] || (keys$2[key] = uid$2(key)); + }; + + var hiddenKeys$5 = {}; + + var NATIVE_WEAK_MAP$1 = weakMapBasicDetection; + var global$C = global$K; + var isObject$l = isObject$q; + var createNonEnumerableProperty$d = createNonEnumerableProperty$e; + var hasOwn$k = hasOwnProperty_1; + var shared$1 = sharedStoreExports; + var sharedKey$2 = sharedKey$3; + var hiddenKeys$4 = hiddenKeys$5; + + var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; + var TypeError$6 = global$C.TypeError; + var WeakMap = global$C.WeakMap; + var set$2, get$1, has$6; + + var enforce = function (it) { + return has$6(it) ? get$1(it) : set$2(it, {}); + }; + + var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject$l(it) || (state = get$1(it)).type !== TYPE) { + throw new TypeError$6('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; + }; + + if (NATIVE_WEAK_MAP$1 || shared$1.state) { + var store = shared$1.state || (shared$1.state = new WeakMap()); + /* eslint-disable no-self-assign -- prototype methods protection */ + store.get = store.get; + store.has = store.has; + store.set = store.set; + /* eslint-enable no-self-assign -- prototype methods protection */ + set$2 = function (it, metadata) { + if (store.has(it)) throw new TypeError$6(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + store.set(it, metadata); + return metadata; + }; + get$1 = function (it) { + return store.get(it) || {}; + }; + has$6 = function (it) { + return store.has(it); + }; + } else { + var STATE = sharedKey$2('state'); + hiddenKeys$4[STATE] = true; + set$2 = function (it, metadata) { + if (hasOwn$k(it, STATE)) throw new TypeError$6(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + createNonEnumerableProperty$d(it, STATE, metadata); + return metadata; + }; + get$1 = function (it) { + return hasOwn$k(it, STATE) ? it[STATE] : {}; + }; + has$6 = function (it) { + return hasOwn$k(it, STATE); + }; + } + + var internalState = { + set: set$2, + get: get$1, + has: has$6, + enforce: enforce, + getterFor: getterFor + }; + + var uncurryThis$L = functionUncurryThis; + var fails$G = fails$N; + var isCallable$o = isCallable$w; + var hasOwn$j = hasOwnProperty_1; + var DESCRIPTORS$q = descriptors; + var CONFIGURABLE_FUNCTION_NAME$2 = functionName.CONFIGURABLE; + var inspectSource$2 = inspectSource$3; + var InternalStateModule$b = internalState; + + var enforceInternalState$4 = InternalStateModule$b.enforce; + var getInternalState$6 = InternalStateModule$b.get; + var $String$3 = String; + // eslint-disable-next-line es/no-object-defineproperty -- safe + var defineProperty$9 = Object.defineProperty; + var stringSlice$a = uncurryThis$L(''.slice); + var replace$9 = uncurryThis$L(''.replace); + var join$4 = uncurryThis$L([].join); + + var CONFIGURABLE_LENGTH = DESCRIPTORS$q && !fails$G(function () { + return defineProperty$9(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; + }); + + var TEMPLATE = String(String).split('String'); + + var makeBuiltIn$2 = makeBuiltIn$3.exports = function (value, name, options) { + if (stringSlice$a($String$3(name), 0, 7) === 'Symbol(') { + name = '[' + replace$9($String$3(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; + } + if (options && options.getter) name = 'get ' + name; + if (options && options.setter) name = 'set ' + name; + if (!hasOwn$j(value, 'name') || (CONFIGURABLE_FUNCTION_NAME$2 && value.name !== name)) { + if (DESCRIPTORS$q) defineProperty$9(value, 'name', { value: name, configurable: true }); + else value.name = name; + } + if (CONFIGURABLE_LENGTH && options && hasOwn$j(options, 'arity') && value.length !== options.arity) { + defineProperty$9(value, 'length', { value: options.arity }); + } + try { + if (options && hasOwn$j(options, 'constructor') && options.constructor) { + if (DESCRIPTORS$q) defineProperty$9(value, 'prototype', { writable: false }); + // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable + } else if (value.prototype) value.prototype = undefined; + } catch (error) { /* empty */ } + var state = enforceInternalState$4(value); + if (!hasOwn$j(state, 'source')) { + state.source = join$4(TEMPLATE, typeof name == 'string' ? name : ''); + } return value; + }; + + // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative + // eslint-disable-next-line no-extend-native -- required + Function.prototype.toString = makeBuiltIn$2(function toString() { + return isCallable$o(this) && getInternalState$6(this).source || inspectSource$2(this); + }, 'toString'); + + var makeBuiltInExports = makeBuiltIn$3.exports; + + var isCallable$n = isCallable$w; + var definePropertyModule$4 = objectDefineProperty; + var makeBuiltIn$1 = makeBuiltInExports; + var defineGlobalProperty$1 = defineGlobalProperty$3; + + var defineBuiltIn$g = function (O, key, value, options) { + if (!options) options = {}; + var simple = options.enumerable; + var name = options.name !== undefined ? options.name : key; + if (isCallable$n(value)) makeBuiltIn$1(value, name, options); + if (options.global) { + if (simple) O[key] = value; + else defineGlobalProperty$1(key, value); + } else { + try { + if (!options.unsafe) delete O[key]; + else if (O[key]) simple = true; + } catch (error) { /* empty */ } + if (simple) O[key] = value; + else definePropertyModule$4.f(O, key, { + value: value, + enumerable: false, + configurable: !options.nonConfigurable, + writable: !options.nonWritable + }); + } return O; + }; + + var objectGetOwnPropertyNames = {}; + + var ceil = Math.ceil; + var floor$6 = Math.floor; + + // `Math.trunc` method + // https://tc39.es/ecma262/#sec-math.trunc + // eslint-disable-next-line es/no-math-trunc -- safe + var mathTrunc = Math.trunc || function trunc(x) { + var n = +x; + return (n > 0 ? floor$6 : ceil)(n); + }; + + var trunc = mathTrunc; + + // `ToIntegerOrInfinity` abstract operation + // https://tc39.es/ecma262/#sec-tointegerorinfinity + var toIntegerOrInfinity$d = function (argument) { + var number = +argument; + // eslint-disable-next-line no-self-compare -- NaN check + return number !== number || number === 0 ? 0 : trunc(number); + }; + + var toIntegerOrInfinity$c = toIntegerOrInfinity$d; + + var max$4 = Math.max; + var min$7 = Math.min; + + // Helper for a popular repeating case of the spec: + // Let integer be ? ToInteger(index). + // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). + var toAbsoluteIndex$4 = function (index, length) { + var integer = toIntegerOrInfinity$c(index); + return integer < 0 ? max$4(integer + length, 0) : min$7(integer, length); + }; + + var toIntegerOrInfinity$b = toIntegerOrInfinity$d; + + var min$6 = Math.min; + + // `ToLength` abstract operation + // https://tc39.es/ecma262/#sec-tolength + var toLength$8 = function (argument) { + var len = toIntegerOrInfinity$b(argument); + return len > 0 ? min$6(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 + }; + + var toLength$7 = toLength$8; + + // `LengthOfArrayLike` abstract operation + // https://tc39.es/ecma262/#sec-lengthofarraylike + var lengthOfArrayLike$m = function (obj) { + return toLength$7(obj.length); + }; + + var toIndexedObject$8 = toIndexedObject$a; + var toAbsoluteIndex$3 = toAbsoluteIndex$4; + var lengthOfArrayLike$l = lengthOfArrayLike$m; + + // `Array.prototype.{ indexOf, includes }` methods implementation + var createMethod$5 = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject$8($this); + var length = lengthOfArrayLike$l(O); + if (length === 0) return !IS_INCLUDES && -1; + var index = toAbsoluteIndex$3(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare -- NaN check + if (IS_INCLUDES && el !== el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare -- NaN check + if (value !== value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; + }; + + var arrayIncludes = { + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + includes: createMethod$5(true), + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + indexOf: createMethod$5(false) + }; + + var uncurryThis$K = functionUncurryThis; + var hasOwn$i = hasOwnProperty_1; + var toIndexedObject$7 = toIndexedObject$a; + var indexOf$1 = arrayIncludes.indexOf; + var hiddenKeys$3 = hiddenKeys$5; + + var push$c = uncurryThis$K([].push); + + var objectKeysInternal = function (object, names) { + var O = toIndexedObject$7(object); + var i = 0; + var result = []; + var key; + for (key in O) !hasOwn$i(hiddenKeys$3, key) && hasOwn$i(O, key) && push$c(result, key); + // Don't enum bug & hidden keys + while (names.length > i) if (hasOwn$i(O, key = names[i++])) { + ~indexOf$1(result, key) || push$c(result, key); + } + return result; + }; + + // IE8- don't enum bug keys + var enumBugKeys$3 = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' + ]; + + var internalObjectKeys$1 = objectKeysInternal; + var enumBugKeys$2 = enumBugKeys$3; + + var hiddenKeys$2 = enumBugKeys$2.concat('length', 'prototype'); + + // `Object.getOwnPropertyNames` method + // https://tc39.es/ecma262/#sec-object.getownpropertynames + // eslint-disable-next-line es/no-object-getownpropertynames -- safe + objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys$1(O, hiddenKeys$2); + }; + + var objectGetOwnPropertySymbols = {}; + + // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe + objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols; + + var getBuiltIn$a = getBuiltIn$c; + var uncurryThis$J = functionUncurryThis; + var getOwnPropertyNamesModule$1 = objectGetOwnPropertyNames; + var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols; + var anObject$r = anObject$t; + + var concat$2 = uncurryThis$J([].concat); + + // all object keys, includes non-enumerable and symbols + var ownKeys$2 = getBuiltIn$a('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule$1.f(anObject$r(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule$1.f; + return getOwnPropertySymbols ? concat$2(keys, getOwnPropertySymbols(it)) : keys; + }; + + var hasOwn$h = hasOwnProperty_1; + var ownKeys$1 = ownKeys$2; + var getOwnPropertyDescriptorModule$2 = objectGetOwnPropertyDescriptor; + var definePropertyModule$3 = objectDefineProperty; + + var copyConstructorProperties$4 = function (target, source, exceptions) { + var keys = ownKeys$1(source); + var defineProperty = definePropertyModule$3.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule$2.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!hasOwn$h(target, key) && !(exceptions && hasOwn$h(exceptions, key))) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } + }; + + var fails$F = fails$N; + var isCallable$m = isCallable$w; + + var replacement = /#|\.prototype\./; + + var isForced$4 = function (feature, detection) { + var value = data[normalize(feature)]; + return value === POLYFILL ? true + : value === NATIVE ? false + : isCallable$m(detection) ? fails$F(detection) + : !!detection; + }; + + var normalize = isForced$4.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); + }; + + var data = isForced$4.data = {}; + var NATIVE = isForced$4.NATIVE = 'N'; + var POLYFILL = isForced$4.POLYFILL = 'P'; + + var isForced_1 = isForced$4; + + var global$B = global$K; + var getOwnPropertyDescriptor$5 = objectGetOwnPropertyDescriptor.f; + var createNonEnumerableProperty$c = createNonEnumerableProperty$e; + var defineBuiltIn$f = defineBuiltIn$g; + var defineGlobalProperty = defineGlobalProperty$3; + var copyConstructorProperties$3 = copyConstructorProperties$4; + var isForced$3 = isForced_1; + + /* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.dontCallGetSet - prevent calling a getter on target + options.name - the .name of the function if it does not match the key + */ + var _export = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global$B; + } else if (STATIC) { + target = global$B[TARGET] || defineGlobalProperty(TARGET, {}); + } else { + target = global$B[TARGET] && global$B[TARGET].prototype; + } + if (target) for (key in source) { + sourceProperty = source[key]; + if (options.dontCallGetSet) { + descriptor = getOwnPropertyDescriptor$5(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + FORCED = isForced$3(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty == typeof targetProperty) continue; + copyConstructorProperties$3(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + createNonEnumerableProperty$c(sourceProperty, 'sham', true); + } + defineBuiltIn$f(target, key, sourceProperty, options); + } + }; + + var wellKnownSymbol$s = wellKnownSymbol$u; + + var TO_STRING_TAG$5 = wellKnownSymbol$s('toStringTag'); + var test$1 = {}; + + test$1[TO_STRING_TAG$5] = 'z'; + + var toStringTagSupport = String(test$1) === '[object z]'; + + var TO_STRING_TAG_SUPPORT = toStringTagSupport; + var isCallable$l = isCallable$w; + var classofRaw$1 = classofRaw$2; + var wellKnownSymbol$r = wellKnownSymbol$u; + + var TO_STRING_TAG$4 = wellKnownSymbol$r('toStringTag'); + var $Object$2 = Object; + + // ES3 wrong here + var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) === 'Arguments'; + + // fallback for IE11 Script Access Denied error + var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } + }; + + // getting tag from ES6+ `Object.prototype.toString` + var classof$h = TO_STRING_TAG_SUPPORT ? classofRaw$1 : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = $Object$2(it), TO_STRING_TAG$4)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw$1(O) + // ES3 arguments fallback + : (result = classofRaw$1(O)) === 'Object' && isCallable$l(O.callee) ? 'Arguments' : result; + }; + + var classof$g = classof$h; + + var $String$2 = String; + + var toString$i = function (argument) { + if (classof$g(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); + return $String$2(argument); + }; + + var makeBuiltIn = makeBuiltInExports; + var defineProperty$8 = objectDefineProperty; + + var defineBuiltInAccessor$d = function (target, name, descriptor) { + if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true }); + if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true }); + return defineProperty$8.f(target, name, descriptor); + }; + + var $$Z = _export; + var DESCRIPTORS$p = descriptors; + var global$A = global$K; + var uncurryThis$I = functionUncurryThis; + var hasOwn$g = hasOwnProperty_1; + var isCallable$k = isCallable$w; + var isPrototypeOf$7 = objectIsPrototypeOf; + var toString$h = toString$i; + var defineBuiltInAccessor$c = defineBuiltInAccessor$d; + var copyConstructorProperties$2 = copyConstructorProperties$4; + + var NativeSymbol = global$A.Symbol; + var SymbolPrototype = NativeSymbol && NativeSymbol.prototype; + + if (DESCRIPTORS$p && isCallable$k(NativeSymbol) && (!('description' in SymbolPrototype) || + // Safari 12 bug + NativeSymbol().description !== undefined + )) { + var EmptyStringDescriptionStore = {}; + // wrap Symbol constructor for correct work with undefined description + var SymbolWrapper = function Symbol() { + var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString$h(arguments[0]); + var result = isPrototypeOf$7(SymbolPrototype, this) + ? new NativeSymbol(description) + // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)' + : description === undefined ? NativeSymbol() : NativeSymbol(description); + if (description === '') EmptyStringDescriptionStore[result] = true; + return result; + }; + + copyConstructorProperties$2(SymbolWrapper, NativeSymbol); + SymbolWrapper.prototype = SymbolPrototype; + SymbolPrototype.constructor = SymbolWrapper; + + var NATIVE_SYMBOL$2 = String(NativeSymbol('description detection')) === 'Symbol(description detection)'; + var thisSymbolValue = uncurryThis$I(SymbolPrototype.valueOf); + var symbolDescriptiveString = uncurryThis$I(SymbolPrototype.toString); + var regexp = /^Symbol\((.*)\)[^)]+$/; + var replace$8 = uncurryThis$I(''.replace); + var stringSlice$9 = uncurryThis$I(''.slice); + + defineBuiltInAccessor$c(SymbolPrototype, 'description', { + configurable: true, + get: function description() { + var symbol = thisSymbolValue(this); + if (hasOwn$g(EmptyStringDescriptionStore, symbol)) return ''; + var string = symbolDescriptiveString(symbol); + var desc = NATIVE_SYMBOL$2 ? stringSlice$9(string, 7, -1) : replace$8(string, regexp, '$1'); + return desc === '' ? undefined : desc; + } + }); + + $$Z({ global: true, constructor: true, forced: true }, { + Symbol: SymbolWrapper + }); + } + + var global$z = global$K; + + var path$1 = global$z; + + var wellKnownSymbolWrapped = {}; + + var wellKnownSymbol$q = wellKnownSymbol$u; + + wellKnownSymbolWrapped.f = wellKnownSymbol$q; + + var path = path$1; + var hasOwn$f = hasOwnProperty_1; + var wrappedWellKnownSymbolModule = wellKnownSymbolWrapped; + var defineProperty$7 = objectDefineProperty.f; + + var wellKnownSymbolDefine = function (NAME) { + var Symbol = path.Symbol || (path.Symbol = {}); + if (!hasOwn$f(Symbol, NAME)) defineProperty$7(Symbol, NAME, { + value: wrappedWellKnownSymbolModule.f(NAME) + }); + }; + + var defineWellKnownSymbol = wellKnownSymbolDefine; + + // `Symbol.asyncIterator` well-known symbol + // https://tc39.es/ecma262/#sec-symbol.asynciterator + defineWellKnownSymbol('asyncIterator'); + + var NATIVE_BIND$1 = functionBindNative; + + var FunctionPrototype = Function.prototype; + var apply$4 = FunctionPrototype.apply; + var call$u = FunctionPrototype.call; + + // eslint-disable-next-line es/no-reflect -- safe + var functionApply = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND$1 ? call$u.bind(apply$4) : function () { + return call$u.apply(apply$4, arguments); + }); + + var uncurryThis$H = functionUncurryThis; + var aCallable$j = aCallable$l; + + var functionUncurryThisAccessor = function (object, key, method) { + try { + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + return uncurryThis$H(aCallable$j(Object.getOwnPropertyDescriptor(object, key)[method])); + } catch (error) { /* empty */ } + }; + + var isObject$k = isObject$q; + + var isPossiblePrototype$1 = function (argument) { + return isObject$k(argument) || argument === null; + }; + + var isPossiblePrototype = isPossiblePrototype$1; + + var $String$1 = String; + var $TypeError$j = TypeError; + + var aPossiblePrototype$1 = function (argument) { + if (isPossiblePrototype(argument)) return argument; + throw new $TypeError$j("Can't set " + $String$1(argument) + ' as a prototype'); + }; + + /* eslint-disable no-proto -- safe */ + var uncurryThisAccessor$3 = functionUncurryThisAccessor; + var isObject$j = isObject$q; + var requireObjectCoercible$7 = requireObjectCoercible$a; + var aPossiblePrototype = aPossiblePrototype$1; + + // `Object.setPrototypeOf` method + // https://tc39.es/ecma262/#sec-object.setprototypeof + // Works with __proto__ only. Old v8 can't work with null proto objects. + // eslint-disable-next-line es/no-object-setprototypeof -- safe + var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = uncurryThisAccessor$3(Object.prototype, '__proto__', 'set'); + setter(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + requireObjectCoercible$7(O); + aPossiblePrototype(proto); + if (!isObject$j(O)) return O; + if (CORRECT_SETTER) setter(O, proto); + else O.__proto__ = proto; + return O; + }; + }() : undefined); + + var defineProperty$6 = objectDefineProperty.f; + + var proxyAccessor$2 = function (Target, Source, key) { + key in Target || defineProperty$6(Target, key, { + configurable: true, + get: function () { return Source[key]; }, + set: function (it) { Source[key] = it; } + }); + }; + + var isCallable$j = isCallable$w; + var isObject$i = isObject$q; + var setPrototypeOf$6 = objectSetPrototypeOf; + + // makes subclassing work correct for wrapped built-ins + var inheritIfRequired$5 = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if ( + // it can work only with native `setPrototypeOf` + setPrototypeOf$6 && + // we haven't completely correct pre-ES6 way for getting `new.target`, so use this + isCallable$j(NewTarget = dummy.constructor) && + NewTarget !== Wrapper && + isObject$i(NewTargetPrototype = NewTarget.prototype) && + NewTargetPrototype !== Wrapper.prototype + ) setPrototypeOf$6($this, NewTargetPrototype); + return $this; + }; + + var toString$g = toString$i; + + var normalizeStringArgument$1 = function (argument, $default) { + return argument === undefined ? arguments.length < 2 ? '' : $default : toString$g(argument); + }; + + var isObject$h = isObject$q; + var createNonEnumerableProperty$b = createNonEnumerableProperty$e; + + // `InstallErrorCause` abstract operation + // https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause + var installErrorCause$1 = function (O, options) { + if (isObject$h(options) && 'cause' in options) { + createNonEnumerableProperty$b(O, 'cause', options.cause); + } + }; + + var uncurryThis$G = functionUncurryThis; + + var $Error = Error; + var replace$7 = uncurryThis$G(''.replace); + + var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd'); + // eslint-disable-next-line redos/no-vulnerable -- safe + var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/; + var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST); + + var errorStackClear = function (stack, dropEntries) { + if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) { + while (dropEntries--) stack = replace$7(stack, V8_OR_CHAKRA_STACK_ENTRY, ''); + } return stack; + }; + + var fails$E = fails$N; + var createPropertyDescriptor$4 = createPropertyDescriptor$7; + + var errorStackInstallable = !fails$E(function () { + var error = new Error('a'); + if (!('stack' in error)) return true; + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty(error, 'stack', createPropertyDescriptor$4(1, 7)); + return error.stack !== 7; + }); + + var createNonEnumerableProperty$a = createNonEnumerableProperty$e; + var clearErrorStack = errorStackClear; + var ERROR_STACK_INSTALLABLE = errorStackInstallable; + + // non-standard V8 + var captureStackTrace = Error.captureStackTrace; + + var errorStackInstall = function (error, C, stack, dropEntries) { + if (ERROR_STACK_INSTALLABLE) { + if (captureStackTrace) captureStackTrace(error, C); + else createNonEnumerableProperty$a(error, 'stack', clearErrorStack(stack, dropEntries)); + } + }; + + var getBuiltIn$9 = getBuiltIn$c; + var hasOwn$e = hasOwnProperty_1; + var createNonEnumerableProperty$9 = createNonEnumerableProperty$e; + var isPrototypeOf$6 = objectIsPrototypeOf; + var setPrototypeOf$5 = objectSetPrototypeOf; + var copyConstructorProperties$1 = copyConstructorProperties$4; + var proxyAccessor$1 = proxyAccessor$2; + var inheritIfRequired$4 = inheritIfRequired$5; + var normalizeStringArgument = normalizeStringArgument$1; + var installErrorCause = installErrorCause$1; + var installErrorStack = errorStackInstall; + var DESCRIPTORS$o = descriptors; + + var wrapErrorConstructorWithCause$1 = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) { + var STACK_TRACE_LIMIT = 'stackTraceLimit'; + var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1; + var path = FULL_NAME.split('.'); + var ERROR_NAME = path[path.length - 1]; + var OriginalError = getBuiltIn$9.apply(null, path); + + if (!OriginalError) return; + + var OriginalErrorPrototype = OriginalError.prototype; + + // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006 + if (hasOwn$e(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause; + + if (!FORCED) return OriginalError; + + var BaseError = getBuiltIn$9('Error'); + + var WrappedError = wrapper(function (a, b) { + var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined); + var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError(); + if (message !== undefined) createNonEnumerableProperty$9(result, 'message', message); + installErrorStack(result, WrappedError, result.stack, 2); + if (this && isPrototypeOf$6(OriginalErrorPrototype, this)) inheritIfRequired$4(result, this, WrappedError); + if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]); + return result; + }); + + WrappedError.prototype = OriginalErrorPrototype; + + if (ERROR_NAME !== 'Error') { + if (setPrototypeOf$5) setPrototypeOf$5(WrappedError, BaseError); + else copyConstructorProperties$1(WrappedError, BaseError, { name: true }); + } else if (DESCRIPTORS$o && STACK_TRACE_LIMIT in OriginalError) { + proxyAccessor$1(WrappedError, OriginalError, STACK_TRACE_LIMIT); + proxyAccessor$1(WrappedError, OriginalError, 'prepareStackTrace'); + } + + copyConstructorProperties$1(WrappedError, OriginalError); + + try { + // Safari 13- bug: WebAssembly errors does not have a proper `.name` + if (OriginalErrorPrototype.name !== ERROR_NAME) { + createNonEnumerableProperty$9(OriginalErrorPrototype, 'name', ERROR_NAME); + } + OriginalErrorPrototype.constructor = WrappedError; + } catch (error) { /* empty */ } + + return WrappedError; + }; + + /* eslint-disable no-unused-vars -- required for functions `.length` */ + var $$Y = _export; + var global$y = global$K; + var apply$3 = functionApply; + var wrapErrorConstructorWithCause = wrapErrorConstructorWithCause$1; + + var WEB_ASSEMBLY = 'WebAssembly'; + var WebAssembly = global$y[WEB_ASSEMBLY]; + + // eslint-disable-next-line es/no-error-cause -- feature detection + var FORCED$8 = new Error('e', { cause: 7 }).cause !== 7; + + var exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) { + var O = {}; + O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED$8); + $$Y({ global: true, constructor: true, arity: 1, forced: FORCED$8 }, O); + }; + + var exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) { + if (WebAssembly && WebAssembly[ERROR_NAME]) { + var O = {}; + O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED$8); + $$Y({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED$8 }, O); + } + }; + + // https://tc39.es/ecma262/#sec-nativeerror + exportGlobalErrorCauseWrapper('Error', function (init) { + return function Error(message) { return apply$3(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('EvalError', function (init) { + return function EvalError(message) { return apply$3(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('RangeError', function (init) { + return function RangeError(message) { return apply$3(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('ReferenceError', function (init) { + return function ReferenceError(message) { return apply$3(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('SyntaxError', function (init) { + return function SyntaxError(message) { return apply$3(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('TypeError', function (init) { + return function TypeError(message) { return apply$3(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('URIError', function (init) { + return function URIError(message) { return apply$3(init, this, arguments); }; + }); + exportWebAssemblyErrorCauseWrapper('CompileError', function (init) { + return function CompileError(message) { return apply$3(init, this, arguments); }; + }); + exportWebAssemblyErrorCauseWrapper('LinkError', function (init) { + return function LinkError(message) { return apply$3(init, this, arguments); }; + }); + exportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) { + return function RuntimeError(message) { return apply$3(init, this, arguments); }; + }); + + var classof$f = classofRaw$2; + + // `IsArray` abstract operation + // https://tc39.es/ecma262/#sec-isarray + // eslint-disable-next-line es/no-array-isarray -- safe + var isArray$8 = Array.isArray || function isArray(argument) { + return classof$f(argument) === 'Array'; + }; + + var $TypeError$i = TypeError; + var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 + + var doesNotExceedSafeInteger$5 = function (it) { + if (it > MAX_SAFE_INTEGER) throw $TypeError$i('Maximum allowed index exceeded'); + return it; + }; + + var DESCRIPTORS$n = descriptors; + var definePropertyModule$2 = objectDefineProperty; + var createPropertyDescriptor$3 = createPropertyDescriptor$7; + + var createProperty$8 = function (object, key, value) { + if (DESCRIPTORS$n) definePropertyModule$2.f(object, key, createPropertyDescriptor$3(0, value)); + else object[key] = value; + }; + + var uncurryThis$F = functionUncurryThis; + var fails$D = fails$N; + var isCallable$i = isCallable$w; + var classof$e = classof$h; + var getBuiltIn$8 = getBuiltIn$c; + var inspectSource$1 = inspectSource$3; + + var noop = function () { /* empty */ }; + var construct = getBuiltIn$8('Reflect', 'construct'); + var constructorRegExp = /^\s*(?:class|function)\b/; + var exec$7 = uncurryThis$F(constructorRegExp.exec); + var INCORRECT_TO_STRING = !constructorRegExp.test(noop); + + var isConstructorModern = function isConstructor(argument) { + if (!isCallable$i(argument)) return false; + try { + construct(noop, [], argument); + return true; + } catch (error) { + return false; + } + }; + + var isConstructorLegacy = function isConstructor(argument) { + if (!isCallable$i(argument)) return false; + switch (classof$e(argument)) { + case 'AsyncFunction': + case 'GeneratorFunction': + case 'AsyncGeneratorFunction': return false; + } + try { + // we can't check .prototype since constructors produced by .bind haven't it + // `Function#toString` throws on some built-it function in some legacy engines + // (for example, `DOMQuad` and similar in FF41-) + return INCORRECT_TO_STRING || !!exec$7(constructorRegExp, inspectSource$1(argument)); + } catch (error) { + return true; + } + }; + + isConstructorLegacy.sham = true; + + // `IsConstructor` abstract operation + // https://tc39.es/ecma262/#sec-isconstructor + var isConstructor$4 = !construct || fails$D(function () { + var called; + return isConstructorModern(isConstructorModern.call) + || !isConstructorModern(Object) + || !isConstructorModern(function () { called = true; }) + || called; + }) ? isConstructorLegacy : isConstructorModern; + + var isArray$7 = isArray$8; + var isConstructor$3 = isConstructor$4; + var isObject$g = isObject$q; + var wellKnownSymbol$p = wellKnownSymbol$u; + + var SPECIES$6 = wellKnownSymbol$p('species'); + var $Array$3 = Array; + + // a part of `ArraySpeciesCreate` abstract operation + // https://tc39.es/ecma262/#sec-arrayspeciescreate + var arraySpeciesConstructor$1 = function (originalArray) { + var C; + if (isArray$7(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (isConstructor$3(C) && (C === $Array$3 || isArray$7(C.prototype))) C = undefined; + else if (isObject$g(C)) { + C = C[SPECIES$6]; + if (C === null) C = undefined; + } + } return C === undefined ? $Array$3 : C; + }; + + var arraySpeciesConstructor = arraySpeciesConstructor$1; + + // `ArraySpeciesCreate` abstract operation + // https://tc39.es/ecma262/#sec-arrayspeciescreate + var arraySpeciesCreate$4 = function (originalArray, length) { + return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); + }; + + var fails$C = fails$N; + var wellKnownSymbol$o = wellKnownSymbol$u; + var V8_VERSION$2 = engineV8Version; + + var SPECIES$5 = wellKnownSymbol$o('species'); + + var arrayMethodHasSpeciesSupport$5 = function (METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return V8_VERSION$2 >= 51 || !fails$C(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES$5] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); + }; + + var $$X = _export; + var fails$B = fails$N; + var isArray$6 = isArray$8; + var isObject$f = isObject$q; + var toObject$e = toObject$g; + var lengthOfArrayLike$k = lengthOfArrayLike$m; + var doesNotExceedSafeInteger$4 = doesNotExceedSafeInteger$5; + var createProperty$7 = createProperty$8; + var arraySpeciesCreate$3 = arraySpeciesCreate$4; + var arrayMethodHasSpeciesSupport$4 = arrayMethodHasSpeciesSupport$5; + var wellKnownSymbol$n = wellKnownSymbol$u; + var V8_VERSION$1 = engineV8Version; + + var IS_CONCAT_SPREADABLE = wellKnownSymbol$n('isConcatSpreadable'); + + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/679 + var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION$1 >= 51 || !fails$B(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; + }); + + var isConcatSpreadable = function (O) { + if (!isObject$f(O)) return false; + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray$6(O); + }; + + var FORCED$7 = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport$4('concat'); + + // `Array.prototype.concat` method + // https://tc39.es/ecma262/#sec-array.prototype.concat + // with adding support of @@isConcatSpreadable and @@species + $$X({ target: 'Array', proto: true, arity: 1, forced: FORCED$7 }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + concat: function concat(arg) { + var O = toObject$e(this); + var A = arraySpeciesCreate$3(O, 0); + var n = 0; + var i, k, length, len, E; + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments[i]; + if (isConcatSpreadable(E)) { + len = lengthOfArrayLike$k(E); + doesNotExceedSafeInteger$4(n + len); + for (k = 0; k < len; k++, n++) if (k in E) createProperty$7(A, n, E[k]); + } else { + doesNotExceedSafeInteger$4(n + 1); + createProperty$7(A, n++, E); + } + } + A.length = n; + return A; + } + }); + + var classofRaw = classofRaw$2; + var uncurryThis$E = functionUncurryThis; + + var functionUncurryThisClause = function (fn) { + // Nashorn bug: + // https://github.com/zloirock/core-js/issues/1128 + // https://github.com/zloirock/core-js/issues/1130 + if (classofRaw(fn) === 'Function') return uncurryThis$E(fn); + }; + + var uncurryThis$D = functionUncurryThisClause; + var aCallable$i = aCallable$l; + var NATIVE_BIND = functionBindNative; + + var bind$c = uncurryThis$D(uncurryThis$D.bind); + + // optional / simple context binding + var functionBindContext = function (fn, that) { + aCallable$i(fn); + return that === undefined ? fn : NATIVE_BIND ? bind$c(fn, that) : function (/* ...args */) { + return fn.apply(that, arguments); + }; + }; + + var bind$b = functionBindContext; + var uncurryThis$C = functionUncurryThis; + var IndexedObject$3 = indexedObject; + var toObject$d = toObject$g; + var lengthOfArrayLike$j = lengthOfArrayLike$m; + var arraySpeciesCreate$2 = arraySpeciesCreate$4; + + var push$b = uncurryThis$C([].push); + + // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation + var createMethod$4 = function (TYPE) { + var IS_MAP = TYPE === 1; + var IS_FILTER = TYPE === 2; + var IS_SOME = TYPE === 3; + var IS_EVERY = TYPE === 4; + var IS_FIND_INDEX = TYPE === 6; + var IS_FILTER_REJECT = TYPE === 7; + var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject$d($this); + var self = IndexedObject$3(O); + var length = lengthOfArrayLike$j(self); + var boundFunction = bind$b(callbackfn, that); + var index = 0; + var create = specificCreate || arraySpeciesCreate$2; + var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; + var value, result; + for (;length > index; index++) if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + if (TYPE) { + if (IS_MAP) target[index] = result; // map + else if (result) switch (TYPE) { + case 3: return true; // some + case 5: return value; // find + case 6: return index; // findIndex + case 2: push$b(target, value); // filter + } else switch (TYPE) { + case 4: return false; // every + case 7: push$b(target, value); // filterReject + } + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; + }; + + var arrayIteration = { + // `Array.prototype.forEach` method + // https://tc39.es/ecma262/#sec-array.prototype.foreach + forEach: createMethod$4(0), + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + map: createMethod$4(1), + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + filter: createMethod$4(2), + // `Array.prototype.some` method + // https://tc39.es/ecma262/#sec-array.prototype.some + some: createMethod$4(3), + // `Array.prototype.every` method + // https://tc39.es/ecma262/#sec-array.prototype.every + every: createMethod$4(4), + // `Array.prototype.find` method + // https://tc39.es/ecma262/#sec-array.prototype.find + find: createMethod$4(5), + // `Array.prototype.findIndex` method + // https://tc39.es/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod$4(6), + // `Array.prototype.filterReject` method + // https://github.com/tc39/proposal-array-filtering + filterReject: createMethod$4(7) + }; + + var $$W = _export; + var $filter = arrayIteration.filter; + var arrayMethodHasSpeciesSupport$3 = arrayMethodHasSpeciesSupport$5; + + var HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport$3('filter'); + + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + // with adding support of @@species + $$W({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$3 }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + var isArray$5 = isArray$8; + var lengthOfArrayLike$i = lengthOfArrayLike$m; + var doesNotExceedSafeInteger$3 = doesNotExceedSafeInteger$5; + var bind$a = functionBindContext; + + // `FlattenIntoArray` abstract operation + // https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray + var flattenIntoArray$1 = function (target, original, source, sourceLen, start, depth, mapper, thisArg) { + var targetIndex = start; + var sourceIndex = 0; + var mapFn = mapper ? bind$a(mapper, thisArg) : false; + var element, elementLen; + + while (sourceIndex < sourceLen) { + if (sourceIndex in source) { + element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; + + if (depth > 0 && isArray$5(element)) { + elementLen = lengthOfArrayLike$i(element); + targetIndex = flattenIntoArray$1(target, original, element, elementLen, targetIndex, depth - 1) - 1; + } else { + doesNotExceedSafeInteger$3(targetIndex + 1); + target[targetIndex] = element; + } + + targetIndex++; + } + sourceIndex++; + } + return targetIndex; + }; + + var flattenIntoArray_1 = flattenIntoArray$1; + + var $$V = _export; + var flattenIntoArray = flattenIntoArray_1; + var toObject$c = toObject$g; + var lengthOfArrayLike$h = lengthOfArrayLike$m; + var toIntegerOrInfinity$a = toIntegerOrInfinity$d; + var arraySpeciesCreate$1 = arraySpeciesCreate$4; + + // `Array.prototype.flat` method + // https://tc39.es/ecma262/#sec-array.prototype.flat + $$V({ target: 'Array', proto: true }, { + flat: function flat(/* depthArg = 1 */) { + var depthArg = arguments.length ? arguments[0] : undefined; + var O = toObject$c(this); + var sourceLen = lengthOfArrayLike$h(O); + var A = arraySpeciesCreate$1(O, 0); + A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity$a(depthArg)); + return A; + } + }); + + var call$t = functionCall; + var anObject$q = anObject$t; + var getMethod$5 = getMethod$7; + + var iteratorClose$5 = function (iterator, kind, value) { + var innerResult, innerError; + anObject$q(iterator); + try { + innerResult = getMethod$5(iterator, 'return'); + if (!innerResult) { + if (kind === 'throw') throw value; + return value; + } + innerResult = call$t(innerResult, iterator); + } catch (error) { + innerError = true; + innerResult = error; + } + if (kind === 'throw') throw value; + if (innerError) throw innerResult; + anObject$q(innerResult); + return value; + }; + + var anObject$p = anObject$t; + var iteratorClose$4 = iteratorClose$5; + + // call something on iterator step with safe closing on error + var callWithSafeIterationClosing$3 = function (iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject$p(value)[0], value[1]) : fn(value); + } catch (error) { + iteratorClose$4(iterator, 'throw', error); + } + }; + + var iterators = {}; + + var wellKnownSymbol$m = wellKnownSymbol$u; + var Iterators$4 = iterators; + + var ITERATOR$9 = wellKnownSymbol$m('iterator'); + var ArrayPrototype$1 = Array.prototype; + + // check on default Array iterator + var isArrayIteratorMethod$3 = function (it) { + return it !== undefined && (Iterators$4.Array === it || ArrayPrototype$1[ITERATOR$9] === it); + }; + + var classof$d = classof$h; + var getMethod$4 = getMethod$7; + var isNullOrUndefined$7 = isNullOrUndefined$a; + var Iterators$3 = iterators; + var wellKnownSymbol$l = wellKnownSymbol$u; + + var ITERATOR$8 = wellKnownSymbol$l('iterator'); + + var getIteratorMethod$5 = function (it) { + if (!isNullOrUndefined$7(it)) return getMethod$4(it, ITERATOR$8) + || getMethod$4(it, '@@iterator') + || Iterators$3[classof$d(it)]; + }; + + var call$s = functionCall; + var aCallable$h = aCallable$l; + var anObject$o = anObject$t; + var tryToString$4 = tryToString$6; + var getIteratorMethod$4 = getIteratorMethod$5; + + var $TypeError$h = TypeError; + + var getIterator$4 = function (argument, usingIterator) { + var iteratorMethod = arguments.length < 2 ? getIteratorMethod$4(argument) : usingIterator; + if (aCallable$h(iteratorMethod)) return anObject$o(call$s(iteratorMethod, argument)); + throw new $TypeError$h(tryToString$4(argument) + ' is not iterable'); + }; + + var bind$9 = functionBindContext; + var call$r = functionCall; + var toObject$b = toObject$g; + var callWithSafeIterationClosing$2 = callWithSafeIterationClosing$3; + var isArrayIteratorMethod$2 = isArrayIteratorMethod$3; + var isConstructor$2 = isConstructor$4; + var lengthOfArrayLike$g = lengthOfArrayLike$m; + var createProperty$6 = createProperty$8; + var getIterator$3 = getIterator$4; + var getIteratorMethod$3 = getIteratorMethod$5; + + var $Array$2 = Array; + + // `Array.from` method implementation + // https://tc39.es/ecma262/#sec-array.from + var arrayFrom$1 = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject$b(arrayLike); + var IS_CONSTRUCTOR = isConstructor$2(this); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + if (mapping) mapfn = bind$9(mapfn, argumentsLength > 2 ? arguments[2] : undefined); + var iteratorMethod = getIteratorMethod$3(O); + var index = 0; + var length, result, step, iterator, next, value; + // if the target is not iterable or it's an array with the default iterator - use a simple case + if (iteratorMethod && !(this === $Array$2 && isArrayIteratorMethod$2(iteratorMethod))) { + result = IS_CONSTRUCTOR ? new this() : []; + iterator = getIterator$3(O, iteratorMethod); + next = iterator.next; + for (;!(step = call$r(next, iterator)).done; index++) { + value = mapping ? callWithSafeIterationClosing$2(iterator, mapfn, [step.value, index], true) : step.value; + createProperty$6(result, index, value); + } + } else { + length = lengthOfArrayLike$g(O); + result = IS_CONSTRUCTOR ? new this(length) : $Array$2(length); + for (;length > index; index++) { + value = mapping ? mapfn(O[index], index) : O[index]; + createProperty$6(result, index, value); + } + } + result.length = index; + return result; + }; + + var wellKnownSymbol$k = wellKnownSymbol$u; + + var ITERATOR$7 = wellKnownSymbol$k('iterator'); + var SAFE_CLOSING = false; + + try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR$7] = function () { + return this; + }; + // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing + Array.from(iteratorWithReturn, function () { throw 2; }); + } catch (error) { /* empty */ } + + var checkCorrectnessOfIteration$4 = function (exec, SKIP_CLOSING) { + try { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + } catch (error) { return false; } // workaround of old WebKit + `eval` bug + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR$7] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; + }; + + var $$U = _export; + var from = arrayFrom$1; + var checkCorrectnessOfIteration$3 = checkCorrectnessOfIteration$4; + + var INCORRECT_ITERATION = !checkCorrectnessOfIteration$3(function (iterable) { + // eslint-disable-next-line es/no-array-from -- required for testing + Array.from(iterable); + }); + + // `Array.from` method + // https://tc39.es/ecma262/#sec-array.from + $$U({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { + from: from + }); + + var objectDefineProperties = {}; + + var internalObjectKeys = objectKeysInternal; + var enumBugKeys$1 = enumBugKeys$3; + + // `Object.keys` method + // https://tc39.es/ecma262/#sec-object.keys + // eslint-disable-next-line es/no-object-keys -- safe + var objectKeys$3 = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys$1); + }; + + var DESCRIPTORS$m = descriptors; + var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug; + var definePropertyModule$1 = objectDefineProperty; + var anObject$n = anObject$t; + var toIndexedObject$6 = toIndexedObject$a; + var objectKeys$2 = objectKeys$3; + + // `Object.defineProperties` method + // https://tc39.es/ecma262/#sec-object.defineproperties + // eslint-disable-next-line es/no-object-defineproperties -- safe + objectDefineProperties.f = DESCRIPTORS$m && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { + anObject$n(O); + var props = toIndexedObject$6(Properties); + var keys = objectKeys$2(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) definePropertyModule$1.f(O, key = keys[index++], props[key]); + return O; + }; + + var getBuiltIn$7 = getBuiltIn$c; + + var html$2 = getBuiltIn$7('document', 'documentElement'); + + /* global ActiveXObject -- old IE, WSH */ + var anObject$m = anObject$t; + var definePropertiesModule = objectDefineProperties; + var enumBugKeys = enumBugKeys$3; + var hiddenKeys$1 = hiddenKeys$5; + var html$1 = html$2; + var documentCreateElement$1 = documentCreateElement$2; + var sharedKey$1 = sharedKey$3; + + var GT = '>'; + var LT = '<'; + var PROTOTYPE$1 = 'prototype'; + var SCRIPT = 'script'; + var IE_PROTO$1 = sharedKey$1('IE_PROTO'); + + var EmptyConstructor = function () { /* empty */ }; + + var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; + }; + + // Create object with fake `null` prototype: use ActiveX Object with cleared prototype + var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; // avoid memory leak + return temp; + }; + + // Create object with fake `null` prototype: use iframe Object with cleared prototype + var NullProtoObjectViaIFrame = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement$1('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html$1.appendChild(iframe); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; + }; + + // Check for document.domain and active x support + // No need to use active x approach when document.domain is not set + // see https://github.com/es-shims/es5-shim/issues/150 + // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 + // avoid IE GC bug + var activeXDocument; + var NullProtoObject = function () { + try { + activeXDocument = new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = typeof document != 'undefined' + ? document.domain && activeXDocument + ? NullProtoObjectViaActiveX(activeXDocument) // old IE + : NullProtoObjectViaIFrame() + : NullProtoObjectViaActiveX(activeXDocument); // WSH + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE$1][enumBugKeys[length]]; + return NullProtoObject(); + }; + + hiddenKeys$1[IE_PROTO$1] = true; + + // `Object.create` method + // https://tc39.es/ecma262/#sec-object.create + // eslint-disable-next-line es/no-object-create -- safe + var objectCreate = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE$1] = anObject$m(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE$1] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO$1] = O; + } else result = NullProtoObject(); + return Properties === undefined ? result : definePropertiesModule.f(result, Properties); + }; + + var wellKnownSymbol$j = wellKnownSymbol$u; + var create$7 = objectCreate; + var defineProperty$5 = objectDefineProperty.f; + + var UNSCOPABLES = wellKnownSymbol$j('unscopables'); + var ArrayPrototype = Array.prototype; + + // Array.prototype[@@unscopables] + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + if (ArrayPrototype[UNSCOPABLES] === undefined) { + defineProperty$5(ArrayPrototype, UNSCOPABLES, { + configurable: true, + value: create$7(null) + }); + } + + // add a key to Array.prototype[@@unscopables] + var addToUnscopables$3 = function (key) { + ArrayPrototype[UNSCOPABLES][key] = true; + }; + + var $$T = _export; + var $includes = arrayIncludes.includes; + var fails$A = fails$N; + var addToUnscopables$2 = addToUnscopables$3; + + // FF99+ bug + var BROKEN_ON_SPARSE = fails$A(function () { + // eslint-disable-next-line es/no-array-prototype-includes -- detection + return !Array(1).includes(); + }); + + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + $$T({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, { + includes: function includes(el /* , fromIndex = 0 */) { + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables$2('includes'); + + var fails$z = fails$N; + + var arrayMethodIsStrict$4 = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails$z(function () { + // eslint-disable-next-line no-useless-call -- required for testing + method.call(null, argument || function () { return 1; }, 1); + }); + }; + + /* eslint-disable es/no-array-prototype-indexof -- required for testing */ + var $$S = _export; + var uncurryThis$B = functionUncurryThisClause; + var $indexOf = arrayIncludes.indexOf; + var arrayMethodIsStrict$3 = arrayMethodIsStrict$4; + + var nativeIndexOf = uncurryThis$B([].indexOf); + + var NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0; + var FORCED$6 = NEGATIVE_ZERO || !arrayMethodIsStrict$3('indexOf'); + + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + $$S({ target: 'Array', proto: true, forced: FORCED$6 }, { + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + var fromIndex = arguments.length > 1 ? arguments[1] : undefined; + return NEGATIVE_ZERO + // convert -0 to +0 + ? nativeIndexOf(this, searchElement, fromIndex) || 0 + : $indexOf(this, searchElement, fromIndex); + } + }); + + var fails$y = fails$N; + + var correctPrototypeGetter = !fails$y(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + // eslint-disable-next-line es/no-object-getprototypeof -- required for testing + return Object.getPrototypeOf(new F()) !== F.prototype; + }); + + var hasOwn$d = hasOwnProperty_1; + var isCallable$h = isCallable$w; + var toObject$a = toObject$g; + var sharedKey = sharedKey$3; + var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter; + + var IE_PROTO = sharedKey('IE_PROTO'); + var $Object$1 = Object; + var ObjectPrototype$2 = $Object$1.prototype; + + // `Object.getPrototypeOf` method + // https://tc39.es/ecma262/#sec-object.getprototypeof + // eslint-disable-next-line es/no-object-getprototypeof -- safe + var objectGetPrototypeOf$1 = CORRECT_PROTOTYPE_GETTER ? $Object$1.getPrototypeOf : function (O) { + var object = toObject$a(O); + if (hasOwn$d(object, IE_PROTO)) return object[IE_PROTO]; + var constructor = object.constructor; + if (isCallable$h(constructor) && object instanceof constructor) { + return constructor.prototype; + } return object instanceof $Object$1 ? ObjectPrototype$2 : null; + }; + + var fails$x = fails$N; + var isCallable$g = isCallable$w; + var isObject$e = isObject$q; + var getPrototypeOf$4 = objectGetPrototypeOf$1; + var defineBuiltIn$e = defineBuiltIn$g; + var wellKnownSymbol$i = wellKnownSymbol$u; + + var ITERATOR$6 = wellKnownSymbol$i('iterator'); + var BUGGY_SAFARI_ITERATORS$1 = false; + + // `%IteratorPrototype%` object + // https://tc39.es/ecma262/#sec-%iteratorprototype%-object + var IteratorPrototype$4, PrototypeOfArrayIteratorPrototype, arrayIterator; + + /* eslint-disable es/no-array-prototype-keys -- safe */ + if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS$1 = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf$4(getPrototypeOf$4(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype$4 = PrototypeOfArrayIteratorPrototype; + } + } + + var NEW_ITERATOR_PROTOTYPE = !isObject$e(IteratorPrototype$4) || fails$x(function () { + var test = {}; + // FF44- legacy iterators case + return IteratorPrototype$4[ITERATOR$6].call(test) !== test; + }); + + if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype$4 = {}; + + // `%IteratorPrototype%[@@iterator]()` method + // https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator + if (!isCallable$g(IteratorPrototype$4[ITERATOR$6])) { + defineBuiltIn$e(IteratorPrototype$4, ITERATOR$6, function () { + return this; + }); + } + + var iteratorsCore = { + IteratorPrototype: IteratorPrototype$4, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$1 + }; + + var defineProperty$4 = objectDefineProperty.f; + var hasOwn$c = hasOwnProperty_1; + var wellKnownSymbol$h = wellKnownSymbol$u; + + var TO_STRING_TAG$3 = wellKnownSymbol$h('toStringTag'); + + var setToStringTag$a = function (target, TAG, STATIC) { + if (target && !STATIC) target = target.prototype; + if (target && !hasOwn$c(target, TO_STRING_TAG$3)) { + defineProperty$4(target, TO_STRING_TAG$3, { configurable: true, value: TAG }); + } + }; + + var IteratorPrototype$3 = iteratorsCore.IteratorPrototype; + var create$6 = objectCreate; + var createPropertyDescriptor$2 = createPropertyDescriptor$7; + var setToStringTag$9 = setToStringTag$a; + var Iterators$2 = iterators; + + var returnThis$1 = function () { return this; }; + + var iteratorCreateConstructor = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create$6(IteratorPrototype$3, { next: createPropertyDescriptor$2(+!ENUMERABLE_NEXT, next) }); + setToStringTag$9(IteratorConstructor, TO_STRING_TAG, false); + Iterators$2[TO_STRING_TAG] = returnThis$1; + return IteratorConstructor; + }; + + var $$R = _export; + var call$q = functionCall; + var FunctionName$1 = functionName; + var isCallable$f = isCallable$w; + var createIteratorConstructor$1 = iteratorCreateConstructor; + var getPrototypeOf$3 = objectGetPrototypeOf$1; + var setPrototypeOf$4 = objectSetPrototypeOf; + var setToStringTag$8 = setToStringTag$a; + var createNonEnumerableProperty$8 = createNonEnumerableProperty$e; + var defineBuiltIn$d = defineBuiltIn$g; + var wellKnownSymbol$g = wellKnownSymbol$u; + var Iterators$1 = iterators; + var IteratorsCore = iteratorsCore; + + var PROPER_FUNCTION_NAME$2 = FunctionName$1.PROPER; + var CONFIGURABLE_FUNCTION_NAME$1 = FunctionName$1.CONFIGURABLE; + var IteratorPrototype$2 = IteratorsCore.IteratorPrototype; + var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; + var ITERATOR$5 = wellKnownSymbol$g('iterator'); + var KEYS = 'keys'; + var VALUES = 'values'; + var ENTRIES = 'entries'; + + var returnThis = function () { return this; }; + + var iteratorDefine = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor$1(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND]; + + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } + + return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR$5] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf$3(anyNativeIterator.call(new Iterable())); + if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (getPrototypeOf$3(CurrentIteratorPrototype) !== IteratorPrototype$2) { + if (setPrototypeOf$4) { + setPrototypeOf$4(CurrentIteratorPrototype, IteratorPrototype$2); + } else if (!isCallable$f(CurrentIteratorPrototype[ITERATOR$5])) { + defineBuiltIn$d(CurrentIteratorPrototype, ITERATOR$5, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag$8(CurrentIteratorPrototype, TO_STRING_TAG, true); + } + } + + // fix Array.prototype.{ values, @@iterator }.name in V8 / FF + if (PROPER_FUNCTION_NAME$2 && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) { + if (CONFIGURABLE_FUNCTION_NAME$1) { + createNonEnumerableProperty$8(IterablePrototype, 'name', VALUES); + } else { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return call$q(nativeIterator, this); }; + } + } + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + defineBuiltIn$d(IterablePrototype, KEY, methods[KEY]); + } + } else $$R({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + // define iterator + if (IterablePrototype[ITERATOR$5] !== defaultIterator) { + defineBuiltIn$d(IterablePrototype, ITERATOR$5, defaultIterator, { name: DEFAULT }); + } + Iterators$1[NAME] = defaultIterator; + + return methods; + }; + + // `CreateIterResultObject` abstract operation + // https://tc39.es/ecma262/#sec-createiterresultobject + var createIterResultObject$5 = function (value, done) { + return { value: value, done: done }; + }; + + var toIndexedObject$5 = toIndexedObject$a; + var addToUnscopables$1 = addToUnscopables$3; + var Iterators = iterators; + var InternalStateModule$a = internalState; + var defineProperty$3 = objectDefineProperty.f; + var defineIterator$2 = iteratorDefine; + var createIterResultObject$4 = createIterResultObject$5; + var DESCRIPTORS$l = descriptors; + + var ARRAY_ITERATOR = 'Array Iterator'; + var setInternalState$9 = InternalStateModule$a.set; + var getInternalState$5 = InternalStateModule$a.getterFor(ARRAY_ITERATOR); + + // `Array.prototype.entries` method + // https://tc39.es/ecma262/#sec-array.prototype.entries + // `Array.prototype.keys` method + // https://tc39.es/ecma262/#sec-array.prototype.keys + // `Array.prototype.values` method + // https://tc39.es/ecma262/#sec-array.prototype.values + // `Array.prototype[@@iterator]` method + // https://tc39.es/ecma262/#sec-array.prototype-@@iterator + // `CreateArrayIterator` internal method + // https://tc39.es/ecma262/#sec-createarrayiterator + var es_array_iterator = defineIterator$2(Array, 'Array', function (iterated, kind) { + setInternalState$9(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject$5(iterated), // target + index: 0, // next index + kind: kind // kind + }); + // `%ArrayIteratorPrototype%.next` method + // https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next + }, function () { + var state = getInternalState$5(this); + var target = state.target; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return createIterResultObject$4(undefined, true); + } + switch (state.kind) { + case 'keys': return createIterResultObject$4(index, false); + case 'values': return createIterResultObject$4(target[index], false); + } return createIterResultObject$4([index, target[index]], false); + }, 'values'); + + // argumentsList[@@iterator] is %ArrayProto_values% + // https://tc39.es/ecma262/#sec-createunmappedargumentsobject + // https://tc39.es/ecma262/#sec-createmappedargumentsobject + var values = Iterators.Arguments = Iterators.Array; + + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables$1('keys'); + addToUnscopables$1('values'); + addToUnscopables$1('entries'); + + // V8 ~ Chrome 45- bug + if (DESCRIPTORS$l && values.name !== 'values') try { + defineProperty$3(values, 'name', { value: 'values' }); + } catch (error) { /* empty */ } + + var $$Q = _export; + var $map = arrayIteration.map; + var arrayMethodHasSpeciesSupport$2 = arrayMethodHasSpeciesSupport$5; + + var HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport$2('map'); + + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + // with adding support of @@species + $$Q({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$2 }, { + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + var DESCRIPTORS$k = descriptors; + var isArray$4 = isArray$8; + + var $TypeError$g = TypeError; + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var getOwnPropertyDescriptor$4 = Object.getOwnPropertyDescriptor; + + // Safari < 13 does not throw an error in this case + var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS$k && !function () { + // makes no sense without proper strict mode support + if (this !== undefined) return true; + try { + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty([], 'length', { writable: false }).length = 1; + } catch (error) { + return error instanceof TypeError; + } + }(); + + var arraySetLength = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) { + if (isArray$4(O) && !getOwnPropertyDescriptor$4(O, 'length').writable) { + throw new $TypeError$g('Cannot set read only .length'); + } return O.length = length; + } : function (O, length) { + return O.length = length; + }; + + var $$P = _export; + var toObject$9 = toObject$g; + var lengthOfArrayLike$f = lengthOfArrayLike$m; + var setArrayLength$2 = arraySetLength; + var doesNotExceedSafeInteger$2 = doesNotExceedSafeInteger$5; + var fails$w = fails$N; + + var INCORRECT_TO_LENGTH = fails$w(function () { + return [].push.call({ length: 0x100000000 }, 1) !== 4294967297; + }); + + // V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError + // https://bugs.chromium.org/p/v8/issues/detail?id=12681 + var properErrorOnNonWritableLength$1 = function () { + try { + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty([], 'length', { writable: false }).push(); + } catch (error) { + return error instanceof TypeError; + } + }; + + var FORCED$5 = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength$1(); + + // `Array.prototype.push` method + // https://tc39.es/ecma262/#sec-array.prototype.push + $$P({ target: 'Array', proto: true, arity: 1, forced: FORCED$5 }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + push: function push(item) { + var O = toObject$9(this); + var len = lengthOfArrayLike$f(O); + var argCount = arguments.length; + doesNotExceedSafeInteger$2(len + argCount); + for (var i = 0; i < argCount; i++) { + O[len] = arguments[i]; + len++; + } + setArrayLength$2(O, len); + return len; + } + }); + + var aCallable$g = aCallable$l; + var toObject$8 = toObject$g; + var IndexedObject$2 = indexedObject; + var lengthOfArrayLike$e = lengthOfArrayLike$m; + + var $TypeError$f = TypeError; + + var REDUCE_EMPTY = 'Reduce of empty array with no initial value'; + + // `Array.prototype.{ reduce, reduceRight }` methods implementation + var createMethod$3 = function (IS_RIGHT) { + return function (that, callbackfn, argumentsLength, memo) { + var O = toObject$8(that); + var self = IndexedObject$2(O); + var length = lengthOfArrayLike$e(O); + aCallable$g(callbackfn); + if (length === 0 && argumentsLength < 2) throw new $TypeError$f(REDUCE_EMPTY); + var index = IS_RIGHT ? length - 1 : 0; + var i = IS_RIGHT ? -1 : 1; + if (argumentsLength < 2) while (true) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (IS_RIGHT ? index < 0 : length <= index) { + throw new $TypeError$f(REDUCE_EMPTY); + } + } + for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; + }; + }; + + var arrayReduce = { + // `Array.prototype.reduce` method + // https://tc39.es/ecma262/#sec-array.prototype.reduce + left: createMethod$3(false), + // `Array.prototype.reduceRight` method + // https://tc39.es/ecma262/#sec-array.prototype.reduceright + right: createMethod$3(true) + }; + + var global$x = global$K; + var classof$c = classofRaw$2; + + var engineIsNode = classof$c(global$x.process) === 'process'; + + var $$O = _export; + var $reduce = arrayReduce.left; + var arrayMethodIsStrict$2 = arrayMethodIsStrict$4; + var CHROME_VERSION = engineV8Version; + var IS_NODE$6 = engineIsNode; + + // Chrome 80-82 has a critical bug + // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982 + var CHROME_BUG = !IS_NODE$6 && CHROME_VERSION > 79 && CHROME_VERSION < 83; + var FORCED$4 = CHROME_BUG || !arrayMethodIsStrict$2('reduce'); + + // `Array.prototype.reduce` method + // https://tc39.es/ecma262/#sec-array.prototype.reduce + $$O({ target: 'Array', proto: true, forced: FORCED$4 }, { + reduce: function reduce(callbackfn /* , initialValue */) { + var length = arguments.length; + return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined); + } + }); + + var uncurryThis$A = functionUncurryThis; + + var arraySlice$6 = uncurryThis$A([].slice); + + var $$N = _export; + var isArray$3 = isArray$8; + var isConstructor$1 = isConstructor$4; + var isObject$d = isObject$q; + var toAbsoluteIndex$2 = toAbsoluteIndex$4; + var lengthOfArrayLike$d = lengthOfArrayLike$m; + var toIndexedObject$4 = toIndexedObject$a; + var createProperty$5 = createProperty$8; + var wellKnownSymbol$f = wellKnownSymbol$u; + var arrayMethodHasSpeciesSupport$1 = arrayMethodHasSpeciesSupport$5; + var nativeSlice = arraySlice$6; + + var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$1('slice'); + + var SPECIES$4 = wellKnownSymbol$f('species'); + var $Array$1 = Array; + var max$3 = Math.max; + + // `Array.prototype.slice` method + // https://tc39.es/ecma262/#sec-array.prototype.slice + // fallback for not array-like ES3 strings and DOM objects + $$N({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 }, { + slice: function slice(start, end) { + var O = toIndexedObject$4(this); + var length = lengthOfArrayLike$d(O); + var k = toAbsoluteIndex$2(start, length); + var fin = toAbsoluteIndex$2(end === undefined ? length : end, length); + // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible + var Constructor, result, n; + if (isArray$3(O)) { + Constructor = O.constructor; + // cross-realm fallback + if (isConstructor$1(Constructor) && (Constructor === $Array$1 || isArray$3(Constructor.prototype))) { + Constructor = undefined; + } else if (isObject$d(Constructor)) { + Constructor = Constructor[SPECIES$4]; + if (Constructor === null) Constructor = undefined; + } + if (Constructor === $Array$1 || Constructor === undefined) { + return nativeSlice(O, k, fin); + } + } + result = new (Constructor === undefined ? $Array$1 : Constructor)(max$3(fin - k, 0)); + for (n = 0; k < fin; k++, n++) if (k in O) createProperty$5(result, n, O[k]); + result.length = n; + return result; + } + }); + + var tryToString$3 = tryToString$6; + + var $TypeError$e = TypeError; + + var deletePropertyOrThrow$3 = function (O, P) { + if (!delete O[P]) throw new $TypeError$e('Cannot delete property ' + tryToString$3(P) + ' of ' + tryToString$3(O)); + }; + + var arraySlice$5 = arraySlice$6; + + var floor$5 = Math.floor; + + var sort$1 = function (array, comparefn) { + var length = array.length; + + if (length < 8) { + // insertion sort + var i = 1; + var element, j; + + while (i < length) { + j = i; + element = array[i]; + while (j && comparefn(array[j - 1], element) > 0) { + array[j] = array[--j]; + } + if (j !== i++) array[j] = element; + } + } else { + // merge sort + var middle = floor$5(length / 2); + var left = sort$1(arraySlice$5(array, 0, middle), comparefn); + var right = sort$1(arraySlice$5(array, middle), comparefn); + var llength = left.length; + var rlength = right.length; + var lindex = 0; + var rindex = 0; + + while (lindex < llength || rindex < rlength) { + array[lindex + rindex] = (lindex < llength && rindex < rlength) + ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++] + : lindex < llength ? left[lindex++] : right[rindex++]; + } + } + + return array; + }; + + var arraySort$1 = sort$1; + + var userAgent$4 = engineUserAgent; + + var firefox = userAgent$4.match(/firefox\/(\d+)/i); + + var engineFfVersion = !!firefox && +firefox[1]; + + var UA = engineUserAgent; + + var engineIsIeOrEdge = /MSIE|Trident/.test(UA); + + var userAgent$3 = engineUserAgent; + + var webkit = userAgent$3.match(/AppleWebKit\/(\d+)\./); + + var engineWebkitVersion = !!webkit && +webkit[1]; + + var $$M = _export; + var uncurryThis$z = functionUncurryThis; + var aCallable$f = aCallable$l; + var toObject$7 = toObject$g; + var lengthOfArrayLike$c = lengthOfArrayLike$m; + var deletePropertyOrThrow$2 = deletePropertyOrThrow$3; + var toString$f = toString$i; + var fails$v = fails$N; + var internalSort$1 = arraySort$1; + var arrayMethodIsStrict$1 = arrayMethodIsStrict$4; + var FF$1 = engineFfVersion; + var IE_OR_EDGE$1 = engineIsIeOrEdge; + var V8$2 = engineV8Version; + var WEBKIT$1 = engineWebkitVersion; + + var test = []; + var nativeSort$1 = uncurryThis$z(test.sort); + var push$a = uncurryThis$z(test.push); + + // IE8- + var FAILS_ON_UNDEFINED = fails$v(function () { + test.sort(undefined); + }); + // V8 bug + var FAILS_ON_NULL = fails$v(function () { + test.sort(null); + }); + // Old WebKit + var STRICT_METHOD$1 = arrayMethodIsStrict$1('sort'); + + var STABLE_SORT$1 = !fails$v(function () { + // feature detection can be too slow, so check engines versions + if (V8$2) return V8$2 < 70; + if (FF$1 && FF$1 > 3) return; + if (IE_OR_EDGE$1) return true; + if (WEBKIT$1) return WEBKIT$1 < 603; + + var result = ''; + var code, chr, value, index; + + // generate an array with more 512 elements (Chakra and old V8 fails only in this case) + for (code = 65; code < 76; code++) { + chr = String.fromCharCode(code); + + switch (code) { + case 66: case 69: case 70: case 72: value = 3; break; + case 68: case 71: value = 4; break; + default: value = 2; + } + + for (index = 0; index < 47; index++) { + test.push({ k: chr + index, v: value }); + } + } + + test.sort(function (a, b) { return b.v - a.v; }); + + for (index = 0; index < test.length; index++) { + chr = test[index].k.charAt(0); + if (result.charAt(result.length - 1) !== chr) result += chr; + } + + return result !== 'DGBEFHACIJK'; + }); + + var FORCED$3 = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD$1 || !STABLE_SORT$1; + + var getSortCompare$1 = function (comparefn) { + return function (x, y) { + if (y === undefined) return -1; + if (x === undefined) return 1; + if (comparefn !== undefined) return +comparefn(x, y) || 0; + return toString$f(x) > toString$f(y) ? 1 : -1; + }; + }; + + // `Array.prototype.sort` method + // https://tc39.es/ecma262/#sec-array.prototype.sort + $$M({ target: 'Array', proto: true, forced: FORCED$3 }, { + sort: function sort(comparefn) { + if (comparefn !== undefined) aCallable$f(comparefn); + + var array = toObject$7(this); + + if (STABLE_SORT$1) return comparefn === undefined ? nativeSort$1(array) : nativeSort$1(array, comparefn); + + var items = []; + var arrayLength = lengthOfArrayLike$c(array); + var itemsLength, index; + + for (index = 0; index < arrayLength; index++) { + if (index in array) push$a(items, array[index]); + } + + internalSort$1(items, getSortCompare$1(comparefn)); + + itemsLength = lengthOfArrayLike$c(items); + index = 0; + + while (index < itemsLength) array[index] = items[index++]; + while (index < arrayLength) deletePropertyOrThrow$2(array, index++); + + return array; + } + }); + + var $$L = _export; + var toObject$6 = toObject$g; + var toAbsoluteIndex$1 = toAbsoluteIndex$4; + var toIntegerOrInfinity$9 = toIntegerOrInfinity$d; + var lengthOfArrayLike$b = lengthOfArrayLike$m; + var setArrayLength$1 = arraySetLength; + var doesNotExceedSafeInteger$1 = doesNotExceedSafeInteger$5; + var arraySpeciesCreate = arraySpeciesCreate$4; + var createProperty$4 = createProperty$8; + var deletePropertyOrThrow$1 = deletePropertyOrThrow$3; + var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$5; + + var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice'); + + var max$2 = Math.max; + var min$5 = Math.min; + + // `Array.prototype.splice` method + // https://tc39.es/ecma262/#sec-array.prototype.splice + // with adding support of @@species + $$L({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + splice: function splice(start, deleteCount /* , ...items */) { + var O = toObject$6(this); + var len = lengthOfArrayLike$b(O); + var actualStart = toAbsoluteIndex$1(start, len); + var argumentsLength = arguments.length; + var insertCount, actualDeleteCount, A, k, from, to; + if (argumentsLength === 0) { + insertCount = actualDeleteCount = 0; + } else if (argumentsLength === 1) { + insertCount = 0; + actualDeleteCount = len - actualStart; + } else { + insertCount = argumentsLength - 2; + actualDeleteCount = min$5(max$2(toIntegerOrInfinity$9(deleteCount), 0), len - actualStart); + } + doesNotExceedSafeInteger$1(len + insertCount - actualDeleteCount); + A = arraySpeciesCreate(O, actualDeleteCount); + for (k = 0; k < actualDeleteCount; k++) { + from = actualStart + k; + if (from in O) createProperty$4(A, k, O[from]); + } + A.length = actualDeleteCount; + if (insertCount < actualDeleteCount) { + for (k = actualStart; k < len - actualDeleteCount; k++) { + from = k + actualDeleteCount; + to = k + insertCount; + if (from in O) O[to] = O[from]; + else deletePropertyOrThrow$1(O, to); + } + for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow$1(O, k - 1); + } else if (insertCount > actualDeleteCount) { + for (k = len - actualDeleteCount; k > actualStart; k--) { + from = k + actualDeleteCount - 1; + to = k + insertCount - 1; + if (from in O) O[to] = O[from]; + else deletePropertyOrThrow$1(O, to); + } + } + for (k = 0; k < insertCount; k++) { + O[k + actualStart] = arguments[k + 2]; + } + setArrayLength$1(O, len - actualDeleteCount + insertCount); + return A; + } + }); + + // this method was added to unscopables after implementation + // in popular engines, so it's moved to a separate module + var addToUnscopables = addToUnscopables$3; + + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables('flat'); + + var $$K = _export; + var toObject$5 = toObject$g; + var lengthOfArrayLike$a = lengthOfArrayLike$m; + var setArrayLength = arraySetLength; + var deletePropertyOrThrow = deletePropertyOrThrow$3; + var doesNotExceedSafeInteger = doesNotExceedSafeInteger$5; + + // IE8- + var INCORRECT_RESULT = [].unshift(0) !== 1; + + // V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError + var properErrorOnNonWritableLength = function () { + try { + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty([], 'length', { writable: false }).unshift(); + } catch (error) { + return error instanceof TypeError; + } + }; + + var FORCED$2 = INCORRECT_RESULT || !properErrorOnNonWritableLength(); + + // `Array.prototype.unshift` method + // https://tc39.es/ecma262/#sec-array.prototype.unshift + $$K({ target: 'Array', proto: true, arity: 1, forced: FORCED$2 }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + unshift: function unshift(item) { + var O = toObject$5(this); + var len = lengthOfArrayLike$a(O); + var argCount = arguments.length; + if (argCount) { + doesNotExceedSafeInteger(len + argCount); + var k = len; + while (k--) { + var to = k + argCount; + if (k in O) O[to] = O[k]; + else deletePropertyOrThrow(O, to); + } + for (var j = 0; j < argCount; j++) { + O[j] = arguments[j]; + } + } return setArrayLength(O, len + argCount); + } + }); + + var uncurryThisAccessor$2 = functionUncurryThisAccessor; + var classof$b = classofRaw$2; + + var $TypeError$d = TypeError; + + // Includes + // - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]). + // - If IsSharedArrayBuffer(O) is true, throw a TypeError exception. + var arrayBufferByteLength$2 = uncurryThisAccessor$2(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) { + if (classof$b(O) !== 'ArrayBuffer') throw new $TypeError$d('ArrayBuffer expected'); + return O.byteLength; + }; + + var uncurryThis$y = functionUncurryThis; + var arrayBufferByteLength$1 = arrayBufferByteLength$2; + + var slice$5 = uncurryThis$y(ArrayBuffer.prototype.slice); + + var arrayBufferIsDetached = function (O) { + if (arrayBufferByteLength$1(O) !== 0) return false; + try { + slice$5(O, 0, 0); + return false; + } catch (error) { + return true; + } + }; + + var DESCRIPTORS$j = descriptors; + var defineBuiltInAccessor$b = defineBuiltInAccessor$d; + var isDetached$1 = arrayBufferIsDetached; + + var ArrayBufferPrototype$3 = ArrayBuffer.prototype; + + if (DESCRIPTORS$j && !('detached' in ArrayBufferPrototype$3)) { + defineBuiltInAccessor$b(ArrayBufferPrototype$3, 'detached', { + configurable: true, + get: function detached() { + return isDetached$1(this); + } + }); + } + + var toIntegerOrInfinity$8 = toIntegerOrInfinity$d; + var toLength$6 = toLength$8; + + var $RangeError$5 = RangeError; + + // `ToIndex` abstract operation + // https://tc39.es/ecma262/#sec-toindex + var toIndex$3 = function (it) { + if (it === undefined) return 0; + var number = toIntegerOrInfinity$8(it); + var length = toLength$6(number); + if (number !== length) throw new $RangeError$5('Wrong length or index'); + return length; + }; + + var IS_NODE$5 = engineIsNode; + + var tryNodeRequire$1 = function (name) { + try { + // eslint-disable-next-line no-new-func -- safe + if (IS_NODE$5) return Function('return require("' + name + '")')(); + } catch (error) { /* empty */ } + }; + + /* global Deno -- Deno case */ + var engineIsDeno = typeof Deno == 'object' && Deno && typeof Deno.version == 'object'; + + var IS_DENO$2 = engineIsDeno; + var IS_NODE$4 = engineIsNode; + + var engineIsBrowser = !IS_DENO$2 && !IS_NODE$4 + && typeof window == 'object' + && typeof document == 'object'; + + var global$w = global$K; + var fails$u = fails$N; + var V8$1 = engineV8Version; + var IS_BROWSER$1 = engineIsBrowser; + var IS_DENO$1 = engineIsDeno; + var IS_NODE$3 = engineIsNode; + + var structuredClone$2 = global$w.structuredClone; + + var structuredCloneProperTransfer = !!structuredClone$2 && !fails$u(function () { + // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if ((IS_DENO$1 && V8$1 > 92) || (IS_NODE$3 && V8$1 > 94) || (IS_BROWSER$1 && V8$1 > 97)) return false; + var buffer = new ArrayBuffer(8); + var clone = structuredClone$2(buffer, { transfer: [buffer] }); + return buffer.byteLength !== 0 || clone.byteLength !== 8; + }); + + var global$v = global$K; + var tryNodeRequire = tryNodeRequire$1; + var PROPER_STRUCTURED_CLONE_TRANSFER$1 = structuredCloneProperTransfer; + + var structuredClone$1 = global$v.structuredClone; + var $ArrayBuffer$1 = global$v.ArrayBuffer; + var $MessageChannel = global$v.MessageChannel; + var detach = false; + var WorkerThreads, channel$1, buffer, $detach; + + if (PROPER_STRUCTURED_CLONE_TRANSFER$1) { + detach = function (transferable) { + structuredClone$1(transferable, { transfer: [transferable] }); + }; + } else if ($ArrayBuffer$1) try { + if (!$MessageChannel) { + WorkerThreads = tryNodeRequire('worker_threads'); + if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel; + } + + if ($MessageChannel) { + channel$1 = new $MessageChannel(); + buffer = new $ArrayBuffer$1(2); + + $detach = function (transferable) { + channel$1.port1.postMessage(null, [transferable]); + }; + + if (buffer.byteLength === 2) { + $detach(buffer); + if (buffer.byteLength === 0) detach = $detach; + } + } + } catch (error) { /* empty */ } + + var detachTransferable$1 = detach; + + var global$u = global$K; + var uncurryThis$x = functionUncurryThis; + var uncurryThisAccessor$1 = functionUncurryThisAccessor; + var toIndex$2 = toIndex$3; + var isDetached = arrayBufferIsDetached; + var arrayBufferByteLength = arrayBufferByteLength$2; + var detachTransferable = detachTransferable$1; + var PROPER_STRUCTURED_CLONE_TRANSFER = structuredCloneProperTransfer; + + var structuredClone = global$u.structuredClone; + var ArrayBuffer$3 = global$u.ArrayBuffer; + var DataView$2 = global$u.DataView; + var TypeError$5 = global$u.TypeError; + var min$4 = Math.min; + var ArrayBufferPrototype$2 = ArrayBuffer$3.prototype; + var DataViewPrototype$1 = DataView$2.prototype; + var slice$4 = uncurryThis$x(ArrayBufferPrototype$2.slice); + var isResizable = uncurryThisAccessor$1(ArrayBufferPrototype$2, 'resizable', 'get'); + var maxByteLength = uncurryThisAccessor$1(ArrayBufferPrototype$2, 'maxByteLength', 'get'); + var getInt8 = uncurryThis$x(DataViewPrototype$1.getInt8); + var setInt8 = uncurryThis$x(DataViewPrototype$1.setInt8); + + var arrayBufferTransfer = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) { + var byteLength = arrayBufferByteLength(arrayBuffer); + var newByteLength = newLength === undefined ? byteLength : toIndex$2(newLength); + var fixedLength = !isResizable || !isResizable(arrayBuffer); + var newBuffer; + if (isDetached(arrayBuffer)) throw new TypeError$5('ArrayBuffer is detached'); + if (PROPER_STRUCTURED_CLONE_TRANSFER) { + arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] }); + if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer; + } + if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) { + newBuffer = slice$4(arrayBuffer, 0, newByteLength); + } else { + var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined; + newBuffer = new ArrayBuffer$3(newByteLength, options); + var a = new DataView$2(arrayBuffer); + var b = new DataView$2(newBuffer); + var copyLength = min$4(newByteLength, byteLength); + for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i)); + } + if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer); + return newBuffer; + }; + + var $$J = _export; + var $transfer$1 = arrayBufferTransfer; + + // `ArrayBuffer.prototype.transfer` method + // https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer + if ($transfer$1) $$J({ target: 'ArrayBuffer', proto: true }, { + transfer: function transfer() { + return $transfer$1(this, arguments.length ? arguments[0] : undefined, true); + } + }); + + var $$I = _export; + var $transfer = arrayBufferTransfer; + + // `ArrayBuffer.prototype.transferToFixedLength` method + // https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength + if ($transfer) $$I({ target: 'ArrayBuffer', proto: true }, { + transferToFixedLength: function transferToFixedLength() { + return $transfer(this, arguments.length ? arguments[0] : undefined, false); + } + }); + + var $$H = _export; + var global$t = global$K; + + // `globalThis` object + // https://tc39.es/ecma262/#sec-globalthis + $$H({ global: true, forced: global$t.globalThis !== global$t }, { + globalThis: global$t + }); + + var uncurryThis$w = functionUncurryThis; + var isArray$2 = isArray$8; + var isCallable$e = isCallable$w; + var classof$a = classofRaw$2; + var toString$e = toString$i; + + var push$9 = uncurryThis$w([].push); + + var getJsonReplacerFunction = function (replacer) { + if (isCallable$e(replacer)) return replacer; + if (!isArray$2(replacer)) return; + var rawLength = replacer.length; + var keys = []; + for (var i = 0; i < rawLength; i++) { + var element = replacer[i]; + if (typeof element == 'string') push$9(keys, element); + else if (typeof element == 'number' || classof$a(element) === 'Number' || classof$a(element) === 'String') push$9(keys, toString$e(element)); + } + var keysLength = keys.length; + var root = true; + return function (key, value) { + if (root) { + root = false; + return value; + } + if (isArray$2(this)) return value; + for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value; + }; + }; + + var $$G = _export; + var getBuiltIn$6 = getBuiltIn$c; + var apply$2 = functionApply; + var call$p = functionCall; + var uncurryThis$v = functionUncurryThis; + var fails$t = fails$N; + var isCallable$d = isCallable$w; + var isSymbol$1 = isSymbol$4; + var arraySlice$4 = arraySlice$6; + var getReplacerFunction = getJsonReplacerFunction; + var NATIVE_SYMBOL$1 = symbolConstructorDetection; + + var $String = String; + var $stringify = getBuiltIn$6('JSON', 'stringify'); + var exec$6 = uncurryThis$v(/./.exec); + var charAt$8 = uncurryThis$v(''.charAt); + var charCodeAt$2 = uncurryThis$v(''.charCodeAt); + var replace$6 = uncurryThis$v(''.replace); + var numberToString$1 = uncurryThis$v(1.0.toString); + + var tester = /[\uD800-\uDFFF]/g; + var low = /^[\uD800-\uDBFF]$/; + var hi = /^[\uDC00-\uDFFF]$/; + + var WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL$1 || fails$t(function () { + var symbol = getBuiltIn$6('Symbol')('stringify detection'); + // MS Edge converts symbol values to JSON as {} + return $stringify([symbol]) !== '[null]' + // WebKit converts symbol values to JSON as null + || $stringify({ a: symbol }) !== '{}' + // V8 throws on boxed symbols + || $stringify(Object(symbol)) !== '{}'; + }); + + // https://github.com/tc39/proposal-well-formed-stringify + var ILL_FORMED_UNICODE = fails$t(function () { + return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"' + || $stringify('\uDEAD') !== '"\\udead"'; + }); + + var stringifyWithSymbolsFix = function (it, replacer) { + var args = arraySlice$4(arguments); + var $replacer = getReplacerFunction(replacer); + if (!isCallable$d($replacer) && (it === undefined || isSymbol$1(it))) return; // IE8 returns string on undefined + args[1] = function (key, value) { + // some old implementations (like WebKit) could pass numbers as keys + if (isCallable$d($replacer)) value = call$p($replacer, this, $String(key), value); + if (!isSymbol$1(value)) return value; + }; + return apply$2($stringify, null, args); + }; + + var fixIllFormed = function (match, offset, string) { + var prev = charAt$8(string, offset - 1); + var next = charAt$8(string, offset + 1); + if ((exec$6(low, match) && !exec$6(hi, next)) || (exec$6(hi, match) && !exec$6(low, prev))) { + return '\\u' + numberToString$1(charCodeAt$2(match, 0), 16); + } return match; + }; + + if ($stringify) { + // `JSON.stringify` method + // https://tc39.es/ecma262/#sec-json.stringify + $$G({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + stringify: function stringify(it, replacer, space) { + var args = arraySlice$4(arguments); + var result = apply$2(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args); + return ILL_FORMED_UNICODE && typeof result == 'string' ? replace$6(result, tester, fixIllFormed) : result; + } + }); + } + + var global$s = global$K; + var setToStringTag$7 = setToStringTag$a; + + // JSON[@@toStringTag] property + // https://tc39.es/ecma262/#sec-json-@@tostringtag + setToStringTag$7(global$s.JSON, 'JSON', true); + + var internalMetadata = {exports: {}}; + + var objectGetOwnPropertyNamesExternal = {}; + + /* eslint-disable es/no-object-getownpropertynames -- safe */ + var classof$9 = classofRaw$2; + var toIndexedObject$3 = toIndexedObject$a; + var $getOwnPropertyNames = objectGetOwnPropertyNames.f; + var arraySlice$3 = arraySlice$6; + + var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + + var getWindowNames = function (it) { + try { + return $getOwnPropertyNames(it); + } catch (error) { + return arraySlice$3(windowNames); + } + }; + + // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window + objectGetOwnPropertyNamesExternal.f = function getOwnPropertyNames(it) { + return windowNames && classof$9(it) === 'Window' + ? getWindowNames(it) + : $getOwnPropertyNames(toIndexedObject$3(it)); + }; + + // FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it + var fails$s = fails$N; + + var arrayBufferNonExtensible = fails$s(function () { + if (typeof ArrayBuffer == 'function') { + var buffer = new ArrayBuffer(8); + // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe + if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 }); + } + }); + + var fails$r = fails$N; + var isObject$c = isObject$q; + var classof$8 = classofRaw$2; + var ARRAY_BUFFER_NON_EXTENSIBLE = arrayBufferNonExtensible; + + // eslint-disable-next-line es/no-object-isextensible -- safe + var $isExtensible = Object.isExtensible; + var FAILS_ON_PRIMITIVES = fails$r(function () { $isExtensible(1); }); + + // `Object.isExtensible` method + // https://tc39.es/ecma262/#sec-object.isextensible + var objectIsExtensible = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) { + if (!isObject$c(it)) return false; + if (ARRAY_BUFFER_NON_EXTENSIBLE && classof$8(it) === 'ArrayBuffer') return false; + return $isExtensible ? $isExtensible(it) : true; + } : $isExtensible; + + var fails$q = fails$N; + + var freezing = !fails$q(function () { + // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing + return Object.isExtensible(Object.preventExtensions({})); + }); + + var $$F = _export; + var uncurryThis$u = functionUncurryThis; + var hiddenKeys = hiddenKeys$5; + var isObject$b = isObject$q; + var hasOwn$b = hasOwnProperty_1; + var defineProperty$2 = objectDefineProperty.f; + var getOwnPropertyNamesModule = objectGetOwnPropertyNames; + var getOwnPropertyNamesExternalModule = objectGetOwnPropertyNamesExternal; + var isExtensible$1 = objectIsExtensible; + var uid$1 = uid$4; + var FREEZING$1 = freezing; + + var REQUIRED = false; + var METADATA = uid$1('meta'); + var id$1 = 0; + + var setMetadata = function (it) { + defineProperty$2(it, METADATA, { value: { + objectID: 'O' + id$1++, // object ID + weakData: {} // weak collections IDs + } }); + }; + + var fastKey$1 = function (it, create) { + // return a primitive with prefix + if (!isObject$b(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!hasOwn$b(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible$1(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMetadata(it); + // return object ID + } return it[METADATA].objectID; + }; + + var getWeakData$1 = function (it, create) { + if (!hasOwn$b(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible$1(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMetadata(it); + // return the store of weak collections IDs + } return it[METADATA].weakData; + }; + + // add metadata on freeze-family methods calling + var onFreeze = function (it) { + if (FREEZING$1 && REQUIRED && isExtensible$1(it) && !hasOwn$b(it, METADATA)) setMetadata(it); + return it; + }; + + var enable = function () { + meta.enable = function () { /* empty */ }; + REQUIRED = true; + var getOwnPropertyNames = getOwnPropertyNamesModule.f; + var splice = uncurryThis$u([].splice); + var test = {}; + test[METADATA] = 1; + + // prevent exposing of metadata key + if (getOwnPropertyNames(test).length) { + getOwnPropertyNamesModule.f = function (it) { + var result = getOwnPropertyNames(it); + for (var i = 0, length = result.length; i < length; i++) { + if (result[i] === METADATA) { + splice(result, i, 1); + break; + } + } return result; + }; + + $$F({ target: 'Object', stat: true, forced: true }, { + getOwnPropertyNames: getOwnPropertyNamesExternalModule.f + }); + } + }; + + var meta = internalMetadata.exports = { + enable: enable, + fastKey: fastKey$1, + getWeakData: getWeakData$1, + onFreeze: onFreeze + }; + + hiddenKeys[METADATA] = true; + + var internalMetadataExports = internalMetadata.exports; + + var bind$8 = functionBindContext; + var call$o = functionCall; + var anObject$l = anObject$t; + var tryToString$2 = tryToString$6; + var isArrayIteratorMethod$1 = isArrayIteratorMethod$3; + var lengthOfArrayLike$9 = lengthOfArrayLike$m; + var isPrototypeOf$5 = objectIsPrototypeOf; + var getIterator$2 = getIterator$4; + var getIteratorMethod$2 = getIteratorMethod$5; + var iteratorClose$3 = iteratorClose$5; + + var $TypeError$c = TypeError; + + var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; + }; + + var ResultPrototype = Result.prototype; + + var iterate$e = function (iterable, unboundFunction, options) { + var that = options && options.that; + var AS_ENTRIES = !!(options && options.AS_ENTRIES); + var IS_RECORD = !!(options && options.IS_RECORD); + var IS_ITERATOR = !!(options && options.IS_ITERATOR); + var INTERRUPTED = !!(options && options.INTERRUPTED); + var fn = bind$8(unboundFunction, that); + var iterator, iterFn, index, length, result, next, step; + + var stop = function (condition) { + if (iterator) iteratorClose$3(iterator, 'normal', condition); + return new Result(true, condition); + }; + + var callFn = function (value) { + if (AS_ENTRIES) { + anObject$l(value); + return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); + } return INTERRUPTED ? fn(value, stop) : fn(value); + }; + + if (IS_RECORD) { + iterator = iterable.iterator; + } else if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod$2(iterable); + if (!iterFn) throw new $TypeError$c(tryToString$2(iterable) + ' is not iterable'); + // optimisation for array iterators + if (isArrayIteratorMethod$1(iterFn)) { + for (index = 0, length = lengthOfArrayLike$9(iterable); length > index; index++) { + result = callFn(iterable[index]); + if (result && isPrototypeOf$5(ResultPrototype, result)) return result; + } return new Result(false); + } + iterator = getIterator$2(iterable, iterFn); + } + + next = IS_RECORD ? iterable.next : iterator.next; + while (!(step = call$o(next, iterator)).done) { + try { + result = callFn(step.value); + } catch (error) { + iteratorClose$3(iterator, 'throw', error); + } + if (typeof result == 'object' && result && isPrototypeOf$5(ResultPrototype, result)) return result; + } return new Result(false); + }; + + var isPrototypeOf$4 = objectIsPrototypeOf; + + var $TypeError$b = TypeError; + + var anInstance$9 = function (it, Prototype) { + if (isPrototypeOf$4(Prototype, it)) return it; + throw new $TypeError$b('Incorrect invocation'); + }; + + var $$E = _export; + var global$r = global$K; + var uncurryThis$t = functionUncurryThis; + var isForced$2 = isForced_1; + var defineBuiltIn$c = defineBuiltIn$g; + var InternalMetadataModule$1 = internalMetadataExports; + var iterate$d = iterate$e; + var anInstance$8 = anInstance$9; + var isCallable$c = isCallable$w; + var isNullOrUndefined$6 = isNullOrUndefined$a; + var isObject$a = isObject$q; + var fails$p = fails$N; + var checkCorrectnessOfIteration$2 = checkCorrectnessOfIteration$4; + var setToStringTag$6 = setToStringTag$a; + var inheritIfRequired$3 = inheritIfRequired$5; + + var collection$3 = function (CONSTRUCTOR_NAME, wrapper, common) { + var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; + var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; + var ADDER = IS_MAP ? 'set' : 'add'; + var NativeConstructor = global$r[CONSTRUCTOR_NAME]; + var NativePrototype = NativeConstructor && NativeConstructor.prototype; + var Constructor = NativeConstructor; + var exported = {}; + + var fixMethod = function (KEY) { + var uncurriedNativeMethod = uncurryThis$t(NativePrototype[KEY]); + defineBuiltIn$c(NativePrototype, KEY, + KEY === 'add' ? function add(value) { + uncurriedNativeMethod(this, value === 0 ? 0 : value); + return this; + } : KEY === 'delete' ? function (key) { + return IS_WEAK && !isObject$a(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY === 'get' ? function get(key) { + return IS_WEAK && !isObject$a(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY === 'has' ? function has(key) { + return IS_WEAK && !isObject$a(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : function set(key, value) { + uncurriedNativeMethod(this, key === 0 ? 0 : key, value); + return this; + } + ); + }; + + var REPLACE = isForced$2( + CONSTRUCTOR_NAME, + !isCallable$c(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails$p(function () { + new NativeConstructor().entries().next(); + })) + ); + + if (REPLACE) { + // create collection constructor + Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); + InternalMetadataModule$1.enable(); + } else if (isForced$2(CONSTRUCTOR_NAME, true)) { + var instance = new Constructor(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) !== instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails$p(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + // eslint-disable-next-line no-new -- required for testing + var ACCEPT_ITERABLES = checkCorrectnessOfIteration$2(function (iterable) { new NativeConstructor(iterable); }); + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails$p(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new NativeConstructor(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); + }); + + if (!ACCEPT_ITERABLES) { + Constructor = wrapper(function (dummy, iterable) { + anInstance$8(dummy, NativePrototype); + var that = inheritIfRequired$3(new NativeConstructor(), dummy, Constructor); + if (!isNullOrUndefined$6(iterable)) iterate$d(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); + return that; + }); + Constructor.prototype = NativePrototype; + NativePrototype.constructor = Constructor; + } + + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + + // weak collections should not contains .clear method + if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; + } + + exported[CONSTRUCTOR_NAME] = Constructor; + $$E({ global: true, constructor: true, forced: Constructor !== NativeConstructor }, exported); + + setToStringTag$6(Constructor, CONSTRUCTOR_NAME); + + if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); + + return Constructor; + }; + + var defineBuiltIn$b = defineBuiltIn$g; + + var defineBuiltIns$6 = function (target, src, options) { + for (var key in src) defineBuiltIn$b(target, key, src[key], options); + return target; + }; + + var getBuiltIn$5 = getBuiltIn$c; + var defineBuiltInAccessor$a = defineBuiltInAccessor$d; + var wellKnownSymbol$e = wellKnownSymbol$u; + var DESCRIPTORS$i = descriptors; + + var SPECIES$3 = wellKnownSymbol$e('species'); + + var setSpecies$4 = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn$5(CONSTRUCTOR_NAME); + + if (DESCRIPTORS$i && Constructor && !Constructor[SPECIES$3]) { + defineBuiltInAccessor$a(Constructor, SPECIES$3, { + configurable: true, + get: function () { return this; } + }); + } + }; + + var create$5 = objectCreate; + var defineBuiltInAccessor$9 = defineBuiltInAccessor$d; + var defineBuiltIns$5 = defineBuiltIns$6; + var bind$7 = functionBindContext; + var anInstance$7 = anInstance$9; + var isNullOrUndefined$5 = isNullOrUndefined$a; + var iterate$c = iterate$e; + var defineIterator$1 = iteratorDefine; + var createIterResultObject$3 = createIterResultObject$5; + var setSpecies$3 = setSpecies$4; + var DESCRIPTORS$h = descriptors; + var fastKey = internalMetadataExports.fastKey; + var InternalStateModule$9 = internalState; + + var setInternalState$8 = InternalStateModule$9.set; + var internalStateGetterFor$1 = InternalStateModule$9.getterFor; + + var collectionStrong$2 = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var Constructor = wrapper(function (that, iterable) { + anInstance$7(that, Prototype); + setInternalState$8(that, { + type: CONSTRUCTOR_NAME, + index: create$5(null), + first: undefined, + last: undefined, + size: 0 + }); + if (!DESCRIPTORS$h) that.size = 0; + if (!isNullOrUndefined$5(iterable)) iterate$c(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); + }); + + var Prototype = Constructor.prototype; + + var getInternalState = internalStateGetterFor$1(CONSTRUCTOR_NAME); + + var define = function (that, key, value) { + var state = getInternalState(that); + var entry = getEntry(that, key); + var previous, index; + // change existing entry + if (entry) { + entry.value = value; + // create new entry + } else { + state.last = entry = { + index: index = fastKey(key, true), + key: key, + value: value, + previous: previous = state.last, + next: undefined, + removed: false + }; + if (!state.first) state.first = entry; + if (previous) previous.next = entry; + if (DESCRIPTORS$h) state.size++; + else that.size++; + // add to index + if (index !== 'F') state.index[index] = entry; + } return that; + }; + + var getEntry = function (that, key) { + var state = getInternalState(that); + // fast case + var index = fastKey(key); + var entry; + if (index !== 'F') return state.index[index]; + // frozen object case + for (entry = state.first; entry; entry = entry.next) { + if (entry.key === key) return entry; + } + }; + + defineBuiltIns$5(Prototype, { + // `{ Map, Set }.prototype.clear()` methods + // https://tc39.es/ecma262/#sec-map.prototype.clear + // https://tc39.es/ecma262/#sec-set.prototype.clear + clear: function clear() { + var that = this; + var state = getInternalState(that); + var entry = state.first; + while (entry) { + entry.removed = true; + if (entry.previous) entry.previous = entry.previous.next = undefined; + entry = entry.next; + } + state.first = state.last = undefined; + state.index = create$5(null); + if (DESCRIPTORS$h) state.size = 0; + else that.size = 0; + }, + // `{ Map, Set }.prototype.delete(key)` methods + // https://tc39.es/ecma262/#sec-map.prototype.delete + // https://tc39.es/ecma262/#sec-set.prototype.delete + 'delete': function (key) { + var that = this; + var state = getInternalState(that); + var entry = getEntry(that, key); + if (entry) { + var next = entry.next; + var prev = entry.previous; + delete state.index[entry.index]; + entry.removed = true; + if (prev) prev.next = next; + if (next) next.previous = prev; + if (state.first === entry) state.first = next; + if (state.last === entry) state.last = prev; + if (DESCRIPTORS$h) state.size--; + else that.size--; + } return !!entry; + }, + // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods + // https://tc39.es/ecma262/#sec-map.prototype.foreach + // https://tc39.es/ecma262/#sec-set.prototype.foreach + forEach: function forEach(callbackfn /* , that = undefined */) { + var state = getInternalState(this); + var boundFunction = bind$7(callbackfn, arguments.length > 1 ? arguments[1] : undefined); + var entry; + while (entry = entry ? entry.next : state.first) { + boundFunction(entry.value, entry.key, this); + // revert to the last existing entry + while (entry && entry.removed) entry = entry.previous; + } + }, + // `{ Map, Set}.prototype.has(key)` methods + // https://tc39.es/ecma262/#sec-map.prototype.has + // https://tc39.es/ecma262/#sec-set.prototype.has + has: function has(key) { + return !!getEntry(this, key); + } + }); + + defineBuiltIns$5(Prototype, IS_MAP ? { + // `Map.prototype.get(key)` method + // https://tc39.es/ecma262/#sec-map.prototype.get + get: function get(key) { + var entry = getEntry(this, key); + return entry && entry.value; + }, + // `Map.prototype.set(key, value)` method + // https://tc39.es/ecma262/#sec-map.prototype.set + set: function set(key, value) { + return define(this, key === 0 ? 0 : key, value); + } + } : { + // `Set.prototype.add(value)` method + // https://tc39.es/ecma262/#sec-set.prototype.add + add: function add(value) { + return define(this, value = value === 0 ? 0 : value, value); + } + }); + if (DESCRIPTORS$h) defineBuiltInAccessor$9(Prototype, 'size', { + configurable: true, + get: function () { + return getInternalState(this).size; + } + }); + return Constructor; + }, + setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) { + var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; + var getInternalCollectionState = internalStateGetterFor$1(CONSTRUCTOR_NAME); + var getInternalIteratorState = internalStateGetterFor$1(ITERATOR_NAME); + // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods + // https://tc39.es/ecma262/#sec-map.prototype.entries + // https://tc39.es/ecma262/#sec-map.prototype.keys + // https://tc39.es/ecma262/#sec-map.prototype.values + // https://tc39.es/ecma262/#sec-map.prototype-@@iterator + // https://tc39.es/ecma262/#sec-set.prototype.entries + // https://tc39.es/ecma262/#sec-set.prototype.keys + // https://tc39.es/ecma262/#sec-set.prototype.values + // https://tc39.es/ecma262/#sec-set.prototype-@@iterator + defineIterator$1(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) { + setInternalState$8(this, { + type: ITERATOR_NAME, + target: iterated, + state: getInternalCollectionState(iterated), + kind: kind, + last: undefined + }); + }, function () { + var state = getInternalIteratorState(this); + var kind = state.kind; + var entry = state.last; + // revert to the last existing entry + while (entry && entry.removed) entry = entry.previous; + // get next entry + if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { + // or finish the iteration + state.target = undefined; + return createIterResultObject$3(undefined, true); + } + // return step by kind + if (kind === 'keys') return createIterResultObject$3(entry.key, false); + if (kind === 'values') return createIterResultObject$3(entry.value, false); + return createIterResultObject$3([entry.key, entry.value], false); + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + + // `{ Map, Set }.prototype[@@species]` accessors + // https://tc39.es/ecma262/#sec-get-map-@@species + // https://tc39.es/ecma262/#sec-get-set-@@species + setSpecies$3(CONSTRUCTOR_NAME); + } + }; + + var collection$2 = collection$3; + var collectionStrong$1 = collectionStrong$2; + + // `Map` constructor + // https://tc39.es/ecma262/#sec-map-objects + collection$2('Map', function (init) { + return function Map() { return init(this, arguments.length ? arguments[0] : undefined); }; + }, collectionStrong$1); + + var setToStringTag$5 = setToStringTag$a; + + // Math[@@toStringTag] property + // https://tc39.es/ecma262/#sec-math-@@tostringtag + setToStringTag$5(Math, 'Math', true); + + var DESCRIPTORS$g = descriptors; + var fails$o = fails$N; + var uncurryThis$s = functionUncurryThis; + var objectGetPrototypeOf = objectGetPrototypeOf$1; + var objectKeys$1 = objectKeys$3; + var toIndexedObject$2 = toIndexedObject$a; + var $propertyIsEnumerable = objectPropertyIsEnumerable.f; + + var propertyIsEnumerable = uncurryThis$s($propertyIsEnumerable); + var push$8 = uncurryThis$s([].push); + + // in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys + // of `null` prototype objects + var IE_BUG = DESCRIPTORS$g && fails$o(function () { + // eslint-disable-next-line es/no-object-create -- safe + var O = Object.create(null); + O[2] = 2; + return !propertyIsEnumerable(O, 2); + }); + + // `Object.{ entries, values }` methods implementation + var createMethod$2 = function (TO_ENTRIES) { + return function (it) { + var O = toIndexedObject$2(it); + var keys = objectKeys$1(O); + var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null; + var length = keys.length; + var i = 0; + var result = []; + var key; + while (length > i) { + key = keys[i++]; + if (!DESCRIPTORS$g || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) { + push$8(result, TO_ENTRIES ? [key, O[key]] : O[key]); + } + } + return result; + }; + }; + + var objectToArray = { + // `Object.entries` method + // https://tc39.es/ecma262/#sec-object.entries + entries: createMethod$2(true), + // `Object.values` method + // https://tc39.es/ecma262/#sec-object.values + values: createMethod$2(false) + }; + + var $$D = _export; + var $entries = objectToArray.entries; + + // `Object.entries` method + // https://tc39.es/ecma262/#sec-object.entries + $$D({ target: 'Object', stat: true }, { + entries: function entries(O) { + return $entries(O); + } + }); + + var $$C = _export; + var iterate$b = iterate$e; + var createProperty$3 = createProperty$8; + + // `Object.fromEntries` method + // https://github.com/tc39/proposal-object-from-entries + $$C({ target: 'Object', stat: true }, { + fromEntries: function fromEntries(iterable) { + var obj = {}; + iterate$b(iterable, function (k, v) { + createProperty$3(obj, k, v); + }, { AS_ENTRIES: true }); + return obj; + } + }); + + var $$B = _export; + var $values = objectToArray.values; + + // `Object.values` method + // https://tc39.es/ecma262/#sec-object.values + $$B({ target: 'Object', stat: true }, { + values: function values(O) { + return $values(O); + } + }); + + var $$A = _export; + var DESCRIPTORS$f = descriptors; + var ownKeys = ownKeys$2; + var toIndexedObject$1 = toIndexedObject$a; + var getOwnPropertyDescriptorModule$1 = objectGetOwnPropertyDescriptor; + var createProperty$2 = createProperty$8; + + // `Object.getOwnPropertyDescriptors` method + // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors + $$A({ target: 'Object', stat: true, sham: !DESCRIPTORS$f }, { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIndexedObject$1(object); + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule$1.f; + var keys = ownKeys(O); + var result = {}; + var index = 0; + var key, descriptor; + while (keys.length > index) { + descriptor = getOwnPropertyDescriptor(O, key = keys[index++]); + if (descriptor !== undefined) createProperty$2(result, key, descriptor); + } + return result; + } + }); + + var isConstructor = isConstructor$4; + var tryToString$1 = tryToString$6; + + var $TypeError$a = TypeError; + + // `Assert: IsConstructor(argument) is true` + var aConstructor$2 = function (argument) { + if (isConstructor(argument)) return argument; + throw new $TypeError$a(tryToString$1(argument) + ' is not a constructor'); + }; + + var anObject$k = anObject$t; + var aConstructor$1 = aConstructor$2; + var isNullOrUndefined$4 = isNullOrUndefined$a; + var wellKnownSymbol$d = wellKnownSymbol$u; + + var SPECIES$2 = wellKnownSymbol$d('species'); + + // `SpeciesConstructor` abstract operation + // https://tc39.es/ecma262/#sec-speciesconstructor + var speciesConstructor$3 = function (O, defaultConstructor) { + var C = anObject$k(O).constructor; + var S; + return C === undefined || isNullOrUndefined$4(S = anObject$k(C)[SPECIES$2]) ? defaultConstructor : aConstructor$1(S); + }; + + var $TypeError$9 = TypeError; + + var validateArgumentsLength$6 = function (passed, required) { + if (passed < required) throw new $TypeError$9('Not enough arguments'); + return passed; + }; + + var userAgent$2 = engineUserAgent; + + // eslint-disable-next-line redos/no-vulnerable -- safe + var engineIsIos = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent$2); + + var global$q = global$K; + var apply$1 = functionApply; + var bind$6 = functionBindContext; + var isCallable$b = isCallable$w; + var hasOwn$a = hasOwnProperty_1; + var fails$n = fails$N; + var html = html$2; + var arraySlice$2 = arraySlice$6; + var createElement = documentCreateElement$2; + var validateArgumentsLength$5 = validateArgumentsLength$6; + var IS_IOS$1 = engineIsIos; + var IS_NODE$2 = engineIsNode; + + var set$1 = global$q.setImmediate; + var clear = global$q.clearImmediate; + var process$2 = global$q.process; + var Dispatch = global$q.Dispatch; + var Function$1 = global$q.Function; + var MessageChannel = global$q.MessageChannel; + var String$1 = global$q.String; + var counter = 0; + var queue$2 = {}; + var ONREADYSTATECHANGE = 'onreadystatechange'; + var $location, defer, channel, port; + + fails$n(function () { + // Deno throws a ReferenceError on `location` access without `--location` flag + $location = global$q.location; + }); + + var run = function (id) { + if (hasOwn$a(queue$2, id)) { + var fn = queue$2[id]; + delete queue$2[id]; + fn(); + } + }; + + var runner = function (id) { + return function () { + run(id); + }; + }; + + var eventListener = function (event) { + run(event.data); + }; + + var globalPostMessageDefer = function (id) { + // old engines have not location.origin + global$q.postMessage(String$1(id), $location.protocol + '//' + $location.host); + }; + + // Node.js 0.9+ & IE10+ has setImmediate, otherwise: + if (!set$1 || !clear) { + set$1 = function setImmediate(handler) { + validateArgumentsLength$5(arguments.length, 1); + var fn = isCallable$b(handler) ? handler : Function$1(handler); + var args = arraySlice$2(arguments, 1); + queue$2[++counter] = function () { + apply$1(fn, undefined, args); + }; + defer(counter); + return counter; + }; + clear = function clearImmediate(id) { + delete queue$2[id]; + }; + // Node.js 0.8- + if (IS_NODE$2) { + defer = function (id) { + process$2.nextTick(runner(id)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(runner(id)); + }; + // Browsers with MessageChannel, includes WebWorkers + // except iOS - https://github.com/zloirock/core-js/issues/624 + } else if (MessageChannel && !IS_IOS$1) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = eventListener; + defer = bind$6(port.postMessage, port); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if ( + global$q.addEventListener && + isCallable$b(global$q.postMessage) && + !global$q.importScripts && + $location && $location.protocol !== 'file:' && + !fails$n(globalPostMessageDefer) + ) { + defer = globalPostMessageDefer; + global$q.addEventListener('message', eventListener, false); + // IE8- + } else if (ONREADYSTATECHANGE in createElement('script')) { + defer = function (id) { + html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(runner(id), 0); + }; + } + } + + var task$1 = { + set: set$1, + clear: clear + }; + + var global$p = global$K; + var DESCRIPTORS$e = descriptors; + + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var getOwnPropertyDescriptor$3 = Object.getOwnPropertyDescriptor; + + // Avoid NodeJS experimental warning + var safeGetBuiltIn$2 = function (name) { + if (!DESCRIPTORS$e) return global$p[name]; + var descriptor = getOwnPropertyDescriptor$3(global$p, name); + return descriptor && descriptor.value; + }; + + var Queue$2 = function () { + this.head = null; + this.tail = null; + }; + + Queue$2.prototype = { + add: function (item) { + var entry = { item: item, next: null }; + var tail = this.tail; + if (tail) tail.next = entry; + else this.head = entry; + this.tail = entry; + }, + get: function () { + var entry = this.head; + if (entry) { + var next = this.head = entry.next; + if (next === null) this.tail = null; + return entry.item; + } + } + }; + + var queue$1 = Queue$2; + + var userAgent$1 = engineUserAgent; + + var engineIsIosPebble = /ipad|iphone|ipod/i.test(userAgent$1) && typeof Pebble != 'undefined'; + + var userAgent = engineUserAgent; + + var engineIsWebosWebkit = /web0s(?!.*chrome)/i.test(userAgent); + + var global$o = global$K; + var safeGetBuiltIn$1 = safeGetBuiltIn$2; + var bind$5 = functionBindContext; + var macrotask = task$1.set; + var Queue$1 = queue$1; + var IS_IOS = engineIsIos; + var IS_IOS_PEBBLE = engineIsIosPebble; + var IS_WEBOS_WEBKIT = engineIsWebosWebkit; + var IS_NODE$1 = engineIsNode; + + var MutationObserver = global$o.MutationObserver || global$o.WebKitMutationObserver; + var document$2 = global$o.document; + var process$1 = global$o.process; + var Promise$1 = global$o.Promise; + var microtask$2 = safeGetBuiltIn$1('queueMicrotask'); + var notify$1, toggle, node, promise, then; + + // modern engines have queueMicrotask method + if (!microtask$2) { + var queue = new Queue$1(); + + var flush = function () { + var parent, fn; + if (IS_NODE$1 && (parent = process$1.domain)) parent.exit(); + while (fn = queue.get()) try { + fn(); + } catch (error) { + if (queue.head) notify$1(); + throw error; + } + if (parent) parent.enter(); + }; + + // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 + // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898 + if (!IS_IOS && !IS_NODE$1 && !IS_WEBOS_WEBKIT && MutationObserver && document$2) { + toggle = true; + node = document$2.createTextNode(''); + new MutationObserver(flush).observe(node, { characterData: true }); + notify$1 = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (!IS_IOS_PEBBLE && Promise$1 && Promise$1.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + promise = Promise$1.resolve(undefined); + // workaround of WebKit ~ iOS Safari 10.1 bug + promise.constructor = Promise$1; + then = bind$5(promise.then, promise); + notify$1 = function () { + then(flush); + }; + // Node.js without promises + } else if (IS_NODE$1) { + notify$1 = function () { + process$1.nextTick(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessage + // - onreadystatechange + // - setTimeout + } else { + // `webpack` dev server bug on IE global methods - use bind(fn, global) + macrotask = bind$5(macrotask, global$o); + notify$1 = function () { + macrotask(flush); + }; + } + + microtask$2 = function (fn) { + if (!queue.head) notify$1(); + queue.add(fn); + }; + } + + var microtask_1 = microtask$2; + + var hostReportErrors$1 = function (a, b) { + try { + // eslint-disable-next-line no-console -- safe + arguments.length === 1 ? console.error(a) : console.error(a, b); + } catch (error) { /* empty */ } + }; + + var perform$3 = function (exec) { + try { + return { error: false, value: exec() }; + } catch (error) { + return { error: true, value: error }; + } + }; + + var global$n = global$K; + + var promiseNativeConstructor = global$n.Promise; + + var global$m = global$K; + var NativePromiseConstructor$4 = promiseNativeConstructor; + var isCallable$a = isCallable$w; + var isForced$1 = isForced_1; + var inspectSource = inspectSource$3; + var wellKnownSymbol$c = wellKnownSymbol$u; + var IS_BROWSER = engineIsBrowser; + var IS_DENO = engineIsDeno; + var V8_VERSION = engineV8Version; + + NativePromiseConstructor$4 && NativePromiseConstructor$4.prototype; + var SPECIES$1 = wellKnownSymbol$c('species'); + var SUBCLASSING = false; + var NATIVE_PROMISE_REJECTION_EVENT$1 = isCallable$a(global$m.PromiseRejectionEvent); + + var FORCED_PROMISE_CONSTRUCTOR$5 = isForced$1('Promise', function () { + var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor$4); + var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor$4); + // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // We can't detect it synchronously, so just check versions + if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true; + // We can't use @@species feature detection in V8 since it causes + // deoptimization and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) { + // Detect correctness of subclassing with @@species support + var promise = new NativePromiseConstructor$4(function (resolve) { resolve(1); }); + var FakePromise = function (exec) { + exec(function () { /* empty */ }, function () { /* empty */ }); + }; + var constructor = promise.constructor = {}; + constructor[SPECIES$1] = FakePromise; + SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise; + if (!SUBCLASSING) return true; + // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test + } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT$1; + }); + + var promiseConstructorDetection = { + CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR$5, + REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT$1, + SUBCLASSING: SUBCLASSING + }; + + var newPromiseCapability$2 = {}; + + var aCallable$e = aCallable$l; + + var $TypeError$8 = TypeError; + + var PromiseCapability = function (C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw new $TypeError$8('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aCallable$e(resolve); + this.reject = aCallable$e(reject); + }; + + // `NewPromiseCapability` abstract operation + // https://tc39.es/ecma262/#sec-newpromisecapability + newPromiseCapability$2.f = function (C) { + return new PromiseCapability(C); + }; + + var $$z = _export; + var IS_NODE = engineIsNode; + var global$l = global$K; + var call$n = functionCall; + var defineBuiltIn$a = defineBuiltIn$g; + var setPrototypeOf$3 = objectSetPrototypeOf; + var setToStringTag$4 = setToStringTag$a; + var setSpecies$2 = setSpecies$4; + var aCallable$d = aCallable$l; + var isCallable$9 = isCallable$w; + var isObject$9 = isObject$q; + var anInstance$6 = anInstance$9; + var speciesConstructor$2 = speciesConstructor$3; + var task = task$1.set; + var microtask$1 = microtask_1; + var hostReportErrors = hostReportErrors$1; + var perform$2 = perform$3; + var Queue = queue$1; + var InternalStateModule$8 = internalState; + var NativePromiseConstructor$3 = promiseNativeConstructor; + var PromiseConstructorDetection = promiseConstructorDetection; + var newPromiseCapabilityModule$3 = newPromiseCapability$2; + + var PROMISE = 'Promise'; + var FORCED_PROMISE_CONSTRUCTOR$4 = PromiseConstructorDetection.CONSTRUCTOR; + var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT; + var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING; + var getInternalPromiseState = InternalStateModule$8.getterFor(PROMISE); + var setInternalState$7 = InternalStateModule$8.set; + var NativePromisePrototype$2 = NativePromiseConstructor$3 && NativePromiseConstructor$3.prototype; + var PromiseConstructor = NativePromiseConstructor$3; + var PromisePrototype = NativePromisePrototype$2; + var TypeError$4 = global$l.TypeError; + var document$1 = global$l.document; + var process = global$l.process; + var newPromiseCapability$1 = newPromiseCapabilityModule$3.f; + var newGenericPromiseCapability = newPromiseCapability$1; + + var DISPATCH_EVENT = !!(document$1 && document$1.createEvent && global$l.dispatchEvent); + var UNHANDLED_REJECTION = 'unhandledrejection'; + var REJECTION_HANDLED = 'rejectionhandled'; + var PENDING = 0; + var FULFILLED = 1; + var REJECTED = 2; + var HANDLED = 1; + var UNHANDLED = 2; + + var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; + + // helpers + var isThenable = function (it) { + var then; + return isObject$9(it) && isCallable$9(then = it.then) ? then : false; + }; + + var callReaction = function (reaction, state) { + var value = state.value; + var ok = state.state === FULFILLED; + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (state.rejection === UNHANDLED) onHandleUnhandled(state); + state.rejection = HANDLED; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // can throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(new TypeError$4('Promise-chain cycle')); + } else if (then = isThenable(result)) { + call$n(then, result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (error) { + if (domain && !exited) domain.exit(); + reject(error); + } + }; + + var notify = function (state, isReject) { + if (state.notified) return; + state.notified = true; + microtask$1(function () { + var reactions = state.reactions; + var reaction; + while (reaction = reactions.get()) { + callReaction(reaction, state); + } + state.notified = false; + if (isReject && !state.rejection) onUnhandled(state); + }); + }; + + var dispatchEvent = function (name, promise, reason) { + var event, handler; + if (DISPATCH_EVENT) { + event = document$1.createEvent('Event'); + event.promise = promise; + event.reason = reason; + event.initEvent(name, false, true); + global$l.dispatchEvent(event); + } else event = { promise: promise, reason: reason }; + if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global$l['on' + name])) handler(event); + else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); + }; + + var onUnhandled = function (state) { + call$n(task, global$l, function () { + var promise = state.facade; + var value = state.value; + var IS_UNHANDLED = isUnhandled(state); + var result; + if (IS_UNHANDLED) { + result = perform$2(function () { + if (IS_NODE) { + process.emit('unhandledRejection', value, promise); + } else dispatchEvent(UNHANDLED_REJECTION, promise, value); + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; + if (result.error) throw result.value; + } + }); + }; + + var isUnhandled = function (state) { + return state.rejection !== HANDLED && !state.parent; + }; + + var onHandleUnhandled = function (state) { + call$n(task, global$l, function () { + var promise = state.facade; + if (IS_NODE) { + process.emit('rejectionHandled', promise); + } else dispatchEvent(REJECTION_HANDLED, promise, state.value); + }); + }; + + var bind$4 = function (fn, state, unwrap) { + return function (value) { + fn(state, value, unwrap); + }; + }; + + var internalReject = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + state.value = value; + state.state = REJECTED; + notify(state, true); + }; + + var internalResolve = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + try { + if (state.facade === value) throw new TypeError$4("Promise can't be resolved itself"); + var then = isThenable(value); + if (then) { + microtask$1(function () { + var wrapper = { done: false }; + try { + call$n(then, value, + bind$4(internalResolve, wrapper, state), + bind$4(internalReject, wrapper, state) + ); + } catch (error) { + internalReject(wrapper, error, state); + } + }); + } else { + state.value = value; + state.state = FULFILLED; + notify(state, false); + } + } catch (error) { + internalReject({ done: false }, error, state); + } + }; + + // constructor polyfill + if (FORCED_PROMISE_CONSTRUCTOR$4) { + // 25.4.3.1 Promise(executor) + PromiseConstructor = function Promise(executor) { + anInstance$6(this, PromisePrototype); + aCallable$d(executor); + call$n(Internal, this); + var state = getInternalPromiseState(this); + try { + executor(bind$4(internalResolve, state), bind$4(internalReject, state)); + } catch (error) { + internalReject(state, error); + } + }; + + PromisePrototype = PromiseConstructor.prototype; + + // eslint-disable-next-line no-unused-vars -- required for `.length` + Internal = function Promise(executor) { + setInternalState$7(this, { + type: PROMISE, + done: false, + notified: false, + parent: false, + reactions: new Queue(), + rejection: false, + state: PENDING, + value: undefined + }); + }; + + // `Promise.prototype.then` method + // https://tc39.es/ecma262/#sec-promise.prototype.then + Internal.prototype = defineBuiltIn$a(PromisePrototype, 'then', function then(onFulfilled, onRejected) { + var state = getInternalPromiseState(this); + var reaction = newPromiseCapability$1(speciesConstructor$2(this, PromiseConstructor)); + state.parent = true; + reaction.ok = isCallable$9(onFulfilled) ? onFulfilled : true; + reaction.fail = isCallable$9(onRejected) && onRejected; + reaction.domain = IS_NODE ? process.domain : undefined; + if (state.state === PENDING) state.reactions.add(reaction); + else microtask$1(function () { + callReaction(reaction, state); + }); + return reaction.promise; + }); + + OwnPromiseCapability = function () { + var promise = new Internal(); + var state = getInternalPromiseState(promise); + this.promise = promise; + this.resolve = bind$4(internalResolve, state); + this.reject = bind$4(internalReject, state); + }; + + newPromiseCapabilityModule$3.f = newPromiseCapability$1 = function (C) { + return C === PromiseConstructor || C === PromiseWrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; + + if (isCallable$9(NativePromiseConstructor$3) && NativePromisePrototype$2 !== Object.prototype) { + nativeThen = NativePromisePrototype$2.then; + + if (!NATIVE_PROMISE_SUBCLASSING) { + // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs + defineBuiltIn$a(NativePromisePrototype$2, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + call$n(nativeThen, that, resolve, reject); + }).then(onFulfilled, onRejected); + // https://github.com/zloirock/core-js/issues/640 + }, { unsafe: true }); + } + + // make `.constructor === Promise` work for native promise-based APIs + try { + delete NativePromisePrototype$2.constructor; + } catch (error) { /* empty */ } + + // make `instanceof Promise` work for native promise-based APIs + if (setPrototypeOf$3) { + setPrototypeOf$3(NativePromisePrototype$2, PromisePrototype); + } + } + } + + $$z({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR$4 }, { + Promise: PromiseConstructor + }); + + setToStringTag$4(PromiseConstructor, PROMISE, false); + setSpecies$2(PROMISE); + + var NativePromiseConstructor$2 = promiseNativeConstructor; + var checkCorrectnessOfIteration$1 = checkCorrectnessOfIteration$4; + var FORCED_PROMISE_CONSTRUCTOR$3 = promiseConstructorDetection.CONSTRUCTOR; + + var promiseStaticsIncorrectIteration = FORCED_PROMISE_CONSTRUCTOR$3 || !checkCorrectnessOfIteration$1(function (iterable) { + NativePromiseConstructor$2.all(iterable).then(undefined, function () { /* empty */ }); + }); + + var $$y = _export; + var call$m = functionCall; + var aCallable$c = aCallable$l; + var newPromiseCapabilityModule$2 = newPromiseCapability$2; + var perform$1 = perform$3; + var iterate$a = iterate$e; + var PROMISE_STATICS_INCORRECT_ITERATION$1 = promiseStaticsIncorrectIteration; + + // `Promise.all` method + // https://tc39.es/ecma262/#sec-promise.all + $$y({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION$1 }, { + all: function all(iterable) { + var C = this; + var capability = newPromiseCapabilityModule$2.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform$1(function () { + var $promiseResolve = aCallable$c(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate$a(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + remaining++; + call$m($promiseResolve, C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + } + }); + + var $$x = _export; + var FORCED_PROMISE_CONSTRUCTOR$2 = promiseConstructorDetection.CONSTRUCTOR; + var NativePromiseConstructor$1 = promiseNativeConstructor; + var getBuiltIn$4 = getBuiltIn$c; + var isCallable$8 = isCallable$w; + var defineBuiltIn$9 = defineBuiltIn$g; + + var NativePromisePrototype$1 = NativePromiseConstructor$1 && NativePromiseConstructor$1.prototype; + + // `Promise.prototype.catch` method + // https://tc39.es/ecma262/#sec-promise.prototype.catch + $$x({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR$2, real: true }, { + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } + }); + + // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then` + if (isCallable$8(NativePromiseConstructor$1)) { + var method$1 = getBuiltIn$4('Promise').prototype['catch']; + if (NativePromisePrototype$1['catch'] !== method$1) { + defineBuiltIn$9(NativePromisePrototype$1, 'catch', method$1, { unsafe: true }); + } + } + + var $$w = _export; + var call$l = functionCall; + var aCallable$b = aCallable$l; + var newPromiseCapabilityModule$1 = newPromiseCapability$2; + var perform = perform$3; + var iterate$9 = iterate$e; + var PROMISE_STATICS_INCORRECT_ITERATION = promiseStaticsIncorrectIteration; + + // `Promise.race` method + // https://tc39.es/ecma262/#sec-promise.race + $$w({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + race: function race(iterable) { + var C = this; + var capability = newPromiseCapabilityModule$1.f(C); + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aCallable$b(C.resolve); + iterate$9(iterable, function (promise) { + call$l($promiseResolve, C, promise).then(capability.resolve, reject); + }); + }); + if (result.error) reject(result.value); + return capability.promise; + } + }); + + var $$v = _export; + var newPromiseCapabilityModule = newPromiseCapability$2; + var FORCED_PROMISE_CONSTRUCTOR$1 = promiseConstructorDetection.CONSTRUCTOR; + + // `Promise.reject` method + // https://tc39.es/ecma262/#sec-promise.reject + $$v({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR$1 }, { + reject: function reject(r) { + var capability = newPromiseCapabilityModule.f(this); + var capabilityReject = capability.reject; + capabilityReject(r); + return capability.promise; + } + }); + + var anObject$j = anObject$t; + var isObject$8 = isObject$q; + var newPromiseCapability = newPromiseCapability$2; + + var promiseResolve$2 = function (C, x) { + anObject$j(C); + if (isObject$8(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; + }; + + var $$u = _export; + var getBuiltIn$3 = getBuiltIn$c; + var FORCED_PROMISE_CONSTRUCTOR = promiseConstructorDetection.CONSTRUCTOR; + var promiseResolve$1 = promiseResolve$2; + + getBuiltIn$3('Promise'); + + // `Promise.resolve` method + // https://tc39.es/ecma262/#sec-promise.resolve + $$u({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { + resolve: function resolve(x) { + return promiseResolve$1(this, x); + } + }); + + var $$t = _export; + var NativePromiseConstructor = promiseNativeConstructor; + var fails$m = fails$N; + var getBuiltIn$2 = getBuiltIn$c; + var isCallable$7 = isCallable$w; + var speciesConstructor$1 = speciesConstructor$3; + var promiseResolve = promiseResolve$2; + var defineBuiltIn$8 = defineBuiltIn$g; + + var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; + + // Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829 + var NON_GENERIC = !!NativePromiseConstructor && fails$m(function () { + // eslint-disable-next-line unicorn/no-thenable -- required for testing + NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ }); + }); + + // `Promise.prototype.finally` method + // https://tc39.es/ecma262/#sec-promise.prototype.finally + $$t({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, { + 'finally': function (onFinally) { + var C = speciesConstructor$1(this, getBuiltIn$2('Promise')); + var isFunction = isCallable$7(onFinally); + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); + } + }); + + // makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then` + if (isCallable$7(NativePromiseConstructor)) { + var method = getBuiltIn$2('Promise').prototype['finally']; + if (NativePromisePrototype['finally'] !== method) { + defineBuiltIn$8(NativePromisePrototype, 'finally', method, { unsafe: true }); + } + } + + var isObject$7 = isObject$q; + var classof$7 = classofRaw$2; + var wellKnownSymbol$b = wellKnownSymbol$u; + + var MATCH$2 = wellKnownSymbol$b('match'); + + // `IsRegExp` abstract operation + // https://tc39.es/ecma262/#sec-isregexp + var isRegexp = function (it) { + var isRegExp; + return isObject$7(it) && ((isRegExp = it[MATCH$2]) !== undefined ? !!isRegExp : classof$7(it) === 'RegExp'); + }; + + var anObject$i = anObject$t; + + // `RegExp.prototype.flags` getter implementation + // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags + var regexpFlags$1 = function () { + var that = anObject$i(this); + var result = ''; + if (that.hasIndices) result += 'd'; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.dotAll) result += 's'; + if (that.unicode) result += 'u'; + if (that.unicodeSets) result += 'v'; + if (that.sticky) result += 'y'; + return result; + }; + + var call$k = functionCall; + var hasOwn$9 = hasOwnProperty_1; + var isPrototypeOf$3 = objectIsPrototypeOf; + var regExpFlags = regexpFlags$1; + + var RegExpPrototype$4 = RegExp.prototype; + + var regexpGetFlags = function (R) { + var flags = R.flags; + return flags === undefined && !('flags' in RegExpPrototype$4) && !hasOwn$9(R, 'flags') && isPrototypeOf$3(RegExpPrototype$4, R) + ? call$k(regExpFlags, R) : flags; + }; + + var fails$l = fails$N; + var global$k = global$K; + + // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError + var $RegExp$2 = global$k.RegExp; + + var UNSUPPORTED_Y$3 = fails$l(function () { + var re = $RegExp$2('a', 'y'); + re.lastIndex = 2; + return re.exec('abcd') !== null; + }); + + // UC Browser bug + // https://github.com/zloirock/core-js/issues/1008 + var MISSED_STICKY$1 = UNSUPPORTED_Y$3 || fails$l(function () { + return !$RegExp$2('a', 'y').sticky; + }); + + var BROKEN_CARET = UNSUPPORTED_Y$3 || fails$l(function () { + // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 + var re = $RegExp$2('^r', 'gy'); + re.lastIndex = 2; + return re.exec('str') !== null; + }); + + var regexpStickyHelpers = { + BROKEN_CARET: BROKEN_CARET, + MISSED_STICKY: MISSED_STICKY$1, + UNSUPPORTED_Y: UNSUPPORTED_Y$3 + }; + + var fails$k = fails$N; + var global$j = global$K; + + // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError + var $RegExp$1 = global$j.RegExp; + + var regexpUnsupportedDotAll = fails$k(function () { + var re = $RegExp$1('.', 's'); + return !(re.dotAll && re.test('\n') && re.flags === 's'); + }); + + var fails$j = fails$N; + var global$i = global$K; + + // babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError + var $RegExp = global$i.RegExp; + + var regexpUnsupportedNcg = fails$j(function () { + var re = $RegExp('(?b)', 'g'); + return re.exec('b').groups.a !== 'b' || + 'b'.replace(re, '$c') !== 'bc'; + }); + + var DESCRIPTORS$d = descriptors; + var global$h = global$K; + var uncurryThis$r = functionUncurryThis; + var isForced = isForced_1; + var inheritIfRequired$2 = inheritIfRequired$5; + var createNonEnumerableProperty$7 = createNonEnumerableProperty$e; + var create$4 = objectCreate; + var getOwnPropertyNames$1 = objectGetOwnPropertyNames.f; + var isPrototypeOf$2 = objectIsPrototypeOf; + var isRegExp$1 = isRegexp; + var toString$d = toString$i; + var getRegExpFlags$1 = regexpGetFlags; + var stickyHelpers$2 = regexpStickyHelpers; + var proxyAccessor = proxyAccessor$2; + var defineBuiltIn$7 = defineBuiltIn$g; + var fails$i = fails$N; + var hasOwn$8 = hasOwnProperty_1; + var enforceInternalState$3 = internalState.enforce; + var setSpecies$1 = setSpecies$4; + var wellKnownSymbol$a = wellKnownSymbol$u; + var UNSUPPORTED_DOT_ALL$2 = regexpUnsupportedDotAll; + var UNSUPPORTED_NCG$1 = regexpUnsupportedNcg; + + var MATCH$1 = wellKnownSymbol$a('match'); + var NativeRegExp = global$h.RegExp; + var RegExpPrototype$3 = NativeRegExp.prototype; + var SyntaxError$2 = global$h.SyntaxError; + var exec$5 = uncurryThis$r(RegExpPrototype$3.exec); + var charAt$7 = uncurryThis$r(''.charAt); + var replace$5 = uncurryThis$r(''.replace); + var stringIndexOf$2 = uncurryThis$r(''.indexOf); + var stringSlice$8 = uncurryThis$r(''.slice); + // TODO: Use only proper RegExpIdentifierName + var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/; + var re1 = /a/g; + var re2 = /a/g; + + // "new" should create a new object, old webkit bug + var CORRECT_NEW = new NativeRegExp(re1) !== re1; + + var MISSED_STICKY = stickyHelpers$2.MISSED_STICKY; + var UNSUPPORTED_Y$2 = stickyHelpers$2.UNSUPPORTED_Y; + + var BASE_FORCED = DESCRIPTORS$d && + (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL$2 || UNSUPPORTED_NCG$1 || fails$i(function () { + re2[MATCH$1] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i'; + })); + + var handleDotAll = function (string) { + var length = string.length; + var index = 0; + var result = ''; + var brackets = false; + var chr; + for (; index <= length; index++) { + chr = charAt$7(string, index); + if (chr === '\\') { + result += chr + charAt$7(string, ++index); + continue; + } + if (!brackets && chr === '.') { + result += '[\\s\\S]'; + } else { + if (chr === '[') { + brackets = true; + } else if (chr === ']') { + brackets = false; + } result += chr; + } + } return result; + }; + + var handleNCG = function (string) { + var length = string.length; + var index = 0; + var result = ''; + var named = []; + var names = create$4(null); + var brackets = false; + var ncg = false; + var groupid = 0; + var groupname = ''; + var chr; + for (; index <= length; index++) { + chr = charAt$7(string, index); + if (chr === '\\') { + chr += charAt$7(string, ++index); + } else if (chr === ']') { + brackets = false; + } else if (!brackets) switch (true) { + case chr === '[': + brackets = true; + break; + case chr === '(': + if (exec$5(IS_NCG, stringSlice$8(string, index + 1))) { + index += 2; + ncg = true; + } + result += chr; + groupid++; + continue; + case chr === '>' && ncg: + if (groupname === '' || hasOwn$8(names, groupname)) { + throw new SyntaxError$2('Invalid capture group name'); + } + names[groupname] = true; + named[named.length] = [groupname, groupid]; + ncg = false; + groupname = ''; + continue; + } + if (ncg) groupname += chr; + else result += chr; + } return [result, named]; + }; + + // `RegExp` constructor + // https://tc39.es/ecma262/#sec-regexp-constructor + if (isForced('RegExp', BASE_FORCED)) { + var RegExpWrapper = function RegExp(pattern, flags) { + var thisIsRegExp = isPrototypeOf$2(RegExpPrototype$3, this); + var patternIsRegExp = isRegExp$1(pattern); + var flagsAreUndefined = flags === undefined; + var groups = []; + var rawPattern = pattern; + var rawFlags, dotAll, sticky, handled, result, state; + + if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) { + return pattern; + } + + if (patternIsRegExp || isPrototypeOf$2(RegExpPrototype$3, pattern)) { + pattern = pattern.source; + if (flagsAreUndefined) flags = getRegExpFlags$1(rawPattern); + } + + pattern = pattern === undefined ? '' : toString$d(pattern); + flags = flags === undefined ? '' : toString$d(flags); + rawPattern = pattern; + + if (UNSUPPORTED_DOT_ALL$2 && 'dotAll' in re1) { + dotAll = !!flags && stringIndexOf$2(flags, 's') > -1; + if (dotAll) flags = replace$5(flags, /s/g, ''); + } + + rawFlags = flags; + + if (MISSED_STICKY && 'sticky' in re1) { + sticky = !!flags && stringIndexOf$2(flags, 'y') > -1; + if (sticky && UNSUPPORTED_Y$2) flags = replace$5(flags, /y/g, ''); + } + + if (UNSUPPORTED_NCG$1) { + handled = handleNCG(pattern); + pattern = handled[0]; + groups = handled[1]; + } + + result = inheritIfRequired$2(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype$3, RegExpWrapper); + + if (dotAll || sticky || groups.length) { + state = enforceInternalState$3(result); + if (dotAll) { + state.dotAll = true; + state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags); + } + if (sticky) state.sticky = true; + if (groups.length) state.groups = groups; + } + + if (pattern !== rawPattern) try { + // fails in old engines, but we have no alternatives for unsupported regex syntax + createNonEnumerableProperty$7(result, 'source', rawPattern === '' ? '(?:)' : rawPattern); + } catch (error) { /* empty */ } + + return result; + }; + + for (var keys$1 = getOwnPropertyNames$1(NativeRegExp), index = 0; keys$1.length > index;) { + proxyAccessor(RegExpWrapper, NativeRegExp, keys$1[index++]); + } + + RegExpPrototype$3.constructor = RegExpWrapper; + RegExpWrapper.prototype = RegExpPrototype$3; + defineBuiltIn$7(global$h, 'RegExp', RegExpWrapper, { constructor: true }); + } + + // https://tc39.es/ecma262/#sec-get-regexp-@@species + setSpecies$1('RegExp'); + + var DESCRIPTORS$c = descriptors; + var UNSUPPORTED_DOT_ALL$1 = regexpUnsupportedDotAll; + var classof$6 = classofRaw$2; + var defineBuiltInAccessor$8 = defineBuiltInAccessor$d; + var getInternalState$4 = internalState.get; + + var RegExpPrototype$2 = RegExp.prototype; + var $TypeError$7 = TypeError; + + // `RegExp.prototype.dotAll` getter + // https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall + if (DESCRIPTORS$c && UNSUPPORTED_DOT_ALL$1) { + defineBuiltInAccessor$8(RegExpPrototype$2, 'dotAll', { + configurable: true, + get: function dotAll() { + if (this === RegExpPrototype$2) return; + // We can't use InternalStateModule.getterFor because + // we don't add metadata for regexps created by a literal. + if (classof$6(this) === 'RegExp') { + return !!getInternalState$4(this).dotAll; + } + throw new $TypeError$7('Incompatible receiver, RegExp required'); + } + }); + } + + /* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ + /* eslint-disable regexp/no-useless-quantifier -- testing */ + var call$j = functionCall; + var uncurryThis$q = functionUncurryThis; + var toString$c = toString$i; + var regexpFlags = regexpFlags$1; + var stickyHelpers$1 = regexpStickyHelpers; + var shared = shared$4; + var create$3 = objectCreate; + var getInternalState$3 = internalState.get; + var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll; + var UNSUPPORTED_NCG = regexpUnsupportedNcg; + + var nativeReplace = shared('native-string-replace', String.prototype.replace); + var nativeExec = RegExp.prototype.exec; + var patchedExec = nativeExec; + var charAt$6 = uncurryThis$q(''.charAt); + var indexOf = uncurryThis$q(''.indexOf); + var replace$4 = uncurryThis$q(''.replace); + var stringSlice$7 = uncurryThis$q(''.slice); + + var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/; + var re2 = /b*/g; + call$j(nativeExec, re1, 'a'); + call$j(nativeExec, re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; + })(); + + var UNSUPPORTED_Y$1 = stickyHelpers$1.BROKEN_CARET; + + // nonparticipating capturing group, copied from es5-shim's String#split patch. + var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + + var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$1 || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG; + + if (PATCH) { + patchedExec = function exec(string) { + var re = this; + var state = getInternalState$3(re); + var str = toString$c(string); + var raw = state.raw; + var result, reCopy, lastIndex, match, i, object, group; + + if (raw) { + raw.lastIndex = re.lastIndex; + result = call$j(patchedExec, raw, str); + re.lastIndex = raw.lastIndex; + return result; + } + + var groups = state.groups; + var sticky = UNSUPPORTED_Y$1 && re.sticky; + var flags = call$j(regexpFlags, re); + var source = re.source; + var charsAdded = 0; + var strCopy = str; + + if (sticky) { + flags = replace$4(flags, 'y', ''); + if (indexOf(flags, 'g') === -1) { + flags += 'g'; + } + + strCopy = stringSlice$7(str, re.lastIndex); + // Support anchored sticky behavior. + if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt$6(str, re.lastIndex - 1) !== '\n')) { + source = '(?: ' + source + ')'; + strCopy = ' ' + strCopy; + charsAdded++; + } + // ^(? + rx + ) is needed, in combination with some str slicing, to + // simulate the 'y' flag. + reCopy = new RegExp('^(?:' + source + ')', flags); + } + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + source + '$(?!\\s)', flags); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; + + match = call$j(nativeExec, sticky ? reCopy : re, strCopy); + + if (sticky) { + if (match) { + match.input = stringSlice$7(match.input, charsAdded); + match[0] = stringSlice$7(match[0], charsAdded); + match.index = re.lastIndex; + re.lastIndex += match[0].length; + } else re.lastIndex = 0; + } else if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/ + call$j(nativeReplace, match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + if (match && groups) { + match.groups = object = create$3(null); + for (i = 0; i < groups.length; i++) { + group = groups[i]; + object[group[0]] = match[group[1]]; + } + } + + return match; + }; + } + + var regexpExec$2 = patchedExec; + + var $$s = _export; + var exec$4 = regexpExec$2; + + // `RegExp.prototype.exec` method + // https://tc39.es/ecma262/#sec-regexp.prototype.exec + $$s({ target: 'RegExp', proto: true, forced: /./.exec !== exec$4 }, { + exec: exec$4 + }); + + // TODO: Remove from `core-js@4` since it's moved to entry points + + var $$r = _export; + var call$i = functionCall; + var isCallable$6 = isCallable$w; + var anObject$h = anObject$t; + var toString$b = toString$i; + + var DELEGATES_TO_EXEC = function () { + var execCalled = false; + var re = /[ac]/; + re.exec = function () { + execCalled = true; + return /./.exec.apply(this, arguments); + }; + return re.test('abc') === true && execCalled; + }(); + + var nativeTest = /./.test; + + // `RegExp.prototype.test` method + // https://tc39.es/ecma262/#sec-regexp.prototype.test + $$r({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, { + test: function (S) { + var R = anObject$h(this); + var string = toString$b(S); + var exec = R.exec; + if (!isCallable$6(exec)) return call$i(nativeTest, R, string); + var result = call$i(exec, R, string); + if (result === null) return false; + anObject$h(result); + return true; + } + }); + + var PROPER_FUNCTION_NAME$1 = functionName.PROPER; + var defineBuiltIn$6 = defineBuiltIn$g; + var anObject$g = anObject$t; + var $toString$2 = toString$i; + var fails$h = fails$N; + var getRegExpFlags = regexpGetFlags; + + var TO_STRING = 'toString'; + var RegExpPrototype$1 = RegExp.prototype; + var nativeToString = RegExpPrototype$1[TO_STRING]; + + var NOT_GENERIC = fails$h(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; }); + // FF44- RegExp#toString has a wrong name + var INCORRECT_NAME = PROPER_FUNCTION_NAME$1 && nativeToString.name !== TO_STRING; + + // `RegExp.prototype.toString` method + // https://tc39.es/ecma262/#sec-regexp.prototype.tostring + if (NOT_GENERIC || INCORRECT_NAME) { + defineBuiltIn$6(RegExpPrototype$1, TO_STRING, function toString() { + var R = anObject$g(this); + var pattern = $toString$2(R.source); + var flags = $toString$2(getRegExpFlags(R)); + return '/' + pattern + '/' + flags; + }, { unsafe: true }); + } + + var collection$1 = collection$3; + var collectionStrong = collectionStrong$2; + + // `Set` constructor + // https://tc39.es/ecma262/#sec-set-objects + collection$1('Set', function (init) { + return function Set() { return init(this, arguments.length ? arguments[0] : undefined); }; + }, collectionStrong); + + var isRegExp = isRegexp; + + var $TypeError$6 = TypeError; + + var notARegexp = function (it) { + if (isRegExp(it)) { + throw new $TypeError$6("The method doesn't accept regular expressions"); + } return it; + }; + + var wellKnownSymbol$9 = wellKnownSymbol$u; + + var MATCH = wellKnownSymbol$9('match'); + + var correctIsRegexpLogic = function (METHOD_NAME) { + var regexp = /./; + try { + '/./'[METHOD_NAME](regexp); + } catch (error1) { + try { + regexp[MATCH] = false; + return '/./'[METHOD_NAME](regexp); + } catch (error2) { /* empty */ } + } return false; + }; + + var $$q = _export; + var uncurryThis$p = functionUncurryThisClause; + var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f; + var toLength$5 = toLength$8; + var toString$a = toString$i; + var notARegExp$2 = notARegexp; + var requireObjectCoercible$6 = requireObjectCoercible$a; + var correctIsRegExpLogic$2 = correctIsRegexpLogic; + + var slice$3 = uncurryThis$p(''.slice); + var min$3 = Math.min; + + var CORRECT_IS_REGEXP_LOGIC$1 = correctIsRegExpLogic$2('endsWith'); + // https://github.com/zloirock/core-js/pull/702 + var MDN_POLYFILL_BUG$1 = !CORRECT_IS_REGEXP_LOGIC$1 && !!function () { + var descriptor = getOwnPropertyDescriptor$2(String.prototype, 'endsWith'); + return descriptor && !descriptor.writable; + }(); + + // `String.prototype.endsWith` method + // https://tc39.es/ecma262/#sec-string.prototype.endswith + $$q({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG$1 && !CORRECT_IS_REGEXP_LOGIC$1 }, { + endsWith: function endsWith(searchString /* , endPosition = @length */) { + var that = toString$a(requireObjectCoercible$6(this)); + notARegExp$2(searchString); + var endPosition = arguments.length > 1 ? arguments[1] : undefined; + var len = that.length; + var end = endPosition === undefined ? len : min$3(toLength$5(endPosition), len); + var search = toString$a(searchString); + return slice$3(that, end - search.length, end) === search; + } + }); + + var $$p = _export; + var uncurryThis$o = functionUncurryThis; + var notARegExp$1 = notARegexp; + var requireObjectCoercible$5 = requireObjectCoercible$a; + var toString$9 = toString$i; + var correctIsRegExpLogic$1 = correctIsRegexpLogic; + + var stringIndexOf$1 = uncurryThis$o(''.indexOf); + + // `String.prototype.includes` method + // https://tc39.es/ecma262/#sec-string.prototype.includes + $$p({ target: 'String', proto: true, forced: !correctIsRegExpLogic$1('includes') }, { + includes: function includes(searchString /* , position = 0 */) { + return !!~stringIndexOf$1( + toString$9(requireObjectCoercible$5(this)), + toString$9(notARegExp$1(searchString)), + arguments.length > 1 ? arguments[1] : undefined + ); + } + }); + + // TODO: Remove from `core-js@4` since it's moved to entry points + + var call$h = functionCall; + var defineBuiltIn$5 = defineBuiltIn$g; + var regexpExec$1 = regexpExec$2; + var fails$g = fails$N; + var wellKnownSymbol$8 = wellKnownSymbol$u; + var createNonEnumerableProperty$6 = createNonEnumerableProperty$e; + + var SPECIES = wellKnownSymbol$8('species'); + var RegExpPrototype = RegExp.prototype; + + var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) { + var SYMBOL = wellKnownSymbol$8(KEY); + + var DELEGATES_TO_SYMBOL = !fails$g(function () { + // String methods call symbol-named RegExp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) !== 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$g(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + + if (KEY === 'split') { + // We can't use real regex here since it causes deoptimization + // and serious performance degradation in V8 + // https://github.com/zloirock/core-js/issues/306 + re = {}; + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; + re.flags = ''; + re[SYMBOL] = /./[SYMBOL]; + } + + re.exec = function () { + execCalled = true; + return null; + }; + + re[SYMBOL](''); + return !execCalled; + }); + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + FORCED + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { + var $exec = regexp.exec; + if ($exec === regexpExec$1 || $exec === RegExpPrototype.exec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: call$h(nativeRegExpMethod, regexp, str, arg2) }; + } + return { done: true, value: call$h(nativeMethod, str, regexp, arg2) }; + } + return { done: false }; + }); + + defineBuiltIn$5(String.prototype, KEY, methods[0]); + defineBuiltIn$5(RegExpPrototype, SYMBOL, methods[1]); + } + + if (SHAM) createNonEnumerableProperty$6(RegExpPrototype[SYMBOL], 'sham', true); + }; + + var uncurryThis$n = functionUncurryThis; + var toIntegerOrInfinity$7 = toIntegerOrInfinity$d; + var toString$8 = toString$i; + var requireObjectCoercible$4 = requireObjectCoercible$a; + + var charAt$5 = uncurryThis$n(''.charAt); + var charCodeAt$1 = uncurryThis$n(''.charCodeAt); + var stringSlice$6 = uncurryThis$n(''.slice); + + var createMethod$1 = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = toString$8(requireObjectCoercible$4($this)); + var position = toIntegerOrInfinity$7(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = charCodeAt$1(S, position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = charCodeAt$1(S, position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING + ? charAt$5(S, position) + : first + : CONVERT_TO_STRING + ? stringSlice$6(S, position, position + 2) + : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; + }; + + var stringMultibyte = { + // `String.prototype.codePointAt` method + // https://tc39.es/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod$1(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod$1(true) + }; + + var charAt$4 = stringMultibyte.charAt; + + // `AdvanceStringIndex` abstract operation + // https://tc39.es/ecma262/#sec-advancestringindex + var advanceStringIndex$2 = function (S, index, unicode) { + return index + (unicode ? charAt$4(S, index).length : 1); + }; + + var uncurryThis$m = functionUncurryThis; + var toObject$4 = toObject$g; + + var floor$4 = Math.floor; + var charAt$3 = uncurryThis$m(''.charAt); + var replace$3 = uncurryThis$m(''.replace); + var stringSlice$5 = uncurryThis$m(''.slice); + // eslint-disable-next-line redos/no-vulnerable -- safe + var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g; + var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; + + // `GetSubstitution` abstract operation + // https://tc39.es/ecma262/#sec-getsubstitution + var getSubstitution$1 = function (matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject$4(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return replace$3(replacement, symbols, function (match, ch) { + var capture; + switch (charAt$3(ch, 0)) { + case '$': return '$'; + case '&': return matched; + case '`': return stringSlice$5(str, 0, position); + case "'": return stringSlice$5(str, tailPos); + case '<': + capture = namedCaptures[stringSlice$5(ch, 1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor$4(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? charAt$3(ch, 1) : captures[f - 1] + charAt$3(ch, 1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); + }; + + var call$g = functionCall; + var anObject$f = anObject$t; + var isCallable$5 = isCallable$w; + var classof$5 = classofRaw$2; + var regexpExec = regexpExec$2; + + var $TypeError$5 = TypeError; + + // `RegExpExec` abstract operation + // https://tc39.es/ecma262/#sec-regexpexec + var regexpExecAbstract = function (R, S) { + var exec = R.exec; + if (isCallable$5(exec)) { + var result = call$g(exec, R, S); + if (result !== null) anObject$f(result); + return result; + } + if (classof$5(R) === 'RegExp') return call$g(regexpExec, R, S); + throw new $TypeError$5('RegExp#exec called on incompatible receiver'); + }; + + var apply = functionApply; + var call$f = functionCall; + var uncurryThis$l = functionUncurryThis; + var fixRegExpWellKnownSymbolLogic$2 = fixRegexpWellKnownSymbolLogic; + var fails$f = fails$N; + var anObject$e = anObject$t; + var isCallable$4 = isCallable$w; + var isNullOrUndefined$3 = isNullOrUndefined$a; + var toIntegerOrInfinity$6 = toIntegerOrInfinity$d; + var toLength$4 = toLength$8; + var toString$7 = toString$i; + var requireObjectCoercible$3 = requireObjectCoercible$a; + var advanceStringIndex$1 = advanceStringIndex$2; + var getMethod$3 = getMethod$7; + var getSubstitution = getSubstitution$1; + var regExpExec$2 = regexpExecAbstract; + var wellKnownSymbol$7 = wellKnownSymbol$u; + + var REPLACE = wellKnownSymbol$7('replace'); + var max$1 = Math.max; + var min$2 = Math.min; + var concat$1 = uncurryThis$l([].concat); + var push$7 = uncurryThis$l([].push); + var stringIndexOf = uncurryThis$l(''.indexOf); + var stringSlice$4 = uncurryThis$l(''.slice); + + var maybeToString = function (it) { + return it === undefined ? it : String(it); + }; + + // IE <= 11 replaces $0 with the whole match, as if it was $& + // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 + var REPLACE_KEEPS_$0 = (function () { + // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing + return 'a'.replace(/./, '$0') === '$0'; + })(); + + // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { + if (/./[REPLACE]) { + return /./[REPLACE]('a', '$0') === ''; + } + return false; + })(); + + var REPLACE_SUPPORTS_NAMED_GROUPS = !fails$f(function () { + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive + return ''.replace(re, '$') !== '7'; + }); + + // @@replace logic + fixRegExpWellKnownSymbolLogic$2('replace', function (_, nativeReplace, maybeCallNative) { + var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; + + return [ + // `String.prototype.replace` method + // https://tc39.es/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = requireObjectCoercible$3(this); + var replacer = isNullOrUndefined$3(searchValue) ? undefined : getMethod$3(searchValue, REPLACE); + return replacer + ? call$f(replacer, searchValue, O, replaceValue) + : call$f(nativeReplace, toString$7(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace + function (string, replaceValue) { + var rx = anObject$e(this); + var S = toString$7(string); + + if ( + typeof replaceValue == 'string' && + stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 && + stringIndexOf(replaceValue, '$<') === -1 + ) { + var res = maybeCallNative(nativeReplace, rx, S, replaceValue); + if (res.done) return res.value; + } + + var functionalReplace = isCallable$4(replaceValue); + if (!functionalReplace) replaceValue = toString$7(replaceValue); + + var global = rx.global; + var fullUnicode; + if (global) { + fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + + var results = []; + var result; + while (true) { + result = regExpExec$2(rx, S); + if (result === null) break; + + push$7(results, result); + if (!global) break; + + var matchStr = toString$7(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex$1(S, toLength$4(rx.lastIndex), fullUnicode); + } + + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + + var matched = toString$7(result[0]); + var position = max$1(min$2(toIntegerOrInfinity$6(result.index), S.length), 0); + var captures = []; + var replacement; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) push$7(captures, maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = concat$1([matched], captures, position, S); + if (namedCaptures !== undefined) push$7(replacerArgs, namedCaptures); + replacement = toString$7(apply(replaceValue, undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += stringSlice$4(S, nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + + return accumulatedResult + stringSlice$4(S, nextSourcePosition); + } + ]; + }, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE); + + // `SameValue` abstract operation + // https://tc39.es/ecma262/#sec-samevalue + // eslint-disable-next-line es/no-object-is -- safe + var sameValue$1 = Object.is || function is(x, y) { + // eslint-disable-next-line no-self-compare -- NaN check + return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y; + }; + + var call$e = functionCall; + var fixRegExpWellKnownSymbolLogic$1 = fixRegexpWellKnownSymbolLogic; + var anObject$d = anObject$t; + var isNullOrUndefined$2 = isNullOrUndefined$a; + var requireObjectCoercible$2 = requireObjectCoercible$a; + var sameValue = sameValue$1; + var toString$6 = toString$i; + var getMethod$2 = getMethod$7; + var regExpExec$1 = regexpExecAbstract; + + // @@search logic + fixRegExpWellKnownSymbolLogic$1('search', function (SEARCH, nativeSearch, maybeCallNative) { + return [ + // `String.prototype.search` method + // https://tc39.es/ecma262/#sec-string.prototype.search + function search(regexp) { + var O = requireObjectCoercible$2(this); + var searcher = isNullOrUndefined$2(regexp) ? undefined : getMethod$2(regexp, SEARCH); + return searcher ? call$e(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString$6(O)); + }, + // `RegExp.prototype[@@search]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@search + function (string) { + var rx = anObject$d(this); + var S = toString$6(string); + var res = maybeCallNative(nativeSearch, rx, S); + + if (res.done) return res.value; + + var previousLastIndex = rx.lastIndex; + if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; + var result = regExpExec$1(rx, S); + if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; + return result === null ? -1 : result.index; + } + ]; + }); + + var call$d = functionCall; + var uncurryThis$k = functionUncurryThis; + var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic; + var anObject$c = anObject$t; + var isNullOrUndefined$1 = isNullOrUndefined$a; + var requireObjectCoercible$1 = requireObjectCoercible$a; + var speciesConstructor = speciesConstructor$3; + var advanceStringIndex = advanceStringIndex$2; + var toLength$3 = toLength$8; + var toString$5 = toString$i; + var getMethod$1 = getMethod$7; + var regExpExec = regexpExecAbstract; + var stickyHelpers = regexpStickyHelpers; + var fails$e = fails$N; + + var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; + var MAX_UINT32 = 0xFFFFFFFF; + var min$1 = Math.min; + var push$6 = uncurryThis$k([].push); + var stringSlice$3 = uncurryThis$k(''.slice); + + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec + // Weex JS has frozen built-in prototypes, so use try / catch wrapper + var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails$e(function () { + // eslint-disable-next-line regexp/no-empty-group -- required for testing + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; + }); + + var BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' || + // eslint-disable-next-line regexp/no-empty-group -- required for testing + 'test'.split(/(?:)/, -1).length !== 4 || + 'ab'.split(/(?:ab)*/).length !== 2 || + '.'.split(/(.?)(.?)/).length !== 4 || + // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing + '.'.split(/()()/).length > 1 || + ''.split(/.?/).length; + + // @@split logic + fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) { + var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) { + return separator === undefined && limit === 0 ? [] : call$d(nativeSplit, this, separator, limit); + } : nativeSplit; + + return [ + // `String.prototype.split` method + // https://tc39.es/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = requireObjectCoercible$1(this); + var splitter = isNullOrUndefined$1(separator) ? undefined : getMethod$1(separator, SPLIT); + return splitter + ? call$d(splitter, separator, O, limit) + : call$d(internalSplit, toString$5(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (string, limit) { + var rx = anObject$c(this); + var S = toString$5(string); + + if (!BUGGY) { + var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit); + if (res.done) return res.value; + } + + var C = speciesConstructor(rx, RegExp); + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (UNSUPPORTED_Y ? 'g' : 'y'); + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = UNSUPPORTED_Y ? 0 : q; + var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice$3(S, q) : S); + var e; + if ( + z === null || + (e = min$1(toLength$3(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + push$6(A, stringSlice$3(S, p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + push$6(A, z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + push$6(A, stringSlice$3(S, p)); + return A; + } + ]; + }, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y); + + var $$o = _export; + var uncurryThis$j = functionUncurryThisClause; + var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; + var toLength$2 = toLength$8; + var toString$4 = toString$i; + var notARegExp = notARegexp; + var requireObjectCoercible = requireObjectCoercible$a; + var correctIsRegExpLogic = correctIsRegexpLogic; + + var stringSlice$2 = uncurryThis$j(''.slice); + var min = Math.min; + + var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); + // https://github.com/zloirock/core-js/pull/702 + var MDN_POLYFILL_BUG = !CORRECT_IS_REGEXP_LOGIC && !!function () { + var descriptor = getOwnPropertyDescriptor$1(String.prototype, 'startsWith'); + return descriptor && !descriptor.writable; + }(); + + // `String.prototype.startsWith` method + // https://tc39.es/ecma262/#sec-string.prototype.startswith + $$o({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { + startsWith: function startsWith(searchString /* , position = 0 */) { + var that = toString$4(requireObjectCoercible(this)); + notARegExp(searchString); + var index = toLength$2(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); + var search = toString$4(searchString); + return stringSlice$2(that, index, index + search.length) === search; + } + }); + + var typedArrayConstructor = {exports: {}}; + + // eslint-disable-next-line es/no-typed-arrays -- safe + var arrayBufferBasicDetection = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined'; + + var NATIVE_ARRAY_BUFFER$1 = arrayBufferBasicDetection; + var DESCRIPTORS$b = descriptors; + var global$g = global$K; + var isCallable$3 = isCallable$w; + var isObject$6 = isObject$q; + var hasOwn$7 = hasOwnProperty_1; + var classof$4 = classof$h; + var tryToString = tryToString$6; + var createNonEnumerableProperty$5 = createNonEnumerableProperty$e; + var defineBuiltIn$4 = defineBuiltIn$g; + var defineBuiltInAccessor$7 = defineBuiltInAccessor$d; + var isPrototypeOf$1 = objectIsPrototypeOf; + var getPrototypeOf$2 = objectGetPrototypeOf$1; + var setPrototypeOf$2 = objectSetPrototypeOf; + var wellKnownSymbol$6 = wellKnownSymbol$u; + var uid = uid$4; + var InternalStateModule$7 = internalState; + + var enforceInternalState$2 = InternalStateModule$7.enforce; + var getInternalState$2 = InternalStateModule$7.get; + var Int8Array$3 = global$g.Int8Array; + var Int8ArrayPrototype$1 = Int8Array$3 && Int8Array$3.prototype; + var Uint8ClampedArray$1 = global$g.Uint8ClampedArray; + var Uint8ClampedArrayPrototype = Uint8ClampedArray$1 && Uint8ClampedArray$1.prototype; + var TypedArray$1 = Int8Array$3 && getPrototypeOf$2(Int8Array$3); + var TypedArrayPrototype$2 = Int8ArrayPrototype$1 && getPrototypeOf$2(Int8ArrayPrototype$1); + var ObjectPrototype$1 = Object.prototype; + var TypeError$3 = global$g.TypeError; + + var TO_STRING_TAG$2 = wellKnownSymbol$6('toStringTag'); + var TYPED_ARRAY_TAG$1 = uid('TYPED_ARRAY_TAG'); + var TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor'; + // Fixing native typed arrays in Opera Presto crashes the browser, see #595 + var NATIVE_ARRAY_BUFFER_VIEWS$2 = NATIVE_ARRAY_BUFFER$1 && !!setPrototypeOf$2 && classof$4(global$g.opera) !== 'Opera'; + var TYPED_ARRAY_TAG_REQUIRED = false; + var NAME, Constructor, Prototype; + + var TypedArrayConstructorsList = { + Int8Array: 1, + Uint8Array: 1, + Uint8ClampedArray: 1, + Int16Array: 2, + Uint16Array: 2, + Int32Array: 4, + Uint32Array: 4, + Float32Array: 4, + Float64Array: 8 + }; + + var BigIntArrayConstructorsList = { + BigInt64Array: 8, + BigUint64Array: 8 + }; + + var isView = function isView(it) { + if (!isObject$6(it)) return false; + var klass = classof$4(it); + return klass === 'DataView' + || hasOwn$7(TypedArrayConstructorsList, klass) + || hasOwn$7(BigIntArrayConstructorsList, klass); + }; + + var getTypedArrayConstructor$3 = function (it) { + var proto = getPrototypeOf$2(it); + if (!isObject$6(proto)) return; + var state = getInternalState$2(proto); + return (state && hasOwn$7(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor$3(proto); + }; + + var isTypedArray$1 = function (it) { + if (!isObject$6(it)) return false; + var klass = classof$4(it); + return hasOwn$7(TypedArrayConstructorsList, klass) + || hasOwn$7(BigIntArrayConstructorsList, klass); + }; + + var aTypedArray$a = function (it) { + if (isTypedArray$1(it)) return it; + throw new TypeError$3('Target is not a typed array'); + }; + + var aTypedArrayConstructor$1 = function (C) { + if (isCallable$3(C) && (!setPrototypeOf$2 || isPrototypeOf$1(TypedArray$1, C))) return C; + throw new TypeError$3(tryToString(C) + ' is not a typed array constructor'); + }; + + var exportTypedArrayMethod$b = function (KEY, property, forced, options) { + if (!DESCRIPTORS$b) return; + if (forced) for (var ARRAY in TypedArrayConstructorsList) { + var TypedArrayConstructor = global$g[ARRAY]; + if (TypedArrayConstructor && hasOwn$7(TypedArrayConstructor.prototype, KEY)) try { + delete TypedArrayConstructor.prototype[KEY]; + } catch (error) { + // old WebKit bug - some methods are non-configurable + try { + TypedArrayConstructor.prototype[KEY] = property; + } catch (error2) { /* empty */ } + } + } + if (!TypedArrayPrototype$2[KEY] || forced) { + defineBuiltIn$4(TypedArrayPrototype$2, KEY, forced ? property + : NATIVE_ARRAY_BUFFER_VIEWS$2 && Int8ArrayPrototype$1[KEY] || property, options); + } + }; + + var exportTypedArrayStaticMethod = function (KEY, property, forced) { + var ARRAY, TypedArrayConstructor; + if (!DESCRIPTORS$b) return; + if (setPrototypeOf$2) { + if (forced) for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global$g[ARRAY]; + if (TypedArrayConstructor && hasOwn$7(TypedArrayConstructor, KEY)) try { + delete TypedArrayConstructor[KEY]; + } catch (error) { /* empty */ } + } + if (!TypedArray$1[KEY] || forced) { + // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable + try { + return defineBuiltIn$4(TypedArray$1, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS$2 && TypedArray$1[KEY] || property); + } catch (error) { /* empty */ } + } else return; + } + for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global$g[ARRAY]; + if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { + defineBuiltIn$4(TypedArrayConstructor, KEY, property); + } + } + }; + + for (NAME in TypedArrayConstructorsList) { + Constructor = global$g[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) enforceInternalState$2(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; + else NATIVE_ARRAY_BUFFER_VIEWS$2 = false; + } + + for (NAME in BigIntArrayConstructorsList) { + Constructor = global$g[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) enforceInternalState$2(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; + } + + // WebKit bug - typed arrays constructors prototype is Object.prototype + if (!NATIVE_ARRAY_BUFFER_VIEWS$2 || !isCallable$3(TypedArray$1) || TypedArray$1 === Function.prototype) { + // eslint-disable-next-line no-shadow -- safe + TypedArray$1 = function TypedArray() { + throw new TypeError$3('Incorrect invocation'); + }; + if (NATIVE_ARRAY_BUFFER_VIEWS$2) for (NAME in TypedArrayConstructorsList) { + if (global$g[NAME]) setPrototypeOf$2(global$g[NAME], TypedArray$1); + } + } + + if (!NATIVE_ARRAY_BUFFER_VIEWS$2 || !TypedArrayPrototype$2 || TypedArrayPrototype$2 === ObjectPrototype$1) { + TypedArrayPrototype$2 = TypedArray$1.prototype; + if (NATIVE_ARRAY_BUFFER_VIEWS$2) for (NAME in TypedArrayConstructorsList) { + if (global$g[NAME]) setPrototypeOf$2(global$g[NAME].prototype, TypedArrayPrototype$2); + } + } + + // WebKit bug - one more object in Uint8ClampedArray prototype chain + if (NATIVE_ARRAY_BUFFER_VIEWS$2 && getPrototypeOf$2(Uint8ClampedArrayPrototype) !== TypedArrayPrototype$2) { + setPrototypeOf$2(Uint8ClampedArrayPrototype, TypedArrayPrototype$2); + } + + if (DESCRIPTORS$b && !hasOwn$7(TypedArrayPrototype$2, TO_STRING_TAG$2)) { + TYPED_ARRAY_TAG_REQUIRED = true; + defineBuiltInAccessor$7(TypedArrayPrototype$2, TO_STRING_TAG$2, { + configurable: true, + get: function () { + return isObject$6(this) ? this[TYPED_ARRAY_TAG$1] : undefined; + } + }); + for (NAME in TypedArrayConstructorsList) if (global$g[NAME]) { + createNonEnumerableProperty$5(global$g[NAME], TYPED_ARRAY_TAG$1, NAME); + } + } + + var arrayBufferViewCore = { + NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS$2, + TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG$1, + aTypedArray: aTypedArray$a, + aTypedArrayConstructor: aTypedArrayConstructor$1, + exportTypedArrayMethod: exportTypedArrayMethod$b, + exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, + getTypedArrayConstructor: getTypedArrayConstructor$3, + isView: isView, + isTypedArray: isTypedArray$1, + TypedArray: TypedArray$1, + TypedArrayPrototype: TypedArrayPrototype$2 + }; + + /* eslint-disable no-new -- required for testing */ + var global$f = global$K; + var fails$d = fails$N; + var checkCorrectnessOfIteration = checkCorrectnessOfIteration$4; + var NATIVE_ARRAY_BUFFER_VIEWS$1 = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; + + var ArrayBuffer$2 = global$f.ArrayBuffer; + var Int8Array$2 = global$f.Int8Array; + + var typedArrayConstructorsRequireWrappers = !NATIVE_ARRAY_BUFFER_VIEWS$1 || !fails$d(function () { + Int8Array$2(1); + }) || !fails$d(function () { + new Int8Array$2(-1); + }) || !checkCorrectnessOfIteration(function (iterable) { + new Int8Array$2(); + new Int8Array$2(null); + new Int8Array$2(1.5); + new Int8Array$2(iterable); + }, true) || fails$d(function () { + // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill + return new Int8Array$2(new ArrayBuffer$2(2), 1, undefined).length !== 1; + }); + + // `Math.sign` method implementation + // https://tc39.es/ecma262/#sec-math.sign + // eslint-disable-next-line es/no-math-sign -- safe + var mathSign = Math.sign || function sign(x) { + var n = +x; + // eslint-disable-next-line no-self-compare -- NaN check + return n === 0 || n !== n ? n : n < 0 ? -1 : 1; + }; + + var sign = mathSign; + + var abs$2 = Math.abs; + + var EPSILON = 2.220446049250313e-16; // Number.EPSILON + var INVERSE_EPSILON = 1 / EPSILON; + + var roundTiesToEven = function (n) { + return n + INVERSE_EPSILON - INVERSE_EPSILON; + }; + + var mathFloatRound = function (x, FLOAT_EPSILON, FLOAT_MAX_VALUE, FLOAT_MIN_VALUE) { + var n = +x; + var absolute = abs$2(n); + var s = sign(n); + if (absolute < FLOAT_MIN_VALUE) return s * roundTiesToEven(absolute / FLOAT_MIN_VALUE / FLOAT_EPSILON) * FLOAT_MIN_VALUE * FLOAT_EPSILON; + var a = (1 + FLOAT_EPSILON / EPSILON) * absolute; + var result = a - (a - absolute); + // eslint-disable-next-line no-self-compare -- NaN check + if (result > FLOAT_MAX_VALUE || result !== result) return s * Infinity; + return s * result; + }; + + var floatRound = mathFloatRound; + + var FLOAT32_EPSILON = 1.1920928955078125e-7; // 2 ** -23; + var FLOAT32_MAX_VALUE = 3.4028234663852886e+38; // 2 ** 128 - 2 ** 104 + var FLOAT32_MIN_VALUE = 1.1754943508222875e-38; // 2 ** -126; + + // `Math.fround` method implementation + // https://tc39.es/ecma262/#sec-math.fround + // eslint-disable-next-line es/no-math-fround -- safe + var mathFround = Math.fround || function fround(x) { + return floatRound(x, FLOAT32_EPSILON, FLOAT32_MAX_VALUE, FLOAT32_MIN_VALUE); + }; + + // IEEE754 conversions based on https://github.com/feross/ieee754 + var $Array = Array; + var abs$1 = Math.abs; + var pow$1 = Math.pow; + var floor$3 = Math.floor; + var log = Math.log; + var LN2 = Math.LN2; + + var pack = function (number, mantissaLength, bytes) { + var buffer = $Array(bytes); + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var rt = mantissaLength === 23 ? pow$1(2, -24) - pow$1(2, -77) : 0; + var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0; + var index = 0; + var exponent, mantissa, c; + number = abs$1(number); + // eslint-disable-next-line no-self-compare -- NaN check + if (number !== number || number === Infinity) { + // eslint-disable-next-line no-self-compare -- NaN check + mantissa = number !== number ? 1 : 0; + exponent = eMax; + } else { + exponent = floor$3(log(number) / LN2); + c = pow$1(2, -exponent); + if (number * c < 1) { + exponent--; + c *= 2; + } + if (exponent + eBias >= 1) { + number += rt / c; + } else { + number += rt * pow$1(2, 1 - eBias); + } + if (number * c >= 2) { + exponent++; + c /= 2; + } + if (exponent + eBias >= eMax) { + mantissa = 0; + exponent = eMax; + } else if (exponent + eBias >= 1) { + mantissa = (number * c - 1) * pow$1(2, mantissaLength); + exponent += eBias; + } else { + mantissa = number * pow$1(2, eBias - 1) * pow$1(2, mantissaLength); + exponent = 0; + } + } + while (mantissaLength >= 8) { + buffer[index++] = mantissa & 255; + mantissa /= 256; + mantissaLength -= 8; + } + exponent = exponent << mantissaLength | mantissa; + exponentLength += mantissaLength; + while (exponentLength > 0) { + buffer[index++] = exponent & 255; + exponent /= 256; + exponentLength -= 8; + } + buffer[--index] |= sign * 128; + return buffer; + }; + + var unpack = function (buffer, mantissaLength) { + var bytes = buffer.length; + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var nBits = exponentLength - 7; + var index = bytes - 1; + var sign = buffer[index--]; + var exponent = sign & 127; + var mantissa; + sign >>= 7; + while (nBits > 0) { + exponent = exponent * 256 + buffer[index--]; + nBits -= 8; + } + mantissa = exponent & (1 << -nBits) - 1; + exponent >>= -nBits; + nBits += mantissaLength; + while (nBits > 0) { + mantissa = mantissa * 256 + buffer[index--]; + nBits -= 8; + } + if (exponent === 0) { + exponent = 1 - eBias; + } else if (exponent === eMax) { + return mantissa ? NaN : sign ? -Infinity : Infinity; + } else { + mantissa += pow$1(2, mantissaLength); + exponent -= eBias; + } return (sign ? -1 : 1) * mantissa * pow$1(2, exponent - mantissaLength); + }; + + var ieee754 = { + pack: pack, + unpack: unpack + }; + + var toObject$3 = toObject$g; + var toAbsoluteIndex = toAbsoluteIndex$4; + var lengthOfArrayLike$8 = lengthOfArrayLike$m; + + // `Array.prototype.fill` method implementation + // https://tc39.es/ecma262/#sec-array.prototype.fill + var arrayFill$1 = function fill(value /* , start = 0, end = @length */) { + var O = toObject$3(this); + var length = lengthOfArrayLike$8(O); + var argumentsLength = arguments.length; + var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); + var end = argumentsLength > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex(end, length); + while (endPos > index) O[index++] = value; + return O; + }; + + var global$e = global$K; + var uncurryThis$i = functionUncurryThis; + var DESCRIPTORS$a = descriptors; + var NATIVE_ARRAY_BUFFER = arrayBufferBasicDetection; + var FunctionName = functionName; + var createNonEnumerableProperty$4 = createNonEnumerableProperty$e; + var defineBuiltInAccessor$6 = defineBuiltInAccessor$d; + var defineBuiltIns$4 = defineBuiltIns$6; + var fails$c = fails$N; + var anInstance$5 = anInstance$9; + var toIntegerOrInfinity$5 = toIntegerOrInfinity$d; + var toLength$1 = toLength$8; + var toIndex$1 = toIndex$3; + var fround = mathFround; + var IEEE754 = ieee754; + var getPrototypeOf$1 = objectGetPrototypeOf$1; + var setPrototypeOf$1 = objectSetPrototypeOf; + var arrayFill = arrayFill$1; + var arraySlice$1 = arraySlice$6; + var inheritIfRequired$1 = inheritIfRequired$5; + var copyConstructorProperties = copyConstructorProperties$4; + var setToStringTag$3 = setToStringTag$a; + var InternalStateModule$6 = internalState; + + var PROPER_FUNCTION_NAME = FunctionName.PROPER; + var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; + var ARRAY_BUFFER = 'ArrayBuffer'; + var DATA_VIEW = 'DataView'; + var PROTOTYPE = 'prototype'; + var WRONG_LENGTH$1 = 'Wrong length'; + var WRONG_INDEX = 'Wrong index'; + var getInternalArrayBufferState = InternalStateModule$6.getterFor(ARRAY_BUFFER); + var getInternalDataViewState = InternalStateModule$6.getterFor(DATA_VIEW); + var setInternalState$6 = InternalStateModule$6.set; + var NativeArrayBuffer = global$e[ARRAY_BUFFER]; + var $ArrayBuffer = NativeArrayBuffer; + var ArrayBufferPrototype$1 = $ArrayBuffer && $ArrayBuffer[PROTOTYPE]; + var $DataView = global$e[DATA_VIEW]; + var DataViewPrototype = $DataView && $DataView[PROTOTYPE]; + var ObjectPrototype = Object.prototype; + var Array$1 = global$e.Array; + var RangeError$3 = global$e.RangeError; + var fill = uncurryThis$i(arrayFill); + var reverse = uncurryThis$i([].reverse); + + var packIEEE754 = IEEE754.pack; + var unpackIEEE754 = IEEE754.unpack; + + var packInt8 = function (number) { + return [number & 0xFF]; + }; + + var packInt16 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF]; + }; + + var packInt32 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF]; + }; + + var unpackInt32 = function (buffer) { + return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0]; + }; + + var packFloat32 = function (number) { + return packIEEE754(fround(number), 23, 4); + }; + + var packFloat64 = function (number) { + return packIEEE754(number, 52, 8); + }; + + var addGetter$1 = function (Constructor, key, getInternalState) { + defineBuiltInAccessor$6(Constructor[PROTOTYPE], key, { + configurable: true, + get: function () { + return getInternalState(this)[key]; + } + }); + }; + + var get = function (view, count, index, isLittleEndian) { + var store = getInternalDataViewState(view); + var intIndex = toIndex$1(index); + var boolIsLittleEndian = !!isLittleEndian; + if (intIndex + count > store.byteLength) throw new RangeError$3(WRONG_INDEX); + var bytes = store.bytes; + var start = intIndex + store.byteOffset; + var pack = arraySlice$1(bytes, start, start + count); + return boolIsLittleEndian ? pack : reverse(pack); + }; + + var set = function (view, count, index, conversion, value, isLittleEndian) { + var store = getInternalDataViewState(view); + var intIndex = toIndex$1(index); + var pack = conversion(+value); + var boolIsLittleEndian = !!isLittleEndian; + if (intIndex + count > store.byteLength) throw new RangeError$3(WRONG_INDEX); + var bytes = store.bytes; + var start = intIndex + store.byteOffset; + for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1]; + }; + + if (!NATIVE_ARRAY_BUFFER) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance$5(this, ArrayBufferPrototype$1); + var byteLength = toIndex$1(length); + setInternalState$6(this, { + type: ARRAY_BUFFER, + bytes: fill(Array$1(byteLength), 0), + byteLength: byteLength + }); + if (!DESCRIPTORS$a) { + this.byteLength = byteLength; + this.detached = false; + } + }; + + ArrayBufferPrototype$1 = $ArrayBuffer[PROTOTYPE]; + + $DataView = function DataView(buffer, byteOffset, byteLength) { + anInstance$5(this, DataViewPrototype); + anInstance$5(buffer, ArrayBufferPrototype$1); + var bufferState = getInternalArrayBufferState(buffer); + var bufferLength = bufferState.byteLength; + var offset = toIntegerOrInfinity$5(byteOffset); + if (offset < 0 || offset > bufferLength) throw new RangeError$3('Wrong offset'); + byteLength = byteLength === undefined ? bufferLength - offset : toLength$1(byteLength); + if (offset + byteLength > bufferLength) throw new RangeError$3(WRONG_LENGTH$1); + setInternalState$6(this, { + type: DATA_VIEW, + buffer: buffer, + byteLength: byteLength, + byteOffset: offset, + bytes: bufferState.bytes + }); + if (!DESCRIPTORS$a) { + this.buffer = buffer; + this.byteLength = byteLength; + this.byteOffset = offset; + } + }; + + DataViewPrototype = $DataView[PROTOTYPE]; + + if (DESCRIPTORS$a) { + addGetter$1($ArrayBuffer, 'byteLength', getInternalArrayBufferState); + addGetter$1($DataView, 'buffer', getInternalDataViewState); + addGetter$1($DataView, 'byteLength', getInternalDataViewState); + addGetter$1($DataView, 'byteOffset', getInternalDataViewState); + } + + defineBuiltIns$4(DataViewPrototype, { + getInt8: function getInt8(byteOffset) { + return get(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset) { + return get(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)); + }, + getUint32: function getUint32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23); + }, + getFloat64: function getFloat64(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52); + }, + setInt8: function setInt8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setUint8: function setUint8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setInt16: function setInt16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false); + }, + setUint16: function setUint16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false); + }, + setInt32: function setInt32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false); + }, + setUint32: function setUint32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false); + }, + setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false); + }, + setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { + set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false); + } + }); + } else { + var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER; + /* eslint-disable no-new -- required for testing */ + if (!fails$c(function () { + NativeArrayBuffer(1); + }) || !fails$c(function () { + new NativeArrayBuffer(-1); + }) || fails$c(function () { + new NativeArrayBuffer(); + new NativeArrayBuffer(1.5); + new NativeArrayBuffer(NaN); + return NativeArrayBuffer.length !== 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME; + })) { + /* eslint-enable no-new -- required for testing */ + $ArrayBuffer = function ArrayBuffer(length) { + anInstance$5(this, ArrayBufferPrototype$1); + return inheritIfRequired$1(new NativeArrayBuffer(toIndex$1(length)), this, $ArrayBuffer); + }; + + $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype$1; + + ArrayBufferPrototype$1.constructor = $ArrayBuffer; + + copyConstructorProperties($ArrayBuffer, NativeArrayBuffer); + } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty$4(NativeArrayBuffer, 'name', ARRAY_BUFFER); + } + + // WebKit bug - the same parent prototype for typed arrays and data view + if (setPrototypeOf$1 && getPrototypeOf$1(DataViewPrototype) !== ObjectPrototype) { + setPrototypeOf$1(DataViewPrototype, ObjectPrototype); + } + + // iOS Safari 7.x bug + var testView = new $DataView(new $ArrayBuffer(2)); + var $setInt8 = uncurryThis$i(DataViewPrototype.setInt8); + testView.setInt8(0, 2147483648); + testView.setInt8(1, 2147483649); + if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns$4(DataViewPrototype, { + setInt8: function setInt8(byteOffset, value) { + $setInt8(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value) { + $setInt8(this, byteOffset, value << 24 >> 24); + } + }, { unsafe: true }); + } + + setToStringTag$3($ArrayBuffer, ARRAY_BUFFER); + setToStringTag$3($DataView, DATA_VIEW); + + var arrayBuffer = { + ArrayBuffer: $ArrayBuffer, + DataView: $DataView + }; + + var isObject$5 = isObject$q; + + var floor$2 = Math.floor; + + // `IsIntegralNumber` abstract operation + // https://tc39.es/ecma262/#sec-isintegralnumber + // eslint-disable-next-line es/no-number-isinteger -- safe + var isIntegralNumber$1 = Number.isInteger || function isInteger(it) { + return !isObject$5(it) && isFinite(it) && floor$2(it) === it; + }; + + var toIntegerOrInfinity$4 = toIntegerOrInfinity$d; + + var $RangeError$4 = RangeError; + + var toPositiveInteger$1 = function (it) { + var result = toIntegerOrInfinity$4(it); + if (result < 0) throw new $RangeError$4("The argument can't be less than 0"); + return result; + }; + + var toPositiveInteger = toPositiveInteger$1; + + var $RangeError$3 = RangeError; + + var toOffset$2 = function (it, BYTES) { + var offset = toPositiveInteger(it); + if (offset % BYTES) throw new $RangeError$3('Wrong offset'); + return offset; + }; + + var round = Math.round; + + var toUint8Clamped$1 = function (it) { + var value = round(it); + return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF; + }; + + var classof$3 = classof$h; + + var isBigIntArray$2 = function (it) { + var klass = classof$3(it); + return klass === 'BigInt64Array' || klass === 'BigUint64Array'; + }; + + var toPrimitive = toPrimitive$2; + + var $TypeError$4 = TypeError; + + // `ToBigInt` abstract operation + // https://tc39.es/ecma262/#sec-tobigint + var toBigInt$3 = function (argument) { + var prim = toPrimitive(argument, 'number'); + if (typeof prim == 'number') throw new $TypeError$4("Can't convert number to bigint"); + // eslint-disable-next-line es/no-bigint -- safe + return BigInt(prim); + }; + + var bind$3 = functionBindContext; + var call$c = functionCall; + var aConstructor = aConstructor$2; + var toObject$2 = toObject$g; + var lengthOfArrayLike$7 = lengthOfArrayLike$m; + var getIterator$1 = getIterator$4; + var getIteratorMethod$1 = getIteratorMethod$5; + var isArrayIteratorMethod = isArrayIteratorMethod$3; + var isBigIntArray$1 = isBigIntArray$2; + var aTypedArrayConstructor = arrayBufferViewCore.aTypedArrayConstructor; + var toBigInt$2 = toBigInt$3; + + var typedArrayFrom$1 = function from(source /* , mapfn, thisArg */) { + var C = aConstructor(this); + var O = toObject$2(source); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iteratorMethod = getIteratorMethod$1(O); + var i, length, result, thisIsBigIntArray, value, step, iterator, next; + if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) { + iterator = getIterator$1(O, iteratorMethod); + next = iterator.next; + O = []; + while (!(step = call$c(next, iterator)).done) { + O.push(step.value); + } + } + if (mapping && argumentsLength > 2) { + mapfn = bind$3(mapfn, arguments[2]); + } + length = lengthOfArrayLike$7(O); + result = new (aTypedArrayConstructor(C))(length); + thisIsBigIntArray = isBigIntArray$1(result); + for (i = 0; length > i; i++) { + value = mapping ? mapfn(O[i], i) : O[i]; + // FF30- typed arrays doesn't properly convert objects to typed array values + result[i] = thisIsBigIntArray ? toBigInt$2(value) : +value; + } + return result; + }; + + var lengthOfArrayLike$6 = lengthOfArrayLike$m; + + var arrayFromConstructorAndList$2 = function (Constructor, list, $length) { + var index = 0; + var length = arguments.length > 2 ? $length : lengthOfArrayLike$6(list); + var result = new Constructor(length); + while (length > index) result[index] = list[index++]; + return result; + }; + + var $$n = _export; + var global$d = global$K; + var call$b = functionCall; + var DESCRIPTORS$9 = descriptors; + var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = typedArrayConstructorsRequireWrappers; + var ArrayBufferViewCore$a = arrayBufferViewCore; + var ArrayBufferModule = arrayBuffer; + var anInstance$4 = anInstance$9; + var createPropertyDescriptor$1 = createPropertyDescriptor$7; + var createNonEnumerableProperty$3 = createNonEnumerableProperty$e; + var isIntegralNumber = isIntegralNumber$1; + var toLength = toLength$8; + var toIndex = toIndex$3; + var toOffset$1 = toOffset$2; + var toUint8Clamped = toUint8Clamped$1; + var toPropertyKey = toPropertyKey$3; + var hasOwn$6 = hasOwnProperty_1; + var classof$2 = classof$h; + var isObject$4 = isObject$q; + var isSymbol = isSymbol$4; + var create$2 = objectCreate; + var isPrototypeOf = objectIsPrototypeOf; + var setPrototypeOf = objectSetPrototypeOf; + var getOwnPropertyNames = objectGetOwnPropertyNames.f; + var typedArrayFrom = typedArrayFrom$1; + var forEach$4 = arrayIteration.forEach; + var setSpecies = setSpecies$4; + var defineBuiltInAccessor$5 = defineBuiltInAccessor$d; + var definePropertyModule = objectDefineProperty; + var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor; + var arrayFromConstructorAndList$1 = arrayFromConstructorAndList$2; + var InternalStateModule$5 = internalState; + var inheritIfRequired = inheritIfRequired$5; + + var getInternalState$1 = InternalStateModule$5.get; + var setInternalState$5 = InternalStateModule$5.set; + var enforceInternalState$1 = InternalStateModule$5.enforce; + var nativeDefineProperty = definePropertyModule.f; + var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + var RangeError$2 = global$d.RangeError; + var ArrayBuffer$1 = ArrayBufferModule.ArrayBuffer; + var ArrayBufferPrototype = ArrayBuffer$1.prototype; + var DataView$1 = ArrayBufferModule.DataView; + var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore$a.NATIVE_ARRAY_BUFFER_VIEWS; + var TYPED_ARRAY_TAG = ArrayBufferViewCore$a.TYPED_ARRAY_TAG; + var TypedArray = ArrayBufferViewCore$a.TypedArray; + var TypedArrayPrototype$1 = ArrayBufferViewCore$a.TypedArrayPrototype; + var isTypedArray = ArrayBufferViewCore$a.isTypedArray; + var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; + var WRONG_LENGTH = 'Wrong length'; + + var addGetter = function (it, key) { + defineBuiltInAccessor$5(it, key, { + configurable: true, + get: function () { + return getInternalState$1(this)[key]; + } + }); + }; + + var isArrayBuffer = function (it) { + var klass; + return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof$2(it)) === 'ArrayBuffer' || klass === 'SharedArrayBuffer'; + }; + + var isTypedArrayIndex = function (target, key) { + return isTypedArray(target) + && !isSymbol(key) + && key in target + && isIntegralNumber(+key) + && key >= 0; + }; + + var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) { + key = toPropertyKey(key); + return isTypedArrayIndex(target, key) + ? createPropertyDescriptor$1(2, target[key]) + : nativeGetOwnPropertyDescriptor(target, key); + }; + + var wrappedDefineProperty = function defineProperty(target, key, descriptor) { + key = toPropertyKey(key); + if (isTypedArrayIndex(target, key) + && isObject$4(descriptor) + && hasOwn$6(descriptor, 'value') + && !hasOwn$6(descriptor, 'get') + && !hasOwn$6(descriptor, 'set') + // TODO: add validation descriptor w/o calling accessors + && !descriptor.configurable + && (!hasOwn$6(descriptor, 'writable') || descriptor.writable) + && (!hasOwn$6(descriptor, 'enumerable') || descriptor.enumerable) + ) { + target[key] = descriptor.value; + return target; + } return nativeDefineProperty(target, key, descriptor); + }; + + if (DESCRIPTORS$9) { + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor; + definePropertyModule.f = wrappedDefineProperty; + addGetter(TypedArrayPrototype$1, 'buffer'); + addGetter(TypedArrayPrototype$1, 'byteOffset'); + addGetter(TypedArrayPrototype$1, 'byteLength'); + addGetter(TypedArrayPrototype$1, 'length'); + } + + $$n({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, { + getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor, + defineProperty: wrappedDefineProperty + }); + + typedArrayConstructor.exports = function (TYPE, wrapper, CLAMPED) { + var BYTES = TYPE.match(/\d+/)[0] / 8; + var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array'; + var GETTER = 'get' + TYPE; + var SETTER = 'set' + TYPE; + var NativeTypedArrayConstructor = global$d[CONSTRUCTOR_NAME]; + var TypedArrayConstructor = NativeTypedArrayConstructor; + var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype; + var exported = {}; + + var getter = function (that, index) { + var data = getInternalState$1(that); + return data.view[GETTER](index * BYTES + data.byteOffset, true); + }; + + var setter = function (that, index, value) { + var data = getInternalState$1(that); + data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true); + }; + + var addElement = function (that, index) { + nativeDefineProperty(that, index, { + get: function () { + return getter(this, index); + }, + set: function (value) { + return setter(this, index, value); + }, + enumerable: true + }); + }; + + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + TypedArrayConstructor = wrapper(function (that, data, offset, $length) { + anInstance$4(that, TypedArrayConstructorPrototype); + var index = 0; + var byteOffset = 0; + var buffer, byteLength, length; + if (!isObject$4(data)) { + length = toIndex(data); + byteLength = length * BYTES; + buffer = new ArrayBuffer$1(byteLength); + } else if (isArrayBuffer(data)) { + buffer = data; + byteOffset = toOffset$1(offset, BYTES); + var $len = data.byteLength; + if ($length === undefined) { + if ($len % BYTES) throw new RangeError$2(WRONG_LENGTH); + byteLength = $len - byteOffset; + if (byteLength < 0) throw new RangeError$2(WRONG_LENGTH); + } else { + byteLength = toLength($length) * BYTES; + if (byteLength + byteOffset > $len) throw new RangeError$2(WRONG_LENGTH); + } + length = byteLength / BYTES; + } else if (isTypedArray(data)) { + return arrayFromConstructorAndList$1(TypedArrayConstructor, data); + } else { + return call$b(typedArrayFrom, TypedArrayConstructor, data); + } + setInternalState$5(that, { + buffer: buffer, + byteOffset: byteOffset, + byteLength: byteLength, + length: length, + view: new DataView$1(buffer) + }); + while (index < length) addElement(that, index++); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create$2(TypedArrayPrototype$1); + } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) { + TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) { + anInstance$4(dummy, TypedArrayConstructorPrototype); + return inheritIfRequired(function () { + if (!isObject$4(data)) return new NativeTypedArrayConstructor(toIndex(data)); + if (isArrayBuffer(data)) return $length !== undefined + ? new NativeTypedArrayConstructor(data, toOffset$1(typedArrayOffset, BYTES), $length) + : typedArrayOffset !== undefined + ? new NativeTypedArrayConstructor(data, toOffset$1(typedArrayOffset, BYTES)) + : new NativeTypedArrayConstructor(data); + if (isTypedArray(data)) return arrayFromConstructorAndList$1(TypedArrayConstructor, data); + return call$b(typedArrayFrom, TypedArrayConstructor, data); + }(), dummy, TypedArrayConstructor); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + forEach$4(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) { + if (!(key in TypedArrayConstructor)) { + createNonEnumerableProperty$3(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]); + } + }); + TypedArrayConstructor.prototype = TypedArrayConstructorPrototype; + } + + if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) { + createNonEnumerableProperty$3(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor); + } + + enforceInternalState$1(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor; + + if (TYPED_ARRAY_TAG) { + createNonEnumerableProperty$3(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME); + } + + var FORCED = TypedArrayConstructor !== NativeTypedArrayConstructor; + + exported[CONSTRUCTOR_NAME] = TypedArrayConstructor; + + $$n({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported); + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) { + createNonEnumerableProperty$3(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES); + } + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) { + createNonEnumerableProperty$3(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES); + } + + setSpecies(CONSTRUCTOR_NAME); + }; + } else typedArrayConstructor.exports = function () { /* empty */ }; + + var typedArrayConstructorExports = typedArrayConstructor.exports; + + var createTypedArrayConstructor$5 = typedArrayConstructorExports; + + // `Float32Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$5('Float32', function (init) { + return function Float32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var createTypedArrayConstructor$4 = typedArrayConstructorExports; + + // `Int32Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$4('Int32', function (init) { + return function Int32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var createTypedArrayConstructor$3 = typedArrayConstructorExports; + + // `Uint8Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$3('Uint8', function (init) { + return function Uint8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var createTypedArrayConstructor$2 = typedArrayConstructorExports; + + // `Uint8ClampedArray` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$2('Uint8', function (init) { + return function Uint8ClampedArray(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }, true); + + var ArrayBufferViewCore$9 = arrayBufferViewCore; + var lengthOfArrayLike$5 = lengthOfArrayLike$m; + var toIntegerOrInfinity$3 = toIntegerOrInfinity$d; + + var aTypedArray$9 = ArrayBufferViewCore$9.aTypedArray; + var exportTypedArrayMethod$a = ArrayBufferViewCore$9.exportTypedArrayMethod; + + // `%TypedArray%.prototype.at` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.at + exportTypedArrayMethod$a('at', function at(index) { + var O = aTypedArray$9(this); + var len = lengthOfArrayLike$5(O); + var relativeIndex = toIntegerOrInfinity$3(index); + var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; + return (k < 0 || k >= len) ? undefined : O[k]; + }); + + var ArrayBufferViewCore$8 = arrayBufferViewCore; + var $fill = arrayFill$1; + var toBigInt$1 = toBigInt$3; + var classof$1 = classof$h; + var call$a = functionCall; + var uncurryThis$h = functionUncurryThis; + var fails$b = fails$N; + + var aTypedArray$8 = ArrayBufferViewCore$8.aTypedArray; + var exportTypedArrayMethod$9 = ArrayBufferViewCore$8.exportTypedArrayMethod; + var slice$2 = uncurryThis$h(''.slice); + + // V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18 + var CONVERSION_BUG = fails$b(function () { + var count = 0; + // eslint-disable-next-line es/no-typed-arrays -- safe + new Int8Array(2).fill({ valueOf: function () { return count++; } }); + return count !== 1; + }); + + // `%TypedArray%.prototype.fill` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill + exportTypedArrayMethod$9('fill', function fill(value /* , start, end */) { + var length = arguments.length; + aTypedArray$8(this); + var actualValue = slice$2(classof$1(this), 0, 3) === 'Big' ? toBigInt$1(value) : +value; + return call$a($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined); + }, CONVERSION_BUG); + + var bind$2 = functionBindContext; + var IndexedObject$1 = indexedObject; + var toObject$1 = toObject$g; + var lengthOfArrayLike$4 = lengthOfArrayLike$m; + + // `Array.prototype.{ findLast, findLastIndex }` methods implementation + var createMethod = function (TYPE) { + var IS_FIND_LAST_INDEX = TYPE === 1; + return function ($this, callbackfn, that) { + var O = toObject$1($this); + var self = IndexedObject$1(O); + var index = lengthOfArrayLike$4(self); + var boundFunction = bind$2(callbackfn, that); + var value, result; + while (index-- > 0) { + value = self[index]; + result = boundFunction(value, index, O); + if (result) switch (TYPE) { + case 0: return value; // findLast + case 1: return index; // findLastIndex + } + } + return IS_FIND_LAST_INDEX ? -1 : undefined; + }; + }; + + var arrayIterationFromLast = { + // `Array.prototype.findLast` method + // https://github.com/tc39/proposal-array-find-from-last + findLast: createMethod(0), + // `Array.prototype.findLastIndex` method + // https://github.com/tc39/proposal-array-find-from-last + findLastIndex: createMethod(1) + }; + + var ArrayBufferViewCore$7 = arrayBufferViewCore; + var $findLast = arrayIterationFromLast.findLast; + + var aTypedArray$7 = ArrayBufferViewCore$7.aTypedArray; + var exportTypedArrayMethod$8 = ArrayBufferViewCore$7.exportTypedArrayMethod; + + // `%TypedArray%.prototype.findLast` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast + exportTypedArrayMethod$8('findLast', function findLast(predicate /* , thisArg */) { + return $findLast(aTypedArray$7(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }); + + var ArrayBufferViewCore$6 = arrayBufferViewCore; + var $findLastIndex = arrayIterationFromLast.findLastIndex; + + var aTypedArray$6 = ArrayBufferViewCore$6.aTypedArray; + var exportTypedArrayMethod$7 = ArrayBufferViewCore$6.exportTypedArrayMethod; + + // `%TypedArray%.prototype.findLastIndex` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex + exportTypedArrayMethod$7('findLastIndex', function findLastIndex(predicate /* , thisArg */) { + return $findLastIndex(aTypedArray$6(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }); + + var global$c = global$K; + var fails$a = fails$N; + var uncurryThis$g = functionUncurryThis; + var ArrayBufferViewCore$5 = arrayBufferViewCore; + var ArrayIterators = es_array_iterator; + var wellKnownSymbol$5 = wellKnownSymbol$u; + + var ITERATOR$4 = wellKnownSymbol$5('iterator'); + var Uint8Array$1 = global$c.Uint8Array; + var arrayValues = uncurryThis$g(ArrayIterators.values); + var arrayKeys = uncurryThis$g(ArrayIterators.keys); + var arrayEntries = uncurryThis$g(ArrayIterators.entries); + var aTypedArray$5 = ArrayBufferViewCore$5.aTypedArray; + var exportTypedArrayMethod$6 = ArrayBufferViewCore$5.exportTypedArrayMethod; + var TypedArrayPrototype = Uint8Array$1 && Uint8Array$1.prototype; + + var GENERIC = !fails$a(function () { + TypedArrayPrototype[ITERATOR$4].call([1]); + }); + + var ITERATOR_IS_VALUES = !!TypedArrayPrototype + && TypedArrayPrototype.values + && TypedArrayPrototype[ITERATOR$4] === TypedArrayPrototype.values + && TypedArrayPrototype.values.name === 'values'; + + var typedArrayValues = function values() { + return arrayValues(aTypedArray$5(this)); + }; + + // `%TypedArray%.prototype.entries` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries + exportTypedArrayMethod$6('entries', function entries() { + return arrayEntries(aTypedArray$5(this)); + }, GENERIC); + // `%TypedArray%.prototype.keys` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys + exportTypedArrayMethod$6('keys', function keys() { + return arrayKeys(aTypedArray$5(this)); + }, GENERIC); + // `%TypedArray%.prototype.values` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.values + exportTypedArrayMethod$6('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' }); + // `%TypedArray%.prototype[@@iterator]` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator + exportTypedArrayMethod$6(ITERATOR$4, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' }); + + var global$b = global$K; + var call$9 = functionCall; + var ArrayBufferViewCore$4 = arrayBufferViewCore; + var lengthOfArrayLike$3 = lengthOfArrayLike$m; + var toOffset = toOffset$2; + var toIndexedObject = toObject$g; + var fails$9 = fails$N; + + var RangeError$1 = global$b.RangeError; + var Int8Array$1 = global$b.Int8Array; + var Int8ArrayPrototype = Int8Array$1 && Int8Array$1.prototype; + var $set = Int8ArrayPrototype && Int8ArrayPrototype.set; + var aTypedArray$4 = ArrayBufferViewCore$4.aTypedArray; + var exportTypedArrayMethod$5 = ArrayBufferViewCore$4.exportTypedArrayMethod; + + var WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails$9(function () { + // eslint-disable-next-line es/no-typed-arrays -- required for testing + var array = new Uint8ClampedArray(2); + call$9($set, array, { length: 1, 0: 3 }, 1); + return array[1] !== 3; + }); + + // https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other + var TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore$4.NATIVE_ARRAY_BUFFER_VIEWS && fails$9(function () { + var array = new Int8Array$1(2); + array.set(1); + array.set('2', 1); + return array[0] !== 0 || array[1] !== 2; + }); + + // `%TypedArray%.prototype.set` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.set + exportTypedArrayMethod$5('set', function set(arrayLike /* , offset */) { + aTypedArray$4(this); + var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1); + var src = toIndexedObject(arrayLike); + if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call$9($set, this, src, offset); + var length = this.length; + var len = lengthOfArrayLike$3(src); + var index = 0; + if (len + offset > length) throw new RangeError$1('Wrong length'); + while (index < len) this[offset + index] = src[index++]; + }, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG); + + var global$a = global$K; + var uncurryThis$f = functionUncurryThisClause; + var fails$8 = fails$N; + var aCallable$a = aCallable$l; + var internalSort = arraySort$1; + var ArrayBufferViewCore$3 = arrayBufferViewCore; + var FF = engineFfVersion; + var IE_OR_EDGE = engineIsIeOrEdge; + var V8 = engineV8Version; + var WEBKIT = engineWebkitVersion; + + var aTypedArray$3 = ArrayBufferViewCore$3.aTypedArray; + var exportTypedArrayMethod$4 = ArrayBufferViewCore$3.exportTypedArrayMethod; + var Uint16Array = global$a.Uint16Array; + var nativeSort = Uint16Array && uncurryThis$f(Uint16Array.prototype.sort); + + // WebKit + var ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails$8(function () { + nativeSort(new Uint16Array(2), null); + }) && fails$8(function () { + nativeSort(new Uint16Array(2), {}); + })); + + var STABLE_SORT = !!nativeSort && !fails$8(function () { + // feature detection can be too slow, so check engines versions + if (V8) return V8 < 74; + if (FF) return FF < 67; + if (IE_OR_EDGE) return true; + if (WEBKIT) return WEBKIT < 602; + + var array = new Uint16Array(516); + var expected = Array(516); + var index, mod; + + for (index = 0; index < 516; index++) { + mod = index % 4; + array[index] = 515 - index; + expected[index] = index - 2 * mod + 3; + } + + nativeSort(array, function (a, b) { + return (a / 4 | 0) - (b / 4 | 0); + }); + + for (index = 0; index < 516; index++) { + if (array[index] !== expected[index]) return true; + } + }); + + var getSortCompare = function (comparefn) { + return function (x, y) { + if (comparefn !== undefined) return +comparefn(x, y) || 0; + // eslint-disable-next-line no-self-compare -- NaN check + if (y !== y) return -1; + // eslint-disable-next-line no-self-compare -- NaN check + if (x !== x) return 1; + if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1; + return x > y; + }; + }; + + // `%TypedArray%.prototype.sort` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort + exportTypedArrayMethod$4('sort', function sort(comparefn) { + if (comparefn !== undefined) aCallable$a(comparefn); + if (STABLE_SORT) return nativeSort(this, comparefn); + + return internalSort(aTypedArray$3(this), getSortCompare(comparefn)); + }, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS); + + var lengthOfArrayLike$2 = lengthOfArrayLike$m; + + // https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed + // https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed + var arrayToReversed$1 = function (O, C) { + var len = lengthOfArrayLike$2(O); + var A = new C(len); + var k = 0; + for (; k < len; k++) A[k] = O[len - k - 1]; + return A; + }; + + var arrayToReversed = arrayToReversed$1; + var ArrayBufferViewCore$2 = arrayBufferViewCore; + + var aTypedArray$2 = ArrayBufferViewCore$2.aTypedArray; + var exportTypedArrayMethod$3 = ArrayBufferViewCore$2.exportTypedArrayMethod; + var getTypedArrayConstructor$2 = ArrayBufferViewCore$2.getTypedArrayConstructor; + + // `%TypedArray%.prototype.toReversed` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed + exportTypedArrayMethod$3('toReversed', function toReversed() { + return arrayToReversed(aTypedArray$2(this), getTypedArrayConstructor$2(this)); + }); + + var ArrayBufferViewCore$1 = arrayBufferViewCore; + var uncurryThis$e = functionUncurryThis; + var aCallable$9 = aCallable$l; + var arrayFromConstructorAndList = arrayFromConstructorAndList$2; + + var aTypedArray$1 = ArrayBufferViewCore$1.aTypedArray; + var getTypedArrayConstructor$1 = ArrayBufferViewCore$1.getTypedArrayConstructor; + var exportTypedArrayMethod$2 = ArrayBufferViewCore$1.exportTypedArrayMethod; + var sort = uncurryThis$e(ArrayBufferViewCore$1.TypedArrayPrototype.sort); + + // `%TypedArray%.prototype.toSorted` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted + exportTypedArrayMethod$2('toSorted', function toSorted(compareFn) { + if (compareFn !== undefined) aCallable$9(compareFn); + var O = aTypedArray$1(this); + var A = arrayFromConstructorAndList(getTypedArrayConstructor$1(O), O); + return sort(A, compareFn); + }); + + var exportTypedArrayMethod$1 = arrayBufferViewCore.exportTypedArrayMethod; + var fails$7 = fails$N; + var global$9 = global$K; + var uncurryThis$d = functionUncurryThis; + + var Uint8Array = global$9.Uint8Array; + var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {}; + var arrayToString = [].toString; + var join$3 = uncurryThis$d([].join); + + if (fails$7(function () { arrayToString.call({}); })) { + arrayToString = function toString() { + return join$3(this); + }; + } + + var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString !== arrayToString; + + // `%TypedArray%.prototype.toString` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring + exportTypedArrayMethod$1('toString', arrayToString, IS_NOT_ARRAY_METHOD); + + var lengthOfArrayLike$1 = lengthOfArrayLike$m; + var toIntegerOrInfinity$2 = toIntegerOrInfinity$d; + + var $RangeError$2 = RangeError; + + // https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with + // https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with + var arrayWith$1 = function (O, C, index, value) { + var len = lengthOfArrayLike$1(O); + var relativeIndex = toIntegerOrInfinity$2(index); + var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex; + if (actualIndex >= len || actualIndex < 0) throw new $RangeError$2('Incorrect index'); + var A = new C(len); + var k = 0; + for (; k < len; k++) A[k] = k === actualIndex ? value : O[k]; + return A; + }; + + var arrayWith = arrayWith$1; + var ArrayBufferViewCore = arrayBufferViewCore; + var isBigIntArray = isBigIntArray$2; + var toIntegerOrInfinity$1 = toIntegerOrInfinity$d; + var toBigInt = toBigInt$3; + + var aTypedArray = ArrayBufferViewCore.aTypedArray; + var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor; + var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + + var PROPER_ORDER = !!function () { + try { + // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing + new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } }); + } catch (error) { + // some early implementations, like WebKit, does not follow the final semantic + // https://github.com/tc39/proposal-change-array-by-copy/pull/86 + return error === 8; + } + }(); + + // `%TypedArray%.prototype.with` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.with + exportTypedArrayMethod('with', { 'with': function (index, value) { + var O = aTypedArray(this); + var relativeIndex = toIntegerOrInfinity$1(index); + var actualValue = isBigIntArray(O) ? toBigInt(value) : +value; + return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue); + } }['with'], !PROPER_ORDER); + + var uncurryThis$c = functionUncurryThis; + var defineBuiltIns$3 = defineBuiltIns$6; + var getWeakData = internalMetadataExports.getWeakData; + var anInstance$3 = anInstance$9; + var anObject$b = anObject$t; + var isNullOrUndefined = isNullOrUndefined$a; + var isObject$3 = isObject$q; + var iterate$8 = iterate$e; + var ArrayIterationModule = arrayIteration; + var hasOwn$5 = hasOwnProperty_1; + var InternalStateModule$4 = internalState; + + var setInternalState$4 = InternalStateModule$4.set; + var internalStateGetterFor = InternalStateModule$4.getterFor; + var find$1 = ArrayIterationModule.find; + var findIndex = ArrayIterationModule.findIndex; + var splice$1 = uncurryThis$c([].splice); + var id = 0; + + // fallback for uncaught frozen keys + var uncaughtFrozenStore = function (state) { + return state.frozen || (state.frozen = new UncaughtFrozenStore()); + }; + + var UncaughtFrozenStore = function () { + this.entries = []; + }; + + var findUncaughtFrozen = function (store, key) { + return find$1(store.entries, function (it) { + return it[0] === key; + }); + }; + + UncaughtFrozenStore.prototype = { + get: function (key) { + var entry = findUncaughtFrozen(this, key); + if (entry) return entry[1]; + }, + has: function (key) { + return !!findUncaughtFrozen(this, key); + }, + set: function (key, value) { + var entry = findUncaughtFrozen(this, key); + if (entry) entry[1] = value; + else this.entries.push([key, value]); + }, + 'delete': function (key) { + var index = findIndex(this.entries, function (it) { + return it[0] === key; + }); + if (~index) splice$1(this.entries, index, 1); + return !!~index; + } + }; + + var collectionWeak$1 = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var Constructor = wrapper(function (that, iterable) { + anInstance$3(that, Prototype); + setInternalState$4(that, { + type: CONSTRUCTOR_NAME, + id: id++, + frozen: undefined + }); + if (!isNullOrUndefined(iterable)) iterate$8(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); + }); + + var Prototype = Constructor.prototype; + + var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + + var define = function (that, key, value) { + var state = getInternalState(that); + var data = getWeakData(anObject$b(key), true); + if (data === true) uncaughtFrozenStore(state).set(key, value); + else data[state.id] = value; + return that; + }; + + defineBuiltIns$3(Prototype, { + // `{ WeakMap, WeakSet }.prototype.delete(key)` methods + // https://tc39.es/ecma262/#sec-weakmap.prototype.delete + // https://tc39.es/ecma262/#sec-weakset.prototype.delete + 'delete': function (key) { + var state = getInternalState(this); + if (!isObject$3(key)) return false; + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state)['delete'](key); + return data && hasOwn$5(data, state.id) && delete data[state.id]; + }, + // `{ WeakMap, WeakSet }.prototype.has(key)` methods + // https://tc39.es/ecma262/#sec-weakmap.prototype.has + // https://tc39.es/ecma262/#sec-weakset.prototype.has + has: function has(key) { + var state = getInternalState(this); + if (!isObject$3(key)) return false; + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state).has(key); + return data && hasOwn$5(data, state.id); + } + }); + + defineBuiltIns$3(Prototype, IS_MAP ? { + // `WeakMap.prototype.get(key)` method + // https://tc39.es/ecma262/#sec-weakmap.prototype.get + get: function get(key) { + var state = getInternalState(this); + if (isObject$3(key)) { + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state).get(key); + return data ? data[state.id] : undefined; + } + }, + // `WeakMap.prototype.set(key, value)` method + // https://tc39.es/ecma262/#sec-weakmap.prototype.set + set: function set(key, value) { + return define(this, key, value); + } + } : { + // `WeakSet.prototype.add(value)` method + // https://tc39.es/ecma262/#sec-weakset.prototype.add + add: function add(value) { + return define(this, value, true); + } + }); + + return Constructor; + } + }; + + var FREEZING = freezing; + var global$8 = global$K; + var uncurryThis$b = functionUncurryThis; + var defineBuiltIns$2 = defineBuiltIns$6; + var InternalMetadataModule = internalMetadataExports; + var collection = collection$3; + var collectionWeak = collectionWeak$1; + var isObject$2 = isObject$q; + var enforceInternalState = internalState.enforce; + var fails$6 = fails$N; + var NATIVE_WEAK_MAP = weakMapBasicDetection; + + var $Object = Object; + // eslint-disable-next-line es/no-array-isarray -- safe + var isArray$1 = Array.isArray; + // eslint-disable-next-line es/no-object-isextensible -- safe + var isExtensible = $Object.isExtensible; + // eslint-disable-next-line es/no-object-isfrozen -- safe + var isFrozen = $Object.isFrozen; + // eslint-disable-next-line es/no-object-issealed -- safe + var isSealed = $Object.isSealed; + // eslint-disable-next-line es/no-object-freeze -- safe + var freeze = $Object.freeze; + // eslint-disable-next-line es/no-object-seal -- safe + var seal = $Object.seal; + + var IS_IE11 = !global$8.ActiveXObject && 'ActiveXObject' in global$8; + var InternalWeakMap; + + var wrapper = function (init) { + return function WeakMap() { + return init(this, arguments.length ? arguments[0] : undefined); + }; + }; + + // `WeakMap` constructor + // https://tc39.es/ecma262/#sec-weakmap-constructor + var $WeakMap = collection('WeakMap', wrapper, collectionWeak); + var WeakMapPrototype = $WeakMap.prototype; + var nativeSet = uncurryThis$b(WeakMapPrototype.set); + + // Chakra Edge bug: adding frozen arrays to WeakMap unfreeze them + var hasMSEdgeFreezingBug = function () { + return FREEZING && fails$6(function () { + var frozenArray = freeze([]); + nativeSet(new $WeakMap(), frozenArray, 1); + return !isFrozen(frozenArray); + }); + }; + + // IE11 WeakMap frozen keys fix + // We can't use feature detection because it crash some old IE builds + // https://github.com/zloirock/core-js/issues/485 + if (NATIVE_WEAK_MAP) if (IS_IE11) { + InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); + InternalMetadataModule.enable(); + var nativeDelete = uncurryThis$b(WeakMapPrototype['delete']); + var nativeHas = uncurryThis$b(WeakMapPrototype.has); + var nativeGet = uncurryThis$b(WeakMapPrototype.get); + defineBuiltIns$2(WeakMapPrototype, { + 'delete': function (key) { + if (isObject$2(key) && !isExtensible(key)) { + var state = enforceInternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeDelete(this, key) || state.frozen['delete'](key); + } return nativeDelete(this, key); + }, + has: function has(key) { + if (isObject$2(key) && !isExtensible(key)) { + var state = enforceInternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeHas(this, key) || state.frozen.has(key); + } return nativeHas(this, key); + }, + get: function get(key) { + if (isObject$2(key) && !isExtensible(key)) { + var state = enforceInternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key); + } return nativeGet(this, key); + }, + set: function set(key, value) { + if (isObject$2(key) && !isExtensible(key)) { + var state = enforceInternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value); + } else nativeSet(this, key, value); + return this; + } + }); + // Chakra Edge frozen keys fix + } else if (hasMSEdgeFreezingBug()) { + defineBuiltIns$2(WeakMapPrototype, { + set: function set(key, value) { + var arrayIntegrityLevel; + if (isArray$1(key)) { + if (isFrozen(key)) arrayIntegrityLevel = freeze; + else if (isSealed(key)) arrayIntegrityLevel = seal; + } + nativeSet(this, key, value); + if (arrayIntegrityLevel) arrayIntegrityLevel(key); + return this; + } + }); + } + + var $$m = _export; + var global$7 = global$K; + var anInstance$2 = anInstance$9; + var anObject$a = anObject$t; + var isCallable$2 = isCallable$w; + var getPrototypeOf = objectGetPrototypeOf$1; + var defineBuiltInAccessor$4 = defineBuiltInAccessor$d; + var createProperty$1 = createProperty$8; + var fails$5 = fails$N; + var hasOwn$4 = hasOwnProperty_1; + var wellKnownSymbol$4 = wellKnownSymbol$u; + var IteratorPrototype$1 = iteratorsCore.IteratorPrototype; + var DESCRIPTORS$8 = descriptors; + + var CONSTRUCTOR = 'constructor'; + var ITERATOR$3 = 'Iterator'; + var TO_STRING_TAG$1 = wellKnownSymbol$4('toStringTag'); + + var $TypeError$3 = TypeError; + var NativeIterator = global$7[ITERATOR$3]; + + // FF56- have non-standard global helper `Iterator` + var FORCED$1 = !isCallable$2(NativeIterator) + || NativeIterator.prototype !== IteratorPrototype$1 + // FF44- non-standard `Iterator` passes previous tests + || !fails$5(function () { NativeIterator({}); }); + + var IteratorConstructor = function Iterator() { + anInstance$2(this, IteratorPrototype$1); + if (getPrototypeOf(this) === IteratorPrototype$1) throw new $TypeError$3('Abstract class Iterator not directly constructable'); + }; + + var defineIteratorPrototypeAccessor = function (key, value) { + if (DESCRIPTORS$8) { + defineBuiltInAccessor$4(IteratorPrototype$1, key, { + configurable: true, + get: function () { + return value; + }, + set: function (replacement) { + anObject$a(this); + if (this === IteratorPrototype$1) throw new $TypeError$3("You can't redefine this property"); + if (hasOwn$4(this, key)) this[key] = replacement; + else createProperty$1(this, key, replacement); + } + }); + } else IteratorPrototype$1[key] = value; + }; + + if (!hasOwn$4(IteratorPrototype$1, TO_STRING_TAG$1)) defineIteratorPrototypeAccessor(TO_STRING_TAG$1, ITERATOR$3); + + if (FORCED$1 || !hasOwn$4(IteratorPrototype$1, CONSTRUCTOR) || IteratorPrototype$1[CONSTRUCTOR] === Object) { + defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor); + } + + IteratorConstructor.prototype = IteratorPrototype$1; + + // `Iterator` constructor + // https://github.com/tc39/proposal-iterator-helpers + $$m({ global: true, constructor: true, forced: FORCED$1 }, { + Iterator: IteratorConstructor + }); + + // `GetIteratorDirect(obj)` abstract operation + // https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect + var getIteratorDirect$9 = function (obj) { + return { + iterator: obj, + next: obj.next, + done: false + }; + }; + + var $$l = _export; + var iterate$7 = iterate$e; + var aCallable$8 = aCallable$l; + var anObject$9 = anObject$t; + var getIteratorDirect$8 = getIteratorDirect$9; + + // `Iterator.prototype.every` method + // https://github.com/tc39/proposal-iterator-helpers + $$l({ target: 'Iterator', proto: true, real: true }, { + every: function every(predicate) { + anObject$9(this); + aCallable$8(predicate); + var record = getIteratorDirect$8(this); + var counter = 0; + return !iterate$7(record, function (value, stop) { + if (!predicate(value, counter++)) return stop(); + }, { IS_RECORD: true, INTERRUPTED: true }).stopped; + } + }); + + var call$8 = functionCall; + var create$1 = objectCreate; + var createNonEnumerableProperty$2 = createNonEnumerableProperty$e; + var defineBuiltIns$1 = defineBuiltIns$6; + var wellKnownSymbol$3 = wellKnownSymbol$u; + var InternalStateModule$3 = internalState; + var getMethod = getMethod$7; + var IteratorPrototype = iteratorsCore.IteratorPrototype; + var createIterResultObject$2 = createIterResultObject$5; + var iteratorClose$2 = iteratorClose$5; + + var TO_STRING_TAG = wellKnownSymbol$3('toStringTag'); + var ITERATOR_HELPER = 'IteratorHelper'; + var WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator'; + var setInternalState$3 = InternalStateModule$3.set; + + var createIteratorProxyPrototype = function (IS_ITERATOR) { + var getInternalState = InternalStateModule$3.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER); + + return defineBuiltIns$1(create$1(IteratorPrototype), { + next: function next() { + var state = getInternalState(this); + // for simplification: + // for `%WrapForValidIteratorPrototype%.next` our `nextHandler` returns `IterResultObject` + // for `%IteratorHelperPrototype%.next` - just a value + if (IS_ITERATOR) return state.nextHandler(); + try { + var result = state.done ? undefined : state.nextHandler(); + return createIterResultObject$2(result, state.done); + } catch (error) { + state.done = true; + throw error; + } + }, + 'return': function () { + var state = getInternalState(this); + var iterator = state.iterator; + state.done = true; + if (IS_ITERATOR) { + var returnMethod = getMethod(iterator, 'return'); + return returnMethod ? call$8(returnMethod, iterator) : createIterResultObject$2(undefined, true); + } + if (state.inner) try { + iteratorClose$2(state.inner.iterator, 'normal'); + } catch (error) { + return iteratorClose$2(iterator, 'throw', error); + } + iteratorClose$2(iterator, 'normal'); + return createIterResultObject$2(undefined, true); + } + }); + }; + + var WrapForValidIteratorPrototype = createIteratorProxyPrototype(true); + var IteratorHelperPrototype = createIteratorProxyPrototype(false); + + createNonEnumerableProperty$2(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper'); + + var iteratorCreateProxy = function (nextHandler, IS_ITERATOR) { + var IteratorProxy = function Iterator(record, state) { + if (state) { + state.iterator = record.iterator; + state.next = record.next; + } else state = record; + state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER; + state.nextHandler = nextHandler; + state.counter = 0; + state.done = false; + setInternalState$3(this, state); + }; + + IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype; + + return IteratorProxy; + }; + + var $$k = _export; + var call$7 = functionCall; + var aCallable$7 = aCallable$l; + var anObject$8 = anObject$t; + var getIteratorDirect$7 = getIteratorDirect$9; + var createIteratorProxy$1 = iteratorCreateProxy; + var callWithSafeIterationClosing$1 = callWithSafeIterationClosing$3; + var IS_PURE$2 = isPure; + + var IteratorProxy$1 = createIteratorProxy$1(function () { + var iterator = this.iterator; + var predicate = this.predicate; + var next = this.next; + var result, done, value; + while (true) { + result = anObject$8(call$7(next, iterator)); + done = this.done = !!result.done; + if (done) return; + value = result.value; + if (callWithSafeIterationClosing$1(iterator, predicate, [value, this.counter++], true)) return value; + } + }); + + // `Iterator.prototype.filter` method + // https://github.com/tc39/proposal-iterator-helpers + $$k({ target: 'Iterator', proto: true, real: true, forced: IS_PURE$2 }, { + filter: function filter(predicate) { + anObject$8(this); + aCallable$7(predicate); + return new IteratorProxy$1(getIteratorDirect$7(this), { + predicate: predicate + }); + } + }); + + var $$j = _export; + var iterate$6 = iterate$e; + var aCallable$6 = aCallable$l; + var anObject$7 = anObject$t; + var getIteratorDirect$6 = getIteratorDirect$9; + + // `Iterator.prototype.find` method + // https://github.com/tc39/proposal-iterator-helpers + $$j({ target: 'Iterator', proto: true, real: true }, { + find: function find(predicate) { + anObject$7(this); + aCallable$6(predicate); + var record = getIteratorDirect$6(this); + var counter = 0; + return iterate$6(record, function (value, stop) { + if (predicate(value, counter++)) return stop(value); + }, { IS_RECORD: true, INTERRUPTED: true }).result; + } + }); + + var $$i = _export; + var iterate$5 = iterate$e; + var aCallable$5 = aCallable$l; + var anObject$6 = anObject$t; + var getIteratorDirect$5 = getIteratorDirect$9; + + // `Iterator.prototype.forEach` method + // https://github.com/tc39/proposal-iterator-helpers + $$i({ target: 'Iterator', proto: true, real: true }, { + forEach: function forEach(fn) { + anObject$6(this); + aCallable$5(fn); + var record = getIteratorDirect$5(this); + var counter = 0; + iterate$5(record, function (value) { + fn(value, counter++); + }, { IS_RECORD: true }); + } + }); + + var call$6 = functionCall; + var aCallable$4 = aCallable$l; + var anObject$5 = anObject$t; + var getIteratorDirect$4 = getIteratorDirect$9; + var createIteratorProxy = iteratorCreateProxy; + var callWithSafeIterationClosing = callWithSafeIterationClosing$3; + + var IteratorProxy = createIteratorProxy(function () { + var iterator = this.iterator; + var result = anObject$5(call$6(this.next, iterator)); + var done = this.done = !!result.done; + if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true); + }); + + // `Iterator.prototype.map` method + // https://github.com/tc39/proposal-iterator-helpers + var iteratorMap = function map(mapper) { + anObject$5(this); + aCallable$4(mapper); + return new IteratorProxy(getIteratorDirect$4(this), { + mapper: mapper + }); + }; + + var $$h = _export; + var map = iteratorMap; + var IS_PURE$1 = isPure; + + // `Iterator.prototype.map` method + // https://github.com/tc39/proposal-iterator-helpers + $$h({ target: 'Iterator', proto: true, real: true, forced: IS_PURE$1 }, { + map: map + }); + + var $$g = _export; + var iterate$4 = iterate$e; + var aCallable$3 = aCallable$l; + var anObject$4 = anObject$t; + var getIteratorDirect$3 = getIteratorDirect$9; + + var $TypeError$2 = TypeError; + + // `Iterator.prototype.reduce` method + // https://github.com/tc39/proposal-iterator-helpers + $$g({ target: 'Iterator', proto: true, real: true }, { + reduce: function reduce(reducer /* , initialValue */) { + anObject$4(this); + aCallable$3(reducer); + var record = getIteratorDirect$3(this); + var noInitial = arguments.length < 2; + var accumulator = noInitial ? undefined : arguments[1]; + var counter = 0; + iterate$4(record, function (value) { + if (noInitial) { + noInitial = false; + accumulator = value; + } else { + accumulator = reducer(accumulator, value, counter); + } + counter++; + }, { IS_RECORD: true }); + if (noInitial) throw new $TypeError$2('Reduce of empty iterator with no initial value'); + return accumulator; + } + }); + + var $$f = _export; + var iterate$3 = iterate$e; + var aCallable$2 = aCallable$l; + var anObject$3 = anObject$t; + var getIteratorDirect$2 = getIteratorDirect$9; + + // `Iterator.prototype.some` method + // https://github.com/tc39/proposal-iterator-helpers + $$f({ target: 'Iterator', proto: true, real: true }, { + some: function some(predicate) { + anObject$3(this); + aCallable$2(predicate); + var record = getIteratorDirect$2(this); + var counter = 0; + return iterate$3(record, function (value, stop) { + if (predicate(value, counter++)) return stop(); + }, { IS_RECORD: true, INTERRUPTED: true }).stopped; + } + }); + + var $$e = _export; + var anObject$2 = anObject$t; + var iterate$2 = iterate$e; + var getIteratorDirect$1 = getIteratorDirect$9; + + var push$5 = [].push; + + // `Iterator.prototype.toArray` method + // https://github.com/tc39/proposal-iterator-helpers + $$e({ target: 'Iterator', proto: true, real: true }, { + toArray: function toArray() { + var result = []; + iterate$2(getIteratorDirect$1(anObject$2(this)), push$5, { that: result, IS_RECORD: true }); + return result; + } + }); + + var uncurryThis$a = functionUncurryThis; + var hasOwn$3 = hasOwnProperty_1; + + var $SyntaxError = SyntaxError; + var $parseInt = parseInt; + var fromCharCode$1 = String.fromCharCode; + var at$1 = uncurryThis$a(''.charAt); + var slice$1 = uncurryThis$a(''.slice); + var exec$3 = uncurryThis$a(/./.exec); + + var codePoints = { + '\\"': '"', + '\\\\': '\\', + '\\/': '/', + '\\b': '\b', + '\\f': '\f', + '\\n': '\n', + '\\r': '\r', + '\\t': '\t' + }; + + var IS_4_HEX_DIGITS = /^[\da-f]{4}$/i; + // eslint-disable-next-line regexp/no-control-character -- safe + var IS_C0_CONTROL_CODE = /^[\u0000-\u001F]$/; + + var parseJsonString = function (source, i) { + var unterminated = true; + var value = ''; + while (i < source.length) { + var chr = at$1(source, i); + if (chr === '\\') { + var twoChars = slice$1(source, i, i + 2); + if (hasOwn$3(codePoints, twoChars)) { + value += codePoints[twoChars]; + i += 2; + } else if (twoChars === '\\u') { + i += 2; + var fourHexDigits = slice$1(source, i, i + 4); + if (!exec$3(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i); + value += fromCharCode$1($parseInt(fourHexDigits, 16)); + i += 4; + } else throw new $SyntaxError('Unknown escape sequence: "' + twoChars + '"'); + } else if (chr === '"') { + unterminated = false; + i++; + break; + } else { + if (exec$3(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i); + value += chr; + i++; + } + } + if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i); + return { value: value, end: i }; + }; + + var $$d = _export; + var DESCRIPTORS$7 = descriptors; + var global$6 = global$K; + var getBuiltIn$1 = getBuiltIn$c; + var uncurryThis$9 = functionUncurryThis; + var call$5 = functionCall; + var isCallable$1 = isCallable$w; + var isObject$1 = isObject$q; + var isArray = isArray$8; + var hasOwn$2 = hasOwnProperty_1; + var toString$3 = toString$i; + var lengthOfArrayLike = lengthOfArrayLike$m; + var createProperty = createProperty$8; + var fails$4 = fails$N; + var parseJSONString = parseJsonString; + var NATIVE_SYMBOL = symbolConstructorDetection; + + var JSON$1 = global$6.JSON; + var Number$1 = global$6.Number; + var SyntaxError$1 = global$6.SyntaxError; + var nativeParse = JSON$1 && JSON$1.parse; + var enumerableOwnProperties = getBuiltIn$1('Object', 'keys'); + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + var at = uncurryThis$9(''.charAt); + var slice = uncurryThis$9(''.slice); + var exec$2 = uncurryThis$9(/./.exec); + var push$4 = uncurryThis$9([].push); + + var IS_DIGIT = /^\d$/; + var IS_NON_ZERO_DIGIT = /^[1-9]$/; + var IS_NUMBER_START = /^(?:-|\d)$/; + var IS_WHITESPACE = /^[\t\n\r ]$/; + + var PRIMITIVE = 0; + var OBJECT = 1; + + var $parse = function (source, reviver) { + source = toString$3(source); + var context = new Context(source, 0); + var root = context.parse(); + var value = root.value; + var endIndex = context.skip(IS_WHITESPACE, root.end); + if (endIndex < source.length) { + throw new SyntaxError$1('Unexpected extra character: "' + at(source, endIndex) + '" after the parsed data at: ' + endIndex); + } + return isCallable$1(reviver) ? internalize({ '': value }, '', reviver, root) : value; + }; + + var internalize = function (holder, name, reviver, node) { + var val = holder[name]; + var unmodified = node && val === node.value; + var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {}; + var elementRecordsLen, keys, len, i, P; + if (isObject$1(val)) { + var nodeIsArray = isArray(val); + var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {}; + if (nodeIsArray) { + elementRecordsLen = nodes.length; + len = lengthOfArrayLike(val); + for (i = 0; i < len; i++) { + internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined)); + } + } else { + keys = enumerableOwnProperties(val); + len = lengthOfArrayLike(keys); + for (i = 0; i < len; i++) { + P = keys[i]; + internalizeProperty(val, P, internalize(val, P, reviver, hasOwn$2(nodes, P) ? nodes[P] : undefined)); + } + } + } + return call$5(reviver, holder, name, val, context); + }; + + var internalizeProperty = function (object, key, value) { + if (DESCRIPTORS$7) { + var descriptor = getOwnPropertyDescriptor(object, key); + if (descriptor && !descriptor.configurable) return; + } + if (value === undefined) delete object[key]; + else createProperty(object, key, value); + }; + + var Node = function (value, end, source, nodes) { + this.value = value; + this.end = end; + this.source = source; + this.nodes = nodes; + }; + + var Context = function (source, index) { + this.source = source; + this.index = index; + }; + + // https://www.json.org/json-en.html + Context.prototype = { + fork: function (nextIndex) { + return new Context(this.source, nextIndex); + }, + parse: function () { + var source = this.source; + var i = this.skip(IS_WHITESPACE, this.index); + var fork = this.fork(i); + var chr = at(source, i); + if (exec$2(IS_NUMBER_START, chr)) return fork.number(); + switch (chr) { + case '{': + return fork.object(); + case '[': + return fork.array(); + case '"': + return fork.string(); + case 't': + return fork.keyword(true); + case 'f': + return fork.keyword(false); + case 'n': + return fork.keyword(null); + } throw new SyntaxError$1('Unexpected character: "' + chr + '" at: ' + i); + }, + node: function (type, value, start, end, nodes) { + return new Node(value, end, type ? null : slice(this.source, start, end), nodes); + }, + object: function () { + var source = this.source; + var i = this.index + 1; + var expectKeypair = false; + var object = {}; + var nodes = {}; + while (i < source.length) { + i = this.until(['"', '}'], i); + if (at(source, i) === '}' && !expectKeypair) { + i++; + break; + } + // Parsing the key + var result = this.fork(i).string(); + var key = result.value; + i = result.end; + i = this.until([':'], i) + 1; + // Parsing value + i = this.skip(IS_WHITESPACE, i); + result = this.fork(i).parse(); + createProperty(nodes, key, result); + createProperty(object, key, result.value); + i = this.until([',', '}'], result.end); + var chr = at(source, i); + if (chr === ',') { + expectKeypair = true; + i++; + } else if (chr === '}') { + i++; + break; + } + } + return this.node(OBJECT, object, this.index, i, nodes); + }, + array: function () { + var source = this.source; + var i = this.index + 1; + var expectElement = false; + var array = []; + var nodes = []; + while (i < source.length) { + i = this.skip(IS_WHITESPACE, i); + if (at(source, i) === ']' && !expectElement) { + i++; + break; + } + var result = this.fork(i).parse(); + push$4(nodes, result); + push$4(array, result.value); + i = this.until([',', ']'], result.end); + if (at(source, i) === ',') { + expectElement = true; + i++; + } else if (at(source, i) === ']') { + i++; + break; + } + } + return this.node(OBJECT, array, this.index, i, nodes); + }, + string: function () { + var index = this.index; + var parsed = parseJSONString(this.source, this.index + 1); + return this.node(PRIMITIVE, parsed.value, index, parsed.end); + }, + number: function () { + var source = this.source; + var startIndex = this.index; + var i = startIndex; + if (at(source, i) === '-') i++; + if (at(source, i) === '0') i++; + else if (exec$2(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, ++i); + else throw new SyntaxError$1('Failed to parse number at: ' + i); + if (at(source, i) === '.') i = this.skip(IS_DIGIT, ++i); + if (at(source, i) === 'e' || at(source, i) === 'E') { + i++; + if (at(source, i) === '+' || at(source, i) === '-') i++; + var exponentStartIndex = i; + i = this.skip(IS_DIGIT, i); + if (exponentStartIndex === i) throw new SyntaxError$1("Failed to parse number's exponent value at: " + i); + } + return this.node(PRIMITIVE, Number$1(slice(source, startIndex, i)), startIndex, i); + }, + keyword: function (value) { + var keyword = '' + value; + var index = this.index; + var endIndex = index + keyword.length; + if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError$1('Failed to parse value at: ' + index); + return this.node(PRIMITIVE, value, index, endIndex); + }, + skip: function (regex, i) { + var source = this.source; + for (; i < source.length; i++) if (!exec$2(regex, at(source, i))) break; + return i; + }, + until: function (array, i) { + i = this.skip(IS_WHITESPACE, i); + var chr = at(this.source, i); + for (var j = 0; j < array.length; j++) if (array[j] === chr) return i; + throw new SyntaxError$1('Unexpected character: "' + chr + '" at: ' + i); + } + }; + + var NO_SOURCE_SUPPORT = fails$4(function () { + var unsafeInt = '9007199254740993'; + var source; + nativeParse(unsafeInt, function (key, value, context) { + source = context.source; + }); + return source !== unsafeInt; + }); + + var PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails$4(function () { + // Safari 9 bug + return 1 / nativeParse('-0 \t') !== -Infinity; + }); + + // `JSON.parse` method + // https://tc39.es/ecma262/#sec-json.parse + // https://github.com/tc39/proposal-json-parse-with-source + $$d({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, { + parse: function parse(text, reviver) { + return PROPER_BASE_PARSE && !isCallable$1(reviver) ? nativeParse(text) : $parse(text, reviver); + } + }); + + var uncurryThis$8 = functionUncurryThis; + + // eslint-disable-next-line es/no-set -- safe + var SetPrototype$1 = Set.prototype; + + var setHelpers = { + // eslint-disable-next-line es/no-set -- safe + Set: Set, + add: uncurryThis$8(SetPrototype$1.add), + has: uncurryThis$8(SetPrototype$1.has), + remove: uncurryThis$8(SetPrototype$1['delete']), + proto: SetPrototype$1 + }; + + var has$5 = setHelpers.has; + + // Perform ? RequireInternalSlot(M, [[SetData]]) + var aSet$7 = function (it) { + has$5(it); + return it; + }; + + var call$4 = functionCall; + + var iterateSimple$7 = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) { + var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator; + var next = record.next; + var step, result; + while (!(step = call$4(next, iterator)).done) { + result = fn(step.value); + if (result !== undefined) return result; + } + }; + + var uncurryThis$7 = functionUncurryThis; + var iterateSimple$6 = iterateSimple$7; + var SetHelpers$5 = setHelpers; + + var Set$3 = SetHelpers$5.Set; + var SetPrototype = SetHelpers$5.proto; + var forEach$3 = uncurryThis$7(SetPrototype.forEach); + var keys = uncurryThis$7(SetPrototype.keys); + var next = keys(new Set$3()).next; + + var setIterate = function (set, fn, interruptible) { + return interruptible ? iterateSimple$6({ iterator: keys(set), next: next }, fn) : forEach$3(set, fn); + }; + + var SetHelpers$4 = setHelpers; + var iterate$1 = setIterate; + + var Set$2 = SetHelpers$4.Set; + var add$3 = SetHelpers$4.add; + + var setClone = function (set) { + var result = new Set$2(); + iterate$1(set, function (it) { + add$3(result, it); + }); + return result; + }; + + var uncurryThisAccessor = functionUncurryThisAccessor; + var SetHelpers$3 = setHelpers; + + var setSize = uncurryThisAccessor(SetHelpers$3.proto, 'size', 'get') || function (set) { + return set.size; + }; + + var aCallable$1 = aCallable$l; + var anObject$1 = anObject$t; + var call$3 = functionCall; + var toIntegerOrInfinity = toIntegerOrInfinity$d; + var getIteratorDirect = getIteratorDirect$9; + + var INVALID_SIZE = 'Invalid size'; + var $RangeError$1 = RangeError; + var $TypeError$1 = TypeError; + var max = Math.max; + + var SetRecord = function (set, intSize) { + this.set = set; + this.size = max(intSize, 0); + this.has = aCallable$1(set.has); + this.keys = aCallable$1(set.keys); + }; + + SetRecord.prototype = { + getIterator: function () { + return getIteratorDirect(anObject$1(call$3(this.keys, this.set))); + }, + includes: function (it) { + return call$3(this.has, this.set, it); + } + }; + + // `GetSetRecord` abstract operation + // https://tc39.es/proposal-set-methods/#sec-getsetrecord + var getSetRecord$7 = function (obj) { + anObject$1(obj); + var numSize = +obj.size; + // NOTE: If size is undefined, then numSize will be NaN + // eslint-disable-next-line no-self-compare -- NaN check + if (numSize !== numSize) throw new $TypeError$1(INVALID_SIZE); + var intSize = toIntegerOrInfinity(numSize); + if (intSize < 0) throw new $RangeError$1(INVALID_SIZE); + return new SetRecord(obj, intSize); + }; + + var aSet$6 = aSet$7; + var SetHelpers$2 = setHelpers; + var clone$2 = setClone; + var size$4 = setSize; + var getSetRecord$6 = getSetRecord$7; + var iterateSet$2 = setIterate; + var iterateSimple$5 = iterateSimple$7; + + var has$4 = SetHelpers$2.has; + var remove$1 = SetHelpers$2.remove; + + // `Set.prototype.difference` method + // https://github.com/tc39/proposal-set-methods + var setDifference = function difference(other) { + var O = aSet$6(this); + var otherRec = getSetRecord$6(other); + var result = clone$2(O); + if (size$4(O) <= otherRec.size) iterateSet$2(O, function (e) { + if (otherRec.includes(e)) remove$1(result, e); + }); + else iterateSimple$5(otherRec.getIterator(), function (e) { + if (has$4(O, e)) remove$1(result, e); + }); + return result; + }; + + var getBuiltIn = getBuiltIn$c; + + var createSetLike = function (size) { + return { + size: size, + has: function () { + return false; + }, + keys: function () { + return { + next: function () { + return { done: true }; + } + }; + } + }; + }; + + var setMethodAcceptSetLike$7 = function (name) { + var Set = getBuiltIn('Set'); + try { + new Set()[name](createSetLike(0)); + try { + // late spec change, early WebKit ~ Safari 17.0 beta implementation does not pass it + // https://github.com/tc39/proposal-set-methods/pull/88 + new Set()[name](createSetLike(-1)); + return false; + } catch (error2) { + return true; + } + } catch (error) { + return false; + } + }; + + var $$c = _export; + var difference = setDifference; + var setMethodAcceptSetLike$6 = setMethodAcceptSetLike$7; + + // `Set.prototype.difference` method + // https://github.com/tc39/proposal-set-methods + $$c({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike$6('difference') }, { + difference: difference + }); + + var aSet$5 = aSet$7; + var SetHelpers$1 = setHelpers; + var size$3 = setSize; + var getSetRecord$5 = getSetRecord$7; + var iterateSet$1 = setIterate; + var iterateSimple$4 = iterateSimple$7; + + var Set$1 = SetHelpers$1.Set; + var add$2 = SetHelpers$1.add; + var has$3 = SetHelpers$1.has; + + // `Set.prototype.intersection` method + // https://github.com/tc39/proposal-set-methods + var setIntersection = function intersection(other) { + var O = aSet$5(this); + var otherRec = getSetRecord$5(other); + var result = new Set$1(); + + if (size$3(O) > otherRec.size) { + iterateSimple$4(otherRec.getIterator(), function (e) { + if (has$3(O, e)) add$2(result, e); + }); + } else { + iterateSet$1(O, function (e) { + if (otherRec.includes(e)) add$2(result, e); + }); + } + + return result; + }; + + var $$b = _export; + var fails$3 = fails$N; + var intersection = setIntersection; + var setMethodAcceptSetLike$5 = setMethodAcceptSetLike$7; + + var INCORRECT = !setMethodAcceptSetLike$5('intersection') || fails$3(function () { + // eslint-disable-next-line es/no-array-from, es/no-set -- testing + return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2'; + }); + + // `Set.prototype.intersection` method + // https://github.com/tc39/proposal-set-methods + $$b({ target: 'Set', proto: true, real: true, forced: INCORRECT }, { + intersection: intersection + }); + + var aSet$4 = aSet$7; + var has$2 = setHelpers.has; + var size$2 = setSize; + var getSetRecord$4 = getSetRecord$7; + var iterateSet = setIterate; + var iterateSimple$3 = iterateSimple$7; + var iteratorClose$1 = iteratorClose$5; + + // `Set.prototype.isDisjointFrom` method + // https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom + var setIsDisjointFrom = function isDisjointFrom(other) { + var O = aSet$4(this); + var otherRec = getSetRecord$4(other); + if (size$2(O) <= otherRec.size) return iterateSet(O, function (e) { + if (otherRec.includes(e)) return false; + }, true) !== false; + var iterator = otherRec.getIterator(); + return iterateSimple$3(iterator, function (e) { + if (has$2(O, e)) return iteratorClose$1(iterator, 'normal', false); + }) !== false; + }; + + var $$a = _export; + var isDisjointFrom = setIsDisjointFrom; + var setMethodAcceptSetLike$4 = setMethodAcceptSetLike$7; + + // `Set.prototype.isDisjointFrom` method + // https://github.com/tc39/proposal-set-methods + $$a({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike$4('isDisjointFrom') }, { + isDisjointFrom: isDisjointFrom + }); + + var aSet$3 = aSet$7; + var size$1 = setSize; + var iterate = setIterate; + var getSetRecord$3 = getSetRecord$7; + + // `Set.prototype.isSubsetOf` method + // https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf + var setIsSubsetOf = function isSubsetOf(other) { + var O = aSet$3(this); + var otherRec = getSetRecord$3(other); + if (size$1(O) > otherRec.size) return false; + return iterate(O, function (e) { + if (!otherRec.includes(e)) return false; + }, true) !== false; + }; + + var $$9 = _export; + var isSubsetOf = setIsSubsetOf; + var setMethodAcceptSetLike$3 = setMethodAcceptSetLike$7; + + // `Set.prototype.isSubsetOf` method + // https://github.com/tc39/proposal-set-methods + $$9({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike$3('isSubsetOf') }, { + isSubsetOf: isSubsetOf + }); + + var aSet$2 = aSet$7; + var has$1 = setHelpers.has; + var size = setSize; + var getSetRecord$2 = getSetRecord$7; + var iterateSimple$2 = iterateSimple$7; + var iteratorClose = iteratorClose$5; + + // `Set.prototype.isSupersetOf` method + // https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf + var setIsSupersetOf = function isSupersetOf(other) { + var O = aSet$2(this); + var otherRec = getSetRecord$2(other); + if (size(O) < otherRec.size) return false; + var iterator = otherRec.getIterator(); + return iterateSimple$2(iterator, function (e) { + if (!has$1(O, e)) return iteratorClose(iterator, 'normal', false); + }) !== false; + }; + + var $$8 = _export; + var isSupersetOf = setIsSupersetOf; + var setMethodAcceptSetLike$2 = setMethodAcceptSetLike$7; + + // `Set.prototype.isSupersetOf` method + // https://github.com/tc39/proposal-set-methods + $$8({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike$2('isSupersetOf') }, { + isSupersetOf: isSupersetOf + }); + + var aSet$1 = aSet$7; + var SetHelpers = setHelpers; + var clone$1 = setClone; + var getSetRecord$1 = getSetRecord$7; + var iterateSimple$1 = iterateSimple$7; + + var add$1 = SetHelpers.add; + var has = SetHelpers.has; + var remove = SetHelpers.remove; + + // `Set.prototype.symmetricDifference` method + // https://github.com/tc39/proposal-set-methods + var setSymmetricDifference = function symmetricDifference(other) { + var O = aSet$1(this); + var keysIter = getSetRecord$1(other).getIterator(); + var result = clone$1(O); + iterateSimple$1(keysIter, function (e) { + if (has(O, e)) remove(result, e); + else add$1(result, e); + }); + return result; + }; + + var $$7 = _export; + var symmetricDifference = setSymmetricDifference; + var setMethodAcceptSetLike$1 = setMethodAcceptSetLike$7; + + // `Set.prototype.symmetricDifference` method + // https://github.com/tc39/proposal-set-methods + $$7({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike$1('symmetricDifference') }, { + symmetricDifference: symmetricDifference + }); + + var aSet = aSet$7; + var add = setHelpers.add; + var clone = setClone; + var getSetRecord = getSetRecord$7; + var iterateSimple = iterateSimple$7; + + // `Set.prototype.union` method + // https://github.com/tc39/proposal-set-methods + var setUnion = function union(other) { + var O = aSet(this); + var keysIter = getSetRecord(other).getIterator(); + var result = clone(O); + iterateSimple(keysIter, function (it) { + add(result, it); + }); + return result; + }; + + var $$6 = _export; + var union = setUnion; + var setMethodAcceptSetLike = setMethodAcceptSetLike$7; + + // `Set.prototype.union` method + // https://github.com/tc39/proposal-set-methods + $$6({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, { + union: union + }); + + // iterable DOM collections + // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods + var domIterables = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0 + }; + + // in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` + var documentCreateElement = documentCreateElement$2; + + var classList = documentCreateElement('span').classList; + var DOMTokenListPrototype$2 = classList && classList.constructor && classList.constructor.prototype; + + var domTokenListPrototype = DOMTokenListPrototype$2 === Object.prototype ? undefined : DOMTokenListPrototype$2; + + var $forEach = arrayIteration.forEach; + var arrayMethodIsStrict = arrayMethodIsStrict$4; + + var STRICT_METHOD = arrayMethodIsStrict('forEach'); + + // `Array.prototype.forEach` method implementation + // https://tc39.es/ecma262/#sec-array.prototype.foreach + var arrayForEach = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + // eslint-disable-next-line es/no-array-prototype-foreach -- safe + } : [].forEach; + + var global$5 = global$K; + var DOMIterables$1 = domIterables; + var DOMTokenListPrototype$1 = domTokenListPrototype; + var forEach$2 = arrayForEach; + var createNonEnumerableProperty$1 = createNonEnumerableProperty$e; + + var handlePrototype$1 = function (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype && CollectionPrototype.forEach !== forEach$2) try { + createNonEnumerableProperty$1(CollectionPrototype, 'forEach', forEach$2); + } catch (error) { + CollectionPrototype.forEach = forEach$2; + } + }; + + for (var COLLECTION_NAME$1 in DOMIterables$1) { + if (DOMIterables$1[COLLECTION_NAME$1]) { + handlePrototype$1(global$5[COLLECTION_NAME$1] && global$5[COLLECTION_NAME$1].prototype); + } + } + + handlePrototype$1(DOMTokenListPrototype$1); + + var global$4 = global$K; + var DOMIterables = domIterables; + var DOMTokenListPrototype = domTokenListPrototype; + var ArrayIteratorMethods = es_array_iterator; + var createNonEnumerableProperty = createNonEnumerableProperty$e; + var setToStringTag$2 = setToStringTag$a; + var wellKnownSymbol$2 = wellKnownSymbol$u; + + var ITERATOR$2 = wellKnownSymbol$2('iterator'); + var ArrayValues = ArrayIteratorMethods.values; + + var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) { + if (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[ITERATOR$2] !== ArrayValues) try { + createNonEnumerableProperty(CollectionPrototype, ITERATOR$2, ArrayValues); + } catch (error) { + CollectionPrototype[ITERATOR$2] = ArrayValues; + } + setToStringTag$2(CollectionPrototype, COLLECTION_NAME, true); + if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { + createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); + } catch (error) { + CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; + } + } + } + }; + + for (var COLLECTION_NAME in DOMIterables) { + handlePrototype(global$4[COLLECTION_NAME] && global$4[COLLECTION_NAME].prototype, COLLECTION_NAME); + } + + handlePrototype(DOMTokenListPrototype, 'DOMTokenList'); + + var $$5 = _export; + var globalThis$1 = global$K; + var microtask = microtask_1; + var aCallable = aCallable$l; + var validateArgumentsLength$4 = validateArgumentsLength$6; + var fails$2 = fails$N; + var DESCRIPTORS$6 = descriptors; + + // Bun ~ 1.0.30 bug + // https://github.com/oven-sh/bun/issues/9249 + var WRONG_ARITY = fails$2(function () { + // getOwnPropertyDescriptor for prevent experimental warning in Node 11 + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + return DESCRIPTORS$6 && Object.getOwnPropertyDescriptor(globalThis$1, 'queueMicrotask').value.length !== 1; + }); + + // `queueMicrotask` method + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask + $$5({ global: true, enumerable: true, dontCallGetSet: true, forced: WRONG_ARITY }, { + queueMicrotask: function queueMicrotask(fn) { + validateArgumentsLength$4(arguments.length, 1); + microtask(aCallable(fn)); + } + }); + + var $$4 = _export; + var global$3 = global$K; + var defineBuiltInAccessor$3 = defineBuiltInAccessor$d; + var DESCRIPTORS$5 = descriptors; + + var $TypeError = TypeError; + // eslint-disable-next-line es/no-object-defineproperty -- safe + var defineProperty$1 = Object.defineProperty; + var INCORRECT_VALUE = global$3.self !== global$3; + + // `self` getter + // https://html.spec.whatwg.org/multipage/window-object.html#dom-self + try { + if (DESCRIPTORS$5) { + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var descriptor = Object.getOwnPropertyDescriptor(global$3, 'self'); + // some engines have `self`, but with incorrect descriptor + // https://github.com/denoland/deno/issues/15765 + if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) { + defineBuiltInAccessor$3(global$3, 'self', { + get: function self() { + return global$3; + }, + set: function self(value) { + if (this !== global$3) throw new $TypeError('Illegal invocation'); + defineProperty$1(global$3, 'self', { + value: value, + writable: true, + configurable: true, + enumerable: true + }); + }, + configurable: true, + enumerable: true + }); + } + } else $$4({ global: true, simple: true, forced: INCORRECT_VALUE }, { + self: global$3 + }); + } catch (error) { /* empty */ } + + var charAt$2 = stringMultibyte.charAt; + var toString$2 = toString$i; + var InternalStateModule$2 = internalState; + var defineIterator = iteratorDefine; + var createIterResultObject$1 = createIterResultObject$5; + + var STRING_ITERATOR = 'String Iterator'; + var setInternalState$2 = InternalStateModule$2.set; + var getInternalState = InternalStateModule$2.getterFor(STRING_ITERATOR); + + // `String.prototype[@@iterator]` method + // https://tc39.es/ecma262/#sec-string.prototype-@@iterator + defineIterator(String, 'String', function (iterated) { + setInternalState$2(this, { + type: STRING_ITERATOR, + string: toString$2(iterated), + index: 0 + }); + // `%StringIteratorPrototype%.next` method + // https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next + }, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return createIterResultObject$1(undefined, true); + point = charAt$2(string, index); + state.index += point.length; + return createIterResultObject$1(point, false); + }); + + var fails$1 = fails$N; + var wellKnownSymbol$1 = wellKnownSymbol$u; + var DESCRIPTORS$4 = descriptors; + var IS_PURE = isPure; + + var ITERATOR$1 = wellKnownSymbol$1('iterator'); + + var urlConstructorDetection = !fails$1(function () { + // eslint-disable-next-line unicorn/relative-url-style -- required for testing + var url = new URL('b?a=1&b=2&c=3', 'http://a'); + var params = url.searchParams; + var params2 = new URLSearchParams('a=1&a=2&b=3'); + var result = ''; + url.pathname = 'c%20d'; + params.forEach(function (value, key) { + params['delete']('b'); + result += key + value; + }); + params2['delete']('a', 2); + // `undefined` case is a Chromium 117 bug + // https://bugs.chromium.org/p/v8/issues/detail?id=14222 + params2['delete']('b', undefined); + return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b'))) + || (!params.size && (IS_PURE || !DESCRIPTORS$4)) + || !params.sort + || url.href !== 'http://a/c%20d?a=1&c=3' + || params.get('c') !== '3' + || String(new URLSearchParams('?a=1')) !== 'a=1' + || !params[ITERATOR$1] + // throws in Edge + || new URL('https://a@b').username !== 'a' + || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' + // not punycoded in Edge + || new URL('http://тест').host !== 'xn--e1aybc' + // not escaped in Chrome 62- + || new URL('http://a#б').hash !== '#%D0%B1' + // fails in Chrome 66- + || result !== 'a1c3' + // throws in Safari + || new URL('http://x', undefined).host !== 'x'; + }); + + var DESCRIPTORS$3 = descriptors; + var uncurryThis$6 = functionUncurryThis; + var call$2 = functionCall; + var fails = fails$N; + var objectKeys = objectKeys$3; + var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols; + var propertyIsEnumerableModule = objectPropertyIsEnumerable; + var toObject = toObject$g; + var IndexedObject = indexedObject; + + // eslint-disable-next-line es/no-object-assign -- safe + var $assign = Object.assign; + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + var defineProperty = Object.defineProperty; + var concat = uncurryThis$6([].concat); + + // `Object.assign` method + // https://tc39.es/ecma262/#sec-object.assign + var objectAssign = !$assign || fails(function () { + // should have correct order of operations (Edge bug) + if (DESCRIPTORS$3 && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { + enumerable: true, + get: function () { + defineProperty(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { b: 2 })).b !== 1) return true; + // should work with symbols and should have deterministic property order (V8 bug) + var A = {}; + var B = {}; + // eslint-disable-next-line es/no-symbol -- safe + var symbol = Symbol('assign detection'); + var alphabet = 'abcdefghijklmnopqrst'; + A[symbol] = 7; + alphabet.split('').forEach(function (chr) { B[chr] = chr; }); + return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet; + }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` + var T = toObject(target); + var argumentsLength = arguments.length; + var index = 1; + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + var propertyIsEnumerable = propertyIsEnumerableModule.f; + while (argumentsLength > index) { + var S = IndexedObject(arguments[index++]); + var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!DESCRIPTORS$3 || call$2(propertyIsEnumerable, S, key)) T[key] = S[key]; + } + } return T; + } : $assign; + + // based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js + var uncurryThis$5 = functionUncurryThis; + + var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 + var base = 36; + var tMin = 1; + var tMax = 26; + var skew = 38; + var damp = 700; + var initialBias = 72; + var initialN = 128; // 0x80 + var delimiter = '-'; // '\x2D' + var regexNonASCII = /[^\0-\u007E]/; // non-ASCII chars + var regexSeparators = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators + var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process'; + var baseMinusTMin = base - tMin; + + var $RangeError = RangeError; + var exec$1 = uncurryThis$5(regexSeparators.exec); + var floor$1 = Math.floor; + var fromCharCode = String.fromCharCode; + var charCodeAt = uncurryThis$5(''.charCodeAt); + var join$2 = uncurryThis$5([].join); + var push$3 = uncurryThis$5([].push); + var replace$2 = uncurryThis$5(''.replace); + var split$2 = uncurryThis$5(''.split); + var toLowerCase$1 = uncurryThis$5(''.toLowerCase); + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + */ + var ucs2decode = function (string) { + var output = []; + var counter = 0; + var length = string.length; + while (counter < length) { + var value = charCodeAt(string, counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + var extra = charCodeAt(string, counter++); + if ((extra & 0xFC00) === 0xDC00) { // Low surrogate. + push$3(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + push$3(output, value); + counter--; + } + } else { + push$3(output, value); + } + } + return output; + }; + + /** + * Converts a digit/integer into a basic code point. + */ + var digitToBasic = function (digit) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26); + }; + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + */ + var adapt = function (delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor$1(delta / damp) : delta >> 1; + delta += floor$1(delta / numPoints); + while (delta > baseMinusTMin * tMax >> 1) { + delta = floor$1(delta / baseMinusTMin); + k += base; + } + return floor$1(k + (baseMinusTMin + 1) * delta / (delta + skew)); + }; + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + */ + var encode = function (input) { + var output = []; + + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); + + // Cache the length. + var inputLength = input.length; + + // Initialize the state. + var n = initialN; + var delta = 0; + var bias = initialBias; + var i, currentValue; + + // Handle the basic code points. + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < 0x80) { + push$3(output, fromCharCode(currentValue)); + } + } + + var basicLength = output.length; // number of basic code points. + var handledCPCount = basicLength; // number of code points that have been handled; + + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + push$3(output, delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + // All non-basic code points < n have been handled already. Find the next larger one: + var m = maxInt; + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , but guard against overflow. + var handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor$1((maxInt - delta) / handledCPCountPlusOne)) { + throw new $RangeError(OVERFLOW_ERROR); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < n && ++delta > maxInt) { + throw new $RangeError(OVERFLOW_ERROR); + } + if (currentValue === n) { + // Represent delta as a generalized variable-length integer. + var q = delta; + var k = base; + while (true) { + var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; + if (q < t) break; + var qMinusT = q - t; + var baseMinusT = base - t; + push$3(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT))); + q = floor$1(qMinusT / baseMinusT); + k += base; + } + + push$3(output, fromCharCode(digitToBasic(q))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength); + delta = 0; + handledCPCount++; + } + } + + delta++; + n++; + } + return join$2(output, ''); + }; + + var stringPunycodeToAscii = function (input) { + var encoded = []; + var labels = split$2(replace$2(toLowerCase$1(input), regexSeparators, '\u002E'), '.'); + var i, label; + for (i = 0; i < labels.length; i++) { + label = labels[i]; + push$3(encoded, exec$1(regexNonASCII, label) ? 'xn--' + encode(label) : label); + } + return join$2(encoded, '.'); + }; + + // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` + + var $$3 = _export; + var global$2 = global$K; + var safeGetBuiltIn = safeGetBuiltIn$2; + var call$1 = functionCall; + var uncurryThis$4 = functionUncurryThis; + var DESCRIPTORS$2 = descriptors; + var USE_NATIVE_URL$1 = urlConstructorDetection; + var defineBuiltIn$3 = defineBuiltIn$g; + var defineBuiltInAccessor$2 = defineBuiltInAccessor$d; + var defineBuiltIns = defineBuiltIns$6; + var setToStringTag$1 = setToStringTag$a; + var createIteratorConstructor = iteratorCreateConstructor; + var InternalStateModule$1 = internalState; + var anInstance$1 = anInstance$9; + var isCallable = isCallable$w; + var hasOwn$1 = hasOwnProperty_1; + var bind$1 = functionBindContext; + var classof = classof$h; + var anObject = anObject$t; + var isObject = isObject$q; + var $toString$1 = toString$i; + var create = objectCreate; + var createPropertyDescriptor = createPropertyDescriptor$7; + var getIterator = getIterator$4; + var getIteratorMethod = getIteratorMethod$5; + var createIterResultObject = createIterResultObject$5; + var validateArgumentsLength$3 = validateArgumentsLength$6; + var wellKnownSymbol = wellKnownSymbol$u; + var arraySort = arraySort$1; + + var ITERATOR = wellKnownSymbol('iterator'); + var URL_SEARCH_PARAMS = 'URLSearchParams'; + var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; + var setInternalState$1 = InternalStateModule$1.set; + var getInternalParamsState = InternalStateModule$1.getterFor(URL_SEARCH_PARAMS); + var getInternalIteratorState = InternalStateModule$1.getterFor(URL_SEARCH_PARAMS_ITERATOR); + + var nativeFetch = safeGetBuiltIn('fetch'); + var NativeRequest = safeGetBuiltIn('Request'); + var Headers = safeGetBuiltIn('Headers'); + var RequestPrototype = NativeRequest && NativeRequest.prototype; + var HeadersPrototype = Headers && Headers.prototype; + var RegExp$1 = global$2.RegExp; + var TypeError$2 = global$2.TypeError; + var decodeURIComponent = global$2.decodeURIComponent; + var encodeURIComponent$1 = global$2.encodeURIComponent; + var charAt$1 = uncurryThis$4(''.charAt); + var join$1 = uncurryThis$4([].join); + var push$2 = uncurryThis$4([].push); + var replace$1 = uncurryThis$4(''.replace); + var shift$1 = uncurryThis$4([].shift); + var splice = uncurryThis$4([].splice); + var split$1 = uncurryThis$4(''.split); + var stringSlice$1 = uncurryThis$4(''.slice); + + var plus = /\+/g; + var sequences = Array(4); + + var percentSequence = function (bytes) { + return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp$1('((?:%[\\da-f]{2}){' + bytes + '})', 'gi')); + }; + + var percentDecode = function (sequence) { + try { + return decodeURIComponent(sequence); + } catch (error) { + return sequence; + } + }; + + var deserialize = function (it) { + var result = replace$1(it, plus, ' '); + var bytes = 4; + try { + return decodeURIComponent(result); + } catch (error) { + while (bytes) { + result = replace$1(result, percentSequence(bytes--), percentDecode); + } + return result; + } + }; + + var find = /[!'()~]|%20/g; + + var replacements = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+' + }; + + var replacer = function (match) { + return replacements[match]; + }; + + var serialize = function (it) { + return replace$1(encodeURIComponent$1(it), find, replacer); + }; + + var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) { + setInternalState$1(this, { + type: URL_SEARCH_PARAMS_ITERATOR, + target: getInternalParamsState(params).entries, + index: 0, + kind: kind + }); + }, URL_SEARCH_PARAMS, function next() { + var state = getInternalIteratorState(this); + var target = state.target; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return createIterResultObject(undefined, true); + } + var entry = target[index]; + switch (state.kind) { + case 'keys': return createIterResultObject(entry.key, false); + case 'values': return createIterResultObject(entry.value, false); + } return createIterResultObject([entry.key, entry.value], false); + }, true); + + var URLSearchParamsState = function (init) { + this.entries = []; + this.url = null; + + if (init !== undefined) { + if (isObject(init)) this.parseObject(init); + else this.parseQuery(typeof init == 'string' ? charAt$1(init, 0) === '?' ? stringSlice$1(init, 1) : init : $toString$1(init)); + } + }; + + URLSearchParamsState.prototype = { + type: URL_SEARCH_PARAMS, + bindURL: function (url) { + this.url = url; + this.update(); + }, + parseObject: function (object) { + var entries = this.entries; + var iteratorMethod = getIteratorMethod(object); + var iterator, next, step, entryIterator, entryNext, first, second; + + if (iteratorMethod) { + iterator = getIterator(object, iteratorMethod); + next = iterator.next; + while (!(step = call$1(next, iterator)).done) { + entryIterator = getIterator(anObject(step.value)); + entryNext = entryIterator.next; + if ( + (first = call$1(entryNext, entryIterator)).done || + (second = call$1(entryNext, entryIterator)).done || + !call$1(entryNext, entryIterator).done + ) throw new TypeError$2('Expected sequence with length 2'); + push$2(entries, { key: $toString$1(first.value), value: $toString$1(second.value) }); + } + } else for (var key in object) if (hasOwn$1(object, key)) { + push$2(entries, { key: key, value: $toString$1(object[key]) }); + } + }, + parseQuery: function (query) { + if (query) { + var entries = this.entries; + var attributes = split$1(query, '&'); + var index = 0; + var attribute, entry; + while (index < attributes.length) { + attribute = attributes[index++]; + if (attribute.length) { + entry = split$1(attribute, '='); + push$2(entries, { + key: deserialize(shift$1(entry)), + value: deserialize(join$1(entry, '=')) + }); + } + } + } + }, + serialize: function () { + var entries = this.entries; + var result = []; + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + push$2(result, serialize(entry.key) + '=' + serialize(entry.value)); + } return join$1(result, '&'); + }, + update: function () { + this.entries.length = 0; + this.parseQuery(this.url.query); + }, + updateURL: function () { + if (this.url) this.url.update(); + } + }; + + // `URLSearchParams` constructor + // https://url.spec.whatwg.org/#interface-urlsearchparams + var URLSearchParamsConstructor = function URLSearchParams(/* init */) { + anInstance$1(this, URLSearchParamsPrototype$3); + var init = arguments.length > 0 ? arguments[0] : undefined; + var state = setInternalState$1(this, new URLSearchParamsState(init)); + if (!DESCRIPTORS$2) this.size = state.entries.length; + }; + + var URLSearchParamsPrototype$3 = URLSearchParamsConstructor.prototype; + + defineBuiltIns(URLSearchParamsPrototype$3, { + // `URLSearchParams.prototype.append` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-append + append: function append(name, value) { + var state = getInternalParamsState(this); + validateArgumentsLength$3(arguments.length, 2); + push$2(state.entries, { key: $toString$1(name), value: $toString$1(value) }); + if (!DESCRIPTORS$2) this.length++; + state.updateURL(); + }, + // `URLSearchParams.prototype.delete` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-delete + 'delete': function (name /* , value */) { + var state = getInternalParamsState(this); + var length = validateArgumentsLength$3(arguments.length, 1); + var entries = state.entries; + var key = $toString$1(name); + var $value = length < 2 ? undefined : arguments[1]; + var value = $value === undefined ? $value : $toString$1($value); + var index = 0; + while (index < entries.length) { + var entry = entries[index]; + if (entry.key === key && (value === undefined || entry.value === value)) { + splice(entries, index, 1); + if (value !== undefined) break; + } else index++; + } + if (!DESCRIPTORS$2) this.size = entries.length; + state.updateURL(); + }, + // `URLSearchParams.prototype.get` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-get + get: function get(name) { + var entries = getInternalParamsState(this).entries; + validateArgumentsLength$3(arguments.length, 1); + var key = $toString$1(name); + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) return entries[index].value; + } + return null; + }, + // `URLSearchParams.prototype.getAll` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-getall + getAll: function getAll(name) { + var entries = getInternalParamsState(this).entries; + validateArgumentsLength$3(arguments.length, 1); + var key = $toString$1(name); + var result = []; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) push$2(result, entries[index].value); + } + return result; + }, + // `URLSearchParams.prototype.has` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-has + has: function has(name /* , value */) { + var entries = getInternalParamsState(this).entries; + var length = validateArgumentsLength$3(arguments.length, 1); + var key = $toString$1(name); + var $value = length < 2 ? undefined : arguments[1]; + var value = $value === undefined ? $value : $toString$1($value); + var index = 0; + while (index < entries.length) { + var entry = entries[index++]; + if (entry.key === key && (value === undefined || entry.value === value)) return true; + } + return false; + }, + // `URLSearchParams.prototype.set` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-set + set: function set(name, value) { + var state = getInternalParamsState(this); + validateArgumentsLength$3(arguments.length, 1); + var entries = state.entries; + var found = false; + var key = $toString$1(name); + var val = $toString$1(value); + var index = 0; + var entry; + for (; index < entries.length; index++) { + entry = entries[index]; + if (entry.key === key) { + if (found) splice(entries, index--, 1); + else { + found = true; + entry.value = val; + } + } + } + if (!found) push$2(entries, { key: key, value: val }); + if (!DESCRIPTORS$2) this.size = entries.length; + state.updateURL(); + }, + // `URLSearchParams.prototype.sort` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-sort + sort: function sort() { + var state = getInternalParamsState(this); + arraySort(state.entries, function (a, b) { + return a.key > b.key ? 1 : -1; + }); + state.updateURL(); + }, + // `URLSearchParams.prototype.forEach` method + forEach: function forEach(callback /* , thisArg */) { + var entries = getInternalParamsState(this).entries; + var boundFunction = bind$1(callback, arguments.length > 1 ? arguments[1] : undefined); + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + boundFunction(entry.value, entry.key, this); + } + }, + // `URLSearchParams.prototype.keys` method + keys: function keys() { + return new URLSearchParamsIterator(this, 'keys'); + }, + // `URLSearchParams.prototype.values` method + values: function values() { + return new URLSearchParamsIterator(this, 'values'); + }, + // `URLSearchParams.prototype.entries` method + entries: function entries() { + return new URLSearchParamsIterator(this, 'entries'); + } + }, { enumerable: true }); + + // `URLSearchParams.prototype[@@iterator]` method + defineBuiltIn$3(URLSearchParamsPrototype$3, ITERATOR, URLSearchParamsPrototype$3.entries, { name: 'entries' }); + + // `URLSearchParams.prototype.toString` method + // https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior + defineBuiltIn$3(URLSearchParamsPrototype$3, 'toString', function toString() { + return getInternalParamsState(this).serialize(); + }, { enumerable: true }); + + // `URLSearchParams.prototype.size` getter + // https://github.com/whatwg/url/pull/734 + if (DESCRIPTORS$2) defineBuiltInAccessor$2(URLSearchParamsPrototype$3, 'size', { + get: function size() { + return getInternalParamsState(this).entries.length; + }, + configurable: true, + enumerable: true + }); + + setToStringTag$1(URLSearchParamsConstructor, URL_SEARCH_PARAMS); + + $$3({ global: true, constructor: true, forced: !USE_NATIVE_URL$1 }, { + URLSearchParams: URLSearchParamsConstructor + }); + + // Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams` + if (!USE_NATIVE_URL$1 && isCallable(Headers)) { + var headersHas = uncurryThis$4(HeadersPrototype.has); + var headersSet = uncurryThis$4(HeadersPrototype.set); + + var wrapRequestOptions = function (init) { + if (isObject(init)) { + var body = init.body; + var headers; + if (classof(body) === URL_SEARCH_PARAMS) { + headers = init.headers ? new Headers(init.headers) : new Headers(); + if (!headersHas(headers, 'content-type')) { + headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + return create(init, { + body: createPropertyDescriptor(0, $toString$1(body)), + headers: createPropertyDescriptor(0, headers) + }); + } + } return init; + }; + + if (isCallable(nativeFetch)) { + $$3({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, { + fetch: function fetch(input /* , init */) { + return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); + } + }); + } + + if (isCallable(NativeRequest)) { + var RequestConstructor = function Request(input /* , init */) { + anInstance$1(this, RequestPrototype); + return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); + }; + + RequestPrototype.constructor = RequestConstructor; + RequestConstructor.prototype = RequestPrototype; + + $$3({ global: true, constructor: true, dontCallGetSet: true, forced: true }, { + Request: RequestConstructor + }); + } + } + + var web_urlSearchParams_constructor = { + URLSearchParams: URLSearchParamsConstructor, + getState: getInternalParamsState + }; + + // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` + + var $$2 = _export; + var DESCRIPTORS$1 = descriptors; + var USE_NATIVE_URL = urlConstructorDetection; + var global$1 = global$K; + var bind = functionBindContext; + var uncurryThis$3 = functionUncurryThis; + var defineBuiltIn$2 = defineBuiltIn$g; + var defineBuiltInAccessor$1 = defineBuiltInAccessor$d; + var anInstance = anInstance$9; + var hasOwn = hasOwnProperty_1; + var assign = objectAssign; + var arrayFrom = arrayFrom$1; + var arraySlice = arraySlice$6; + var codeAt = stringMultibyte.codeAt; + var toASCII = stringPunycodeToAscii; + var $toString = toString$i; + var setToStringTag = setToStringTag$a; + var validateArgumentsLength$2 = validateArgumentsLength$6; + var URLSearchParamsModule = web_urlSearchParams_constructor; + var InternalStateModule = internalState; + + var setInternalState = InternalStateModule.set; + var getInternalURLState = InternalStateModule.getterFor('URL'); + var URLSearchParams$1 = URLSearchParamsModule.URLSearchParams; + var getInternalSearchParamsState = URLSearchParamsModule.getState; + + var NativeURL = global$1.URL; + var TypeError$1 = global$1.TypeError; + var parseInt$1 = global$1.parseInt; + var floor = Math.floor; + var pow = Math.pow; + var charAt = uncurryThis$3(''.charAt); + var exec = uncurryThis$3(/./.exec); + var join = uncurryThis$3([].join); + var numberToString = uncurryThis$3(1.0.toString); + var pop = uncurryThis$3([].pop); + var push$1 = uncurryThis$3([].push); + var replace = uncurryThis$3(''.replace); + var shift = uncurryThis$3([].shift); + var split = uncurryThis$3(''.split); + var stringSlice = uncurryThis$3(''.slice); + var toLowerCase = uncurryThis$3(''.toLowerCase); + var unshift = uncurryThis$3([].unshift); + + var INVALID_AUTHORITY = 'Invalid authority'; + var INVALID_SCHEME = 'Invalid scheme'; + var INVALID_HOST = 'Invalid host'; + var INVALID_PORT = 'Invalid port'; + + var ALPHA = /[a-z]/i; + // eslint-disable-next-line regexp/no-obscure-range -- safe + var ALPHANUMERIC = /[\d+-.a-z]/i; + var DIGIT = /\d/; + var HEX_START = /^0x/i; + var OCT = /^[0-7]+$/; + var DEC = /^\d+$/; + var HEX = /^[\da-f]+$/i; + /* eslint-disable regexp/no-control-character -- safe */ + var FORBIDDEN_HOST_CODE_POINT = /[\0\t\n\r #%/:<>?@[\\\]^|]/; + var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\0\t\n\r #/:<>?@[\\\]^|]/; + var LEADING_C0_CONTROL_OR_SPACE = /^[\u0000-\u0020]+/; + var TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\u0000-\u0020])[\u0000-\u0020]+$/; + var TAB_AND_NEW_LINE = /[\t\n\r]/g; + /* eslint-enable regexp/no-control-character -- safe */ + var EOF; + + // https://url.spec.whatwg.org/#ipv4-number-parser + var parseIPv4 = function (input) { + var parts = split(input, '.'); + var partsLength, numbers, index, part, radix, number, ipv4; + if (parts.length && parts[parts.length - 1] === '') { + parts.length--; + } + partsLength = parts.length; + if (partsLength > 4) return input; + numbers = []; + for (index = 0; index < partsLength; index++) { + part = parts[index]; + if (part === '') return input; + radix = 10; + if (part.length > 1 && charAt(part, 0) === '0') { + radix = exec(HEX_START, part) ? 16 : 8; + part = stringSlice(part, radix === 8 ? 1 : 2); + } + if (part === '') { + number = 0; + } else { + if (!exec(radix === 10 ? DEC : radix === 8 ? OCT : HEX, part)) return input; + number = parseInt$1(part, radix); + } + push$1(numbers, number); + } + for (index = 0; index < partsLength; index++) { + number = numbers[index]; + if (index === partsLength - 1) { + if (number >= pow(256, 5 - partsLength)) return null; + } else if (number > 255) return null; + } + ipv4 = pop(numbers); + for (index = 0; index < numbers.length; index++) { + ipv4 += numbers[index] * pow(256, 3 - index); + } + return ipv4; + }; + + // https://url.spec.whatwg.org/#concept-ipv6-parser + // eslint-disable-next-line max-statements -- TODO + var parseIPv6 = function (input) { + var address = [0, 0, 0, 0, 0, 0, 0, 0]; + var pieceIndex = 0; + var compress = null; + var pointer = 0; + var value, length, numbersSeen, ipv4Piece, number, swaps, swap; + + var chr = function () { + return charAt(input, pointer); + }; + + if (chr() === ':') { + if (charAt(input, 1) !== ':') return; + pointer += 2; + pieceIndex++; + compress = pieceIndex; + } + while (chr()) { + if (pieceIndex === 8) return; + if (chr() === ':') { + if (compress !== null) return; + pointer++; + pieceIndex++; + compress = pieceIndex; + continue; + } + value = length = 0; + while (length < 4 && exec(HEX, chr())) { + value = value * 16 + parseInt$1(chr(), 16); + pointer++; + length++; + } + if (chr() === '.') { + if (length === 0) return; + pointer -= length; + if (pieceIndex > 6) return; + numbersSeen = 0; + while (chr()) { + ipv4Piece = null; + if (numbersSeen > 0) { + if (chr() === '.' && numbersSeen < 4) pointer++; + else return; + } + if (!exec(DIGIT, chr())) return; + while (exec(DIGIT, chr())) { + number = parseInt$1(chr(), 10); + if (ipv4Piece === null) ipv4Piece = number; + else if (ipv4Piece === 0) return; + else ipv4Piece = ipv4Piece * 10 + number; + if (ipv4Piece > 255) return; + pointer++; + } + address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; + numbersSeen++; + if (numbersSeen === 2 || numbersSeen === 4) pieceIndex++; + } + if (numbersSeen !== 4) return; + break; + } else if (chr() === ':') { + pointer++; + if (!chr()) return; + } else if (chr()) return; + address[pieceIndex++] = value; + } + if (compress !== null) { + swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex !== 0 && swaps > 0) { + swap = address[pieceIndex]; + address[pieceIndex--] = address[compress + swaps - 1]; + address[compress + --swaps] = swap; + } + } else if (pieceIndex !== 8) return; + return address; + }; + + var findLongestZeroSequence = function (ipv6) { + var maxIndex = null; + var maxLength = 1; + var currStart = null; + var currLength = 0; + var index = 0; + for (; index < 8; index++) { + if (ipv6[index] !== 0) { + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + currStart = null; + currLength = 0; + } else { + if (currStart === null) currStart = index; + ++currLength; + } + } + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + return maxIndex; + }; + + // https://url.spec.whatwg.org/#host-serializing + var serializeHost = function (host) { + var result, index, compress, ignore0; + // ipv4 + if (typeof host == 'number') { + result = []; + for (index = 0; index < 4; index++) { + unshift(result, host % 256); + host = floor(host / 256); + } return join(result, '.'); + // ipv6 + } else if (typeof host == 'object') { + result = ''; + compress = findLongestZeroSequence(host); + for (index = 0; index < 8; index++) { + if (ignore0 && host[index] === 0) continue; + if (ignore0) ignore0 = false; + if (compress === index) { + result += index ? ':' : '::'; + ignore0 = true; + } else { + result += numberToString(host[index], 16); + if (index < 7) result += ':'; + } + } + return '[' + result + ']'; + } return host; + }; + + var C0ControlPercentEncodeSet = {}; + var fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, { + ' ': 1, '"': 1, '<': 1, '>': 1, '`': 1 + }); + var pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, { + '#': 1, '?': 1, '{': 1, '}': 1 + }); + var userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, { + '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\': 1, ']': 1, '^': 1, '|': 1 + }); + + var percentEncode = function (chr, set) { + var code = codeAt(chr, 0); + return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr); + }; + + // https://url.spec.whatwg.org/#special-scheme + var specialSchemes = { + ftp: 21, + file: null, + http: 80, + https: 443, + ws: 80, + wss: 443 + }; + + // https://url.spec.whatwg.org/#windows-drive-letter + var isWindowsDriveLetter = function (string, normalized) { + var second; + return string.length === 2 && exec(ALPHA, charAt(string, 0)) + && ((second = charAt(string, 1)) === ':' || (!normalized && second === '|')); + }; + + // https://url.spec.whatwg.org/#start-with-a-windows-drive-letter + var startsWithWindowsDriveLetter = function (string) { + var third; + return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && ( + string.length === 2 || + ((third = charAt(string, 2)) === '/' || third === '\\' || third === '?' || third === '#') + ); + }; + + // https://url.spec.whatwg.org/#single-dot-path-segment + var isSingleDot = function (segment) { + return segment === '.' || toLowerCase(segment) === '%2e'; + }; + + // https://url.spec.whatwg.org/#double-dot-path-segment + var isDoubleDot = function (segment) { + segment = toLowerCase(segment); + return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e'; + }; + + // States: + var SCHEME_START = {}; + var SCHEME = {}; + var NO_SCHEME = {}; + var SPECIAL_RELATIVE_OR_AUTHORITY = {}; + var PATH_OR_AUTHORITY = {}; + var RELATIVE = {}; + var RELATIVE_SLASH = {}; + var SPECIAL_AUTHORITY_SLASHES = {}; + var SPECIAL_AUTHORITY_IGNORE_SLASHES = {}; + var AUTHORITY = {}; + var HOST = {}; + var HOSTNAME = {}; + var PORT = {}; + var FILE = {}; + var FILE_SLASH = {}; + var FILE_HOST = {}; + var PATH_START = {}; + var PATH = {}; + var CANNOT_BE_A_BASE_URL_PATH = {}; + var QUERY = {}; + var FRAGMENT = {}; + + var URLState = function (url, isBase, base) { + var urlString = $toString(url); + var baseState, failure, searchParams; + if (isBase) { + failure = this.parse(urlString); + if (failure) throw new TypeError$1(failure); + this.searchParams = null; + } else { + if (base !== undefined) baseState = new URLState(base, true); + failure = this.parse(urlString, null, baseState); + if (failure) throw new TypeError$1(failure); + searchParams = getInternalSearchParamsState(new URLSearchParams$1()); + searchParams.bindURL(this); + this.searchParams = searchParams; + } + }; + + URLState.prototype = { + type: 'URL', + // https://url.spec.whatwg.org/#url-parsing + // eslint-disable-next-line max-statements -- TODO + parse: function (input, stateOverride, base) { + var url = this; + var state = stateOverride || SCHEME_START; + var pointer = 0; + var buffer = ''; + var seenAt = false; + var seenBracket = false; + var seenPasswordToken = false; + var codePoints, chr, bufferCodePoints, failure; + + input = $toString(input); + + if (!stateOverride) { + url.scheme = ''; + url.username = ''; + url.password = ''; + url.host = null; + url.port = null; + url.path = []; + url.query = null; + url.fragment = null; + url.cannotBeABaseURL = false; + input = replace(input, LEADING_C0_CONTROL_OR_SPACE, ''); + input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1'); + } + + input = replace(input, TAB_AND_NEW_LINE, ''); + + codePoints = arrayFrom(input); + + while (pointer <= codePoints.length) { + chr = codePoints[pointer]; + switch (state) { + case SCHEME_START: + if (chr && exec(ALPHA, chr)) { + buffer += toLowerCase(chr); + state = SCHEME; + } else if (!stateOverride) { + state = NO_SCHEME; + continue; + } else return INVALID_SCHEME; + break; + + case SCHEME: + if (chr && (exec(ALPHANUMERIC, chr) || chr === '+' || chr === '-' || chr === '.')) { + buffer += toLowerCase(chr); + } else if (chr === ':') { + if (stateOverride && ( + (url.isSpecial() !== hasOwn(specialSchemes, buffer)) || + (buffer === 'file' && (url.includesCredentials() || url.port !== null)) || + (url.scheme === 'file' && !url.host) + )) return; + url.scheme = buffer; + if (stateOverride) { + if (url.isSpecial() && specialSchemes[url.scheme] === url.port) url.port = null; + return; + } + buffer = ''; + if (url.scheme === 'file') { + state = FILE; + } else if (url.isSpecial() && base && base.scheme === url.scheme) { + state = SPECIAL_RELATIVE_OR_AUTHORITY; + } else if (url.isSpecial()) { + state = SPECIAL_AUTHORITY_SLASHES; + } else if (codePoints[pointer + 1] === '/') { + state = PATH_OR_AUTHORITY; + pointer++; + } else { + url.cannotBeABaseURL = true; + push$1(url.path, ''); + state = CANNOT_BE_A_BASE_URL_PATH; + } + } else if (!stateOverride) { + buffer = ''; + state = NO_SCHEME; + pointer = 0; + continue; + } else return INVALID_SCHEME; + break; + + case NO_SCHEME: + if (!base || (base.cannotBeABaseURL && chr !== '#')) return INVALID_SCHEME; + if (base.cannotBeABaseURL && chr === '#') { + url.scheme = base.scheme; + url.path = arraySlice(base.path); + url.query = base.query; + url.fragment = ''; + url.cannotBeABaseURL = true; + state = FRAGMENT; + break; + } + state = base.scheme === 'file' ? FILE : RELATIVE; + continue; + + case SPECIAL_RELATIVE_OR_AUTHORITY: + if (chr === '/' && codePoints[pointer + 1] === '/') { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + pointer++; + } else { + state = RELATIVE; + continue; + } break; + + case PATH_OR_AUTHORITY: + if (chr === '/') { + state = AUTHORITY; + break; + } else { + state = PATH; + continue; + } + + case RELATIVE: + url.scheme = base.scheme; + if (chr === EOF) { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice(base.path); + url.query = base.query; + } else if (chr === '/' || (chr === '\\' && url.isSpecial())) { + state = RELATIVE_SLASH; + } else if (chr === '?') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice(base.path); + url.query = ''; + state = QUERY; + } else if (chr === '#') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice(base.path); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice(base.path); + url.path.length--; + state = PATH; + continue; + } break; + + case RELATIVE_SLASH: + if (url.isSpecial() && (chr === '/' || chr === '\\')) { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + } else if (chr === '/') { + state = AUTHORITY; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + state = PATH; + continue; + } break; + + case SPECIAL_AUTHORITY_SLASHES: + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + if (chr !== '/' || charAt(buffer, pointer + 1) !== '/') continue; + pointer++; + break; + + case SPECIAL_AUTHORITY_IGNORE_SLASHES: + if (chr !== '/' && chr !== '\\') { + state = AUTHORITY; + continue; + } break; + + case AUTHORITY: + if (chr === '@') { + if (seenAt) buffer = '%40' + buffer; + seenAt = true; + bufferCodePoints = arrayFrom(buffer); + for (var i = 0; i < bufferCodePoints.length; i++) { + var codePoint = bufferCodePoints[i]; + if (codePoint === ':' && !seenPasswordToken) { + seenPasswordToken = true; + continue; + } + var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet); + if (seenPasswordToken) url.password += encodedCodePoints; + else url.username += encodedCodePoints; + } + buffer = ''; + } else if ( + chr === EOF || chr === '/' || chr === '?' || chr === '#' || + (chr === '\\' && url.isSpecial()) + ) { + if (seenAt && buffer === '') return INVALID_AUTHORITY; + pointer -= arrayFrom(buffer).length + 1; + buffer = ''; + state = HOST; + } else buffer += chr; + break; + + case HOST: + case HOSTNAME: + if (stateOverride && url.scheme === 'file') { + state = FILE_HOST; + continue; + } else if (chr === ':' && !seenBracket) { + if (buffer === '') return INVALID_HOST; + failure = url.parseHost(buffer); + if (failure) return failure; + buffer = ''; + state = PORT; + if (stateOverride === HOSTNAME) return; + } else if ( + chr === EOF || chr === '/' || chr === '?' || chr === '#' || + (chr === '\\' && url.isSpecial()) + ) { + if (url.isSpecial() && buffer === '') return INVALID_HOST; + if (stateOverride && buffer === '' && (url.includesCredentials() || url.port !== null)) return; + failure = url.parseHost(buffer); + if (failure) return failure; + buffer = ''; + state = PATH_START; + if (stateOverride) return; + continue; + } else { + if (chr === '[') seenBracket = true; + else if (chr === ']') seenBracket = false; + buffer += chr; + } break; + + case PORT: + if (exec(DIGIT, chr)) { + buffer += chr; + } else if ( + chr === EOF || chr === '/' || chr === '?' || chr === '#' || + (chr === '\\' && url.isSpecial()) || + stateOverride + ) { + if (buffer !== '') { + var port = parseInt$1(buffer, 10); + if (port > 0xFFFF) return INVALID_PORT; + url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port; + buffer = ''; + } + if (stateOverride) return; + state = PATH_START; + continue; + } else return INVALID_PORT; + break; + + case FILE: + url.scheme = 'file'; + if (chr === '/' || chr === '\\') state = FILE_SLASH; + else if (base && base.scheme === 'file') { + switch (chr) { + case EOF: + url.host = base.host; + url.path = arraySlice(base.path); + url.query = base.query; + break; + case '?': + url.host = base.host; + url.path = arraySlice(base.path); + url.query = ''; + state = QUERY; + break; + case '#': + url.host = base.host; + url.path = arraySlice(base.path); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + break; + default: + if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) { + url.host = base.host; + url.path = arraySlice(base.path); + url.shortenPath(); + } + state = PATH; + continue; + } + } else { + state = PATH; + continue; + } break; + + case FILE_SLASH: + if (chr === '/' || chr === '\\') { + state = FILE_HOST; + break; + } + if (base && base.scheme === 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) { + if (isWindowsDriveLetter(base.path[0], true)) push$1(url.path, base.path[0]); + else url.host = base.host; + } + state = PATH; + continue; + + case FILE_HOST: + if (chr === EOF || chr === '/' || chr === '\\' || chr === '?' || chr === '#') { + if (!stateOverride && isWindowsDriveLetter(buffer)) { + state = PATH; + } else if (buffer === '') { + url.host = ''; + if (stateOverride) return; + state = PATH_START; + } else { + failure = url.parseHost(buffer); + if (failure) return failure; + if (url.host === 'localhost') url.host = ''; + if (stateOverride) return; + buffer = ''; + state = PATH_START; + } continue; + } else buffer += chr; + break; + + case PATH_START: + if (url.isSpecial()) { + state = PATH; + if (chr !== '/' && chr !== '\\') continue; + } else if (!stateOverride && chr === '?') { + url.query = ''; + state = QUERY; + } else if (!stateOverride && chr === '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (chr !== EOF) { + state = PATH; + if (chr !== '/') continue; + } break; + + case PATH: + if ( + chr === EOF || chr === '/' || + (chr === '\\' && url.isSpecial()) || + (!stateOverride && (chr === '?' || chr === '#')) + ) { + if (isDoubleDot(buffer)) { + url.shortenPath(); + if (chr !== '/' && !(chr === '\\' && url.isSpecial())) { + push$1(url.path, ''); + } + } else if (isSingleDot(buffer)) { + if (chr !== '/' && !(chr === '\\' && url.isSpecial())) { + push$1(url.path, ''); + } + } else { + if (url.scheme === 'file' && !url.path.length && isWindowsDriveLetter(buffer)) { + if (url.host) url.host = ''; + buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter + } + push$1(url.path, buffer); + } + buffer = ''; + if (url.scheme === 'file' && (chr === EOF || chr === '?' || chr === '#')) { + while (url.path.length > 1 && url.path[0] === '') { + shift(url.path); + } + } + if (chr === '?') { + url.query = ''; + state = QUERY; + } else if (chr === '#') { + url.fragment = ''; + state = FRAGMENT; + } + } else { + buffer += percentEncode(chr, pathPercentEncodeSet); + } break; + + case CANNOT_BE_A_BASE_URL_PATH: + if (chr === '?') { + url.query = ''; + state = QUERY; + } else if (chr === '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (chr !== EOF) { + url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet); + } break; + + case QUERY: + if (!stateOverride && chr === '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (chr !== EOF) { + if (chr === "'" && url.isSpecial()) url.query += '%27'; + else if (chr === '#') url.query += '%23'; + else url.query += percentEncode(chr, C0ControlPercentEncodeSet); + } break; + + case FRAGMENT: + if (chr !== EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet); + break; + } + + pointer++; + } + }, + // https://url.spec.whatwg.org/#host-parsing + parseHost: function (input) { + var result, codePoints, index; + if (charAt(input, 0) === '[') { + if (charAt(input, input.length - 1) !== ']') return INVALID_HOST; + result = parseIPv6(stringSlice(input, 1, -1)); + if (!result) return INVALID_HOST; + this.host = result; + // opaque host + } else if (!this.isSpecial()) { + if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST; + result = ''; + codePoints = arrayFrom(input); + for (index = 0; index < codePoints.length; index++) { + result += percentEncode(codePoints[index], C0ControlPercentEncodeSet); + } + this.host = result; + } else { + input = toASCII(input); + if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST; + result = parseIPv4(input); + if (result === null) return INVALID_HOST; + this.host = result; + } + }, + // https://url.spec.whatwg.org/#cannot-have-a-username-password-port + cannotHaveUsernamePasswordPort: function () { + return !this.host || this.cannotBeABaseURL || this.scheme === 'file'; + }, + // https://url.spec.whatwg.org/#include-credentials + includesCredentials: function () { + return this.username !== '' || this.password !== ''; + }, + // https://url.spec.whatwg.org/#is-special + isSpecial: function () { + return hasOwn(specialSchemes, this.scheme); + }, + // https://url.spec.whatwg.org/#shorten-a-urls-path + shortenPath: function () { + var path = this.path; + var pathSize = path.length; + if (pathSize && (this.scheme !== 'file' || pathSize !== 1 || !isWindowsDriveLetter(path[0], true))) { + path.length--; + } + }, + // https://url.spec.whatwg.org/#concept-url-serializer + serialize: function () { + var url = this; + var scheme = url.scheme; + var username = url.username; + var password = url.password; + var host = url.host; + var port = url.port; + var path = url.path; + var query = url.query; + var fragment = url.fragment; + var output = scheme + ':'; + if (host !== null) { + output += '//'; + if (url.includesCredentials()) { + output += username + (password ? ':' + password : '') + '@'; + } + output += serializeHost(host); + if (port !== null) output += ':' + port; + } else if (scheme === 'file') output += '//'; + output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : ''; + if (query !== null) output += '?' + query; + if (fragment !== null) output += '#' + fragment; + return output; + }, + // https://url.spec.whatwg.org/#dom-url-href + setHref: function (href) { + var failure = this.parse(href); + if (failure) throw new TypeError$1(failure); + this.searchParams.update(); + }, + // https://url.spec.whatwg.org/#dom-url-origin + getOrigin: function () { + var scheme = this.scheme; + var port = this.port; + if (scheme === 'blob') try { + return new URLConstructor(scheme.path[0]).origin; + } catch (error) { + return 'null'; + } + if (scheme === 'file' || !this.isSpecial()) return 'null'; + return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : ''); + }, + // https://url.spec.whatwg.org/#dom-url-protocol + getProtocol: function () { + return this.scheme + ':'; + }, + setProtocol: function (protocol) { + this.parse($toString(protocol) + ':', SCHEME_START); + }, + // https://url.spec.whatwg.org/#dom-url-username + getUsername: function () { + return this.username; + }, + setUsername: function (username) { + var codePoints = arrayFrom($toString(username)); + if (this.cannotHaveUsernamePasswordPort()) return; + this.username = ''; + for (var i = 0; i < codePoints.length; i++) { + this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }, + // https://url.spec.whatwg.org/#dom-url-password + getPassword: function () { + return this.password; + }, + setPassword: function (password) { + var codePoints = arrayFrom($toString(password)); + if (this.cannotHaveUsernamePasswordPort()) return; + this.password = ''; + for (var i = 0; i < codePoints.length; i++) { + this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }, + // https://url.spec.whatwg.org/#dom-url-host + getHost: function () { + var host = this.host; + var port = this.port; + return host === null ? '' + : port === null ? serializeHost(host) + : serializeHost(host) + ':' + port; + }, + setHost: function (host) { + if (this.cannotBeABaseURL) return; + this.parse(host, HOST); + }, + // https://url.spec.whatwg.org/#dom-url-hostname + getHostname: function () { + var host = this.host; + return host === null ? '' : serializeHost(host); + }, + setHostname: function (hostname) { + if (this.cannotBeABaseURL) return; + this.parse(hostname, HOSTNAME); + }, + // https://url.spec.whatwg.org/#dom-url-port + getPort: function () { + var port = this.port; + return port === null ? '' : $toString(port); + }, + setPort: function (port) { + if (this.cannotHaveUsernamePasswordPort()) return; + port = $toString(port); + if (port === '') this.port = null; + else this.parse(port, PORT); + }, + // https://url.spec.whatwg.org/#dom-url-pathname + getPathname: function () { + var path = this.path; + return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : ''; + }, + setPathname: function (pathname) { + if (this.cannotBeABaseURL) return; + this.path = []; + this.parse(pathname, PATH_START); + }, + // https://url.spec.whatwg.org/#dom-url-search + getSearch: function () { + var query = this.query; + return query ? '?' + query : ''; + }, + setSearch: function (search) { + search = $toString(search); + if (search === '') { + this.query = null; + } else { + if (charAt(search, 0) === '?') search = stringSlice(search, 1); + this.query = ''; + this.parse(search, QUERY); + } + this.searchParams.update(); + }, + // https://url.spec.whatwg.org/#dom-url-searchparams + getSearchParams: function () { + return this.searchParams.facade; + }, + // https://url.spec.whatwg.org/#dom-url-hash + getHash: function () { + var fragment = this.fragment; + return fragment ? '#' + fragment : ''; + }, + setHash: function (hash) { + hash = $toString(hash); + if (hash === '') { + this.fragment = null; + return; + } + if (charAt(hash, 0) === '#') hash = stringSlice(hash, 1); + this.fragment = ''; + this.parse(hash, FRAGMENT); + }, + update: function () { + this.query = this.searchParams.serialize() || null; + } + }; + + // `URL` constructor + // https://url.spec.whatwg.org/#url-class + var URLConstructor = function URL(url /* , base */) { + var that = anInstance(this, URLPrototype); + var base = validateArgumentsLength$2(arguments.length, 1) > 1 ? arguments[1] : undefined; + var state = setInternalState(that, new URLState(url, false, base)); + if (!DESCRIPTORS$1) { + that.href = state.serialize(); + that.origin = state.getOrigin(); + that.protocol = state.getProtocol(); + that.username = state.getUsername(); + that.password = state.getPassword(); + that.host = state.getHost(); + that.hostname = state.getHostname(); + that.port = state.getPort(); + that.pathname = state.getPathname(); + that.search = state.getSearch(); + that.searchParams = state.getSearchParams(); + that.hash = state.getHash(); + } + }; + + var URLPrototype = URLConstructor.prototype; + + var accessorDescriptor = function (getter, setter) { + return { + get: function () { + return getInternalURLState(this)[getter](); + }, + set: setter && function (value) { + return getInternalURLState(this)[setter](value); + }, + configurable: true, + enumerable: true + }; + }; + + if (DESCRIPTORS$1) { + // `URL.prototype.href` accessors pair + // https://url.spec.whatwg.org/#dom-url-href + defineBuiltInAccessor$1(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref')); + // `URL.prototype.origin` getter + // https://url.spec.whatwg.org/#dom-url-origin + defineBuiltInAccessor$1(URLPrototype, 'origin', accessorDescriptor('getOrigin')); + // `URL.prototype.protocol` accessors pair + // https://url.spec.whatwg.org/#dom-url-protocol + defineBuiltInAccessor$1(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol')); + // `URL.prototype.username` accessors pair + // https://url.spec.whatwg.org/#dom-url-username + defineBuiltInAccessor$1(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername')); + // `URL.prototype.password` accessors pair + // https://url.spec.whatwg.org/#dom-url-password + defineBuiltInAccessor$1(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword')); + // `URL.prototype.host` accessors pair + // https://url.spec.whatwg.org/#dom-url-host + defineBuiltInAccessor$1(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost')); + // `URL.prototype.hostname` accessors pair + // https://url.spec.whatwg.org/#dom-url-hostname + defineBuiltInAccessor$1(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname')); + // `URL.prototype.port` accessors pair + // https://url.spec.whatwg.org/#dom-url-port + defineBuiltInAccessor$1(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort')); + // `URL.prototype.pathname` accessors pair + // https://url.spec.whatwg.org/#dom-url-pathname + defineBuiltInAccessor$1(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname')); + // `URL.prototype.search` accessors pair + // https://url.spec.whatwg.org/#dom-url-search + defineBuiltInAccessor$1(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch')); + // `URL.prototype.searchParams` getter + // https://url.spec.whatwg.org/#dom-url-searchparams + defineBuiltInAccessor$1(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams')); + // `URL.prototype.hash` accessors pair + // https://url.spec.whatwg.org/#dom-url-hash + defineBuiltInAccessor$1(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash')); + } + + // `URL.prototype.toJSON` method + // https://url.spec.whatwg.org/#dom-url-tojson + defineBuiltIn$2(URLPrototype, 'toJSON', function toJSON() { + return getInternalURLState(this).serialize(); + }, { enumerable: true }); + + // `URL.prototype.toString` method + // https://url.spec.whatwg.org/#URL-stringification-behavior + defineBuiltIn$2(URLPrototype, 'toString', function toString() { + return getInternalURLState(this).serialize(); + }, { enumerable: true }); + + if (NativeURL) { + var nativeCreateObjectURL = NativeURL.createObjectURL; + var nativeRevokeObjectURL = NativeURL.revokeObjectURL; + // `URL.createObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL + if (nativeCreateObjectURL) defineBuiltIn$2(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL)); + // `URL.revokeObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL + if (nativeRevokeObjectURL) defineBuiltIn$2(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL)); + } + + setToStringTag(URLConstructor, 'URL'); + + $$2({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS$1 }, { + URL: URLConstructor + }); + + var $$1 = _export; + var call = functionCall; + + // `URL.prototype.toJSON` method + // https://url.spec.whatwg.org/#dom-url-tojson + $$1({ target: 'URL', proto: true, enumerable: true }, { + toJSON: function toJSON() { + return call(URL.prototype.toString, this); + } + }); + + var defineBuiltIn$1 = defineBuiltIn$g; + var uncurryThis$2 = functionUncurryThis; + var toString$1 = toString$i; + var validateArgumentsLength$1 = validateArgumentsLength$6; + + var $URLSearchParams$1 = URLSearchParams; + var URLSearchParamsPrototype$2 = $URLSearchParams$1.prototype; + var append = uncurryThis$2(URLSearchParamsPrototype$2.append); + var $delete = uncurryThis$2(URLSearchParamsPrototype$2['delete']); + var forEach$1 = uncurryThis$2(URLSearchParamsPrototype$2.forEach); + var push = uncurryThis$2([].push); + var params$1 = new $URLSearchParams$1('a=1&a=2&b=3'); + + params$1['delete']('a', 1); + // `undefined` case is a Chromium 117 bug + // https://bugs.chromium.org/p/v8/issues/detail?id=14222 + params$1['delete']('b', undefined); + + if (params$1 + '' !== 'a=2') { + defineBuiltIn$1(URLSearchParamsPrototype$2, 'delete', function (name /* , value */) { + var length = arguments.length; + var $value = length < 2 ? undefined : arguments[1]; + if (length && $value === undefined) return $delete(this, name); + var entries = []; + forEach$1(this, function (v, k) { // also validates `this` + push(entries, { key: k, value: v }); + }); + validateArgumentsLength$1(length, 1); + var key = toString$1(name); + var value = toString$1($value); + var index = 0; + var dindex = 0; + var found = false; + var entriesLength = entries.length; + var entry; + while (index < entriesLength) { + entry = entries[index++]; + if (found || entry.key === key) { + found = true; + $delete(this, entry.key); + } else dindex++; + } + while (dindex < entriesLength) { + entry = entries[dindex++]; + if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value); + } + }, { enumerable: true, unsafe: true }); + } + + var defineBuiltIn = defineBuiltIn$g; + var uncurryThis$1 = functionUncurryThis; + var toString = toString$i; + var validateArgumentsLength = validateArgumentsLength$6; + + var $URLSearchParams = URLSearchParams; + var URLSearchParamsPrototype$1 = $URLSearchParams.prototype; + var getAll = uncurryThis$1(URLSearchParamsPrototype$1.getAll); + var $has = uncurryThis$1(URLSearchParamsPrototype$1.has); + var params = new $URLSearchParams('a=1'); + + // `undefined` case is a Chromium 117 bug + // https://bugs.chromium.org/p/v8/issues/detail?id=14222 + if (params.has('a', 2) || !params.has('a', undefined)) { + defineBuiltIn(URLSearchParamsPrototype$1, 'has', function has(name /* , value */) { + var length = arguments.length; + var $value = length < 2 ? undefined : arguments[1]; + if (length && $value === undefined) return $has(this, name); + var values = getAll(this, name); // also validates `this` + validateArgumentsLength(length, 1); + var value = toString($value); + var index = 0; + while (index < values.length) { + if (values[index++] === value) return true; + } return false; + }, { enumerable: true, unsafe: true }); + } + + var DESCRIPTORS = descriptors; + var uncurryThis = functionUncurryThis; + var defineBuiltInAccessor = defineBuiltInAccessor$d; + + var URLSearchParamsPrototype = URLSearchParams.prototype; + var forEach = uncurryThis(URLSearchParamsPrototype.forEach); + + // `URLSearchParams.prototype.size` getter + // https://github.com/whatwg/url/pull/734 + if (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) { + defineBuiltInAccessor(URLSearchParamsPrototype, 'size', { + get: function size() { + var count = 0; + forEach(this, function () { count++; }); + return count; + }, + configurable: true, + enumerable: true + }); + } + + var $ = _export; + + // eslint-disable-next-line es/no-math-hypot -- required for testing + var $hypot = Math.hypot; + var abs = Math.abs; + var sqrt = Math.sqrt; + + // Chrome 77 bug + // https://bugs.chromium.org/p/v8/issues/detail?id=9546 + var FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity; + + // `Math.hypot` method + // https://tc39.es/ecma262/#sec-math.hypot + $({ target: 'Math', stat: true, arity: 2, forced: FORCED }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + hypot: function hypot(value1, value2) { + var sum = 0; + var i = 0; + var aLen = arguments.length; + var larg = 0; + var arg, div; + while (i < aLen) { + arg = abs(arguments[i++]); + if (larg < arg) { + div = larg / arg; + sum = sum * div * div + 1; + larg = arg; + } else if (arg > 0) { + div = arg / larg; + sum += div * div; + } else sum += arg; + } + return larg === Infinity ? Infinity : larg * sqrt(sum); + } + }); + + var createTypedArrayConstructor$1 = typedArrayConstructorExports; + + // `Uint16Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$1('Uint16', function (init) { + return function Uint16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var createTypedArrayConstructor = typedArrayConstructorExports; + + // `Uint32Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor('Uint32', function (init) { + return function Uint32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + /*! + * SJS 6.14.3 + */ + + !function(){function e(e,t){return (t||"")+" (SystemJS https://github.com/systemjs/systemjs/blob/main/docs/errors.md#"+e+")"}function t(e,t){if(-1!==e.indexOf("\\")&&(e=e.replace(j,"/")),"/"===e[0]&&"/"===e[1])return t.slice(0,t.indexOf(":")+1)+e;if("."===e[0]&&("/"===e[1]||"."===e[1]&&("/"===e[2]||2===e.length&&(e+="/"))||1===e.length&&(e+="/"))||"/"===e[0]){var r,n=t.slice(0,t.indexOf(":")+1);if(r="/"===t[n.length+1]?"file:"!==n?(r=t.slice(n.length+2)).slice(r.indexOf("/")+1):t.slice(8):t.slice(n.length+("/"===t[n.length])),"/"===e[0])return t.slice(0,t.length-r.length-1)+e;for(var i=r.slice(0,r.lastIndexOf("/")+1)+e,o=[],s=-1,c=0;cr.length&&"/"!==n[n.length-1]))return n+e.slice(r.length);c("W2",r,n);}}function c(t,r,n){console.warn(e(t,[n,r].join(", ")));}function u(e,t,r){for(var n=e.scopes,i=r&&o(r,n);i;){var c=s(t,n[i]);if(c)return c;i=o(i.slice(0,i.lastIndexOf("/")),n);}return s(t,e.imports)||-1!==t.indexOf(":")&&t}function f(){this[b]={};}function a(t,r,n,i){var o=t[b][r];if(o)return o;var s=[],c=Object.create(null);S&&Object.defineProperty(c,S,{value:"Module"});var u=Promise.resolve().then((function(){return t.instantiate(r,n,i)})).then((function(n){if(!n)throw Error(e(2,r));var i=n[1]((function(e,t){o.h=!0;var r=!1;if("string"==typeof e)e in c&&c[e]===t||(c[e]=t,r=!0);else {for(var n in e)t=e[n],n in c&&c[n]===t||(c[n]=t,r=!0);e&&e.__esModule&&(c.__esModule=e.__esModule);}if(r)for(var i=0;i-1){var r=document.createEvent("Event");r.initEvent("error",!1,!1),t.dispatchEvent(r);}return Promise.reject(e)}));}else if("systemjs-importmap"===t.type){t.sp=!0;var n=t.src?(System.fetch||fetch)(t.src,{integrity:t.integrity,passThrough:!0}).then((function(e){if(!e.ok)throw Error(e.status);return e.text()})).catch((function(r){return r.message=e("W4",t.src)+"\n"+r.message,console.warn(r),"function"==typeof t.onerror&&t.onerror(),"{}"})):t.innerHTML;M=M.then((function(){return n})).then((function(r){!function(t,r,n){var o={};try{o=JSON.parse(r);}catch(s){console.warn(Error(e("W5")));}i(o,n,t);}(R,r,t.src||p);}));}}));}var p,m="undefined"!=typeof Symbol,g="undefined"!=typeof self,y="undefined"!=typeof document,E=g?self:commonjsGlobal;if(y){var w=document.querySelector("base[href]");w&&(p=w.href);}if(!p&&"undefined"!=typeof location){var x=(p=location.href.split("#")[0].split("?")[0]).lastIndexOf("/");-1!==x&&(p=p.slice(0,x+1));}var O,j=/\\/g,S=m&&Symbol.toStringTag,b=m?Symbol():"@",P=f.prototype;P.import=function(e,t,r){var n=this;return t&&"object"==typeof t&&(r=t,t=void 0),Promise.resolve(n.prepareImport()).then((function(){return n.resolve(e,t,r)})).then((function(e){var t=a(n,e,void 0,r);return t.C||h(n,t)}))},P.createContext=function(e){var t=this;return {url:e,resolve:function(r,n){return Promise.resolve(t.resolve(r,n||e))}}},P.register=function(e,t,r){O=[e,t,r];},P.getRegister=function(){var e=O;return O=void 0,e};var I=Object.freeze(Object.create(null));E.System=new f;var L,C,M=Promise.resolve(),R={imports:{},scopes:{},depcache:{},integrity:{}},T=y;if(P.prepareImport=function(e){return (T||e)&&(v(),T=!1),M},y&&(v(),window.addEventListener("DOMContentLoaded",v)),P.addImportMap=function(e,t){i(e,t||p,R);},y){window.addEventListener("error",(function(e){W=e.filename,q=e.error;}));var _=location.origin;}P.createScript=function(e){var t=document.createElement("script");t.async=!0,e.indexOf(_+"/")&&(t.crossOrigin="anonymous");var r=R.integrity[e];return r&&(t.integrity=r),t.src=e,t};var W,q,k={},A=P.register;P.register=function(e,t){if(y&&"loading"===document.readyState&&"string"!=typeof e){var r=document.querySelectorAll("script[src]"),n=r[r.length-1];if(n){L=e;var i=this;C=setTimeout((function(){k[n.src]=[e,t],i.import(n.src);}));}}else L=void 0;return A.call(this,e,t)},P.instantiate=function(t,r){var n=k[t];if(n)return delete k[t],n;var i=this;return Promise.resolve(P.createScript(t)).then((function(n){return new Promise((function(o,s){n.addEventListener("error",(function(){s(Error(e(3,[t,r].join(", "))));})),n.addEventListener("load",(function(){if(document.head.removeChild(n),W===t)s(q);else {var e=i.getRegister(t);e&&e[0]===L&&clearTimeout(C),o(e);}})),document.head.appendChild(n);}))}))},P.shouldFetch=function(){return !1},"undefined"!=typeof fetch&&(P.fetch=fetch);var F=P.instantiate,J=/^(text|application)\/(x-)?javascript(;|$)/;P.instantiate=function(t,r,n){var i=this;return this.shouldFetch(t,r,n)?this.fetch(t,{credentials:"same-origin",integrity:R.integrity[t],meta:n}).then((function(n){if(!n.ok)throw Error(e(7,[n.status,n.statusText,t,r].join(", ")));var o=n.headers.get("content-type");if(!o||!J.test(o))throw Error(e(4,o));return n.text().then((function(e){return e.indexOf("//# sourceURL=")<0&&(e+="\n//# sourceURL="+t),(0, eval)(e),i.getRegister(t)}))})):F.apply(this,arguments)},P.resolve=function(r,n){return u(R,t(r,n=n||p)||r,n)||function(t,r){throw Error(e(8,[t,r].join(", ")))}(r,n)};var U=P.instantiate;P.instantiate=function(e,t,r){var n=R.depcache[e];if(n)for(var i=0;i0&&v[0]<4?1:+(v[0]+v[1])),!d&&Y&&(!(v=Y.match(/Edge\/(\d+)/))||v[1]>=74)&&(v=Y.match(/Chrome\/(\d+)/))&&(d=+v[1]);var Z=d,tt=Z,et=i,rt=r.String,nt=!!Object.getOwnPropertySymbols&&!et((function(){var t=Symbol("symbol detection");return!rt(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&tt&&tt<41})),it=nt&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,ot=W,at=D,ut=$,ct=Object,st=it?function(t){return"symbol"==typeof t}:function(t){var e=ot("Symbol");return at(e)&&ut(e.prototype,ct(t))},ft=String,ht=function(t){try{return ft(t)}catch(e){return"Object"}},lt=D,pt=ht,vt=TypeError,dt=function(t){if(lt(t))return t;throw new vt(pt(t)+" is not a function")},gt=dt,yt=j,mt=function(t,e){var r=t[e];return yt(r)?void 0:gt(r)},wt=s,bt=D,St=z,xt=TypeError,Et={exports:{}},At=r,Ot=Object.defineProperty,Rt=function(t,e){try{Ot(At,t,{value:e,configurable:!0,writable:!0})}catch(r){At[t]=e}return e},Tt=r,It=Rt,Pt="__core-js_shared__",kt=Et.exports=Tt[Pt]||It(Pt,{});(kt.versions||(kt.versions=[])).push({version:"3.36.1",mode:"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE",source:"https://github.com/zloirock/core-js"});var jt=Et.exports,Lt=jt,Ut=function(t,e){return Lt[t]||(Lt[t]=e||{})},Ct=C,Mt=Object,Ft=function(t){return Mt(Ct(t))},Bt=Ft,_t=S({}.hasOwnProperty),Dt=Object.hasOwn||function(t,e){return _t(Bt(t),e)},Nt=S,zt=0,qt=Math.random(),Ht=Nt(1..toString),Wt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+Ht(++zt+qt,36)},$t=Ut,Gt=Dt,Vt=Wt,Yt=nt,Jt=it,Kt=r.Symbol,Xt=$t("wks"),Qt=Jt?Kt.for||Kt:Kt&&Kt.withoutSetter||Vt,Zt=function(t){return Gt(Xt,t)||(Xt[t]=Yt&&Gt(Kt,t)?Kt[t]:Qt("Symbol."+t)),Xt[t]},te=s,ee=z,re=st,ne=mt,ie=function(t,e){var r,n;if("string"===e&&bt(r=t.toString)&&!St(n=wt(r,t)))return n;if(bt(r=t.valueOf)&&!St(n=wt(r,t)))return n;if("string"!==e&&bt(r=t.toString)&&!St(n=wt(r,t)))return n;throw new xt("Can't convert object to primitive value")},oe=TypeError,ae=Zt("toPrimitive"),ue=function(t,e){if(!ee(t)||re(t))return t;var r,n=ne(t,ae);if(n){if(void 0===e&&(e="default"),r=te(n,t,e),!ee(r)||re(r))return r;throw new oe("Can't convert object to primitive value")}return void 0===e&&(e="number"),ie(t,e)},ce=ue,se=st,fe=function(t){var e=ce(t,"string");return se(e)?e:e+""},he=z,le=r.document,pe=he(le)&&he(le.createElement),ve=function(t){return pe?le.createElement(t):{}},de=ve,ge=!o&&!i((function(){return 7!==Object.defineProperty(de("div"),"a",{get:function(){return 7}}).a})),ye=o,me=s,we=f,be=g,Se=B,xe=fe,Ee=Dt,Ae=ge,Oe=Object.getOwnPropertyDescriptor;n.f=ye?Oe:function(t,e){if(t=Se(t),e=xe(e),Ae)try{return Oe(t,e)}catch(r){}if(Ee(t,e))return be(!me(we.f,t,e),t[e])};var Re={},Te=o&&i((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),Ie=z,Pe=String,ke=TypeError,je=function(t){if(Ie(t))return t;throw new ke(Pe(t)+" is not an object")},Le=o,Ue=ge,Ce=Te,Me=je,Fe=fe,Be=TypeError,_e=Object.defineProperty,De=Object.getOwnPropertyDescriptor,Ne="enumerable",ze="configurable",qe="writable";Re.f=Le?Ce?function(t,e,r){if(Me(t),e=Fe(e),Me(r),"function"==typeof t&&"prototype"===e&&"value"in r&&qe in r&&!r[qe]){var n=De(t,e);n&&n[qe]&&(t[e]=r.value,r={configurable:ze in r?r[ze]:n[ze],enumerable:Ne in r?r[Ne]:n[Ne],writable:!1})}return _e(t,e,r)}:_e:function(t,e,r){if(Me(t),e=Fe(e),Me(r),Ue)try{return _e(t,e,r)}catch(n){}if("get"in r||"set"in r)throw new Be("Accessors not supported");return"value"in r&&(t[e]=r.value),t};var He=Re,We=g,$e=o?function(t,e,r){return He.f(t,e,We(1,r))}:function(t,e,r){return t[e]=r,t},Ge={exports:{}},Ve=o,Ye=Dt,Je=Function.prototype,Ke=Ve&&Object.getOwnPropertyDescriptor,Xe=Ye(Je,"name"),Qe={EXISTS:Xe,PROPER:Xe&&"something"===function(){}.name,CONFIGURABLE:Xe&&(!Ve||Ve&&Ke(Je,"name").configurable)},Ze=D,tr=jt,er=S(Function.toString);Ze(tr.inspectSource)||(tr.inspectSource=function(t){return er(t)});var rr,nr,ir,or=tr.inspectSource,ar=D,ur=r.WeakMap,cr=ar(ur)&&/native code/.test(String(ur)),sr=Wt,fr=Ut("keys"),hr=function(t){return fr[t]||(fr[t]=sr(t))},lr={},pr=cr,vr=r,dr=z,gr=$e,yr=Dt,mr=jt,wr=hr,br=lr,Sr="Object already initialized",xr=vr.TypeError,Er=vr.WeakMap;if(pr||mr.state){var Ar=mr.state||(mr.state=new Er);Ar.get=Ar.get,Ar.has=Ar.has,Ar.set=Ar.set,rr=function(t,e){if(Ar.has(t))throw new xr(Sr);return e.facade=t,Ar.set(t,e),e},nr=function(t){return Ar.get(t)||{}},ir=function(t){return Ar.has(t)}}else{var Or=wr("state");br[Or]=!0,rr=function(t,e){if(yr(t,Or))throw new xr(Sr);return e.facade=t,gr(t,Or,e),e},nr=function(t){return yr(t,Or)?t[Or]:{}},ir=function(t){return yr(t,Or)}}var Rr={set:rr,get:nr,has:ir,enforce:function(t){return ir(t)?nr(t):rr(t,{})},getterFor:function(t){return function(e){var r;if(!dr(e)||(r=nr(e)).type!==t)throw new xr("Incompatible receiver, "+t+" required");return r}}},Tr=S,Ir=i,Pr=D,kr=Dt,jr=o,Lr=Qe.CONFIGURABLE,Ur=or,Cr=Rr.enforce,Mr=Rr.get,Fr=String,Br=Object.defineProperty,_r=Tr("".slice),Dr=Tr("".replace),Nr=Tr([].join),zr=jr&&!Ir((function(){return 8!==Br((function(){}),"length",{value:8}).length})),qr=String(String).split("String"),Hr=Ge.exports=function(t,e,r){"Symbol("===_r(Fr(e),0,7)&&(e="["+Dr(Fr(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(e="get "+e),r&&r.setter&&(e="set "+e),(!kr(t,"name")||Lr&&t.name!==e)&&(jr?Br(t,"name",{value:e,configurable:!0}):t.name=e),zr&&r&&kr(r,"arity")&&t.length!==r.arity&&Br(t,"length",{value:r.arity});try{r&&kr(r,"constructor")&&r.constructor?jr&&Br(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(i){}var n=Cr(t);return kr(n,"source")||(n.source=Nr(qr,"string"==typeof e?e:"")),t};Function.prototype.toString=Hr((function(){return Pr(this)&&Mr(this).source||Ur(this)}),"toString");var Wr=Ge.exports,$r=D,Gr=Re,Vr=Wr,Yr=Rt,Jr=function(t,e,r,n){n||(n={});var i=n.enumerable,o=void 0!==n.name?n.name:e;if($r(r)&&Vr(r,o,n),n.global)i?t[e]=r:Yr(e,r);else{try{n.unsafe?t[e]&&(i=!0):delete t[e]}catch(a){}i?t[e]=r:Gr.f(t,e,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return t},Kr={},Xr=Math.ceil,Qr=Math.floor,Zr=Math.trunc||function(t){var e=+t;return(e>0?Qr:Xr)(e)},tn=function(t){var e=+t;return e!=e||0===e?0:Zr(e)},en=tn,rn=Math.max,nn=Math.min,on=function(t,e){var r=en(t);return r<0?rn(r+e,0):nn(r,e)},an=tn,un=Math.min,cn=function(t){var e=an(t);return e>0?un(e,9007199254740991):0},sn=cn,fn=function(t){return sn(t.length)},hn=B,ln=on,pn=fn,vn=function(t){return function(e,r,n){var i=hn(e),o=pn(i);if(0===o)return!t&&-1;var a,u=ln(n,o);if(t&&r!=r){for(;o>u;)if((a=i[u++])!=a)return!0}else for(;o>u;u++)if((t||u in i)&&i[u]===r)return t||u||0;return!t&&-1}},dn={includes:vn(!0),indexOf:vn(!1)},gn=Dt,yn=B,mn=dn.indexOf,wn=lr,bn=S([].push),Sn=function(t,e){var r,n=yn(t),i=0,o=[];for(r in n)!gn(wn,r)&&gn(n,r)&&bn(o,r);for(;e.length>i;)gn(n,r=e[i++])&&(~mn(o,r)||bn(o,r));return o},xn=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],En=Sn,An=xn.concat("length","prototype");Kr.f=Object.getOwnPropertyNames||function(t){return En(t,An)};var On={};On.f=Object.getOwnPropertySymbols;var Rn=W,Tn=Kr,In=On,Pn=je,kn=S([].concat),jn=Rn("Reflect","ownKeys")||function(t){var e=Tn.f(Pn(t)),r=In.f;return r?kn(e,r(t)):e},Ln=Dt,Un=jn,Cn=n,Mn=Re,Fn=function(t,e,r){for(var n=Un(e),i=Mn.f,o=Cn.f,a=0;ao&&Co(i,arguments[o]),i}));h.prototype=s,"Error"!==u?Po?Po(h,f):ko(h,f,{name:!0}):Fo&&i in c&&(jo(h,c,i),jo(h,c,"prepareStackTrace")),ko(h,c);try{s.name!==u&&To(s,"name",u),s.constructor=h}catch(l){}return h}},No="WebAssembly",zo=r[No],qo=7!==new Error("e",{cause:7}).cause,Ho=function(t,e){var r={};r[t]=Do(t,e,qo),Bo({global:!0,constructor:!0,arity:1,forced:qo},r)},Wo=function(t,e){if(zo&&zo[t]){var r={};r[t]=Do(No+"."+t,e,qo),Bo({target:No,stat:!0,constructor:!0,arity:1,forced:qo},r)}};Ho("Error",(function(t){return function(e){return _o(t,this,arguments)}})),Ho("EvalError",(function(t){return function(e){return _o(t,this,arguments)}})),Ho("RangeError",(function(t){return function(e){return _o(t,this,arguments)}})),Ho("ReferenceError",(function(t){return function(e){return _o(t,this,arguments)}})),Ho("SyntaxError",(function(t){return function(e){return _o(t,this,arguments)}})),Ho("TypeError",(function(t){return function(e){return _o(t,this,arguments)}})),Ho("URIError",(function(t){return function(e){return _o(t,this,arguments)}})),Wo("CompileError",(function(t){return function(e){return _o(t,this,arguments)}})),Wo("LinkError",(function(t){return function(e){return _o(t,this,arguments)}})),Wo("RuntimeError",(function(t){return function(e){return _o(t,this,arguments)}}));var $o={},Go=Sn,Vo=xn,Yo=Object.keys||function(t){return Go(t,Vo)},Jo=o,Ko=Te,Xo=Re,Qo=je,Zo=B,ta=Yo;$o.f=Jo&&!Ko?Object.defineProperties:function(t,e){Qo(t);for(var r,n=Zo(e),i=ta(e),o=i.length,a=0;o>a;)Xo.f(t,r=i[a++],n[r]);return t};var ea,ra=W("document","documentElement"),na=je,ia=$o,oa=xn,aa=lr,ua=ra,ca=ve,sa="prototype",fa="script",ha=hr("IE_PROTO"),la=function(){},pa=function(t){return"<"+fa+">"+t+""},va=function(t){t.write(pa("")),t.close();var e=t.parentWindow.Object;return t=null,e},da=function(){try{ea=new ActiveXObject("htmlfile")}catch(i){}var t,e,r;da="undefined"!=typeof document?document.domain&&ea?va(ea):(e=ca("iframe"),r="java"+fa+":",e.style.display="none",ua.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write(pa("document.F=Object")),t.close(),t.F):va(ea);for(var n=oa.length;n--;)delete da[sa][oa[n]];return da()};aa[ha]=!0;var ga=Object.create||function(t,e){var r;return null!==t?(la[sa]=na(t),r=new la,la[sa]=null,r[ha]=t):r=da(),void 0===e?r:ia.f(r,e)},ya=Zt,ma=ga,wa=Re.f,ba=ya("unscopables"),Sa=Array.prototype;void 0===Sa[ba]&&wa(Sa,ba,{configurable:!0,value:ma(null)});var xa,Ea,Aa,Oa=function(t){Sa[ba][t]=!0},Ra={},Ta=!i((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),Ia=Dt,Pa=D,ka=Ft,ja=Ta,La=hr("IE_PROTO"),Ua=Object,Ca=Ua.prototype,Ma=ja?Ua.getPrototypeOf:function(t){var e=ka(t);if(Ia(e,La))return e[La];var r=e.constructor;return Pa(r)&&e instanceof r?r.prototype:e instanceof Ua?Ca:null},Fa=i,Ba=D,_a=z,Da=Ma,Na=Jr,za=Zt("iterator"),qa=!1;[].keys&&("next"in(Aa=[].keys())?(Ea=Da(Da(Aa)))!==Object.prototype&&(xa=Ea):qa=!0);var Ha=!_a(xa)||Fa((function(){var t={};return xa[za].call(t)!==t}));Ha&&(xa={}),Ba(xa[za])||Na(xa,za,(function(){return this}));var Wa={IteratorPrototype:xa,BUGGY_SAFARI_ITERATORS:qa},$a=Re.f,Ga=Dt,Va=Zt("toStringTag"),Ya=function(t,e,r){t&&!r&&(t=t.prototype),t&&!Ga(t,Va)&&$a(t,Va,{configurable:!0,value:e})},Ja=Wa.IteratorPrototype,Ka=ga,Xa=g,Qa=Ya,Za=Ra,tu=function(){return this},eu=function(t,e,r,n){var i=e+" Iterator";return t.prototype=Ka(Ja,{next:Xa(+!n,r)}),Qa(t,i,!1),Za[i]=tu,t},ru=Zn,nu=s,iu=D,ou=eu,au=Ma,uu=no,cu=Ya,su=$e,fu=Jr,hu=Ra,lu=Qe.PROPER,pu=Qe.CONFIGURABLE,vu=Wa.IteratorPrototype,du=Wa.BUGGY_SAFARI_ITERATORS,gu=Zt("iterator"),yu="keys",mu="values",wu="entries",bu=function(){return this},Su=function(t,e,r,n,i,o,a){ou(r,e,n);var u,c,s,f=function(t){if(t===i&&d)return d;if(!du&&t&&t in p)return p[t];switch(t){case yu:case mu:case wu:return function(){return new r(this,t)}}return function(){return new r(this)}},h=e+" Iterator",l=!1,p=t.prototype,v=p[gu]||p["@@iterator"]||i&&p[i],d=!du&&v||f(i),g="Array"===e&&p.entries||v;if(g&&(u=au(g.call(new t)))!==Object.prototype&&u.next&&(au(u)!==vu&&(uu?uu(u,vu):iu(u[gu])||fu(u,gu,bu)),cu(u,h,!0)),lu&&i===mu&&v&&v.name!==mu&&(pu?su(p,"name",mu):(l=!0,d=function(){return nu(v,this)})),i)if(c={values:f(mu),keys:o?d:f(yu),entries:f(wu)},a)for(s in c)(du||l||!(s in p))&&fu(p,s,c[s]);else ru({target:e,proto:!0,forced:du||l},c);return p[gu]!==d&&fu(p,gu,d,{name:i}),hu[e]=d,c},xu=function(t,e){return{value:t,done:e}},Eu=B,Au=Oa,Ou=Ra,Ru=Rr,Tu=Re.f,Iu=Su,Pu=xu,ku=o,ju="Array Iterator",Lu=Ru.set,Uu=Ru.getterFor(ju),Cu=Iu(Array,"Array",(function(t,e){Lu(this,{type:ju,target:Eu(t),index:0,kind:e})}),(function(){var t=Uu(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=void 0,Pu(void 0,!0);switch(t.kind){case"keys":return Pu(r,!1);case"values":return Pu(e[r],!1)}return Pu([r,e[r]],!1)}),"values"),Mu=Ou.Arguments=Ou.Array;if(Au("keys"),Au("values"),Au("entries"),ku&&"values"!==Mu.name)try{Tu(Mu,"name",{value:"values"})}catch(o_){}var Fu=O,Bu=Array.isArray||function(t){return"Array"===Fu(t)},_u=o,Du=Bu,Nu=TypeError,zu=Object.getOwnPropertyDescriptor,qu=_u&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(o_){return o_ instanceof TypeError}}()?function(t,e){if(Du(t)&&!zu(t,"length").writable)throw new Nu("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e},Hu=TypeError,Wu=function(t){if(t>9007199254740991)throw Hu("Maximum allowed index exceeded");return t},$u=Ft,Gu=fn,Vu=qu,Yu=Wu;Zn({target:"Array",proto:!0,arity:1,forced:i((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(o_){return o_ instanceof TypeError}}()},{push:function(t){var e=$u(this),r=Gu(e),n=arguments.length;Yu(r+n);for(var i=0;i=51||!lc((function(){var e=[];return(e.constructor={})[vc]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},gc=S([].slice),yc=Zn,mc=Bu,wc=uc,bc=z,Sc=on,xc=fn,Ec=B,Ac=hc,Oc=Zt,Rc=gc,Tc=dc("slice"),Ic=Oc("species"),Pc=Array,kc=Math.max;yc({target:"Array",proto:!0,forced:!Tc},{slice:function(t,e){var r,n,i,o=Ec(this),a=xc(o),u=Sc(t,a),c=Sc(void 0===e?a:e,a);if(mc(o)&&(r=o.constructor,(wc(r)&&(r===Pc||mc(r.prototype))||bc(r)&&null===(r=r[Ic]))&&(r=void 0),r===Pc||void 0===r))return Rc(o,u,c);for(n=new(void 0===r?Pc:r)(kc(c-u,0)),i=0;uo;o++)if((u=y(t[o]))&&il(fl,u))return u;return new sl(!1)}n=ol(t,i)}for(c=l?t.next:n.next;!(s=Zh(c,n)).done;){try{u=y(s.value)}catch(o_){ul(n,"throw",o_)}if("object"==typeof u&&u&&il(fl,u))return u}return new sl(!1)},ll=Zt("iterator"),pl=!1;try{var vl=0,dl={next:function(){return{done:!!vl++}},return:function(){pl=!0}};dl[ll]=function(){return this},Array.from(dl,(function(){throw 2}))}catch(o_){}var gl=function(t,e){try{if(!e&&!pl)return!1}catch(o_){return!1}var r=!1;try{var n={};n[ll]=function(){return{next:function(){return{done:r=!0}}}},t(n)}catch(o_){}return r},yl=vf,ml=kf.CONSTRUCTOR||!gl((function(t){yl.all(t).then(void 0,(function(){}))})),wl=s,bl=dt,Sl=jf,xl=pf,El=hl;Zn({target:"Promise",stat:!0,forced:ml},{all:function(t){var e=this,r=Sl.f(e),n=r.resolve,i=r.reject,o=xl((function(){var r=bl(e.resolve),o=[],a=0,u=1;El(t,(function(t){var c=a++,s=!1;u++,wl(r,e,t).then((function(t){s||(s=!0,o[c]=t,--u||n(o))}),i)})),--u||n(o)}));return o.error&&i(o.value),r.promise}});var Al=Zn,Ol=kf.CONSTRUCTOR,Rl=vf,Tl=W,Il=D,Pl=Jr,kl=Rl&&Rl.prototype;if(Al({target:"Promise",proto:!0,forced:Ol,real:!0},{catch:function(t){return this.then(void 0,t)}}),Il(Rl)){var jl=Tl("Promise").prototype.catch;kl.catch!==jl&&Pl(kl,"catch",jl,{unsafe:!0})}var Ll=s,Ul=dt,Cl=jf,Ml=pf,Fl=hl;Zn({target:"Promise",stat:!0,forced:ml},{race:function(t){var e=this,r=Cl.f(e),n=r.reject,i=Ml((function(){var i=Ul(e.resolve);Fl(t,(function(t){Ll(i,e,t).then(r.resolve,n)}))}));return i.error&&n(i.value),r.promise}});var Bl=jf;Zn({target:"Promise",stat:!0,forced:kf.CONSTRUCTOR},{reject:function(t){var e=Bl.f(this);return(0,e.reject)(t),e.promise}});var _l=je,Dl=z,Nl=jf,zl=function(t,e){if(_l(t),Dl(e)&&e.constructor===t)return e;var r=Nl.f(t);return(0,r.resolve)(e),r.promise},ql=Zn,Hl=kf.CONSTRUCTOR,Wl=zl;W("Promise"),ql({target:"Promise",stat:!0,forced:Hl},{resolve:function(t){return Wl(this,t)}});var $l=Zn,Gl=r,Vl=Hc,Yl=je,Jl=D,Kl=Ma,Xl=pi,Ql=hc,Zl=i,tp=Dt,ep=Wa.IteratorPrototype,rp=o,np="constructor",ip="Iterator",op=Zt("toStringTag"),ap=TypeError,up=Gl[ip],cp=!Jl(up)||up.prototype!==ep||!Zl((function(){up({})})),sp=function(){if(Vl(this,ep),Kl(this)===ep)throw new ap("Abstract class Iterator not directly constructable")},fp=function(t,e){rp?Xl(ep,t,{configurable:!0,get:function(){return e},set:function(e){if(Yl(this),this===ep)throw new ap("You can't redefine this property");tp(this,t)?this[t]=e:Ql(this,t,e)}}):ep[t]=e};tp(ep,op)||fp(op,ip),!cp&&tp(ep,np)&&ep[np]!==Object||fp(np,sp),sp.prototype=ep,$l({global:!0,constructor:!0,forced:cp},{Iterator:sp});var hp=function(t){return{iterator:t,next:t.next,done:!1}},lp=hl,pp=dt,vp=je,dp=hp;Zn({target:"Iterator",proto:!0,real:!0},{forEach:function(t){vp(this),pp(t);var e=dp(this),r=0;lp(e,(function(e){t(e,r++)}),{IS_RECORD:!0})}});var gp={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},yp=ve("span").classList,mp=yp&&yp.constructor&&yp.constructor.prototype,wp=mp===Object.prototype?void 0:mp,bp=Bu,Sp=uc,xp=z,Ep=Zt("species"),Ap=Array,Op=function(t){var e;return bp(t)&&(e=t.constructor,(Sp(e)&&(e===Ap||bp(e.prototype))||xp(e)&&null===(e=e[Ep]))&&(e=void 0)),void 0===e?Ap:e},Rp=function(t,e){return new(Op(t))(0===e?0:e)},Tp=os,Ip=k,Pp=Ft,kp=fn,jp=Rp,Lp=S([].push),Up=function(t){var e=1===t,r=2===t,n=3===t,i=4===t,o=6===t,a=7===t,u=5===t||o;return function(c,s,f,h){for(var l,p,v=Pp(c),d=Ip(v),g=kp(d),y=Tp(s,f),m=0,w=h||jp,b=e?w(c,g):r||a?w(c,0):void 0;g>m;m++)if((u||m in d)&&(p=y(l=d[m],m,v),t))if(e)b[m]=p;else if(p)switch(t){case 3:return!0;case 5:return l;case 6:return m;case 2:Lp(b,l)}else switch(t){case 4:return!1;case 7:Lp(b,l)}return o?-1:n||i?i:b}},Cp={forEach:Up(0),map:Up(1),filter:Up(2),some:Up(3),every:Up(4),find:Up(5),findIndex:Up(6),filterReject:Up(7)},Mp=i,Fp=function(t,e){var r=[][t];return!!r&&Mp((function(){r.call(null,e||function(){return 1},1)}))},Bp=Cp.forEach,_p=Fp("forEach")?[].forEach:function(t){return Bp(this,t,arguments.length>1?arguments[1]:void 0)},Dp=r,Np=gp,zp=wp,qp=_p,Hp=$e,Wp=function(t){if(t&&t.forEach!==qp)try{Hp(t,"forEach",qp)}catch(o_){t.forEach=qp}};for(var $p in Np)Np[$p]&&Wp(Dp[$p]&&Dp[$p].prototype);Wp(zp);var Gp=r,Vp=gp,Yp=wp,Jp=Cu,Kp=$e,Xp=Ya,Qp=Zt("iterator"),Zp=Jp.values,tv=function(t,e){if(t){if(t[Qp]!==Zp)try{Kp(t,Qp,Zp)}catch(o_){t[Qp]=Zp}if(Xp(t,e,!0),Vp[e])for(var r in Jp)if(t[r]!==Jp[r])try{Kp(t,r,Jp[r])}catch(o_){t[r]=Jp[r]}}};for(var ev in Vp)tv(Gp[ev]&&Gp[ev].prototype,ev);tv(Yp,"DOMTokenList");var rv=Cp.filter;Zn({target:"Array",proto:!0,forced:!dc("filter")},{filter:function(t){return rv(this,t,arguments.length>1?arguments[1]:void 0)}});var nv=Zn,iv=dn.indexOf,ov=Fp,av=es([].indexOf),uv=!!av&&1/av([1],1,-0)<0;nv({target:"Array",proto:!0,forced:uv||!ov("indexOf")},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return uv?av(this,t,e)||0:iv(this,t,e)}});var cv=Cp.map;Zn({target:"Array",proto:!0,forced:!dc("map")},{map:function(t){return cv(this,t,arguments.length>1?arguments[1]:void 0)}});var sv=ht,fv=TypeError,hv=function(t,e){if(!delete t[e])throw new fv("Cannot delete property "+sv(e)+" of "+sv(t))},lv=Zn,pv=Ft,vv=on,dv=tn,gv=fn,yv=qu,mv=Wu,wv=Rp,bv=hc,Sv=hv,xv=dc("splice"),Ev=Math.max,Av=Math.min;lv({target:"Array",proto:!0,forced:!xv},{splice:function(t,e){var r,n,i,o,a,u,c=pv(this),s=gv(c),f=vv(t,s),h=arguments.length;for(0===h?r=n=0:1===h?(r=0,n=s-f):(r=h-2,n=Av(Ev(dv(e),0),s-f)),mv(s+r-n),i=wv(c,n),o=0;os-n+r;o--)Sv(c,o-1)}else if(r>n)for(o=s-n;o>f;o--)u=o+r-1,(a=o+n-1)in c?c[u]=c[a]:Sv(c,u);for(o=0;o92||Zv&&Kv>94||Xv&&Kv>97)return!1;var t=new ArrayBuffer(8),e=td(t,{transfer:[t]});return 0!==t.byteLength||8!==e.byteLength})),rd=r,nd=function(t){try{if(Yv)return Function('return require("'+t+'")')()}catch(o_){}},id=ed,od=rd.structuredClone,ad=rd.ArrayBuffer,ud=rd.MessageChannel,cd=!1;if(id)cd=function(t){od(t,{transfer:[t]})};else if(ad)try{ud||(Nv=nd("worker_threads"))&&(ud=Nv.MessageChannel),ud&&(zv=new ud,qv=new ad(2),Hv=function(t){zv.port1.postMessage(null,[t])},2===qv.byteLength&&(Hv(qv),0===qv.byteLength&&(cd=Hv)))}catch(o_){}var sd=r,fd=S,hd=Yi,ld=Vv,pd=Mv,vd=Lv,dd=cd,gd=ed,yd=sd.structuredClone,md=sd.ArrayBuffer,wd=sd.DataView,bd=sd.TypeError,Sd=Math.min,xd=md.prototype,Ed=wd.prototype,Ad=fd(xd.slice),Od=hd(xd,"resizable","get"),Rd=hd(xd,"maxByteLength","get"),Td=fd(Ed.getInt8),Id=fd(Ed.setInt8),Pd=(gd||dd)&&function(t,e,r){var n,i=vd(t),o=void 0===e?i:ld(e),a=!Od||!Od(t);if(pd(t))throw new bd("ArrayBuffer is detached");if(gd&&(t=yd(t,{transfer:[t]}),i===o&&(r||a)))return t;if(i>=o&&(!r||a))n=Ad(t,0,o);else{var u=r&&!a&&Rd?{maxByteLength:Rd(t)}:void 0;n=new md(o,u);for(var c=new wd(t),s=new wd(n),f=Sd(o,i),h=0;h1?arguments[1]:void 0);e=e?e.next:r.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!c(this,t)}}),Pg(o,r?{get:function(t){var e=c(this,t);return e&&e.value},set:function(t,e){return u(this,0===t?0:t,e)}}:{add:function(t){return u(this,t=0===t?0:t,t)}}),Bg&&Ig(o,"size",{configurable:!0,get:function(){return a(this).size}}),i},setStrong:function(t,e,r){var n=e+" Iterator",i=Ng(e),o=Ng(n);Cg(t,e,(function(t,e){Dg(this,{type:n,target:t,state:i(t),kind:e,last:void 0})}),(function(){for(var t=o(this),e=t.kind,r=t.last;r&&r.removed;)r=r.previous;return t.target&&(t.last=r=r?r.next:t.state.first)?Mg("keys"===e?r.key:"values"===e?r.value:[r.key,r.value],!1):(t.target=void 0,Mg(void 0,!0))}),r?"entries":"values",!r,!0),Fg(e)}};Ag("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),zg);var qg=Zn,Hg=Math.hypot,Wg=Math.abs,$g=Math.sqrt;qg({target:"Math",stat:!0,arity:2,forced:!!Hg&&Hg(1/0,NaN)!==1/0},{hypot:function(t,e){for(var r,n,i=0,o=0,a=arguments.length,u=0;o0?(n=r/u)*n:r;return u===1/0?1/0:u*$g(i)}});var Gg=jn,Vg=B,Yg=n,Jg=hc;Zn({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){for(var e,r,n=Vg(t),i=Yg.f,o=Gg(n),a={},u=0;o.length>u;)void 0!==(r=i(n,e=o[u++]))&&Jg(a,e,r);return a}}),Ag("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),zg);var Kg,Xg,Qg,Zg={exports:{}},ty="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,ey=ty,ry=o,ny=r,iy=D,oy=z,ay=Dt,uy=ui,cy=ht,sy=$e,fy=Jr,hy=pi,ly=$,py=Ma,vy=no,dy=Zt,gy=Wt,yy=Rr.enforce,my=Rr.get,wy=ny.Int8Array,by=wy&&wy.prototype,Sy=ny.Uint8ClampedArray,xy=Sy&&Sy.prototype,Ey=wy&&py(wy),Ay=by&&py(by),Oy=Object.prototype,Ry=ny.TypeError,Ty=dy("toStringTag"),Iy=gy("TYPED_ARRAY_TAG"),Py="TypedArrayConstructor",ky=ey&&!!vy&&"Opera"!==uy(ny.opera),jy=!1,Ly={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},Uy={BigInt64Array:8,BigUint64Array:8},Cy=function(t){var e=py(t);if(oy(e)){var r=my(e);return r&&ay(r,Py)?r[Py]:Cy(e)}},My=function(t){if(!oy(t))return!1;var e=uy(t);return ay(Ly,e)||ay(Uy,e)};for(Kg in Ly)(Qg=(Xg=ny[Kg])&&Xg.prototype)?yy(Qg)[Py]=Xg:ky=!1;for(Kg in Uy)(Qg=(Xg=ny[Kg])&&Xg.prototype)&&(yy(Qg)[Py]=Xg);if((!ky||!iy(Ey)||Ey===Function.prototype)&&(Ey=function(){throw new Ry("Incorrect invocation")},ky))for(Kg in Ly)ny[Kg]&&vy(ny[Kg],Ey);if((!ky||!Ay||Ay===Oy)&&(Ay=Ey.prototype,ky))for(Kg in Ly)ny[Kg]&&vy(ny[Kg].prototype,Ay);if(ky&&py(xy)!==Ay&&vy(xy,Ay),ry&&!ay(Ay,Ty))for(Kg in jy=!0,hy(Ay,Ty,{configurable:!0,get:function(){return oy(this)?this[Iy]:void 0}}),Ly)ny[Kg]&&sy(ny[Kg],Iy,Kg);var Fy={NATIVE_ARRAY_BUFFER_VIEWS:ky,TYPED_ARRAY_TAG:jy&&Iy,aTypedArray:function(t){if(My(t))return t;throw new Ry("Target is not a typed array")},aTypedArrayConstructor:function(t){if(iy(t)&&(!vy||ly(Ey,t)))return t;throw new Ry(cy(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,r,n){if(ry){if(r)for(var i in Ly){var o=ny[i];if(o&&ay(o.prototype,t))try{delete o.prototype[t]}catch(o_){try{o.prototype[t]=e}catch(a){}}}Ay[t]&&!r||fy(Ay,t,r?e:ky&&by[t]||e,n)}},exportTypedArrayStaticMethod:function(t,e,r){var n,i;if(ry){if(vy){if(r)for(n in Ly)if((i=ny[n])&&ay(i,t))try{delete i[t]}catch(o_){}if(Ey[t]&&!r)return;try{return fy(Ey,t,r?e:ky&&Ey[t]||e)}catch(o_){}}for(n in Ly)!(i=ny[n])||i[t]&&!r||fy(i,t,e)}},getTypedArrayConstructor:Cy,isView:function(t){if(!oy(t))return!1;var e=uy(t);return"DataView"===e||ay(Ly,e)||ay(Uy,e)},isTypedArray:My,TypedArray:Ey,TypedArrayPrototype:Ay},By=r,_y=i,Dy=gl,Ny=Fy.NATIVE_ARRAY_BUFFER_VIEWS,zy=By.ArrayBuffer,qy=By.Int8Array,Hy=!Ny||!_y((function(){qy(1)}))||!_y((function(){new qy(-1)}))||!Dy((function(t){new qy,new qy(null),new qy(1.5),new qy(t)}),!0)||_y((function(){return 1!==new qy(new zy(2),1,void 0).length})),Wy=Math.sign||function(t){var e=+t;return 0===e||e!=e?e:e<0?-1:1},$y=Math.abs,Gy=2220446049250313e-31,Vy=1/Gy,Yy=function(t,e,r,n){var i=+t,o=$y(i),a=Wy(i);if(or||c!=c?a*(1/0):a*c},Jy=Math.fround||function(t){return Yy(t,1.1920928955078125e-7,34028234663852886e22,11754943508222875e-54)},Ky=Array,Xy=Math.abs,Qy=Math.pow,Zy=Math.floor,tm=Math.log,em=Math.LN2,rm={pack:function(t,e,r){var n,i,o,a=Ky(r),u=8*r-e-1,c=(1<>1,f=23===e?Qy(2,-24)-Qy(2,-77):0,h=t<0||0===t&&1/t<0?1:0,l=0;for((t=Xy(t))!=t||t===1/0?(i=t!=t?1:0,n=c):(n=Zy(tm(t)/em),t*(o=Qy(2,-n))<1&&(n--,o*=2),(t+=n+s>=1?f/o:f*Qy(2,1-s))*o>=2&&(n++,o/=2),n+s>=c?(i=0,n=c):n+s>=1?(i=(t*o-1)*Qy(2,e),n+=s):(i=t*Qy(2,s-1)*Qy(2,e),n=0));e>=8;)a[l++]=255&i,i/=256,e-=8;for(n=n<0;)a[l++]=255&n,n/=256,u-=8;return a[--l]|=128*h,a},unpack:function(t,e){var r,n=t.length,i=8*n-e-1,o=(1<>1,u=i-7,c=n-1,s=t[c--],f=127&s;for(s>>=7;u>0;)f=256*f+t[c--],u-=8;for(r=f&(1<<-u)-1,f>>=-u,u+=e;u>0;)r=256*r+t[c--],u-=8;if(0===f)f=1-a;else{if(f===o)return r?NaN:s?-1/0:1/0;r+=Qy(2,e),f-=a}return(s?-1:1)*r*Qy(2,f-e)}},nm=Ft,im=on,om=fn,am=function(t){for(var e=nm(this),r=om(e),n=arguments.length,i=im(n>1?arguments[1]:void 0,r),o=n>2?arguments[2]:void 0,a=void 0===o?r:im(o,r);a>i;)e[i++]=t;return e},um=r,cm=S,sm=o,fm=ty,hm=$e,lm=pi,pm=Rg,vm=i,dm=Hc,gm=tn,ym=cn,mm=Vv,wm=Jy,bm=rm,Sm=Ma,xm=no,Em=am,Am=gc,Om=so,Rm=Fn,Tm=Ya,Im=Rr,Pm=Qe.PROPER,km=Qe.CONFIGURABLE,jm="ArrayBuffer",Lm="DataView",Um="prototype",Cm="Wrong index",Mm=Im.getterFor(jm),Fm=Im.getterFor(Lm),Bm=Im.set,_m=um[jm],Dm=_m,Nm=Dm&&Dm[Um],zm=um[Lm],qm=zm&&zm[Um],Hm=Object.prototype,Wm=um.Array,$m=um.RangeError,Gm=cm(Em),Vm=cm([].reverse),Ym=bm.pack,Jm=bm.unpack,Km=function(t){return[255&t]},Xm=function(t){return[255&t,t>>8&255]},Qm=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},Zm=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},tw=function(t){return Ym(wm(t),23,4)},ew=function(t){return Ym(t,52,8)},rw=function(t,e,r){lm(t[Um],e,{configurable:!0,get:function(){return r(this)[e]}})},nw=function(t,e,r,n){var i=Fm(t),o=mm(r),a=!!n;if(o+e>i.byteLength)throw new $m(Cm);var u=i.bytes,c=o+i.byteOffset,s=Am(u,c,c+e);return a?s:Vm(s)},iw=function(t,e,r,n,i,o){var a=Fm(t),u=mm(r),c=n(+i),s=!!o;if(u+e>a.byteLength)throw new $m(Cm);for(var f=a.bytes,h=u+a.byteOffset,l=0;l>24)},setUint8:function(t,e){uw(this,t,e<<24>>24)}},{unsafe:!0})}else Nm=(Dm=function(t){dm(this,Nm);var e=mm(t);Bm(this,{type:jm,bytes:Gm(Wm(e),0),byteLength:e}),sm||(this.byteLength=e,this.detached=!1)})[Um],zm=function(t,e,r){dm(this,qm),dm(t,Nm);var n=Mm(t),i=n.byteLength,o=gm(e);if(o<0||o>i)throw new $m("Wrong offset");if(o+(r=void 0===r?i-o:ym(r))>i)throw new $m("Wrong length");Bm(this,{type:Lm,buffer:t,byteLength:r,byteOffset:o,bytes:n.bytes}),sm||(this.buffer=t,this.byteLength=r,this.byteOffset=o)},qm=zm[Um],sm&&(rw(Dm,"byteLength",Mm),rw(zm,"buffer",Fm),rw(zm,"byteLength",Fm),rw(zm,"byteOffset",Fm)),pm(qm,{getInt8:function(t){return nw(this,1,t)[0]<<24>>24},getUint8:function(t){return nw(this,1,t)[0]},getInt16:function(t){var e=nw(this,2,t,arguments.length>1&&arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=nw(this,2,t,arguments.length>1&&arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return Zm(nw(this,4,t,arguments.length>1&&arguments[1]))},getUint32:function(t){return Zm(nw(this,4,t,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(t){return Jm(nw(this,4,t,arguments.length>1&&arguments[1]),23)},getFloat64:function(t){return Jm(nw(this,8,t,arguments.length>1&&arguments[1]),52)},setInt8:function(t,e){iw(this,1,t,Km,e)},setUint8:function(t,e){iw(this,1,t,Km,e)},setInt16:function(t,e){iw(this,2,t,Xm,e,arguments.length>2&&arguments[2])},setUint16:function(t,e){iw(this,2,t,Xm,e,arguments.length>2&&arguments[2])},setInt32:function(t,e){iw(this,4,t,Qm,e,arguments.length>2&&arguments[2])},setUint32:function(t,e){iw(this,4,t,Qm,e,arguments.length>2&&arguments[2])},setFloat32:function(t,e){iw(this,4,t,tw,e,arguments.length>2&&arguments[2])},setFloat64:function(t,e){iw(this,8,t,ew,e,arguments.length>2&&arguments[2])}});Tm(Dm,jm),Tm(zm,Lm);var cw={ArrayBuffer:Dm,DataView:zm},sw=z,fw=Math.floor,hw=Number.isInteger||function(t){return!sw(t)&&isFinite(t)&&fw(t)===t},lw=tn,pw=RangeError,vw=function(t){var e=lw(t);if(e<0)throw new pw("The argument can't be less than 0");return e},dw=RangeError,gw=function(t,e){var r=vw(t);if(r%e)throw new dw("Wrong offset");return r},yw=Math.round,mw=ui,ww=function(t){var e=mw(t);return"BigInt64Array"===e||"BigUint64Array"===e},bw=ue,Sw=TypeError,xw=function(t){var e=bw(t,"number");if("number"==typeof e)throw new Sw("Can't convert number to bigint");return BigInt(e)},Ew=os,Aw=s,Ow=Vc,Rw=Ft,Tw=fn,Iw=Vh,Pw=Nh,kw=Ch,jw=ww,Lw=Fy.aTypedArrayConstructor,Uw=xw,Cw=fn,Mw=function(t,e,r){for(var n=0,i=arguments.length>2?r:Cw(e),o=new t(i);i>n;)o[n]=e[n++];return o},Fw=Zn,Bw=r,_w=s,Dw=o,Nw=Hy,zw=Fy,qw=cw,Hw=Hc,Ww=g,$w=$e,Gw=hw,Vw=cn,Yw=Vv,Jw=gw,Kw=function(t){var e=yw(t);return e<0?0:e>255?255:255&e},Xw=fe,Qw=Dt,Zw=ui,tb=z,eb=st,rb=ga,nb=$,ib=no,ob=Kr.f,ab=function(t){var e,r,n,i,o,a,u,c,s=Ow(this),f=Rw(t),h=arguments.length,l=h>1?arguments[1]:void 0,p=void 0!==l,v=Pw(f);if(v&&!kw(v))for(c=(u=Iw(f,v)).next,f=[];!(a=Aw(c,u)).done;)f.push(a.value);for(p&&h>2&&(l=Ew(l,arguments[2])),r=Tw(f),n=new(Lw(s))(r),i=jw(n),e=0;r>e;e++)o=p?l(f[e],e):f[e],n[e]=i?Uw(o):+o;return n},ub=Cp.forEach,cb=Nc,sb=pi,fb=Re,hb=n,lb=Mw,pb=so,vb=Rr.get,db=Rr.set,gb=Rr.enforce,yb=fb.f,mb=hb.f,wb=Bw.RangeError,bb=qw.ArrayBuffer,Sb=bb.prototype,xb=qw.DataView,Eb=zw.NATIVE_ARRAY_BUFFER_VIEWS,Ab=zw.TYPED_ARRAY_TAG,Ob=zw.TypedArray,Rb=zw.TypedArrayPrototype,Tb=zw.isTypedArray,Ib="BYTES_PER_ELEMENT",Pb="Wrong length",kb=function(t,e){sb(t,e,{configurable:!0,get:function(){return vb(this)[e]}})},jb=function(t){var e;return nb(Sb,t)||"ArrayBuffer"===(e=Zw(t))||"SharedArrayBuffer"===e},Lb=function(t,e){return Tb(t)&&!eb(e)&&e in t&&Gw(+e)&&e>=0},Ub=function(t,e){return e=Xw(e),Lb(t,e)?Ww(2,t[e]):mb(t,e)},Cb=function(t,e,r){return e=Xw(e),!(Lb(t,e)&&tb(r)&&Qw(r,"value"))||Qw(r,"get")||Qw(r,"set")||r.configurable||Qw(r,"writable")&&!r.writable||Qw(r,"enumerable")&&!r.enumerable?yb(t,e,r):(t[e]=r.value,t)};Dw?(Eb||(hb.f=Ub,fb.f=Cb,kb(Rb,"buffer"),kb(Rb,"byteOffset"),kb(Rb,"byteLength"),kb(Rb,"length")),Fw({target:"Object",stat:!0,forced:!Eb},{getOwnPropertyDescriptor:Ub,defineProperty:Cb}),Zg.exports=function(t,e,r){var n=t.match(/\d+/)[0]/8,i=t+(r?"Clamped":"")+"Array",o="get"+t,a="set"+t,u=Bw[i],c=u,s=c&&c.prototype,f={},h=function(t,e){yb(t,e,{get:function(){return function(t,e){var r=vb(t);return r.view[o](e*n+r.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,i){var o=vb(t);o.view[a](e*n+o.byteOffset,r?Kw(i):i,!0)}(this,e,t)},enumerable:!0})};Eb?Nw&&(c=e((function(t,e,r,i){return Hw(t,s),pb(tb(e)?jb(e)?void 0!==i?new u(e,Jw(r,n),i):void 0!==r?new u(e,Jw(r,n)):new u(e):Tb(e)?lb(c,e):_w(ab,c,e):new u(Yw(e)),t,c)})),ib&&ib(c,Ob),ub(ob(u),(function(t){t in c||$w(c,t,u[t])})),c.prototype=s):(c=e((function(t,e,r,i){Hw(t,s);var o,a,u,f=0,l=0;if(tb(e)){if(!jb(e))return Tb(e)?lb(c,e):_w(ab,c,e);o=e,l=Jw(r,n);var p=e.byteLength;if(void 0===i){if(p%n)throw new wb(Pb);if((a=p-l)<0)throw new wb(Pb)}else if((a=Vw(i)*n)+l>p)throw new wb(Pb);u=a/n}else u=Yw(e),o=new bb(a=u*n);for(db(t,{buffer:o,byteOffset:l,byteLength:a,length:u,view:new xb(o)});f=0?n:r+n;return i<0||i>=r?void 0:e[i]}));var Db=am,Nb=xw,zb=ui,qb=s,Hb=i,Wb=Fy.aTypedArray,$b=Fy.exportTypedArrayMethod,Gb=S("".slice);$b("fill",(function(t){var e=arguments.length;Wb(this);var r="Big"===Gb(zb(this),0,3)?Nb(t):+t;return qb(Db,this,r,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}),Hb((function(){var t=0;return new Int8Array(2).fill({valueOf:function(){return t++}}),1!==t})));var Vb=os,Yb=k,Jb=Ft,Kb=fn,Xb=function(t){var e=1===t;return function(r,n,i){for(var o,a=Jb(r),u=Yb(a),c=Kb(u),s=Vb(n,i);c-- >0;)if(s(o=u[c],c,a))switch(t){case 0:return o;case 1:return c}return e?-1:void 0}},Qb={findLast:Xb(0),findLastIndex:Xb(1)},Zb=Qb.findLast,tS=Fy.aTypedArray;(0,Fy.exportTypedArrayMethod)("findLast",(function(t){return Zb(tS(this),t,arguments.length>1?arguments[1]:void 0)}));var eS=Qb.findLastIndex,rS=Fy.aTypedArray;(0,Fy.exportTypedArrayMethod)("findLastIndex",(function(t){return eS(rS(this),t,arguments.length>1?arguments[1]:void 0)}));var nS=r,iS=i,oS=S,aS=Fy,uS=Cu,cS=Zt("iterator"),sS=nS.Uint8Array,fS=oS(uS.values),hS=oS(uS.keys),lS=oS(uS.entries),pS=aS.aTypedArray,vS=aS.exportTypedArrayMethod,dS=sS&&sS.prototype,gS=!iS((function(){dS[cS].call([1])})),yS=!!dS&&dS.values&&dS[cS]===dS.values&&"values"===dS.values.name,mS=function(){return fS(pS(this))};vS("entries",(function(){return lS(pS(this))}),gS),vS("keys",(function(){return hS(pS(this))}),gS),vS("values",mS,gS||!yS,{name:"values"}),vS(cS,mS,gS||!yS,{name:"values"});var wS=r,bS=s,SS=Fy,xS=fn,ES=gw,AS=Ft,OS=i,RS=wS.RangeError,TS=wS.Int8Array,IS=TS&&TS.prototype,PS=IS&&IS.set,kS=SS.aTypedArray,jS=SS.exportTypedArrayMethod,LS=!OS((function(){var t=new Uint8ClampedArray(2);return bS(PS,t,{length:1,0:3},1),3!==t[1]})),US=LS&&SS.NATIVE_ARRAY_BUFFER_VIEWS&&OS((function(){var t=new TS(2);return t.set(1),t.set("2",1),0!==t[0]||2!==t[1]}));jS("set",(function(t){kS(this);var e=ES(arguments.length>1?arguments[1]:void 0,1),r=AS(t);if(LS)return bS(PS,this,r,e);var n=this.length,i=xS(r),o=0;if(i+e>n)throw new RS("Wrong length");for(;o0;)t[i]=t[--i];i!==o++&&(t[i]=n)}else for(var a=MS(r/2),u=FS(CS(t,0,a),e),c=FS(CS(t,a),e),s=u.length,f=c.length,h=0,l=0;h0&&1/r<0?1:-1:e>r}}(t))}),!rx||ex);var nx=fn,ix=function(t,e){for(var r=nx(t),n=new e(r),i=0;i=i||a<0)throw new Ex("Incorrect index");for(var u=new e(i),c=0;cr.size?iO(r.getIterator(),(function(t){uO(e,t)&&aO(n,t)})):nO(e,(function(t){r.includes(t)&&aO(n,t)})),n};Zn({target:"Set",proto:!0,real:!0,forced:!QA("intersection")||cO((function(){return"3,2"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))}))},{intersection:sO});var fO=dA,hO=pA.has,lO=kA,pO=zA,vO=OA,dO=yA,gO=Xh,yO=function(t){var e=fO(this),r=pO(t);if(lO(e)<=r.size)return!1!==vO(e,(function(t){if(r.includes(t))return!1}),!0);var n=r.getIterator();return!1!==dO(n,(function(t){if(hO(e,t))return gO(n,"normal",!1)}))};Zn({target:"Set",proto:!0,real:!0,forced:!QA("isDisjointFrom")},{isDisjointFrom:yO});var mO=dA,wO=kA,bO=OA,SO=zA,xO=function(t){var e=mO(this),r=SO(t);return!(wO(e)>r.size)&&!1!==bO(e,(function(t){if(!r.includes(t))return!1}),!0)};Zn({target:"Set",proto:!0,real:!0,forced:!QA("isSubsetOf")},{isSubsetOf:xO});var EO=dA,AO=pA.has,OO=kA,RO=zA,TO=yA,IO=Xh,PO=function(t){var e=EO(this),r=RO(t);if(OO(e)=51||!iR((function(){var t=[];return t[vR]=!1,t.concat()[0]!==t})),gR=function(t){if(!aR(t))return!1;var e=t[vR];return void 0!==e?!!e:oR(t)};nR({target:"Array",proto:!0,arity:1,forced:!dR||!lR("concat")},{concat:function(t){var e,r,n,i,o,a=uR(this),u=hR(a,0),c=0;for(e=-1,n=arguments.length;e0&&yR(c)?(s=mR(c),f=SR(t,e,c,s,f,o-1)-1):(wR(f+1),t[f]=c),f++),h++;return f},xR=SR,ER=Ft,AR=fn,OR=tn,RR=Rp;Zn({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=ER(this),r=AR(e),n=RR(e,0);return n.length=xR(n,e,e,r,0,void 0===t?1:OR(t)),n}});var TR=os,IR=s,PR=Ft,kR=VE,jR=Ch,LR=uc,UR=fn,CR=hc,MR=Vh,FR=Nh,BR=Array,_R=function(t){var e=PR(t),r=LR(this),n=arguments.length,i=n>1?arguments[1]:void 0,o=void 0!==i;o&&(i=TR(i,n>2?arguments[2]:void 0));var a,u,c,s,f,h,l=FR(e),p=0;if(!l||this===BR&&jR(l))for(a=UR(e),u=r?new this(a):BR(a);a>p;p++)h=o?i(e[p],p):e[p],CR(u,p,h);else for(u=r?new this:[],f=(s=MR(e,l)).next;!(c=IR(f,s)).done;p++)h=o?kR(s,i,[c.value,p],!0):c.value,CR(u,p,h);return u.length=p,u},DR=_R;Zn({target:"Array",stat:!0,forced:!gl((function(t){Array.from(t)}))},{from:DR});var NR=dn.includes,zR=Oa;Zn({target:"Array",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(t){return NR(this,t,arguments.length>1?arguments[1]:void 0)}}),zR("includes");var qR=dt,HR=Ft,WR=k,$R=fn,GR=TypeError,VR="Reduce of empty array with no initial value",YR=function(t){return function(e,r,n,i){var o=HR(e),a=WR(o),u=$R(o);if(qR(r),0===u&&n<2)throw new GR(VR);var c=t?u-1:0,s=t?-1:1;if(n<2)for(;;){if(c in a){i=a[c],c+=s;break}if(c+=s,t?c<0:u<=c)throw new GR(VR)}for(;t?c>=0:u>c;c+=s)c in a&&(i=r(i,a[c],c,o));return i}},JR={left:YR(!1),right:YR(!0)}.left;Zn({target:"Array",proto:!0,forced:!Mc&&Z>79&&Z<83||!Fp("reduce")},{reduce:function(t){var e=arguments.length;return JR(this,t,e,e>1?arguments[1]:void 0)}});var KR=Zn,XR=S,QR=dt,ZR=Ft,tT=fn,eT=hv,rT=fi,nT=i,iT=BS,oT=Fp,aT=DS,uT=NS,cT=Z,sT=qS,fT=[],hT=XR(fT.sort),lT=XR(fT.push),pT=nT((function(){fT.sort(void 0)})),vT=nT((function(){fT.sort(null)})),dT=oT("sort"),gT=!nT((function(){if(cT)return cT<70;if(!(aT&&aT>3)){if(uT)return!0;if(sT)return sT<603;var t,e,r,n,i="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(n=0;n<47;n++)fT.push({k:e+n,v:r})}for(fT.sort((function(t,e){return e.v-t.v})),n=0;nrT(r)?1:-1}}(t)),r=tT(i),n=0;nu;)r=i[u++],YT&&!(o?r in n:tI(n,r))||eI(c,t?[r,n[r]]:n[r]);return c}},iI={entries:nI(!0),values:nI(!1)},oI=iI.entries;Zn({target:"Object",stat:!0},{entries:function(t){return oI(t)}});var aI=hl,uI=hc;Zn({target:"Object",stat:!0},{fromEntries:function(t){var e={};return aI(t,(function(t,r){uI(e,t,r)}),{AS_ENTRIES:!0}),e}});var cI=iI.values;Zn({target:"Object",stat:!0},{values:function(t){return cI(t)}});var sI=Zn,fI=vf,hI=i,lI=W,pI=D,vI=Qc,dI=zl,gI=Jr,yI=fI&&fI.prototype;if(sI({target:"Promise",proto:!0,real:!0,forced:!!fI&&hI((function(){yI.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=vI(this,lI("Promise")),r=pI(t);return this.then(r?function(r){return dI(e,t()).then((function(){return r}))}:t,r?function(r){return dI(e,t()).then((function(){throw r}))}:t)}}),pI(fI)){var mI=lI("Promise").prototype.finally;yI.finally!==mI&&gI(yI,"finally",mI,{unsafe:!0})}var wI=z,bI=O,SI=Zt("match"),xI=function(t){var e;return wI(t)&&(void 0!==(e=t[SI])?!!e:"RegExp"===bI(t))},EI=je,AI=function(){var t=EI(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.unicodeSets&&(e+="v"),t.sticky&&(e+="y"),e},OI=s,RI=Dt,TI=$,II=AI,PI=RegExp.prototype,kI=function(t){var e=t.flags;return void 0!==e||"flags"in PI||RI(t,"flags")||!TI(PI,t)?e:OI(II,t)},jI=i,LI=r.RegExp,UI=jI((function(){var t=LI("a","y");return t.lastIndex=2,null!==t.exec("abcd")})),CI=UI||jI((function(){return!LI("a","y").sticky})),MI=UI||jI((function(){var t=LI("^r","gy");return t.lastIndex=2,null!==t.exec("str")})),FI={BROKEN_CARET:MI,MISSED_STICKY:CI,UNSUPPORTED_Y:UI},BI=i,_I=r.RegExp,DI=BI((function(){var t=_I(".","s");return!(t.dotAll&&t.test("\n")&&"s"===t.flags)})),NI=i,zI=r.RegExp,qI=NI((function(){var t=zI("(?b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")})),HI=o,WI=r,$I=S,GI=$n,VI=so,YI=$e,JI=ga,KI=Kr.f,XI=$,QI=xI,ZI=fi,tP=kI,eP=FI,rP=oo,nP=Jr,iP=i,oP=Dt,aP=Rr.enforce,uP=Nc,cP=DI,sP=qI,fP=Zt("match"),hP=WI.RegExp,lP=hP.prototype,pP=WI.SyntaxError,vP=$I(lP.exec),dP=$I("".charAt),gP=$I("".replace),yP=$I("".indexOf),mP=$I("".slice),wP=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,bP=/a/g,SP=/a/g,xP=new hP(bP)!==bP,EP=eP.MISSED_STICKY,AP=eP.UNSUPPORTED_Y,OP=HI&&(!xP||EP||cP||sP||iP((function(){return SP[fP]=!1,hP(bP)!==bP||hP(SP)===SP||"/a/i"!==String(hP(bP,"i"))})));if(GI("RegExp",OP)){for(var RP=function(t,e){var r,n,i,o,a,u,c=XI(lP,this),s=QI(t),f=void 0===e,h=[],l=t;if(!c&&s&&f&&t.constructor===RP)return t;if((s||XI(lP,t))&&(t=t.source,f&&(e=tP(l))),t=void 0===t?"":ZI(t),e=void 0===e?"":ZI(e),l=t,cP&&"dotAll"in bP&&(n=!!e&&yP(e,"s")>-1)&&(e=gP(e,/s/g,"")),r=e,EP&&"sticky"in bP&&(i=!!e&&yP(e,"y")>-1)&&AP&&(e=gP(e,/y/g,"")),sP&&(o=function(t){for(var e,r=t.length,n=0,i="",o=[],a=JI(null),u=!1,c=!1,s=0,f="";n<=r;n++){if("\\"===(e=dP(t,n)))e+=dP(t,++n);else if("]"===e)u=!1;else if(!u)switch(!0){case"["===e:u=!0;break;case"("===e:vP(wP,mP(t,n+1))&&(n+=2,c=!0),i+=e,s++;continue;case">"===e&&c:if(""===f||oP(a,f))throw new pP("Invalid capture group name");a[f]=!0,o[o.length]=[f,s],c=!1,f="";continue}c?f+=e:i+=e}return[i,o]}(t),t=o[0],h=o[1]),a=VI(hP(t,e),c?this:lP,RP),(n||i||h.length)&&(u=aP(a),n&&(u.dotAll=!0,u.raw=RP(function(t){for(var e,r=t.length,n=0,i="",o=!1;n<=r;n++)"\\"!==(e=dP(t,n))?o||"."!==e?("["===e?o=!0:"]"===e&&(o=!1),i+=e):i+="[\\s\\S]":i+=e+dP(t,++n);return i}(t),r)),i&&(u.sticky=!0),h.length&&(u.groups=h)),t!==l)try{YI(a,"source",""===l?"(?:)":l)}catch(o_){}return a},TP=KI(hP),IP=0;TP.length>IP;)rP(RP,hP,TP[IP++]);lP.constructor=RP,RP.prototype=lP,nP(WI,"RegExp",RP,{constructor:!0})}uP("RegExp");var PP=o,kP=DI,jP=O,LP=pi,UP=Rr.get,CP=RegExp.prototype,MP=TypeError;PP&&kP&&LP(CP,"dotAll",{configurable:!0,get:function(){if(this!==CP){if("RegExp"===jP(this))return!!UP(this).dotAll;throw new MP("Incompatible receiver, RegExp required")}}});var FP=s,BP=S,_P=fi,DP=AI,NP=FI,zP=ga,qP=Rr.get,HP=DI,WP=qI,$P=Ut("native-string-replace",String.prototype.replace),GP=RegExp.prototype.exec,VP=GP,YP=BP("".charAt),JP=BP("".indexOf),KP=BP("".replace),XP=BP("".slice),QP=function(){var t=/a/,e=/b*/g;return FP(GP,t,"a"),FP(GP,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),ZP=NP.BROKEN_CARET,tk=void 0!==/()??/.exec("")[1];(QP||tk||ZP||HP||WP)&&(VP=function(t){var e,r,n,i,o,a,u,c=this,s=qP(c),f=_P(t),h=s.raw;if(h)return h.lastIndex=c.lastIndex,e=FP(VP,h,f),c.lastIndex=h.lastIndex,e;var l=s.groups,p=ZP&&c.sticky,v=FP(DP,c),d=c.source,g=0,y=f;if(p&&(v=KP(v,"y",""),-1===JP(v,"g")&&(v+="g"),y=XP(f,c.lastIndex),c.lastIndex>0&&(!c.multiline||c.multiline&&"\n"!==YP(f,c.lastIndex-1))&&(d="(?: "+d+")",y=" "+y,g++),r=new RegExp("^(?:"+d+")",v)),tk&&(r=new RegExp("^"+d+"$(?!\\s)",v)),QP&&(n=c.lastIndex),i=FP(GP,p?r:c,y),p?i?(i.input=XP(i.input,g),i[0]=XP(i[0],g),i.index=c.lastIndex,c.lastIndex+=i[0].length):c.lastIndex=0:QP&&i&&(c.lastIndex=c.global?i.index+i[0].length:n),tk&&i&&i.length>1&&FP($P,i[0],r,(function(){for(o=1;o1?arguments[1]:void 0,n=e.length,i=void 0===r?n:Fk(kk(r),n),o=jk(t);return Mk(e,i-o.length,i)===o}});var Dk=Zn,Nk=Ak,zk=C,qk=fi,Hk=Rk,Wk=S("".indexOf);Dk({target:"String",proto:!0,forced:!Hk("includes")},{includes:function(t){return!!~Wk(qk(zk(this)),qk(Nk(t)),arguments.length>1?arguments[1]:void 0)}});var $k=s,Gk=Jr,Vk=ek,Yk=i,Jk=Zt,Kk=$e,Xk=Jk("species"),Qk=RegExp.prototype,Zk=function(t,e,r,n){var i=Jk(t),o=!Yk((function(){var e={};return e[i]=function(){return 7},7!==""[t](e)})),a=o&&!Yk((function(){var e=!1,r=/a/;return"split"===t&&((r={}).constructor={},r.constructor[Xk]=function(){return r},r.flags="",r[i]=/./[i]),r.exec=function(){return e=!0,null},r[i](""),!e}));if(!o||!a||r){var u=/./[i],c=e(i,""[t],(function(t,e,r,n,i){var a=e.exec;return a===Vk||a===Qk.exec?o&&!i?{done:!0,value:$k(u,e,r,n)}:{done:!0,value:$k(t,r,e,n)}:{done:!1}}));Gk(String.prototype,t,c[0]),Gk(Qk,i,c[1])}n&&Kk(Qk[i],"sham",!0)},tj=S,ej=tn,rj=fi,nj=C,ij=tj("".charAt),oj=tj("".charCodeAt),aj=tj("".slice),uj=function(t){return function(e,r){var n,i,o=rj(nj(e)),a=ej(r),u=o.length;return a<0||a>=u?t?"":void 0:(n=oj(o,a))<55296||n>56319||a+1===u||(i=oj(o,a+1))<56320||i>57343?t?ij(o,a):n:t?aj(o,a,a+2):i-56320+(n-55296<<10)+65536}},cj={codeAt:uj(!1),charAt:uj(!0)},sj=cj.charAt,fj=function(t,e,r){return e+(r?sj(t,e).length:1)},hj=S,lj=Ft,pj=Math.floor,vj=hj("".charAt),dj=hj("".replace),gj=hj("".slice),yj=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,mj=/\$([$&'`]|\d{1,2})/g,wj=s,bj=je,Sj=D,xj=O,Ej=ek,Aj=TypeError,Oj=function(t,e){var r=t.exec;if(Sj(r)){var n=wj(r,t,e);return null!==n&&bj(n),n}if("RegExp"===xj(t))return wj(Ej,t,e);throw new Aj("RegExp#exec called on incompatible receiver")},Rj=$i,Tj=s,Ij=S,Pj=Zk,kj=i,jj=je,Lj=D,Uj=j,Cj=tn,Mj=cn,Fj=fi,Bj=C,_j=fj,Dj=mt,Nj=function(t,e,r,n,i,o){var a=r+t.length,u=n.length,c=mj;return void 0!==i&&(i=lj(i),c=yj),dj(o,c,(function(o,c){var s;switch(vj(c,0)){case"$":return"$";case"&":return t;case"`":return gj(e,0,r);case"'":return gj(e,a);case"<":s=i[gj(c,1,-1)];break;default:var f=+c;if(0===f)return o;if(f>u){var h=pj(f/10);return 0===h?o:h<=u?void 0===n[h-1]?vj(c,1):n[h-1]+vj(c,1):o}s=n[f-1]}return void 0===s?"":s}))},zj=Oj,qj=Zt("replace"),Hj=Math.max,Wj=Math.min,$j=Ij([].concat),Gj=Ij([].push),Vj=Ij("".indexOf),Yj=Ij("".slice),Jj="$0"==="a".replace(/./,"$0"),Kj=!!/./[qj]&&""===/./[qj]("a","$0"),Xj=!kj((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")}));Pj("replace",(function(t,e,r){var n=Kj?"$":"$0";return[function(t,r){var n=Bj(this),i=Uj(t)?void 0:Dj(t,qj);return i?Tj(i,t,n,r):Tj(e,Fj(n),t,r)},function(t,i){var o=jj(this),a=Fj(t);if("string"==typeof i&&-1===Vj(i,n)&&-1===Vj(i,"$<")){var u=r(e,o,a,i);if(u.done)return u.value}var c=Lj(i);c||(i=Fj(i));var s,f=o.global;f&&(s=o.unicode,o.lastIndex=0);for(var h,l=[];null!==(h=zj(o,a))&&(Gj(l,h),f);){""===Fj(h[0])&&(o.lastIndex=_j(a,Mj(o.lastIndex),s))}for(var p,v="",d=0,g=0;g=d&&(v+=Yj(a,d,w)+y,d=w+m.length)}return v+Yj(a,d)}]}),!Xj||!Jj||Kj);var Qj=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e},Zj=s,tL=je,eL=j,rL=C,nL=Qj,iL=fi,oL=mt,aL=Oj;Zk("search",(function(t,e,r){return[function(e){var r=rL(this),n=eL(e)?void 0:oL(e,t);return n?Zj(n,e,r):new RegExp(e)[t](iL(r))},function(t){var n=tL(this),i=iL(t),o=r(e,n,i);if(o.done)return o.value;var a=n.lastIndex;nL(a,0)||(n.lastIndex=0);var u=aL(n,i);return nL(n.lastIndex,a)||(n.lastIndex=a),null===u?-1:u.index}]}));var uL=s,cL=S,sL=Zk,fL=je,hL=j,lL=C,pL=Qc,vL=fj,dL=cn,gL=fi,yL=mt,mL=Oj,wL=i,bL=FI.UNSUPPORTED_Y,SL=Math.min,xL=cL([].push),EL=cL("".slice),AL=!wL((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return 2!==r.length||"a"!==r[0]||"b"!==r[1]})),OL="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;sL("split",(function(t,e,r){var n="0".split(void 0,0).length?function(t,r){return void 0===t&&0===r?[]:uL(e,this,t,r)}:e;return[function(e,r){var i=lL(this),o=hL(e)?void 0:yL(e,t);return o?uL(o,e,i,r):uL(n,gL(i),e,r)},function(t,i){var o=fL(this),a=gL(t);if(!OL){var u=r(n,o,a,i,n!==e);if(u.done)return u.value}var c=pL(o,RegExp),s=o.unicode,f=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(bL?"g":"y"),h=new c(bL?"^(?:"+o.source+")":o,f),l=void 0===i?4294967295:i>>>0;if(0===l)return[];if(0===a.length)return null===mL(h,a)?[a]:[];for(var p=0,v=0,d=[];v1?arguments[1]:void 0,e.length)),n=kL(t);return CL(e,r,r+n.length)===n}}),Mb("Int32",(function(t){return function(e,r,n){return t(this,e,r,n)}}));var _L=hl,DL=dt,NL=je,zL=hp,qL=TypeError;Zn({target:"Iterator",proto:!0,real:!0},{reduce:function(t){NL(this),DL(t);var e=zL(this),r=arguments.length<2,n=r?void 0:arguments[1],i=0;if(_L(e,(function(e){r?(r=!1,n=e):n=t(n,e,i),i++}),{IS_RECORD:!0}),r)throw new qL("Reduce of empty iterator with no initial value");return n}});var HL=hl,WL=dt,$L=je,GL=hp;Zn({target:"Iterator",proto:!0,real:!0},{some:function(t){$L(this),WL(t);var e=GL(this),r=0;return HL(e,(function(e,n){if(t(e,r++))return n()}),{IS_RECORD:!0,INTERRUPTED:!0}).stopped}});var VL=je,YL=hl,JL=hp,KL=[].push;Zn({target:"Iterator",proto:!0,real:!0},{toArray:function(){var t=[];return YL(JL(VL(this)),KL,{that:t,IS_RECORD:!0}),t}});var XL=S,QL=Dt,ZL=SyntaxError,tU=parseInt,eU=String.fromCharCode,rU=XL("".charAt),nU=XL("".slice),iU=XL(/./.exec),oU={'\\"':'"',"\\\\":"\\","\\/":"/","\\b":"\b","\\f":"\f","\\n":"\n","\\r":"\r","\\t":"\t"},aU=/^[\da-f]{4}$/i,uU=/^[\u0000-\u001F]$/,cU=Zn,sU=o,fU=r,hU=W,lU=S,pU=s,vU=D,dU=z,gU=Bu,yU=Dt,mU=fi,wU=fn,bU=hc,SU=i,xU=function(t,e){for(var r=!0,n="";e=r.length?YU(void 0,!0):(t=WU(r,n),e.index+=t.length,YU(t,!1))}));var QU=i,ZU=o,tC=Zt("iterator"),eC=!QU((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),e=t.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return t.pathname="c%20d",e.forEach((function(t,r){e.delete("b"),n+=r+t})),r.delete("a",2),r.delete("b",void 0),!e.size&&!ZU||!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[tC]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),rC=o,nC=S,iC=s,oC=i,aC=Yo,uC=On,cC=f,sC=Ft,fC=k,hC=Object.assign,lC=Object.defineProperty,pC=nC([].concat),vC=!hC||oC((function(){if(rC&&1!==hC({b:1},hC(lC({},"a",{enumerable:!0,get:function(){lC(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},r=Symbol("assign detection"),n="abcdefghijklmnopqrst";return t[r]=7,n.split("").forEach((function(t){e[t]=t})),7!==hC({},t)[r]||aC(hC({},e)).join("")!==n}))?function(t,e){for(var r=sC(t),n=arguments.length,i=1,o=uC.f,a=cC.f;n>i;)for(var u,c=fC(arguments[i++]),s=o?pC(aC(c),o(c)):aC(c),f=s.length,h=0;f>h;)u=s[h++],rC&&!iC(a,c,u)||(r[u]=c[u]);return r}:hC,dC=S,gC=2147483647,yC=/[^\0-\u007E]/,mC=/[.\u3002\uFF0E\uFF61]/g,wC="Overflow: input needs wider integers to process",bC=RangeError,SC=dC(mC.exec),xC=Math.floor,EC=String.fromCharCode,AC=dC("".charCodeAt),OC=dC([].join),RC=dC([].push),TC=dC("".replace),IC=dC("".split),PC=dC("".toLowerCase),kC=function(t){return t+22+75*(t<26)},jC=function(t,e,r){var n=0;for(t=r?xC(t/700):t>>1,t+=xC(t/e);t>455;)t=xC(t/35),n+=36;return xC(n+36*t/(t+38))},LC=function(t){var e=[];t=function(t){for(var e=[],r=0,n=t.length;r=55296&&i<=56319&&r=o&&nxC((gC-a)/h))throw new bC(wC);for(a+=(f-o)*h,o=f,r=0;rgC)throw new bC(wC);if(n===o){for(var l=a,p=36;;){var v=p<=u?1:p>=u+26?26:p-u;if(l=e.length)return t.target=void 0,iM(void 0,!0);var n=e[r];switch(t.kind){case"keys":return iM(n.key,!1);case"values":return iM(n.value,!1)}return iM([n.key,n.value],!1)}),!0),NM=function(t){this.entries=[],this.url=null,void 0!==t&&(QC(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===xM(t,0)?PM(t,1):t:ZC(t)))};NM.prototype={type:cM,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,r,n,i,o,a,u,c=this.entries,s=nM(t);if(s)for(r=(e=rM(t,s)).next;!(n=FC(r,e)).done;){if(o=(i=rM(XC(n.value))).next,(a=FC(o,i)).done||(u=FC(o,i)).done||!FC(o,i).done)throw new wM("Expected sequence with length 2");AM(c,{key:ZC(a.value),value:ZC(u.value)})}else for(var f in t)YC(t,f)&&AM(c,{key:f,value:ZC(t[f])})},parseQuery:function(t){if(t)for(var e,r,n=this.entries,i=IM(t,"&"),o=0;o0?arguments[0]:void 0));_C||(this.size=t.entries.length)},qM=zM.prototype;if(qC(qM,{append:function(t,e){var r=hM(this);oM(arguments.length,2),AM(r.entries,{key:ZC(t),value:ZC(e)}),_C||this.length++,r.updateURL()},delete:function(t){for(var e=hM(this),r=oM(arguments.length,1),n=e.entries,i=ZC(t),o=r<2?void 0:arguments[1],a=void 0===o?o:ZC(o),u=0;ue.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,r=hM(this).entries,n=JC(t,arguments.length>1?arguments[1]:void 0),i=0;i1?$M(arguments[1]):{})}}),VC(vM)){var GM=function(t){return GC(this,gM),new vM(t,arguments.length>1?$M(arguments[1]):{})};gM.constructor=GM,GM.prototype=gM,UC({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:GM})}}var VM,YM=Zn,JM=o,KM=eC,XM=r,QM=os,ZM=S,tF=Jr,eF=pi,rF=Hc,nF=Dt,iF=vC,oF=_R,aF=gc,uF=cj.codeAt,cF=function(t){var e,r,n=[],i=IC(TC(PC(t),mC,"."),".");for(e=0;e?@[\\\]^|]/,GF=/[\0\t\n\r #/:<>?@[\\\]^|]/,VF=/^[\u0000-\u0020]+/,YF=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,JF=/[\t\n\r]/g,KF=function(t){var e,r,n,i;if("number"==typeof t){for(e=[],r=0;r<4;r++)CF(e,t%256),t=SF(t/256);return OF(e,".")}if("object"==typeof t){for(e="",n=function(t){for(var e=null,r=1,n=null,i=0,o=0;o<8;o++)0!==t[o]?(i>r&&(e=n,r=i),n=null,i=0):(null===n&&(n=o),++i);return i>r&&(e=n,r=i),e}(t),r=0;r<8;r++)i&&0===t[r]||(i&&(i=!1),n===r?(e+=r?":":"::",i=!0):(e+=RF(t[r],16),r<7&&(e+=":")));return"["+e+"]"}return t},XF={},QF=iF({},XF,{" ":1,'"':1,"<":1,">":1,"`":1}),ZF=iF({},QF,{"#":1,"?":1,"{":1,"}":1}),tB=iF({},ZF,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),eB=function(t,e){var r=uF(t,0);return r>32&&r<127&&!nF(e,t)?t:encodeURIComponent(t)},rB={ftp:21,file:null,http:80,https:443,ws:80,wss:443},nB=function(t,e){var r;return 2===t.length&&AF(_F,EF(t,0))&&(":"===(r=EF(t,1))||!e&&"|"===r)},iB=function(t){var e;return t.length>1&&nB(LF(t,0,2))&&(2===t.length||"/"===(e=EF(t,2))||"\\"===e||"?"===e||"#"===e)},oB=function(t){return"."===t||"%2e"===UF(t)},aB={},uB={},cB={},sB={},fB={},hB={},lB={},pB={},vB={},dB={},gB={},yB={},mB={},wB={},bB={},SB={},xB={},EB={},AB={},OB={},RB={},TB=function(t,e,r){var n,i,o,a=sF(t);if(e){if(i=this.parse(a))throw new wF(i);this.searchParams=null}else{if(void 0!==r&&(n=new TB(r,!0)),i=this.parse(a,null,n))throw new wF(i);(o=yF(new gF)).bindURL(this),this.searchParams=o}};TB.prototype={type:"URL",parse:function(t,e,r){var n,i,o,a,u,c=this,s=e||aB,f=0,h="",l=!1,p=!1,v=!1;for(t=sF(t),e||(c.scheme="",c.username="",c.password="",c.host=null,c.port=null,c.path=[],c.query=null,c.fragment=null,c.cannotBeABaseURL=!1,t=PF(t,VF,""),t=PF(t,YF,"$1")),t=PF(t,JF,""),n=oF(t);f<=n.length;){switch(i=n[f],s){case aB:if(!i||!AF(_F,i)){if(e)return MF;s=cB;continue}h+=UF(i),s=uB;break;case uB:if(i&&(AF(DF,i)||"+"===i||"-"===i||"."===i))h+=UF(i);else{if(":"!==i){if(e)return MF;h="",s=cB,f=0;continue}if(e&&(c.isSpecial()!==nF(rB,h)||"file"===h&&(c.includesCredentials()||null!==c.port)||"file"===c.scheme&&!c.host))return;if(c.scheme=h,e)return void(c.isSpecial()&&rB[c.scheme]===c.port&&(c.port=null));h="","file"===c.scheme?s=wB:c.isSpecial()&&r&&r.scheme===c.scheme?s=sB:c.isSpecial()?s=pB:"/"===n[f+1]?(s=fB,f++):(c.cannotBeABaseURL=!0,IF(c.path,""),s=AB)}break;case cB:if(!r||r.cannotBeABaseURL&&"#"!==i)return MF;if(r.cannotBeABaseURL&&"#"===i){c.scheme=r.scheme,c.path=aF(r.path),c.query=r.query,c.fragment="",c.cannotBeABaseURL=!0,s=RB;break}s="file"===r.scheme?wB:hB;continue;case sB:if("/"!==i||"/"!==n[f+1]){s=hB;continue}s=vB,f++;break;case fB:if("/"===i){s=dB;break}s=EB;continue;case hB:if(c.scheme=r.scheme,i===VM)c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=aF(r.path),c.query=r.query;else if("/"===i||"\\"===i&&c.isSpecial())s=lB;else if("?"===i)c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=aF(r.path),c.query="",s=OB;else{if("#"!==i){c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=aF(r.path),c.path.length--,s=EB;continue}c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=aF(r.path),c.query=r.query,c.fragment="",s=RB}break;case lB:if(!c.isSpecial()||"/"!==i&&"\\"!==i){if("/"!==i){c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,s=EB;continue}s=dB}else s=vB;break;case pB:if(s=vB,"/"!==i||"/"!==EF(h,f+1))continue;f++;break;case vB:if("/"!==i&&"\\"!==i){s=dB;continue}break;case dB:if("@"===i){l&&(h="%40"+h),l=!0,o=oF(h);for(var d=0;d65535)return BF;c.port=c.isSpecial()&&m===rB[c.scheme]?null:m,h=""}if(e)return;s=xB;continue}return BF}h+=i;break;case wB:if(c.scheme="file","/"===i||"\\"===i)s=bB;else{if(!r||"file"!==r.scheme){s=EB;continue}switch(i){case VM:c.host=r.host,c.path=aF(r.path),c.query=r.query;break;case"?":c.host=r.host,c.path=aF(r.path),c.query="",s=OB;break;case"#":c.host=r.host,c.path=aF(r.path),c.query=r.query,c.fragment="",s=RB;break;default:iB(OF(aF(n,f),""))||(c.host=r.host,c.path=aF(r.path),c.shortenPath()),s=EB;continue}}break;case bB:if("/"===i||"\\"===i){s=SB;break}r&&"file"===r.scheme&&!iB(OF(aF(n,f),""))&&(nB(r.path[0],!0)?IF(c.path,r.path[0]):c.host=r.host),s=EB;continue;case SB:if(i===VM||"/"===i||"\\"===i||"?"===i||"#"===i){if(!e&&nB(h))s=EB;else if(""===h){if(c.host="",e)return;s=xB}else{if(a=c.parseHost(h))return a;if("localhost"===c.host&&(c.host=""),e)return;h="",s=xB}continue}h+=i;break;case xB:if(c.isSpecial()){if(s=EB,"/"!==i&&"\\"!==i)continue}else if(e||"?"!==i)if(e||"#"!==i){if(i!==VM&&(s=EB,"/"!==i))continue}else c.fragment="",s=RB;else c.query="",s=OB;break;case EB:if(i===VM||"/"===i||"\\"===i&&c.isSpecial()||!e&&("?"===i||"#"===i)){if(".."===(u=UF(u=h))||"%2e."===u||".%2e"===u||"%2e%2e"===u?(c.shortenPath(),"/"===i||"\\"===i&&c.isSpecial()||IF(c.path,"")):oB(h)?"/"===i||"\\"===i&&c.isSpecial()||IF(c.path,""):("file"===c.scheme&&!c.path.length&&nB(h)&&(c.host&&(c.host=""),h=EF(h,0)+":"),IF(c.path,h)),h="","file"===c.scheme&&(i===VM||"?"===i||"#"===i))for(;c.path.length>1&&""===c.path[0];)kF(c.path);"?"===i?(c.query="",s=OB):"#"===i&&(c.fragment="",s=RB)}else h+=eB(i,ZF);break;case AB:"?"===i?(c.query="",s=OB):"#"===i?(c.fragment="",s=RB):i!==VM&&(c.path[0]+=eB(i,XF));break;case OB:e||"#"!==i?i!==VM&&("'"===i&&c.isSpecial()?c.query+="%27":c.query+="#"===i?"%23":eB(i,XF)):(c.fragment="",s=RB);break;case RB:i!==VM&&(c.fragment+=eB(i,QF))}f++}},parseHost:function(t){var e,r,n;if("["===EF(t,0)){if("]"!==EF(t,t.length-1))return FF;if(e=function(t){var e,r,n,i,o,a,u,c=[0,0,0,0,0,0,0,0],s=0,f=null,h=0,l=function(){return EF(t,h)};if(":"===l()){if(":"!==EF(t,1))return;h+=2,f=++s}for(;l();){if(8===s)return;if(":"!==l()){for(e=r=0;r<4&&AF(WF,l());)e=16*e+bF(l(),16),h++,r++;if("."===l()){if(0===r)return;if(h-=r,s>6)return;for(n=0;l();){if(i=null,n>0){if(!("."===l()&&n<4))return;h++}if(!AF(NF,l()))return;for(;AF(NF,l());){if(o=bF(l(),10),null===i)i=o;else{if(0===i)return;i=10*i+o}if(i>255)return;h++}c[s]=256*c[s]+i,2!=++n&&4!==n||s++}if(4!==n)return;break}if(":"===l()){if(h++,!l())return}else if(l())return;c[s++]=e}else{if(null!==f)return;h++,f=++s}}if(null!==f)for(a=s-f,s=7;0!==s&&a>0;)u=c[s],c[s--]=c[f+a-1],c[f+--a]=u;else if(8!==s)return;return c}(LF(t,1,-1)),!e)return FF;this.host=e}else if(this.isSpecial()){if(t=cF(t),AF($F,t))return FF;if(e=function(t){var e,r,n,i,o,a,u,c=jF(t,".");if(c.length&&""===c[c.length-1]&&c.length--,(e=c.length)>4)return t;for(r=[],n=0;n1&&"0"===EF(i,0)&&(o=AF(zF,i)?16:8,i=LF(i,8===o?1:2)),""===i)a=0;else{if(!AF(10===o?HF:8===o?qF:WF,i))return t;a=bF(i,o)}IF(r,a)}for(n=0;n=xF(256,5-e))return null}else if(a>255)return null;for(u=TF(r),n=0;n1?arguments[1]:void 0,n=vF(e,new TB(t,!1,r));JM||(e.href=n.serialize(),e.origin=n.getOrigin(),e.protocol=n.getProtocol(),e.username=n.getUsername(),e.password=n.getPassword(),e.host=n.getHost(),e.hostname=n.getHostname(),e.port=n.getPort(),e.pathname=n.getPathname(),e.search=n.getSearch(),e.searchParams=n.getSearchParams(),e.hash=n.getHash())},PB=IB.prototype,kB=function(t,e){return{get:function(){return dF(this)[t]()},set:e&&function(t){return dF(this)[e](t)},configurable:!0,enumerable:!0}};if(JM&&(eF(PB,"href",kB("serialize","setHref")),eF(PB,"origin",kB("getOrigin")),eF(PB,"protocol",kB("getProtocol","setProtocol")),eF(PB,"username",kB("getUsername","setUsername")),eF(PB,"password",kB("getPassword","setPassword")),eF(PB,"host",kB("getHost","setHost")),eF(PB,"hostname",kB("getHostname","setHostname")),eF(PB,"port",kB("getPort","setPort")),eF(PB,"pathname",kB("getPathname","setPathname")),eF(PB,"search",kB("getSearch","setSearch")),eF(PB,"searchParams",kB("getSearchParams")),eF(PB,"hash",kB("getHash","setHash"))),tF(PB,"toJSON",(function(){return dF(this).serialize()}),{enumerable:!0}),tF(PB,"toString",(function(){return dF(this).serialize()}),{enumerable:!0}),mF){var jB=mF.createObjectURL,LB=mF.revokeObjectURL;jB&&tF(IB,"createObjectURL",QM(jB,mF)),LB&&tF(IB,"revokeObjectURL",QM(LB,mF))}fF(IB,"URL"),YM({global:!0,constructor:!0,forced:!KM,sham:!JM},{URL:IB});var UB=s;Zn({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return UB(URL.prototype.toString,this)}});var CB=Jr,MB=S,FB=fi,BB=us,_B=URLSearchParams,DB=_B.prototype,NB=MB(DB.append),zB=MB(DB.delete),qB=MB(DB.forEach),HB=MB([].push),WB=new _B("a=1&a=2&b=3");WB.delete("a",1),WB.delete("b",void 0),WB+""!="a=2"&&CB(DB,"delete",(function(t){var e=arguments.length,r=e<2?void 0:arguments[1];if(e&&void 0===r)return zB(this,t);var n=[];qB(this,(function(t,e){HB(n,{key:e,value:t})})),BB(e,1);for(var i,o=FB(t),a=FB(r),u=0,c=0,s=!1,f=n.length;ur.length&&"/"!==n[n.length-1]))return n+t.slice(r.length);c("W2",r,n)}}function c(t,r,n){console.warn(e(t,[n,r].join(", ")))}function s(t,e,r){for(var n=t.scopes,i=r&&a(r,n);i;){var o=u(e,n[i]);if(o)return o;i=a(i.slice(0,i.lastIndexOf("/")),n)}return u(e,t.imports)||-1!==e.indexOf(":")&&e}function f(){this[R]={}}function h(t,r,n,i){var o=t[R][r];if(o)return o;var a=[],u=Object.create(null);O&&Object.defineProperty(u,O,{value:"Module"});var c=Promise.resolve().then((function(){return t.instantiate(r,n,i)})).then((function(n){if(!n)throw Error(e(2,r));var i=n[1]((function(t,e){o.h=!0;var r=!1;if("string"==typeof t)t in u&&u[t]===e||(u[t]=e,r=!0);else{for(var n in t)e=t[n],n in u&&u[n]===e||(u[n]=e,r=!0);t&&t.__esModule&&(u.__esModule=t.__esModule)}if(r)for(var i=0;i-1){var r=document.createEvent("Event");r.initEvent("error",!1,!1),t.dispatchEvent(r)}return Promise.reject(e)}))}else if("systemjs-importmap"===t.type){t.sp=!0;var r=t.src?(System.fetch||fetch)(t.src,{integrity:t.integrity,passThrough:!0}).then((function(t){if(!t.ok)throw Error(t.status);return t.text()})).catch((function(r){return r.message=e("W4",t.src)+"\n"+r.message,console.warn(r),"function"==typeof t.onerror&&t.onerror(),"{}"})):t.innerHTML;j=j.then((function(){return r})).then((function(r){!function(t,r,n){var i={};try{i=JSON.parse(r)}catch(u){console.warn(Error(e("W5")))}o(i,n,t)}(L,r,t.src||g)}))}}))}var g,y="undefined"!=typeof Symbol,m="undefined"!=typeof self,w="undefined"!=typeof document,b=m?self:t;if(w){var S=document.querySelector("base[href]");S&&(g=S.href)}if(!g&&"undefined"!=typeof location){var x=(g=location.href.split("#")[0].split("?")[0]).lastIndexOf("/");-1!==x&&(g=g.slice(0,x+1))}var E,A=/\\/g,O=y&&Symbol.toStringTag,R=y?Symbol():"@",T=f.prototype;T.import=function(t,e,r){var n=this;return e&&"object"==typeof e&&(r=e,e=void 0),Promise.resolve(n.prepareImport()).then((function(){return n.resolve(t,e,r)})).then((function(t){var e=h(n,t,void 0,r);return e.C||p(n,e)}))},T.createContext=function(t){var e=this;return{url:t,resolve:function(r,n){return Promise.resolve(e.resolve(r,n||t))}}},T.register=function(t,e,r){E=[t,e,r]},T.getRegister=function(){var t=E;return E=void 0,t};var I=Object.freeze(Object.create(null));b.System=new f;var P,k,j=Promise.resolve(),L={imports:{},scopes:{},depcache:{},integrity:{}},U=w;if(T.prepareImport=function(t){return(U||t)&&(d(),U=!1),j},w&&(d(),window.addEventListener("DOMContentLoaded",d)),T.addImportMap=function(t,e){o(t,e||g,L)},w){window.addEventListener("error",(function(t){M=t.filename,F=t.error}));var C=location.origin}T.createScript=function(t){var e=document.createElement("script");e.async=!0,t.indexOf(C+"/")&&(e.crossOrigin="anonymous");var r=L.integrity[t];return r&&(e.integrity=r),e.src=t,e};var M,F,B={},_=T.register;T.register=function(t,e){if(w&&"loading"===document.readyState&&"string"!=typeof t){var r=document.querySelectorAll("script[src]"),n=r[r.length-1];if(n){P=t;var i=this;k=setTimeout((function(){B[n.src]=[t,e],i.import(n.src)}))}}else P=void 0;return _.call(this,t,e)},T.instantiate=function(t,r){var n=B[t];if(n)return delete B[t],n;var i=this;return Promise.resolve(T.createScript(t)).then((function(n){return new Promise((function(o,a){n.addEventListener("error",(function(){a(Error(e(3,[t,r].join(", "))))})),n.addEventListener("load",(function(){if(document.head.removeChild(n),M===t)a(F);else{var e=i.getRegister(t);e&&e[0]===P&&clearTimeout(k),o(e)}})),document.head.appendChild(n)}))}))},T.shouldFetch=function(){return!1},"undefined"!=typeof fetch&&(T.fetch=fetch);var D=T.instantiate,N=/^(text|application)\/(x-)?javascript(;|$)/;T.instantiate=function(t,r,n){var i=this;return this.shouldFetch(t,r,n)?this.fetch(t,{credentials:"same-origin",integrity:L.integrity[t],meta:n}).then((function(n){if(!n.ok)throw Error(e(7,[n.status,n.statusText,t,r].join(", ")));var o=n.headers.get("content-type");if(!o||!N.test(o))throw Error(e(4,o));return n.text().then((function(e){return e.indexOf("//# sourceURL=")<0&&(e+="\n//# sourceURL="+t),(0,eval)(e),i.getRegister(t)}))})):D.apply(this,arguments)},T.resolve=function(t,n){return s(L,r(t,n=n||g)||t,n)||function(t,r){throw Error(e(8,[t,r].join(", ")))}(t,n)};var z=T.instantiate;T.instantiate=function(t,e,r){var n=L.depcache[t];if(n)for(var i=0;iSolid Demo - - - + + + @@ -27,7 +27,7 @@ defer > - - + +